Обзор
Kotlin предлагает два подхода к веб-разработке с помощью Kotlin Multiplatform:
На основе JavaScript (с использованием компилятора Kotlin/JS)
На основе WebAssembly (с использованием компилятора Kotlin/Wasm)
Оба подхода позволяют совместно использовать код в веб-приложении, но предназначены для разных сценариев. Они также различаются техническими аспектами, например поддержкой целевых браузеров.
Kotlin/JS
Kotlin/JS позволяет запускать приложения Kotlin в средах JavaScript (JS), преобразуя ваш код, стандартную библиотеку и все поддерживаемые зависимости в JS.
При разработке с Kotlin/JS приложения можно запускать в браузере или среде Node.js.
Сценарии использования Kotlin/JS
Kotlin/JS подходит, если ваша цель —:
Совместное использование бизнес-логики с кодовой базой JavaScript/TypeScript
Если вам нужно совместно использовать код Kotlin (например, логику предметной области или работы с данными) с нативным приложением JavaScript/TypeScript, целевая платформа Kotlin/JS обеспечивает:
Прямую совместимость с JavaScript/TypeScript.
Минимальные накладные расходы при взаимодействии (например, позволяет избежать ненужного копирования данных). Благодаря этому совместный код легко встраивается в рабочий процесс на основе JS.
Создание веб-приложений на Kotlin без совместного использования кода
Для проектов, в которых веб-приложение полностью реализовано на Kotlin и не использует код совместно с другими платформами (iOS, Android или настольными платформами), HTML-решение обеспечивает больший контроль.
HTML-решения улучшают SEO и доступность. Они также обеспечивают более тесную интеграцию с браузером, включая такие функции, как поиск на странице и перевод страницы.
Для HTML-решений Kotlin/JS поддерживает несколько подходов:
Использование фреймворков на основе Compose HTML, таких как Kobweb или Kilua, для создания пользовательских интерфейсов с архитектурой в стиле Compose.
Использование решений на основе React с обёртками для Kotlin, позволяющих реализовывать компоненты React на Kotlin.
Kotlin/Wasm
Kotlin/Wasm компилирует код Kotlin в WebAssembly (Wasm), позволяя приложениям запускаться в средах и на устройствах, поддерживающих Wasm и отвечающих требованиям Kotlin.
В браузерах Kotlin/Wasm позволяет создавать веб-приложения с помощью Compose Multiplatform. Вне браузера он работает в автономных виртуальных машинах Wasm, используя WebAssembly System Interface (WASI) для доступа к API платформы.
При разработке с Kotlin/Wasm можно выбрать целевую платформу:
wasmJs: для запуска в браузерах или Node.js.wasmWasi: для запуска в средах Wasm с поддержкой WASI, например Wasmtime, WasmEdge и других.
Сценарии использования Kotlin/Wasm
Используйте Kotlin/Wasm, если хотите совместно использовать логику и пользовательский интерфейс на нескольких платформах.
Создание кроссплатформенных приложений с Compose Multiplatform
Если вы хотите совместно использовать логику и пользовательский интерфейс на нескольких платформах, включая веб-платформу, Kotlin/Wasm вместе с Compose Multiplatform предоставляет общий слой пользовательского интерфейса:
Обеспечивает единообразную реализацию пользовательского интерфейса для всех платформ.
Использует Wasm для повышения производительности отрисовки и более плавного обновления интерфейса, например для адаптивной анимации.
Поддерживает последнюю версию предложения WebAssembly Garbage Collection (WasmGC), благодаря которому Kotlin/Wasm может работать во всех основных современных браузерах.
Выбор подхода к веб-разработке
В таблице ниже приведена рекомендуемая целевая платформа для каждого сценария:
Сценарий использования |
Рекомендуемая целевая платформа |
Описание |
|---|---|---|
Совместное использование бизнес-логики при использовании нативного для веб-платформы пользовательского интерфейса |
Kotlin/JS |
Обеспечивает простое взаимодействие с JS и минимальные накладные расходы. |
Совместное использование пользовательского интерфейса и бизнес-логики |
Kotlin/Wasm |
Обеспечивает более высокую производительность отрисовки с помощью Compose Multiplatform. |
Пользовательский интерфейс, код которого не будет использоваться совместно с другими платформами |
Kotlin/JS |
Позволяет создавать пользовательские интерфейсы с помощью HTML-фреймворков, таких как Kobweb, Kilua или React, используя существующие экосистему и инструменты JS. |
Режим совместимости для целевых веб-платформ
Для веб-приложения можно включить режим совместимости, чтобы оно сразу работало во всех браузерах. В этом режиме пользовательский интерфейс можно создавать с помощью Wasm для современных браузеров, а в старых браузерах будет использоваться JS.
Режим совместимости достигается за счёт кросс-компиляции для целевых платформ js и wasmJs. Подробнее о режиме совместимости для веб-платформ и его включении.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/web-overview.html