Kotlin/Wasm
Kotlin/Wasm позволяет компилировать код Kotlin в формат WebAssembly (Wasm). С помощью Kotlin/Wasm можно создавать приложения для разных сред и устройств, которые поддерживают Wasm и соответствуют требованиям Kotlin.
Wasm — это двоичный формат инструкций для виртуальной машины на основе стека. Этот формат не зависит от платформы, поскольку выполняется на собственной виртуальной машине. Wasm предоставляет Kotlin и другим языкам цель компиляции.
Kotlin/Wasm можно использовать в разных целевых средах, например в браузерах для разработки веб-приложений на основе Compose Multiplatform, а также вне браузера — в автономных виртуальных машинах Wasm. В случае запуска вне браузера WebAssembly System Interface (WASI) предоставляет доступ к API платформы, которые также можно использовать.
Kotlin/Wasm и Compose Multiplatform
С помощью Kotlin можно создавать приложения и повторно использовать пользовательские интерфейсы (UI) для мобильных устройств и настольных компьютеров в веб-проектах с помощью Compose Multiplatform и Kotlin/Wasm.
Compose Multiplatform — это декларативный фреймворк на основе Kotlin и Jetpack Compose, позволяющий один раз реализовать UI и использовать его на всех целевых платформах.
Для веб-платформ Compose Multiplatform использует Kotlin/Wasm в качестве цели компиляции. Приложения, созданные с помощью Kotlin/Wasm и Compose Multiplatform, используют цель wasm-js и запускаются в браузерах.
Кроме того, в Kotlin/Wasm сразу доступны самые популярные библиотеки Kotlin. Как и в других проектах Kotlin и Multiplatform, зависимости можно указывать в скрипте сборки. Подробнее см. в разделе Добавление зависимостей от библиотек для Multiplatform.
Хотите попробовать самостоятельно?
Kotlin/Wasm и WASI
Для серверных приложений Kotlin/Wasm использует WebAssembly System Interface (WASI). Приложения, созданные с помощью Kotlin/Wasm и WASI, используют цель Wasm-WASI, которая позволяет вызывать API WASI и запускать приложения вне браузера.
Kotlin/Wasm использует WASI для абстрагирования от деталей конкретной платформы, благодаря чему один и тот же код Kotlin работает на разных платформах. Это расширяет возможности Kotlin/Wasm за пределами веб-приложений, избавляя от необходимости настраивать работу для каждой среды выполнения.
WASI предоставляет безопасный стандартизированный интерфейс для запуска приложений Kotlin, скомпилированных в WebAssembly, в разных средах.
Модель компонентов WebAssembly
WASI 0.2 построена на основе модели компонентов WebAssembly, которая определяет способ создания компонентов из модулей Wasm с помощью стандартизированных интерфейсов и типов. Эта модель позволяет определять языконезависимые компоненты в приложениях и библиотеках. Также можно объединять модули Wasm и существующие компоненты в новые компоненты.
Чтобы узнать, какие возможности открывают модель компонентов WebAssembly и Kotlin/Wasm, посмотрите демонстрацию простого сервера, созданного с помощью wasi:http.

Производительность Kotlin/Wasm
Хотя Kotlin/Wasm всё ещё находится на этапе бета-тестирования, Compose Multiplatform, работающий на Kotlin/Wasm, уже демонстрирует обнадёживающие показатели производительности. Скорость его выполнения выше, чем у JavaScript, и приближается к скорости JVM:

Мы регулярно запускаем тесты производительности Kotlin/Wasm. Приведённые результаты получены в ходе тестирования в недавней версии Google Chrome.
Поддержка API браузера
Стандартная библиотека Kotlin/Wasm содержит объявления для API браузера, включая DOM API. С их помощью можно напрямую использовать API Kotlin для доступа к различным функциям браузера. Например, в приложениях Kotlin/Wasm можно работать с элементами DOM или использовать API fetch, не определяя эти объявления с нуля. Подробнее см. в нашем примере браузерного приложения Kotlin/Wasm.
Объявления для поддержки API браузера определяются с помощью возможностей взаимодействия с JavaScript. Эти же возможности можно использовать для определения собственных объявлений. Кроме того, взаимодействие Kotlin/Wasm с JavaScript позволяет использовать код Kotlin из JavaScript. Подробнее см. в разделе Использование кода Kotlin в JavaScript.
Оставить отзыв
Отзывы о Kotlin/Wasm
Slack: Получите приглашение в Slack и оставьте отзыв напрямую разработчикам в канале #webassembly.
Сообщайте о проблемах в YouTrack.
Отзывы о Compose Multiplatform
Slack: оставьте отзыв в общедоступном канале #compose-web.
Подробнее
Узнайте больше о Kotlin/Wasm в этом плейлисте на YouTube.
Посмотрите примеры Kotlin/Wasm в нашем репозитории на GitHub.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/wasm-overview.html