Kotlin теперь поддерживает новую платформу: что это значит для разработчиков?
Команда JetBrains продолжает активно развивать экосистему Kotlin, делая её одной из самых гибких и современных в мире программирования. В свежем релизе разработчики анонсировали поддержку новой платформы — WebAssembly (Wasm) в стадии Stable. Это ключевое событие для всех, кто использует Kotlin Multiplatform (KMP) и стремится писать код один раз, запуская его везде: от серверов и мобильных устройств до браузеров и edge-устройств.
Почему WebAssembly?
WebAssembly — это низкоуровневый бинарный формат, который выполняется в браузере со скоростью, близкой к нативной. Ранее Kotlin уже поддерживал компиляцию в JavaScript, но Wasm открывает новые возможности:
- Производительность: Код на Kotlin, скомпилированный в Wasm, работает в 1.5–2 раза быстрее, чем аналогичный JS-бандл, особенно в задачах с интенсивными вычислениями (графика, обработка данных, игры).
- Безопасность: Wasm работает в изолированной песочнице, что снижает риски уязвимостей.
- Универсальность: Wasm поддерживается всеми современными браузерами (Chrome, Firefox, Safari, Edge), а также серверными средами (WASI) и IoT-устройствами.
Как это работает?
Теперь в проектах Kotlin вы можете указать цель wasmJs или wasmWasi в файле build.gradle.kts:
kotlin {
wasmJs {
browser { }
}
wasmWasi {
nodejs { }
}
}
После компиляции вы получаете .wasm файл, который можно подключить к HTML-странице или запустить в среде, поддерживающей WASI. Важно: для работы с DOM и браузерными API используется стандартная библиотека Kotlin/Wasm, которая полностью совместима с Kotlin/JS.
Что это даёт разработчикам?
- Единый стек для веба и натива: Теперь можно писать бизнес-логику на Kotlin и переиспользовать её между Android, iOS, сервером (JVM) и веб-клиентом (Wasm).
- Быстрый старт проектов: Не нужно изучать TypeScript или Rust для высокопроизводительного веба — достаточно знать Kotlin.
- Упрощение DevOps: Один язык, одна система сборки (Gradle) и один код для всех платформ.
Пример использования
Представьте, что вы пишете библиотеку для работы с большими JSON-файлами. С Wasm она будет выполняться в браузере без задержек, характерных для JavaScript. Кроме того, Kotlin/Wasm поддерживает корутины и сериализацию (kotlinx.serialization), что делает код лаконичным и безопасным.
Когда попробовать?
Поддержка Wasm уже доступна в Kotlin 2.1.0 и выше. JetBrains рекомендует начать с малого: перенести на Wasm модули, не связанные с UI (API-клиенты, валидаторы, шифрование). Со временем планируется полная поддержка Compose Multiplatform для Wasm, что позволит создавать полноценные веб-приложения на Kotlin.
Вывод
Добавление WebAssembly в список поддерживаемых платформ — это не просто очередное обновление. Это шаг к тому, чтобы Kotlin стал языком №1 для мультиплатформенной разработки. Теперь у вас есть инструмент, который объединяет производительность нативного кода и универса