专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员的那些事  ·  800 万粉丝网红翻车!嘲讽大学生找不到工作 ·  昨天  
程序猿  ·  对自我清晰的认知 ·  6 天前  
程序员小灰  ·  男生看见雷军路过,直接冲过去递简历,结果... ·  4 天前  
CTO肉饼  ·  我是怎样和成为亿万富翁三次擦肩而过的 ·  5 天前  
OSC开源社区  ·  通义灵码SWE-GPT:从静态代码建模迈向软 ... ·  6 天前  
51好读  ›  专栏  ›  OSC开源社区

谷歌“干儿子”Kotlin不可能取代Java

OSC开源社区  · 公众号  · 程序员  · 2024-11-26 15:44

正文

OSCHINA

↑点击蓝字 关注我们



Kotlin 首席设计师 Michail Zarečenskij 近期接受 DevClass 采访,谈论了与该语言与 Java 的关系以及未来发展。

Kotlin 是基于 JVM 的静态类型编程语言,由 JetBrains 于 2011 年 7 月推出,并在 2012 年 2 月以 Apache 2.0 License 开源;2016 年 2 月 15 日,Kotlin v1.0(第一个官方稳定版本)发布。

2017 Google I/O 大会上,谷歌宣布:官方正式支持将 Kotlin 作为 Android 开发的 First-Class(一等公民)语言

自此,Kotlin 开发商 JetBrains 和谷歌一直围绕 Kotlin 进行紧密合作,并共同创立了 Kotlin 基金会。

Michail 介绍称,Kotlin 最初是作为 Java 的替代语言而出现,旨在解决一些局限性和问题,如空值处理、异常检测、不可变数组等。

但多年发展下来,完全取代 Java 已经不再是 Kotlin 的目标

“现在我们提供了 Kotlin Multiplatform (KMP),支持 iOS、Android 等多平台共用一套 Kotlin 代码。

我们还开发了 Kotlin Notebook 和 Compose Multiplatform,后者是一个用 Kotlin 编写 UI 的框架。

我们还创建了 build.gradle.kts,支持使用 Kotlin 编写 Gradle 脚本;但 JVM 部分和 Java 对我们来说仍然非常非常重要,实际上至关重要。

我们仍然希望能与 Java 实现互操作,因为我们完全明白 Java 将伴随我们很多年,我们并不是要完全取代 Java。这是不可能的,也不是我们的目标。

Michail Zarečenskij

与此同时,他还在期待 Project Valhalla 的发布,“这样我们就可以采用此功能,并使其在 Kotlin 中更具表现力。”

Project Valhalla 将为 JVM 带来值类型 (Value Types) 和其他更多功能。

Project Valhalla 正在用值对象增强 Java 对象模型,将面向对象编程的抽象与简单基元的性能特性结合起来。对 Java 泛型的补充修改将把这些性能增益带入泛型 API 中。

关于 Kotlin 团队是否会与开发 Java 语言的委员会合作,Michail 表示,主要取决于功能。

“我们会沟通,并密切关注 Value Classes 相关的特性,因为它主要是 JVM 功能…… 我们必须调整它的一些设计并注意设计决策,以便 JVM 也能成功地为 Kotlin 优化 Value Classes。”

在被问及 Java 实现虚拟线程(Project Loom 的一部分)的举措对 Kotlin 的 coroutines(同样用于并发编程)有什么影响时?Michail 则回答称,双方目标略有不同。

“Project Loom 仍然使用 Thread API。这是我们多年来一直使用的 API,有优点也有缺点。

在 Kotlin 中,我们具有结构化的并发性,协程之间具有父子关系。因此,如果其中一个出现异常,在它们之间进行通信、取消它们或处理错误都会变得更容易。

如果你有这种细粒度的并发性并且想要编写一个新应用程序,那么 Kotlin 协程可能会更好。”

不过他也没避及 Kotlin 协程的缺点。

“如果你有一个挂起函数,而该函数实际上在后台使用了 Thread API,那么我们仍然会使用物理线程。

我们真正想要做的是为 Kotlin 协程启用 Project Loom,这样如果你必须使用 Threads,那么你将能够使用虚拟线程…… 这样你就可以两全其美了。”

值得一提的是,JetBrains 尚未为 Kotlin 提供语言服务器协议 (LSP, Language Server Protocol) 的官方实现。

Michail 解释称,主要问题在于 LSP 的设计方式不允许 Java 和 Kotlin 之间进行通信。“我们的主要功能之一是互操作性,但是如果你从 Java 调用 Kotlin,则无法进入 Java LSP 并导航到 Kotlin LSP。因此,我们没有来自 JetBrains 的标准 LSP。”

此外,Michail 表示虽然大部分 Kotlin 的使用率仍源自 Android 开发,但约有 40% 到 45% 的 Kotlin 用户正在编写服务器端应用,多平台的使用情况正在增长

接下来,Michail 预计 Kotlin 将新增大量新特性,“关键特性是不可变性和新的错误模型。”



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


延伸阅读

JetBrains正式官宣Kotlin 2.0:从头开始完全重写编译器前端架构、编译速度提升一倍
IDEA年度第二个大版本正式发布:新UI成为默认项、改进全行代码补全、提升启动速度、优化对Kotlin的支持
Google称内部全在用Kotlin搞安卓开发,体验碾压Java

Kotlin声明式UI框架Compose Multiplatform支持iOS


END


热门文章

B站知名up主何同学被指盗用开源项目,网友锐评「移源丁真:鉴定为自研」

雷军力挺的小米开源大神回归——担任AI平台部负责人

Arc浏览器被“练废”了,开发商宣布停止开发——即将推出“Web浏览器的iPhone”

神级开源“无头”组件库:已收获7万多star、在国外爆火,前端开发者一定要试试

Electron与Tauri:你选择哪款跨平台框架?






分享在看点赞~Orz