Обзор Kotlin/Native: цели, набор инструментов и компиляция
Изучите доступные цели Kotlin/Native и скомпилируйте простой двоичный файл CLI
«Обзор Kotlin/Native: цели, набор инструментов и компиляция» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое Kotlin/Native
Kotlin/Native компилирует исходный код Kotlin непосредственно в машинный код с помощью LLVM, без среды выполнения JVM или Dalvik. В результате получается автономный двоичный файл — на целевой машине не требуется установка JVM.
Поддерживаемые цели
Kotlin/Native поддерживает широкий набор целей:
- macOS / iOS:
macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64 - Linux:
linuxX64,linuxArm64 - Windows:
mingwX64 - Встроенные системы / watchOS / tvOS: различные цели
Конвейер компиляции
Конвейер компиляции Kotlin/Native: исходный код Kotlin → Kotlin IR (промежуточное представление) → LLVM IR → нативный двоичный файл. Компилятор konanc управляет этим процессом, но на практике Вы всегда используете плагин Kotlin Multiplatform для Gradle.
Настройка нативной цели в Gradle
В проекте Kotlin Multiplatform объявите нативные цели в build.gradle.kts:
kotlin {
macosArm64("macos") {
binaries {
executable { entryPoint = "main" }
}
}
linuxX64("linux") {
binaries { executable { entryPoint = "main" } }
}
}Наборы исходного кода для нативных целей
Нативные цели используют общие commonMain/commonTest вместе с другими платформами. Код, специфичный для цели, находится в наборах исходного кода, таких как macosMain или linuxX64Main. Используйте expect/actual для API, специфичных для платформы.
Типы выходных двоичных файлов
Kotlin/Native может создавать несколько типов двоичных файлов:
executable— отдельная программа командной строкиstaticLib— статическая библиотека для связывания с проектами на C/C++sharedLib— динамическая библиотека (.dylib / .so / .dll)framework— фреймворк Apple для интеграции с iOS/macOS
Запуск нативных тестов
Запускайте нативные тесты с помощью ./gradlew macosArm64Test или задачи для соответствующей цели. Тесты компилируются в нативный двоичный файл и выполняются на главной машине — JVM не используется.
Ограничения кросс-компиляции
Кросс-компиляция Kotlin/Native имеет ограничения: компилировать для целей Apple можно только в macOS (требуется Xcode). Цели Linux и Windows можно компилировать на любой поддерживаемой главной машине. В конвейерах непрерывной интеграции для целей Apple обычно используются агенты macOS.
Формат klib
Библиотеки Kotlin/Native распространяются как файлы .klib — платформонезависимый формат библиотек Kotlin. Зависимости разрешаются как файлы .klib и связываются с итоговым двоичным файлом во время компиляции.
Kotlin/Native в приложении KMP для iOS
В стандартном проекте Kotlin Multiplatform Mobile (KMM) общий код компилируется в фреймворк Apple, который Xcode подключает к приложению iOS. Код Swift/Objective-C вызывает API Kotlin через сгенерированные заголовочные файлы.
Характеристики производительности
Нативные двоичные файлы запускаются мгновенно, поскольку запуск JVM не требуется, занимают меньше памяти и подходят для инструментов командной строки, серверных приложений Linux и общей логики iOS/macOS. Долгоживущие приложения на JVM могут работать быстрее Native благодаря оптимизациям JIT, но преимущества Native при запуске и по объёму памяти делают его предпочтительным для многих сценариев.
Быстрая проверка
Какой тип двоичного файла Gradle создаёт фреймворк Apple из Kotlin/Native для использования в проекте iOS на базе Xcode?
Итоги: обзор Kotlin/Native
Главное:
- Kotlin/Native компилирует код в машинный код с помощью LLVM — JVM не требуется
- Поддерживает цели macOS, iOS, Linux, Windows, watchOS и tvOS
- Настройка целей и типов двоичных файлов выполняется в плагине Gradle для KMP
- Для целей Apple требуются macOS и Xcode; кросс-компиляция ограничена особенностями платформ
- Библиотеки распространяются как
.klib; интеграция с iOS выполняется через двоичный файлframework
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «Обзор Kotlin/Native: цели, набор инструментов и компиляция» бесплатный?
Да — полный текст урока «Обзор Kotlin/Native: цели, набор инструментов и компиляция» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обзор Kotlin/Native: цели, набор инструментов и компиляция»?
Изучите доступные цели Kotlin/Native и скомпилируйте простой двоичный файл CLI Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Обзор Kotlin/Native: цели, набор инструментов и компиляция»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обзор Kotlin/Native: цели, набор инструментов и компиляция
- Управление памятью в Kotlin/Native: новый MM
- Взаимодействие с C с помощью cinterop и файлов .def
- Kotlin/WASM: компиляция в WebAssembly для браузера