Многоплатформенное программирование
Многоплатформенные проекты находятся в стадии Альфа. Возможности языка и инструменты могут измениться в будущих версиях Kotlin.
Поддержка многоплатформенного программирования является одним из ключевых преимуществ Kotlin. Она сокращает время, затрачиваемое на написание и поддержку одного и того же кода для различных платформ, сохраняя гибкость и преимущества нативного программирования.
Вот как работает Kotlin Multiplatform.
- Общий Kotlin включает язык, основные библиотеки и базовые инструменты. Код, написанный на общем Kotlin, работает на всех платформах.
- С помощью библиотек Kotlin Multiplatform вы можете повторно использовать многоплатформенную логику в общем и платформо-специфичном коде. Общий код может опираться на набор библиотек, охватывающих повседневные задачи, такие как HTTP, сериализацию и управление сопрограммами.
- Для взаимодействия с платформами используйте платформо-специфичные версии Kotlin. Платформо-специфичные версии Kotlin (Kotlin/JVM, Kotlin/JS, Kotlin/Native) включают расширения языка Kotlin и платформо-специфичные библиотеки и инструменты.
- Через эти платформы вы можете получить доступ к платформо-нативному коду (JVM, JS и Native) и использовать все возможности родной платформы.
С помощью Kotlin Multiplatform тратьте меньше времени на написание и поддержку одного и того же кода для различных платформ — просто поделитесь им, используя механизмы, предоставляемые Kotlin:
-
Поделитесь кодом между всеми платформами, используемыми в вашем проекте. Используйте его для обмена общей бизнес-логикой, которая применима ко всем платформам.
-
Поделитесь кодом между некоторыми платформами вашего проекта, но не всеми. Делайте это, когда вы можете повторно использовать большую часть кода на похожих платформах.
Если вам нужно получить доступ к платформа-специфичным API из общего кода, используйте механизм Kotlin ожидаемых и фактических объявлений.
С помощью этого механизма, общий набор исходных файлов определяет *ожидаемое объявление*, а платформо-специфичные наборы исходных файлов должны предоставить *фактическое объявление*, которое соответствует ожидаемому объявлению. Это работает для большинства объявлений Kotlin, таких как функции, классы, интерфейсы, перечисления, свойства и аннотации.
//Common expect fun randomUUID(): String
//Android import java.util.* actual fun randomUUID() = UUID.randomUUID().toString()
//iOS import platform.Foundation.NSUUID actual fun randomUUID(): String = NSUUID().UUIDString()
Примеры использования
Android — iOS
Обмен кодом между мобильными платформами является одним из основных примеров использования Kotlin Multiplatform. С помощью Kotlin Multiplatform Mobile (KMM) вы можете создавать многоплатформенные мобильные приложения, обмениваясь кодом, таким как бизнес-логика, подключение и многое другое, между Android и iOS.
См. функции, примеры и кейсы использования KMM
Клиент — Сервер
Еще один сценарий, когда обмен кодом может принести выгоду, это связанное приложение, где логика может быть повторно использована как на стороне сервера, так и на стороне клиента, работающего в браузере. Это также поддерживается Kotlin Multiplatform.
Фреймворк Ktor подходит для создания асинхронных серверов и клиентов в связанных системах.
Что дальше?
Новые в Kotlin? Посетите начало работы с Kotlin.
Документация
- Начало работы с Kotlin Multiplatform Mobile (KMM)
- Создание многоплатформенного проекта
- Обмен кодом на нескольких платформах
- Подключение к платформа-специфичным API
Учебники
-
Создание приложения KMM показывает, как создать мобильное приложение, работающее на Android и iOS с помощью плагина KMM для Android Studio. Создайте, запустите и протестируйте свое первое многоплатформенное мобильное приложение.
-
Создание многоплатформенной библиотеки Kotlin учит, как создать многоплатформенную библиотеку, доступную для JVM, JS и Native, которая может быть использована из любого другого общего кода (например, совместно с Android и iOS). Также показано, как писать тесты, которые будут выполняться на всех платформах, и использовать эффективную реализацию, предоставляемую конкретной платформой.
-
Создание веб-приложения с полным стеком с помощью Kotlin Multiplatform знакомит с концепциями создания приложения, ориентированного на Kotlin/JVM и Kotlin/JS, создавая клиентско-серверное приложение, использующее общий код, сериализацию и другие многоплатформенные парадигмы. Также предоставляется краткое введение в работу с Ktor как с серверным, так и с клиентским фреймворком.
Примеры проектов
© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/reference/multiplatform.html