写点什么

与 Andrey Breslav 谈论 Kotlin 1.0 的发布

  • 2016-03-03
  • 本文字数:2471 字

    阅读完需:约 8 分钟

在经过了三个月的 beta 测试后, Kotlin 团队终于宣布发布 Kotlin 的 1.0 版本,该版本的目标是提升这门语言在 API 与 ABI 方面的稳定性。

从该语言的第四个 beta 发布,到发布候选版本的出现,直至 1.0 版本的正式发布,该语言经历了大量的变化,包括它的标准库与 Kotlin IDE。特别是对于标准库的修订主要专注于对它的 API 进行清理,并减少资源的占用,从而更好地配合 Android 应用的开发。在语言方面,新版本对于语法与语义进行了大量的修正,并且最终确定了二进制格式,移除了字节码中一些比较晦涩的部分。新版本中的工具引入了一种全新的算法,以改善依赖的检测,按照 JetBrains 的说法,这一点大大提升了增量式编译的速度。此外,IntelliJ IDEA 的最主要 Kotlin 插件现在也包含了 Android 插件,因此 Android 在新版本中得到了直接支持。

来自 JetBrains 的 Andrey Breslav 是 Kotlin 的设计主管,他也澄清了 Kotlin 在向后兼容方面的计划。具体来说,Kotlin 将致力于确保新的代码能够与旧的二进制文件共同编译与运行(即 ABI/API 的向后兼容),而旧的二进制文件也能够与新的二进制文件相兼容(即 ABI 的向前兼容)。在源代码层面,团队的目标是确保新的编译器能够顺利地编译所有旧的编译器能够编译的代码。InfoQ 与 Breslav 进行了一次访谈。

促使你设计 Kotlin 这门语言的动力是什么?

当我们 2010 年刚启动这个项目的时候,最初的想法是创建一种更好的语言以用于开发我们的产品,并且能够运行在 JVM 上,不久我们就意识到还有其他人也有同样的需求。虽然当时还有一些用于替代 Java 的其他选择,但他们都不太适合于我们的需求(有些用户与我们的需求有所差别,那些语言对于他们来说已足够完美)。我们的需求如下:

  • 静态类型:这一点的目标在于大规模代码库的可维护性。
  • 更平滑的迁移路径:逐渐地将新的代码引入现有的代码库,以尽量减少对其他代码的影响。
  • 高质量的工具:我们相信,一门语言的生产力很大程度上取决于工具的支持。
  • 易于学习及理解:我们团队并没有区分“库的作者”与“库的使用者”这两种角色,我们希望所有开发者都能够在所运用的语言中达到相同的生产力。

可以说,具备以上四点特性的 Kotlin 在 JVM 的所有实现中可以说是独一无二的。

Kotlin 终于发布了 1.0 版本,你能否总结一下这个里程碑的意义?

许多开发者在这一版本发布之间就已经在开始使用 Kotlin 了,但一个官方的 1.0 版本为用户提供了更好的保障。经常有用户对我们说:他们的组织不会考虑采用 Kotlin,除非能够发布一个正式的 1.0 版本,我完全理解这些组织的决定。如今随着 1.0 版本的问世,Kotlin 终于得以“正式亮相”,用户也可以放心地在生产环境中使用它了。这种信心很大程度上来自于语言的进化方式:从现在起,我们将承诺新版本的向后兼容性,即该语言及其标准库的后续版本中出现的任何改动都不会破坏之前版本所编译生成的二进制文件。因此,在用户部署 Kotlin 代码时,他可以确信不会出现兼容性问题,正如部署 Java 代码一样。

我们为 1.0 版本的发布投入了 5 年时间,后向兼容性是投入这么多时间的一个主要原因。我们必须保证这门语言设计上的优雅性及实践性,否则就难以保证不会出现任何破坏性的变更。并且我们相信,只有在实际的生产环境中使用这门语言,才能够做出这种承诺。因此,我们目前已经在 JetBrains 本身的产品中使用 Kotlin 近两年时间,并且对于它有着充分的信心。

当然,这并不是说这门语言的设计从一开始时就是完美的:我们在 JetBrains 产品以及其他项目的生产环境中发现了一些严重的问题,但我们仍有充分的时间去修复这些问题并进行进一步的验证。

Svetlana Isakova 在 DroidCon-DE 上将 Kotlin形容为“Android 上的 Swift”。你能否详细地说明一下 Kotlin 在现有的编程语言浪潮中如何占据一席之地?

"Android 上的 Swift"这个引人注目的说法是由 Mike Gouline 首先提出的,而公众很快接受了它。这是个非常准确的比喻,可以这么说:正如 Swift 对于 iOS 开发者来说是比 Objective-C 更为现代化的替代者一样,对于 Android 开发者来说,Kotlin 则是 Java 的一个更为现代化的替代方案。不过我要指出一点,Kotlin 的应用并不仅仅限于 Android 的开发而已。

至于 Kotlin 所涵盖的平台与领域,可以说只要是使用 Java 的地方就能够运行 Kotlin:包括桌面、服务端与移动端等任何平台。Kotlin 所生成的字节码与 Java 6 相兼容,使它的应用范围更加广阔。运行时本身非常小(只有大约 800K),并且我们非常注意避免任何可能会使 Kotlin 代码在某些场合无法工作的运行时问题(例如我们避免使用特定的类加载器或运行时打包的需求等等)。此外,我们目前正在为 Kotlin 开发一个基于 JavaScript 的后台(目前还处于实验阶段),这会进一步扩展 Kotlin 的可应用性:用户将能够通过 Kotlin 开发完整的 web 应用。

Kotlin 未来的路线图是怎样规划的?

我们还有许多任务要完成,这些任务有大有小。之前提到的 JS 后台是一个比较大的任务。另外还有工具链的性能。Kotlin 现在已经在 IntelliJ IDEA 上实现了增量式编译,如果你修改了某些代码,那么只有被改动的文件(而不是模块!) 会被重写编译。我们也希望为 Gradle 用户带来相同的体验,这部分工作正在进行中。即将到来的 1.1 版本将能够生成 Java 8 字节码(并同时生成 Java 6 字节码),以实现多种功能优化,例如 lambda 表达式等等。在语言特性方面,我们并不打算在 1.1 中引入任何重大的改动,但可能会去除某些限制,例如 data 的相关类。我们还计划进一减少标准库的方法数量,这对于 Android 开发者来说是相当重要的。

我们还在计划一些更为激动人心的特性,举例来说,我们打算在 Jigsaw 运行时模块正式发布时提供对它的支持,并且在 Kotlin 的未来版本中加入对 async/await 语法的支持。

使用 Kotlin 1.0 的用户必须对全部代码进行重新编译,以清除之前版本所生成的代码。同样道理,所有已经过期的语言结构会造成错误。用户可以在 IntelliJ IDEA 中通过一个预打包的插件进行下载,或者直接从 GitHub 库进行构建。

查看英文原文: Q&A with Andrey Breslav on the Kotlin 1.0 Release

2016-03-03 18:001782
用户头像

发布了 428 篇内容, 共 178.7 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

雅菲奥朗 FinOps 认证培训:开启企业云财务管理转型之路

雅菲奥朗

云计算 FinOps FinOps 认证 FinOps 考试 FinOps 培训

【第3期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读 - 下篇

极限实验室

反欺诈技术发展的现状与未来预测

芯盾时代

金融 反欺诈

DAPP去中心化矩阵公排互助系统开发教程指南及源码设计

V\TG【ch3nguang】

SSL证书验证失败的原因

德迅云安全杨德俊

“软件质量”,构筑企业值得信赖的护城河

轶天下事

9000字干货:从消息流平台Serverless之路,看Serverless标准演进

轶天下事

汇聚行业实践,树立应用典范——《Serverless应用实践案例集》重磅发布

轶天下事

操作系统笔记 day4

万里无云万里天

操作系统

做亚马逊想买一个云服务器,哪个比较靠谱呢?

百度搜索:蓝易云

MySQL亿级数据平滑迁移实战

vivo互联网技术

MySQL spring mybatis 数据迁移

AICon 全球人工智能开发与应用大会参会有感

三掌柜

AICon

Docker镜像解析获取Dockerfile文件

百度搜索:蓝易云

量化交易/合约量化/合约跟单/秒合约/永续合约/交易所系统开发

V\TG【ch3nguang】

游戏行业大模型陪练实战:3分钟快速配置对练剧本

中关村科金

人工智能 大模型 智能陪练

LED双色屏的特性与受欢迎的原因

Dylan

升级 LED display LED显示屏 色彩 颜色

CodeArts 7月特性内容20240808

轶天下事

华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用

轶天下事

Ubuntu安装Docker Engine

百度搜索:蓝易云

量化交易系统开发策略方案及详细

V\TG【ch3nguang】

品质更进阶 长安马自达MAZDA EZ-6通关中国“热极”

Geek_2d6073

华为云Serverless可观测性解决方案打造高效、可靠的云原生应用

轶天下事

淘宝商品销量数据接口:获取与利用全攻略

tbapi

淘宝商品销量接口 淘宝商品销量API 淘宝月销量接口 淘宝商品销量数据采集

推荐6款好用的低代码开发平台

秃头小帅oi

流动的智慧:开创集成资产管理新局面 ——华为云ROMA Connect资产中心

轶天下事

AI 应用实战营 - 毕业总结

德拉古蒂洛维奇

极兔速递2024上半年净利润转正 中国市场首次盈利

财见

Docker中jdk8容器里无法使用JDK的jmap等命令的问题

百度搜索:蓝易云

【ASPLOS2024】RECom:通过编译器技术加速推荐模型推理,论文中选并获得荣誉奖项!

阿里云大数据AI技术

人工智能 阿里云 论文 ASPLOS

从零开始探索人工智能:Python与PyTorch的奇妙之旅

代码忍者

巧用PDF转Markdown插件,在扣子(Coze)手搓一个有趣好玩的AI Bot

合合技术团队

人工智能 PDF 科技

与Andrey Breslav谈论Kotlin 1.0的发布_Java_Sergio De Simone_InfoQ精选文章