原文:Kotlin 1.0 Released: Pragmatic Language for JVM and Android
作者:Andrey Breslav
Kotlin是一门实用的编程语言,可用于JVM和Android程序开发。日前,Kotlin 1.0正式发布。以下为原文翻译:
我们欣然宣布:Kotlin 1.0 发布了!
这是条令人激动的漫长之路,如今我们总算达成首个大版本发布。为了庆祝正式版本的发布,我们为Kotlin准备了焕然一新的logo:
什么是 Kotlin ?
Kotlin是一门实用的编程语言,可用于JVM和Android程序开发,Kotlin结合了面向对象和函数式特性,致力于互操作性、安全、简洁和工具支持。
Kotlin是一门通用的语言,只要能用Java的地方就能用Kotlin,包含:服务器程序开发、移动应用开发(Android)、桌面客户端程序开发。 Kotlin支持所有主要的开发工具以及服务,比如:
- IntelliJ IDEA、Android Studio和Eclipse;
- Maven、Gradle和Ant;
- Spring Boot(Kotlin 支持今天正式发布!);
- GitHub,Slack,甚至Minecraft。
Kotlin的主要特点之一是Java+Kotlin混合工程的互操作性以及无缝兼容,使引入Kotlin的过程简单容易,并达成更少的重复性代码(boilerplate code)和更佳的类型安全(type-safety)。
Kotlin还有一个扩展标准库(extensive standard library)能让日常工作变得简单顺畅,它能帮助保持低字节码足迹 (bytecode footprint)。当然,Kotlin 中自然可以使用 Java 库,反之亦然。
何谓实用?
了解核心价值是长期项目最至关重要的一环。如果要选择一个词来形容Kotlin设计,那必是”实用”。这也是为什么在一开始我们便声明Kotlin的重心不在发明或研究。虽然最后我们仍然做了一些新发明,但从未是项目的重点。当然,我们是在建立一个防止错误的类型系统,以及有利于代码重用的抽象机制,换作其他人在我们相同位置上,也都会这么做的。但我们用以独特的(并且是务实的)方法来落实-我们专注于使用案例,来促使语言成为一个好工具。
这也立即的点出了最根本的概念,即与现有代码和基础设施的互操作性是极致重要的。谁不希望能用正确方法重新创造世界,认一切从零开始?如果不是考量着与Java的互操作,Maven的整合,以及Android的兼容发展,Kotlin的设计会是更容易的!并且肯定在许多方面更优雅。优雅虽是可喜的,但并不是我们的主要目标。Kotlin的首要目标是在实用。而只要我们的用户能避免重新学习,重新发明,从头开始重做,并且越能重复使用,就是对用户好的。
为什么Kotlin没有自己的包管理器,或自己的构建系统?
- 因为已经有Maven和Gradle,并重复使用他们庞大的插件对许多项目是非常重要的。
- 为什么在重新设计集合会更加容易的情况下,我们还是投入了大量的时间和精力制作JDK兼容的集合接口?
- 因为大量的Java代码通过JDK集合运行,而转换数据是非常痛苦的。
- 为什么Kotlin支持Java 6的字节码?
- 因为很多人还在运行的Java 6(尤其是Android)。
对我们来说实用是在创造用户体验,而不是只一种语言或单独的库。许多语言设计的决策是在重重限制下不得不为,比如: “这个设计是否会阻碍增量编译?”,“万一这个设计增加了APK方法计数?”,“IDE将如何标示这个as-you-type?”…等等。因此我们特别为我们的工具以及语言感到自豪。
Kotlin 是否足够成熟,能适用于正式产品中?
Kotlin是足够成熟的,并且已经应用于产品开发有一段时间了。在过去的两年中,JetBrains不止实现了编译器和工具化,同时还在项目中进行过大规模地对 Kotlin 进行实战检测。除了JetBrains内部,许多外部公司都已经使用Kotlin开发正式产品一段时间了。
正因为我们花费了相当大的精力通过实践来验证我们的设计决断,我们花了相当长的时间才正式发布1.0版本。这是必须的步骤,因为往后的这个编译器将确保它的向后兼容性,并且未来Kotlin 的后续版本也必须兼容现有的代码。于此,我们花了点时间来确保我们的选择是正确的。
我们之所以能够达成这个里程碑,必须感谢来自 Kotlin 早期使用者的帮助。感谢他们的勇敢,感谢他们付出的精力,感谢他们的热情!
Kotlin 的背后是谁?
首先必须知道的是,Kotlin是一个开源语言。
- Kotlin是在GitHub上基于Apache 2.0 Open-Source license开发的;
- 如今已经有超过100位贡献者。
目前而言,JetBrains是Kotlin的主要支持者,我们为了开发Kotlin付出了巨大的努力并且承诺会长期的坚持下去。最初我们创造Kotlin是为了满足自身开发产品的需求,如今我们已经有十多个JetBrains产品使用Kotlin开发,包含IntelliJ IDEA、JetBrains Rider、JetBrains Account和E-Shop、YouTrack以及部分IDE。因此Kotlin将会长存。
从2012年开始,我们对 Kotlin 的开发就保持着非常开放的态度:无时无刻在社区中交流着,收集并且处理了大量反馈意见与建议。我们正计划着设立一个集中地以供汇总讨论和设计建议,如此一来整个流程就会变得更加透明,有条理。Kotlin 规范化相关的工作目前尚未开始,但这只是迟早的事情。
语言设计与项目的统筹管理已经由 JetBrains 雇用的团队完成了,目前我们有超过20位全职员工致力于 Kotlin,这也说明了 JetBrains 是认真的对待这个项目。
Kotlin 相关的数字
让我们从一些数字来了解Kotlin。
- 上个月总计有超过11k的使用者,光是上周就有5k的使用者
- 上百个StackOverflow回答
- 两本书:Kotlin in Action和Kotlin for Android Developers
- 大约1400人活跃于Slack(获得邀请)
- 超过50万行的Kotlin代码的在大型项目中使用,比如IntelliJ IDEA和Project Rider
谈到代码行数,在GitHub上的开放知识库内Kotlin的代码行数正随着时间指数增长,这还不包含JetBrains自己的项目。
今天,将Kotlin用于正式产品开发的企业数目不断的增加,其中包括大家熟知的Prezi和Expedi。如果你也正在使用Kotlin,请提交一个Pull Request让我们将你的项目也加进这个名单上。
Kotlin将如何演进?
随着1.0的发布,我们承诺了Kotlin语言的向下兼容性以及其标准库,kotlin-stdlib,的长期发展:
- 新版编译器能够兼容旧版二进制文件(但是旧版本的编译器无法理解新的编译,就像 javac 1.6 无法解析 javac 1.8 编译的类一样)
- 在运行时环境,旧版二进制文件能与新版二进制文件兼容(但是新的代码还是需要新的依赖)
这仅适用于JVM/Android。JavaScript的支持仍处于实验阶段,之后会单独发布。
至于计划,除了修复bug之外我们近期的目标包含:
- 对Kotlin工具链持续性能优化(例如,Gradle增量更新)
- JavaScript语言支持(包括JVM和JS的交叉编译)
- 支持将优化过的lambdas 表达式生成Java 8字节码,以及其他(只要Android用户需要,我们也会积极支持Java 6)
工具更新和bug修复会在次要更新中发布,比如1.0.x。较大的变更,首先会发布一个早期试用版本(EAP版本),然后才会发布正式版,比如1.1。
如何开始使用?
最简单的试用Kotlin的办法是使用在线的迷你IDE: try.kotl.in,以及Koans,一个有系统的入门教学,来引导你了解语言基础。
你也可以选择在自己的设备上使用Kotlin(Koans也可以离线使用):
- IntelliJ IDEA(Ultimate或者Community版本):直接创建一个Kotlin工程或者在Java工程中新建一个Kotlin文件
- Android Studio:通过Plugin Manager安装Kotlin插件
- Eclipse:通过Marketplace安装Kotlin插件
温馨提醒:如果你使用的是旧版本,你可能需要将 Kotlin 插件升级到1.0。
为了快速了解Kotlin语言的概念,语言文档和教程可以在官方网站上取得,你也可以在Digest of 2015上找到社区成员分享的演讲和文章。
如果你计划在现有的Java项目中使用Kotlin,你可以用IDE中内置的Java-to-Kotlin转换器轻松的转换类。
最后,也请记得来我们的论坛或Slack(获取邀请)上分享你的想法和问题。
我们在此再次感谢大家,Kotlin是依靠着社区的力量达成的。
现在就让我们享受Kotlin吧!