微信号:infoqchina

介绍:有内容的技术社区媒体

Kotlin要支持iOS开发和Web开发了,这是要全栈?

2017-11-06 08:05 InfoQ
   作者|Dmitry Jemerov
译者丨核子可乐
编辑|覃云
KotlinConf 作为第一届 Kotlin 专题会议日前已正式开幕,而来自世界各的约 1200 名与会者齐聚旧金山,这一幕相信给大家留下了深刻印象。在会议的主题演讲当中,Kotlin 首席设计师 Andrey Breslav 公布了一系列与 Kotlin 紧密相关的重大发展成果,而我们将在这里与各位分享这些激动人心的第一手资讯。
1 Kotlin 1.2 RC

主题演讲当中提出的第一项重要公告,正是 Kotlin 1.2 候选发行版(简称 RC)的公布。此版本中囊括一系列新功能,包括对多个多平台项目的实验性支持、允许开发者在针对 JVM 与 JavaScript 的模块之间进行代码共享,同时涉及多项语言改进——包括支持在注释中使用数组字面量。

关于 1.2 版本当中的更多新鲜内容,请参阅 Kotlin 1.2 Beta 版本发布博文:

https://blog.jetbrains.com/kotlin/2017/09/kotlin-1-2-beta-is-out/

编译器现在不再适用于 Kotlin 1.2 较早版本所编译的二进制文件,大家需要使用此版本对其进行重新编译。当然,使用 Kotlin 1.0.x 或 1.1.x 版本编译的代码能够与此版本的编译器完全兼容。

尽管协程机制仍然属于一项实验性功能,但我们希望在这里澄清所谓“实验性”状态的确切含义。协程已经完成生产准备工作,我们也正在利用其处理开发任务 ,而且我们在使用当中没有发现任何重大问题。之所以继续将其保持在实验性状态,是因为这样我们才能对其进行设计迭代。请注意,虽然我们对 API 进行一变更,但当前 API 即使在被标记为“已弃用”后仍将受到支持。我们也将提供必要的迁移工具。根据目前的计划,在 Kotlin 1.3 中协程功能将正式告别实验状态。

现在我们需要大家的热情帮助。尽管我们已经在 JetBrains 内部及其它团队当中对这一版本进行了大量测试,但真实世界的使用方式要比我们所能涵盖的广泛得多。因此,请在您自己的项目当中尝试 Kotlin 1.2 RC,并在遇到问题时将相关情况反馈给我们。您的帮助对于保证最终版本的顺利诞生至关重要。另外,也请邀请您的亲朋好友一同参与这次测试,感谢。

2 Kotlin/Native iOS 支持

我们公布的下一条重大消息是利用 Kotlin/Native 支持 iOS 开发——而这也将成为 Kotlin Native 0.4 中的组成部分。虽然这项支持尚处于早期测试阶段,但其已经真实存在,并标志着我们在推动 Kotlin 走向全平台开发方面迈出了重要的一步。

为了展示这种可能性,我们编写了两款应用,并将其发布在了苹果 App Store 当中:

1.Spinner 应用 (GitHub) 是一款利用 OpenGL 开发而成的简单游戏。其可同时运行在 iOS 及 Android 平台之上(Play Store 链接),且两个版本中的大部分代码彼此共享。其 iOS 版本拥有几项额外功能,例如游戏中心集成等。

Spinner app:

https://itunes.apple.com/us/app/kotlinconf-spinner/id1291282375?mt=8

https://play.google.com/store/apps/details?id=com.jetbrains.konan_activity2

GitHub:

https://github.com/jetbrains/kotlinconf-spinner

2.KotlinConf 应用 (GitHub) 负责向大家展示本次会议的时间安排,同时具备一套利用 UIKit 打造的全原生 iOS UI。

KotlinConf app:

https://itunes.apple.com/us/app/kotlinconf/id1299196584?mt=8

GitHub:

https://github.com/jetbrains/kotlinconf-app

这两款示例应用皆为开源成果,您可以利用其作为模板,仅利用 Kotlin 构建自己的跨平台移动应用。

3 Kotlin/Native IDE 支持

当然,大家在实际生产当中也需要 IDE 的助力。从今天开始,Kotlin/Native 也将迎来 IDE 支持能力。

我们现在正在发布一款 Kotlin/Native plugin for CLion(我们的 C/C++ IDE)的原始预览版本。该插件支持利用 CMake 作为构建系统。其中包含来自 Kotlin IntelliJ IDEA 插件中的全部代码编辑功能集,同时初步支持项目创建、测试与调试等操作。

要体验此插件,请安装 CLion 2017.3 EAP 并在 JetBrains 插件列表中搜索“Kotlin/Native”。

在未来几天内,我们还将发布一篇单独的博文,其中将涵盖更多与此插件及其功能相关的细节信息。当然,这款 CLion 插件还只是我们 Kotlin IDE 支持道路上的第一步 ; 请继续关注明年陆续公开的更多后续公告!

4 Ktor 0.9

服务器端开发亦是我们多平台路线图中的一大关键性部分。现在,我们正式公布了自己的相关成果:Ktor 的 0.9 版本。这是一套非常出色的、基于异步协程的 Web 框架,完全由 Kotlin 打造而成。

Ktor 目前已经在众多项目当中得到使用,而我们确定其将成为构建高性能 Web 应用程序的坚实基础。感兴趣的朋友可以点击此处查看 ktor.io 上的快速上手指南,请亲自体验并与我们分享您的感受,从而帮助我们为 1.0 版本做好更加充分的准备。

Ktor:

http://ktor.io/

快速上手指南:

http://ktor.io/quickstart/index.html

5 用 React 与 Kotlin 创建现代 Web 应用

在利用 Kotlin 进行前端开发方面,今天公布的重量级消息是面向 React.js 的官方 Kotlin 打包工具的正式发布。此外,create-react-kotlin-app 也值得一提,这是一套用于利用 React.js 在 Kotlin 当中创建现代 Web 应用程序的工具集。利用 create-react-kotlin-app,您可以在无需费心于项目设置与配置构建工作的前提下,专注于快速投身客户端应用开发工作,同时享受到静态类型语言优势以及由 JavaScript 生态系统带来的强大资源储备。

要开始使用,请首先运行 npm install -g create-react-kotlin-app,而后参阅 入门指南。

React.js:

https://reactjs.org/

create-react-kotlin-app:

https://www.npmjs.com/package/create-react-kotlin-app

6 多平台项目演示

为了展示我们如何将多平台发展路线图中的各项成果整合在一起,我们利用自身技术堆栈的全部最新版本构建起一款应用:KotlinConf。其由以下组件共同构成:

  • 后端采用 Ktor;

  • 浏览器应用采用 React.js 与 Kotlin React 打包工具;

  • Android 应用采用 Anko 与 Android Architecture Components;

  • iOS 应用 (如上文所述) 采用 UIKit。

其中后端、浏览器应用以及 Android 应用之间的共享代码采用 Kotlin 多平台项目技术。在异步编程方面,所有组件皆采用协程机制。为了实现服务器与客户端之间的数据交换,我们还使用到了全新的 kotlinx.serialization 库。

大家会发现这款应用的源代码中蕴藏着巨大的宝藏,您完全可以根据需求将其引入自己的工作项目当中。

7 学习 Kotlin

随着 Kotlin 影响力的持续扩大,越来越多的朋友有意学习这门语言。为了简化学习过程,我们发布了 EduTools 插件的全新版本,旨在帮助大家通过您最熟悉的 IDE 经由交互式实践方式学习 Kotlin。新版本增加了对 Android Studio 的支持(此前只支持 IntelliJ IDEA),同时包含可供用户自行构建课程的新 UI。

8 未来发展方向

至于 Kotlin 语言的未来发展方向,我们目前的主要目标是在 Kotlin 所支持的各平台之间实现效果更好且更为广泛的代码复用效果。我们计划扩展全部平台上的可用库资源集合,同时利用同一 API 涵盖 I/O、网络、序列化以及日期处理等因素。

在编译器方面,我们对 1.3 版本的主要关注重点仍然放在内部变更层面——而非外部可见的语言特性。内部调整能够提升性能、改进类型推断、为所有目标平台生成更为高效的代码,同时进一步提升 IDE 插件的响应能力。我们希望未来能够发布更多卓越的新型语言特性使后续发行版更上一层楼,但目前我们还无法就此作出任何实质性承诺。希望大家享受这段 Kotlin 探索之旅!

本文翻译已获授权,原文链接见:

https://blog.jetbrains.com/kotlin/2017/11/kotlinconf-keynote-recap/

本文首发于 InfoQ 垂直公众号 移动开发前线,ID:bornmobile


 
InfoQ 更多文章 前端框架新选择——基于MVVM的San Q新闻丨阿里云占中国市场近五成份额;谷歌欲借TensorFlow重返中国;Kafka迎来1.0.0版本,正式告别四位数版本号 Apache Kafka 1.0:为什么我们等了这么久? Service Mesh:下一代微服务? 二叉树视频丨龙泉寺、北漂、二次元,活在不同圈子里的相同程序员
猜您喜欢 给我深刻印象的教育片段 Git 由浅入深之分支管理 了解下依赖注入 Python字符串实现原理 谷歌是如何管理聪明人的?