写点什么

Kotlin 首席设计师访谈:Kotlin 与 Java 的差距有多大?

作者:Tim Anderson

  • 2024-12-30
    北京
  • 本文字数:1869 字

    阅读完需:约 6 分钟

Kotlin 首席设计师访谈:Kotlin 与  Java 的差距有多大?

Kotlin 语言由 JetBrains 开发,并在 Apache2.0 许可下 开源,于 2011 年开始作为 Java 在 JVM (Java 虚拟机)上运行的应用程序的替代品,但从那时起,它就已经发展成针对 JavaScript、移动平台、原生可执行文件和 WebAssembly 的语言了。


Kotlin 首席设计师 Michail Zarečenskij 向 DevClass 讲述了 Kotlin 与 Java 的关系以及该语言的未来。


他告诉我们:“Kotlin 语言是作为 Java 的替代品出现的,当时我们想解决 Java 的一些局限性和问题,比如可空性、检查异常、不变数组等。”。


他说:“多年来,Kotlin 不断发展,现在我们才有了 Kotlin 多平台的故事,我们可以针对多个平台,比如 iOS、安卓等,我们有了 Kotlin Notebook,我们有了 Compose,这是一个用 Kotlin 编写 UI 的框架,我们还有 build.gradle.kts,用于在 Kotlin 中编写 gradle 脚本,但 JVM 部分和 Java 对我们来说仍然非常重要,实际上也是至关重要的。我们仍然希望与 Java 互操作,因为我们完全明白 Java 还会陪伴我们很多年,我们不想完全取代 Java。这是不可能的,这也不是我们的目标。”。


在某些情况下,Kotlin 正在等待 Java 或 JVM 特性的实现。他说:“如果 Java 能够尽快发布 Valhalla 项目,我们会很高兴,因为 JVM 的所有用户都能从中受益。”。


Valhalla 项目将会为 JVM 带来值类型等更多特性。


“Vahalla 项目和值类很好地融入了 Kotlin,因为许多应用程序都是围绕数学来展开的。”Zarečenskij 说到。它还可以使 Kotlin 具有运算符重载,这样“你不编必编写.plus,但实际上需要编写 +”或其它标准符号。他说:“这就是 Kotlin 的闪光点,所以我们渴望在 JVM 上看到值类型,这样我们就可以采用这一特性,并使其在 Kotlin 中更具表现力。”。


Kotlin 团队是否与发展 Java 语言的委员会合作?Zarečenskij 告诉我们:“这实际上取决于特性。我们进行了沟通,我们正在密切关注值类等问题,因为它主要是一个 JVM 特性… 我们必须调整它的一些设计,并了解设计决策,以便 JVM 也能成功地优化 Kotlin 的值类。”


Java 最近实现了 虚拟线程,这是 Loom 项目的一部分,Kotlin 的协程也同样用于并发编程,这有什么影响?


“它们的目标略有不同,”Zarečenskij 说道。“Loom 项目仍然使用 Thread API。这是我们多年来一直使用的 API,具有所有的优点和缺点。在 Kotlin 中,我们有结构化并发,即协程之间的父子关系。因此,协程之间的通信、取消协程或当其中一个协程出现异常时处理错误更容易。如果你需要这种细粒度的并发,并且想编写一个新的应用程序,那么 Kotlin 协程可能会更好。”


他补充道,“Kotlin 协程的缺点之一是,如果你有一个挂起函数,它实际上在底层使用了 Thread API,我们仍然会使用物理线程。我们实际上想做的是为 Kotlin 协同程启用 Loom 项目,所以如果你必须使用线程,那么你将能够使用虚拟线程… 这样就可以两全其美了。”


由于谷歌将 Kotlin 作为安卓开发的首选语言,这推动了 Kotlin 的发展。这是 Kotlin 的主要用途吗?


“Kotlin 的大部分使用仍然是在安卓中,但大约有 40% 到 45% 的 Kotlin 用户正在编写服务器端应用程序。”Zarečenskij 解释道。“我们看到了正在增长的多平台故事。”


Kotlin 没有官方的 JetBrains 语言服务器协议(LSP)实现。非 JetBrains IDE(如 Visual Studio Code)使用它来在编辑器、调试等中启用智能编程语言支持。这是为了让开发人员留在 JetBrains IDE 家族系列中,还是将来会有所改变?


“LSP 的故事非常有趣,我认为在某种程度上,它对我们来说至关重要。”Zarečenskij 说道。“我们很想为 Kotlin 提供一个合适的 LSP,因为如果 Kotlin 可以在许多 IDE 上呈现并得到良好的支持,这对 Kotlin 来说是一个好处。但是,例如,LSP 的设计方式不允许在 Java 和 Kotlin 之间进行通信。我们的主要功能之一就是互操作性,但如果你从 Java 调用 Kotlin,就不可能进入 Java LSP 并导航到 Kotlin LSP。因此,我们没有来自 JetBrains 的合适 LSP。目前至少有两个开源实现,我看到开发这些实现的人正在开发一个新版本,该版本利用了 K2 API,因为它一个很好的 API 分析。


“我希望它能够流行起来,那么你将会拥有一个合适的 Kotlin LSP。但互操作性会存在问题。”


K2 是最近发布了新的 Kotlin 编译器 。


Kotlin 的下一步是什么?Zarečenskij 说道:“关键特性是不变性和新的错误模型。”。他预计会有大量的新语言特性。“因为 K2 已经完成,现在我们正在开发这种语言。”他还补充到。


原文链接:

https://devclass.com/2024/11/21/interview-with-kotlin-lead-designer-how-far-will-the-language-diverge-from-java/

2024-12-30 17:0014671

评论

发布
暂无评论

周转箱在仓配业务中的应用

Geek_vidmje

前端工程化-webpack

chun1123

大前端 webpack

MySQL高可用架构:mysql+keepalived实现

AI乔治

Java MySQL 架构 高可用架构 keepalive

重装变态的微信

箭上有毒

生活记录 4月日更

ElasticSearch

云淡风轻

elasticsearch

开源新老兵携手打开社区大门,带大学生走近开源

DT极客

为打造更好移动生态:日活超1.2亿的百度知道,摊牌了

ToB行业头条

百度 百度知道

小技巧 | 帮助运营小姐姐批量修改文件名的几种方式

梁龙先森

Node 脚本 PowerShell

面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot

Java架构师迁哥

别让心里的墙,挡住了你未来的路

小天同学

思考 认知提升 认知 4月日更

电脑护眼不权威指南,年纪轻轻眼睛就不行了?

彭宏豪95

效率 windows 4月日更 护眼

爆肝1W+字,通俗易懂的讲解下Java注解

AI乔治

Java 架构 面试 注解

MySQL主从不一致情形与解决方法

AI乔治

Java MySQL 架构 主从同步

全面复盘B站面试时坑我最深的Java并发:JDK源码剖析

Java架构师迁哥

架构师必经之路!Github榜首Java代码优化:77案例+28技巧开源分享

Java架构师迁哥

一枚比特币变换一台车,特斯拉与比特币还要绑定多久?

CECBC

特斯拉

网络协议学习笔记 Day6

穿过生命散发芬芳

网络协议 4月日更

聪明人的训练(二十七)

Changing Lin

4月日更

答对这八个Redis的问题,说明你精通了

AI乔治

Java redis 架构 分布式 高并发

如何在 Spring/Spring Boot 中优雅地做参数校验?

JavaGuide

Java spring springboot

Dubbo学习笔记

风翱

dubbo 4月日更

什么是低代码开发?低代码11大核心功能介绍!

优秀

低代码

深入浅出解读SpringMVC 进阶版

AI乔治

Java spring 架构 微服务 springmvc

工行首次全面展示数十项数字人民币研发试点成果

CECBC

数字人民币

Github瞬间爆火!被各大厂要求直接下架的面试题库也太全了

Java 编程 程序员 架构 面试

对于医疗健康行业,区块链最大的价值在哪里?

CECBC

医疗

京东首席架构师深邃洞察:服务化+云原生+微服务

Java架构师迁哥

强化区块链技术在数字政府、智慧城市、智能制造等领域应用

CECBC

人工智能

你公司有没有企业文化?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java架构师迁哥

为什么区块链技术仍然被人们认为当成一个投机的工具?

CECBC

Kotlin 首席设计师访谈:Kotlin 与  Java 的差距有多大?_编程语言_InfoQ精选文章