0

Kotlin 1.1已正式发布!支持JavaScript、协同程序

will created at5 years ago view count: 2577

本文转载自JetBrains

本文是翻译官方博客:Kotlin 1.1 Released with JavaScript Support, Coroutines and more

我们今天发布Kotlin 1.1。这对我们来说是一个巨大的进步,我们为此感到非常高兴!

最新消息

Kotlin 1.1进行了许多语言改进。支持JavaScript和协同程序是引人注目的亮点。再举几个例子:类型别名绑定可调用引用lambda中的解构赋值。可以在我们的最新消息页面找到完整的列表(试试可运行示例 runnable examples!)。

支持JavaScript

Kotlin旨在成为真正的全堆栈语言:现在,所有功能都可以用于JVM/Android和JavaScript。(在JavaScript中无法实现反射,但我们正在这方面努力。)这意味着可以用Kotlin编写整个web应用,并且我们已经有一些在JetBrains中的相关经验。我们将很快发布这方面的教程和其他资料。

Kotlin对JavaScript的支持包括动态类型,以便实现与“本地”JavaScript代码的互操作性,并且使用来自DefinitelyTyped的typed header以利于使用各种有名的库。

从我们的文档了解更多信息。

协同程序

Kotlin中的协同程序使非阻塞异步代码像普通的同步代码一样简单。

异步编程正在接管世界,唯一阻止我们的是非阻塞代码对系统增加的复杂性相当可观。Kotlin现在提供了简化这种复杂性的方法,通过单原语挂起函数:使协同程序成为语言中的一等公民:这种函数(或者说lambda)代表可以被挂起(不会阻塞任何线程)且可以在以后继续执行的运算。

从技术上而言,协同程序是一种轻量级的多任务协作方法(非常类似Fiber)。换言之,它们就是一种更好的线程:几乎可以随意启动和保留、消耗资源极少(挂起用于协同程序,阻塞用于线程)、编写和自定义都非常简单。

我们设计协同程序以提供最大的灵活性:语言中固化的内容很少,而且很多工作能以库的方式进行。kotlinx.coroutines项目提供以Rx、CompletableFuture、NIO、JavaFx和Swing为基础的库。可以为Android和JavaScript编写类似的库。即使很多可用的内置结构是以其他语言编写的,也可以采用Kotlin库来表达。包括来自C#的async/await、来自Python的generators/yield、来自Go的channels/select:

从我们的文档了解更多信息。

重要说明:因为这些功能提供了众多优势,Kotlin协同程序几乎算是全新的设计,所以需要经过广泛的实战测试,才能确保其100%的正确和完整。因此,我们发布时才加上了“实验性”的选择加入标志。我们不打算改变语言规则,但可能在Kotlin 1.2中对API进行一些调整。

工具

Kotlin 1.1不是Kotlin工具的主版本:我们希望具有这些功能的工具就绪后,不影响到语言本身,因此,您已在Kotlin 1.0.x版中看到了很多这类改进。列举几个亮点:

  • 用于所有主要IDE的Kotlin插件:IntelliJ IDEA、Android Studio、Eclipse和NetBeans
  • IntelliJ IDEA和Gradle中的增量式编译
  • 用于Spring、JPA和Mockito(使类公开且生成无参构造函数)的编译器插件
  • 处理注释的kapt
  • 用于Android项目的Lint支持
  • 众多IDE意向、检查、快速修复、重构和代码补全改进

我们将继续努力改善我们的工具,并在1.1.x版中交付改进。

Kotlin的第一年:采纳和社区

简言之,Kotlin正在成长。去年,用户已经超过16万人。Github上OSS项目的Kotlin代码行已从2.4M增长到10M行(大约增长了4倍)。我们的Slack社区人数从1’400人增加到5’700人以上(大约增长了4倍)。该社区在全球组织了大量聚会和用户组。Kotlin书籍和在线课程日渐丰富。

Kotlin的服务器端和Android开发人员数量均等(大约各占一半)。Spring Framework 5.0已支持Kotlinvert.x 3.4同样如此。GradleTeamCity使用Kotlin建立脚本。可以在kotlin.link找到更多使用Kotlin的项目。

很多著名的公司也在使用Kotlin:Amazon Web ServicesPinterestCourseraNetflixUberSquareTrelloBasecamp。其中包括由著名银行(如:Goldman Sachs、Wells Fargo、J.P. Morgan、Deutsche Bank、UBS、HSBC、BNP Paribas、Société Générale)组成的联盟开发的分布式分类账Corda,其代码库中的Kotlin代码超过90%

我们衷心感谢世界各地的用户、捐助者和倡导者。您的支持对我们十分重要!

下一步行动

为使Kotlin成为真正的全堆栈语言,我们将提供工具和语言支持,以便在多种平台上编译相同代码。这将便于在客户端和服务器端共享模块。我们将继续改进对JavaScript工具和库的支持。其中,已经开始着手实现JavaScript平台的增量式编译。敬请关注1.1.x版更新。

Java 9即将面世,我们会在发布前提供对其新功能的支持。

我们期待下个月收到大量有关协同程序的反馈,而改进语言的这一部分(性能和功能)是我们最重要的事情。

除此之外,下一版的重点主要放在维护、改进性能、基础结构和缺陷修复上。

附言:在多种平台上运行是Kotlin的战略方向。可以在服务器、桌面、Android设备和浏览器上运行1.1版,但我们打算今后将Kotlin编译到本地代码,并在更多平台(例如包括:iOS和嵌入式设备)上运行。一支实力强大的团队正在JetBrains从事这个项目,我们估计很快就能展示一些很有趣的成果。不过尚未计划为此专门发布任何版本。

安装说明

和以往一样,您可以试试Kotlin在线,其网址是:try.kotlinlang.org

点击这里查看新API推荐功能的生动示例。

兼容性。Kotlin 1.1的语言和标准库都向后兼容(模数缺陷):如果在1.0下编译和运行程序,在1.1版同样没问题。为了帮助逐渐更新的大型团队,我们提供了一个禁用新功能的编译器开关。这里是说明相关陷阱的文档。

Maven/Gradle:编译器和标准库使用1.1.0作为版本号。

IntelliJ IDEA:2017.1版捆绑了Kotlin 1.1,对于早期版本,请安装或更新到1.1版Kotlin插件。

Android Studio:通过插件管理器安装或更新插件。

Eclipse:用Marketplace安装插件。

可以从Github发布页面下载命令行编译器

​​​​​

report
回复
0

1.1 以后还可以在数字类型中加入下划线提高可读性。

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
5 years ago 回复