Kotlin Academy · Урок

Обзор Kotlin/Native: цели, набор инструментов и компиляция

Изучите доступные цели Kotlin/Native и скомпилируйте простой двоичный файл CLI

Урок 1 из 413 шагов

«Обзор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Обзор Kotlin/Native: цели, набор инструментов и компиляция
  2. Управление памятью в Kotlin/Native: новый MM
  3. Взаимодействие с C с помощью cinterop и файлов .def
  4. Kotlin/WASM: компиляция в WebAssembly для браузера
← Назад к Kotlin Academy