专访 Hadi Hariri:Kotlin 为 Web 开发带来更多机会

  • 徐川

2017 年 11 月 17 日

话题:移动Android语言 & 开发前端

今年以来,Kotlin 语言好消息不断。

从谷歌在 I/O 大会上宣布 Kotlin 成为 Android 一等开发语言,到现在已经有六个月时间了。Google 宣称,在这段时间里,Google Play 中使用 Kotlin 开发的应用数量翻了一翻,使用 Android Studio 3.0 开发的项目当中有 17% 使用了 Kotlin。

最近发布的 Android Studio 3.0 有了内建支持 Kotlin 的稳定版。Support Library 27 增加了可空注解,让 Kotlin API 变得更友好。最近发布在 GitHub 上的 Anroid Kotlin 指南提供了 Android Kotlin 风格和互操作方面的指导。同时,官方还提供了一些应用示例,并在官方文档中添加了 Kotlin 的内容。

Android Studio 3.0 for Kotlin

Android Studio 3.0 是第一个内建支持 Kotlin 的稳定版。基于 IntelliJ 对 Kotlin 的大力支持,很多 IDE 特性都表现良好,如代码自动完成和语法高亮。可以通过 Code->Convert Java File to Kotlin File 菜单将 Java 代码转成 Kotlin 代码,或者直接将 Java 代码片段黏贴到 Kotlin 文件里也能实现代码转换。

项目和代码模板也支持 Kotlin。在创建新项目或代码文件时,可以选择 Kotlin 作为编程语言。

Kotlin 相关工具的用户体验已经十分完美。不过还存在一些已知的问题,这些问题在未来的版本中将会得到解决。

Android Kotlin 官方指南

Android Kotlin 指南分为两个部分,一个是风格指南——在使用 Kotlin 进行 Android 开发时,谷歌建议了一组规则和代码标准,涵盖了命名约定、格式化、代码结构等方面的内容。另一个是互操作指南——为使用 Java 和 Kotlin 创建 API 提供了一组规则,让不同语言之间的交互更通畅。

前段时间,第一届 KotlinConf 也召开了,发布的消息更惊人,Kotlin 要支持 iOS 和 Web 开发了,InfoQ 记者就此消息,联系到 Kotlin 负责开发者支持的副总裁 Hadi Hariri,了解到了一些进一步信息。

InfoQ:目前 Kotlin 开发团队有多少人,来自外部的贡献多吗?

Hadi:JetBrains 上的 Kotlin 团队中有将近 50 人,这些人被分成多个小团队,包括编译和工具团队。就核心工作而言,因为 Kotlin 是一个合作性的项目,其中也包括很多来自社区的贡献,所以并没有什么特别之处。

InfoQ:到底有谁在使用 Kotlin 进行开发了,能给我们列举一些公司吗?

Hadi:现在无论是在 Android 内还是 Android 外,都有很多的公司正在使用 Kotlin。就在上个星期,Stephanie Cuthbertson 在 KotlinConf 上提到了其中一些用于 Android 应用的公司,例如 Pinterest,Square,Expedia,Basecamp 等。

InfoQ:Kotlin 的梦想如此之大,是否有计划支持其他代码编译器或 IDE(如 Visual Studio Code)?

Hadi:我们没有计划在 Visual Studio Code 中支持 Kotlin,但是我相信社区可能有一些语法高亮显示的插件。但是,除了 IntelliJ IDEA,我们也已经支持 Eclipse 和 NetBeans。我们最近还宣布了基于我们 C/C++ IDE CLion 的 Kotlin/Native IDE 的早期计划。

InfoQ:针对跨平台开发,我们已经有 Xamarin,就像 Kotlin/Native 一样,Xamarin 也为不同的平台生成原生代码,但 Xamarin 并未成为主流,为什么 Kotlin 仍选择相似的策略?

Hadi:要这么说,人们可能会在 React Native 上问同样的问题,我们希望把 Kotlin 带到多平台上,这已经是我们这段时间以来战略的一部分了。我认为一个关键的区别是,我们通过互操作性和共享针对与平台无关的代码来拥抱平台,即在 iOS 上,您将直接使用 iOS 框架,而不是其上的抽象层。这可以使平台充分发挥其潜力。

InfoQ:对于前端开发者来说,将 Kotlin 应用于 React app 听起来有些奇怪,JavaScript 有一些特殊特性如原型链,对其它语言来说需要做思维转换,对于协作开发我们也有 TypeScript 和 Flow,所以为什么要让 Kotlin 支持 Web 开发?

Hadi:我相信对于喜欢和享受 Kotlin 的人来说,使用 Kotlin 开发 React 应用是一个有吸引力的选择,因为这不仅允许他们使用相同的语言,而且还可以重用和共享代码,并获得一些额外的好处,如使用 Kotlin DSL 而不是 JSX 来开发 React 组件。我们已经可以在(几乎)纯粹的 Kotlin 中构建复杂的 Web 应用程序,并且通过 WebAssembly 支持,JS 互操作以及 Kotlin 自己的前端开发库,未来将有很多机会。

InfoQ:感谢您接收采访。

受访嘉宾介绍:

Hadi Hariri,众多开源项目的创建者和参与者,专注于 Web 开发和软件架构领域。著作了一系列技术书籍、教程以及有长达十五年的演讲经验。他还组织了 Talking Kotlin 技术会议,目前他在 JetBrains 带领开发者支持团队,并仍然花大量时间实际编写代码。

移动Android语言 & 开发前端