0

Kotlin/Native 技术预览版本: Kotlin 不再依赖 JVM

neo 发布于1年前 阅读数 2411

本文翻译自:https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/

我们很高兴宣布发布Kotlin/Navtive 的第一个技术预览版本。使用它可以直接编译为机器码,可以直接执行,不再依赖任何虚拟机。

虽然还不是正式版本, 不过你已经可以使用, 并且在这里查看源码 https://github.com/JetBrains/kotlin-native/, 编译器在Apache 2 OSS 协议下开源。

KotlinNative.png

使命( Mission )

Kotlin/Native 能让Kotlin 编写更多的应用程序。从后端服务,到Web端,再到移动客户端。 能更多的在不同端共用代码。

我们对于平台间代码复用的愿景如下: 可以以平台无关的方式在Kotlin中编写整个模块,并在任何支持的平台编译它们(目前支持这些平台Kotlin/JVM,Kotlin/JS和即将推出的Kotlin/Native) 。我们称这些通用模块。公共模块的一部分可能需要一个平台特定的实现,可以为每个平台单独开发。通用模块为所有客户端提供通用API,但其他(特定的平台)模块可以扩展此API,以在其平台上提供一些独有的功能。

需要注意是,我们不打算在Kotlin/Native或Kotlin/JS上运行任意的Kotlin/JVM程序。这相当于实现另一个JVM,这对于runtime来说是很多工作和很多限制。我们将以另一种方式:为所有平台提供通用语言,同时通过与平台代码的无缝操作来创建通用的库。

技术 (Technology)

Kotlin/Native使用LLVM编译器的基础架构来生成机器代码。 在这个预览版本中,我们支持以下目标平台

  • Mac OS X 10.10及更高版本(x86-64)
  • x86-64 Ubuntu Linux(14.04,16.04及更高版本),其他Linux版本也可以正常工作
  • Apple iOS(arm64),在MacOS X上交叉编译
  • Raspberry Pi,在Linux上交叉编译

只要LLVM支持的平台,可以相对容易地添加。 我们将来可能会支持更多的平台。

像往常一样,互操作性是我们的首要任务之一,Kotlin / Native可以有效地调用C函数并将数据传递给它们或者从它们获取数据。 你可以在构建时从C头文件生成Kotlin绑定,并获得对目标平台原生的任何API的进行快速的类型安全调用。 请参阅这里的详细说明。

内存管理 (Memory management)

Kotlin/Native旨在为不同的平台提供不同的内存管理解决方案。 例如,在将来,为服务器/桌面平台配置跟踪GC可能是有意义的,而ARC在iOS上更有意义。 某些平台可能只需要手动内存管理,并获得一个更小的Kotlin/Native runtime。

此技术预览功能具有自动参考计数,顶部采用循环收集器,但最终的内存管理解决方案在此时尚未知。

当前局限性

如上所述,Kotlin/Native是远未完成的,所以这个技术预览有一些限制,将在以后慢慢解决:

  • 没有执行性能优化,所以基准测试Kotlin / Native在这一点上是没有意义的。
  • 标准库和反思支持还远未完成,稍后会添加更多的API。
  • 查看更多在发行版本说明中

未来的计划

我们目前正处理Kotlin/Native的核心技术,它与所有目标平台(编译器,core runtime 和库)是一样的。 作为未来可能要实现的,我们正在考虑以下可能的使用情况:

  • iOS应用程序(和Android复用代码)
  • 嵌入式系统/ IoT(例如,Arduino)
  • 数据分析与科学计算
  • Server-side 和Microservices(低可用性可执行文件,利用协同程序的功能)
  • 游戏开发

如何尝试

我们已经准备好了两个平台的编译器,示例和文档:Mac和iOS以及Linux和Raspberry Pi。

查看 Github项目发行说明

举报
回复