Skip to content

Kotlin/Wasm

Kotlin/Wasm 处于 Alpha 阶段。 它可能随时发生变化。您可以在生产环境前的场景中使用它。我们欢迎您在 YouTrack 中提供反馈。

加入 Kotlin/Wasm 社区

Kotlin/Wasm 能够将您的 Kotlin 代码编译为 WebAssembly (Wasm) 格式。 借助 Kotlin/Wasm,您可以创建可在不同环境和设备上运行的应用程序,这些环境和设备支持 Wasm 并满足 Kotlin 的要求。

Wasm 是一种用于基于栈的虚拟机的二进制指令格式。 这种格式是平台无关的,因为它在其自己的虚拟机上运行。Wasm 为 Kotlin 和其他语言提供了编译目标。

您可以在不同的目标环境中使用 Kotlin/Wasm,例如在浏览器中开发使用 Compose Multiplatform 构建的 Web 应用程序,或在浏览器外部的独立 Wasm 虚拟机中运行。在浏览器外部的情况下,WebAssembly System Interface (WASI) 提供平台 API 访问,您也可以利用这些 API。

Kotlin/Wasm 与 Compose Multiplatform

借助 Kotlin,您能够通过 Compose Multiplatform 和 Kotlin/Wasm 构建应用程序,并在您的 Web 项目中复用移动和桌面用户界面 (UI)。

Compose Multiplatform 是一个基于 Kotlin 和 Jetpack Compose 的声明式框架,它允许您实现一次 UI,并在您面向的所有平台上共享。

对于 Web 平台,Compose Multiplatform 使用 Kotlin/Wasm 作为其编译目标。使用 Kotlin/Wasm 和 Compose Multiplatform 构建的应用程序使用 wasm-js 目标并在浏览器中运行。

探索我们使用 Compose Multiplatform 和 Kotlin/Wasm 构建的应用程序在线演示

Kotlin/Wasm 演示

要在浏览器中运行使用 Kotlin/Wasm 构建的应用程序,您需要一个支持新的垃圾回收和旧式异常处理提案的浏览器版本。要查看浏览器支持状态,请参阅 WebAssembly 路线图

此外,您可以开箱即用地在 Kotlin/Wasm 中使用最流行的 Kotlin 库。与其他 Kotlin 和多平台项目一样,您可以在构建脚本中添加依赖项声明。更多信息,请参阅 添加多平台库依赖项

想亲自尝试吗?

开始使用 Kotlin/Wasm

Kotlin/Wasm 与 WASI

Kotlin/Wasm 使用 WebAssembly System Interface (WASI) 来构建服务器端应用程序。 使用 Kotlin/Wasm 和 WASI 构建的应用程序使用 Wasm-WASI 目标,允许您调用 WASI API 并在浏览器环境外部运行应用程序。

Kotlin/Wasm 利用 WASI 抽象平台特有的细节,使相同的 Kotlin 代码能够在不同的平台上运行。这扩展了 Kotlin/Wasm 的覆盖范围到 Web 应用程序之外,而无需为每个运行时进行自定义处理。

WASI 提供了一个安全的标准接口,用于在不同环境中运行编译为 WebAssembly 的 Kotlin 应用程序。

要查看 Kotlin/Wasm 和 WASI 的实际应用,请查阅 Kotlin/Wasm 和 WASI 入门教程

Kotlin/Wasm 性能

尽管 Kotlin/Wasm 仍处于 Alpha 阶段,但运行在 Kotlin/Wasm 上的 Compose Multiplatform 已经展现出令人鼓舞的性能特性。 您可以看到其执行速度优于 JavaScript 并正在接近 JVM 的性能:

Kotlin/Wasm 性能

我们定期运行 Kotlin/Wasm 的基准测试,这些结果来自我们在最新版 Google Chrome 中的测试。

浏览器 API 支持

Kotlin/Wasm 标准库提供了浏览器 API 的声明,包括 DOM API。 通过这些声明,您可以直接使用 Kotlin API 访问和利用各种浏览器功能。 例如,在您的 Kotlin/Wasm 应用程序中,您可以操作 DOM 元素或 fetch API,而无需从头定义这些声明。要了解更多信息,请参阅我们的 Kotlin/Wasm 浏览器示例

浏览器 API 支持的声明是使用 JavaScript 互操作能力 定义的。 您可以使用相同的功能来定义您自己的声明。此外,Kotlin/Wasm-JavaScript 互操作性允许您从 JavaScript 中使用 Kotlin 代码。更多信息,请参阅 在 JavaScript 中使用 Kotlin 代码

留下反馈

Kotlin/Wasm 反馈

Compose Multiplatform 反馈

了解更多