原文 由Andrey Breslav发布于 2016年2月15日
我们欣然宣布: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。
谈到代码行数,在 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 吧!
P.S. 请到 Reddit 和 Hacker News 上阅读相关的讨论