<p style="text-align: center;"><img alt="Kotlin 一统天下?Kotlin/Native 支持 iOS 和 Web 开发" src="https://simg.open-open.com/show/5f0d62b2e85556c61ca25ed768dfdb40.png" /></p> <p>首届官方举办的 Kotlin 专题会议 KotlinConf 于昨天正式开幕,来自世界各地约 1200 名与会者齐聚旧金山,在这场盛大的 KotlinConf 大会主题演讲中,Kotlin 的首席语言设计师 Andrey Breslav 公布了一系列与 Kotlin 紧密相关的重大发展成果,我们不妨关注一下 ——</p> <h3>Kotlin 1.2 RC</h3> <p>首先宣布了 Kotlin 1.2 RC 版(即 1.2 首个候选发行版)。该版本引入了一系列新功能,包括对 <a href="/misc/goto?guid=4959011541881702654" rel="nofollow,noindex">多平台项目</a> 的实验性支持 —— 允许开发者在针对 JVM 和 JavaScript 的模块之间共享代码,以及多项对语言方面的改进 —— 包括支持在注释中使用数组字面量。更多关于 1.2 版本新功能的内容, <a href="/misc/goto?guid=4959011541972862093" rel="nofollow,noindex">点此查看</a> 。</p> <p>此外,值得关注的就是协程这个特性了。虽然协程仍然被标记为实验性状态,但官方特意说明了这里“实验性”代表的含义。官方表示协程已经完全准备好用于生产环境,他们也已使用协程进行开发,而且也没发现在使用当中出现任何重大问题。之所以仍保持实验性状态,是为了能够对 Kotlin 继续进行设计迭代。根据目前的计划,Kotlin 1.3 将会删除协程的实验性状态。</p> <h3>Kotlin/Native 对 iOS 开发的支持</h3> <p>另外一个重大消息就是 Kotlin/Native 已支持用于开发 iOS 应用,这也将是 Kotlin/Native 0.4 的特性之一。虽然对 iOS 开发的支持仍处于早期阶段,但确实已经实现了,这是在所有平台上使用 Kotlin 进行开发的重要一步。</p> <p>官方还特意展示了利用 Kotlin/Native 开发的两款应用( <a href="/misc/goto?guid=4959011542062060421" rel="nofollow,noindex">Spinner app</a> ( <a href="/misc/goto?guid=4959011542165383525" rel="nofollow,noindex">GitHub</a> )、 <a href="/misc/goto?guid=4959011542255660989" rel="nofollow,noindex">KotlinConf app</a> ( <a href="/misc/goto?guid=4959011542345910729" rel="nofollow,noindex">GitHub</a> )),它们都可以运行于 iOS 和 Android 平台。Android 和 iOS 平台共享了不少代码,其中包括大多数图形处理、声音播放和用户输入响应代码。</p> <p>两款应用都已开源,你可以将它们作为模板,仅使用 Kotlin 构建自己的跨平台移动应用。点此可了解其中一款应用。</p> <h3>IDE 对 Kotlin/Native 的支持</h3> <p>Kotlin/Native 也将迎来 IDE 的支持。官方表示首先将在 C/C++ IDE CLion 中试用该功能,目前正在发布一个名为 Kotlin/Native plugin for CLion 的插件,该插件支持使用 CMake 作为构建系统。其中包含来自 IntelliJ IDEA 的 Kotlin 插件中全部代码编辑功能集,同时初步支持项目创建、测试与调试等操作。</p> <h3>使用 React 和 Kotlin 创建现代 Web 应用</h3> <p>对于使用 Kotlin 进行 Web 前端开发的开发者,Andrey Breslav 在大会上还公布了另外一个重大消息 —— 正式发布了针对 React.js 的官方 Kotlin 封装工具。此外,还有一个名为 create-react-kotlin-app 的工具集 —— 通过 Kotlin 使用 React.js 创建现代 Web 应用。</p> <p>使用 create-react-kotlin-app,可让开发者无需费心于项目设置和配置构建这些工作,能专注于快速开始客户端应用开发,同时体会到静态类型语言的优势以及由 JavaScript 生态系统带来的强大配套资源。 <a href="/misc/goto?guid=4959011542430499301" rel="nofollow,noindex">详情点此了解</a> 。</p> <h3>未来的发展方向</h3> <p>Kotlin 语言的未来发展方向主要是在 Kotlin 支持的平台之间实现更好、更广泛的代码重用。官方表示计划通过使用同一 API 以扩展全部平台上的可用库资源集合,其中涵盖 I/O、网络、序列化以及日期处理等。</p> <p>编译器方面,1.3 版本仍集中关注内部层面的变更,而不是外部可见的语言特性。内部的改变能提高性能、改进类型推断、为所有目标平台生成更高效的代码,以及带来更好的 IDE 插件响应能力。</p> <h3>关于 Kotlin/Native</h3> <p>说了这么多,Kotlin/Native 到底是什么?Kotlin/Native 能将 Kotlin 编译成机器码,目前还处于技术预览版阶段,离商用估计还需要至少一年的时间。</p> <p>Kotlin/Native 不是 Jni 的概念,它不仅仅是要与底层代码比如 C、C++ 交互,而且还要绕过 JVM 直接编译成机器码供系统运行。这说明了什么?Kotlin 准备扔掉 Java 这根拐杖了。</p> <p>第一次看到 Native 这个名字或许会很自然地想到 Jni,Kotlin 跑在 JVM 上面,使用 Jni 与底层代码交互。不过详细深入研究后可以发现,Kotlin 开发团队的野心不可小觑,Java 诞生这么多年,也没有涉足过编译成除 Java 虚拟机字节码以外的字节码的事情,Kotlin 才这么年轻,不得不说十分具有革命性。</p> <p>所以如果有人再问你什么是 Kotlin,你应该回答,Kotlin 是一门很厉害的静态语言(而不是之前常说的 Kotlin 是一门运行在 JVM 之上的静态语言)。反正你能想到的,Kotlin 的开发团队都想干。</p> <p>时钟拨回到到五个月前,2017 年 5 月 17 日 Google I/O 大会第一天,谷歌宣布 Kotlin 成为 Android 开发的官方支持语言。有了 JetBrains 和 Google 的背书,自此,对于“Kotlin 即将取代 Java ”的声音从未停止过。上个月,我们也曾发表过一篇题为“ <a href="/misc/goto?guid=4959011542532671788" rel="nofollow,noindex">Kotlin 将超越 Java 成为 Android 开发的第一语言?</a> ”的资讯,文中提到,Realm 公司调查报告给出的预测表示,“到 2018 年底,在 Android 开发领域,Kotlin 将超越 Java,成为开发 Android 应用的第一语言。”</p> <p>不过,再看回在 KotlinConf 大会中官方已公布的关于 Kotlin 的发展成果和未来方向,Kotlin 的目标可能并不是撼动常青藤 Java 在 Android 开发领域中的地位,他们的征途或许是星辰大海。</p> <p>参考: <a href="/misc/goto?guid=4959011542627572353" rel="nofollow,noindex">https://blog.jetbrains.com/kotlin/2017/11/kotlinconf-keynote-recap/</a></p> <p> </p>