Kotlin/Native
Kotlin/Nativeは、仮想マシンなしで実行可能なネイティブバイナリにKotlinコードをコンパイルするためのテクノロジーです。 Kotlin/Nativeには、LLVMベースのKotlinコンパイラ用バックエンドと、Kotlin標準ライブラリのネイティブ実装が含まれています。
なぜKotlin/Nativeなのか?
Kotlin/Nativeは、主に、組み込みデバイスやiOSのように、仮想マシンが望ましくない、あるいは不可能なプラットフォーム向けにコンパイルできるように設計されています。追加のランタイムや仮想マシンを必要としない、自己完結型(self-contained)のプログラムを作成する必要がある状況に最適です。
コンパイルされたKotlinコードを、C、C++、Swift、Objective-C、およびその他の言語で書かれた既存のプロジェクトに含めるのは簡単です。また、既存のネイティブコード、静的または動的Cライブラリ、Swift/Objective-Cフレームワーク、グラフィカルエンジン、その他あらゆるものをKotlin/Nativeから直接使用することもできます。
ターゲットプラットフォーム
Kotlin/Nativeは以下のプラットフォームをサポートしています:
Linux
Windows (MinGW経由)
macOS、iOS、tvOS、およびwatchOS用のAppleターゲット
Appleターゲットをコンパイルするには、Xcodeとそのコマンドラインツールをインストールする必要があります。
相互運用性(Interoperability)
Kotlin/Nativeは、さまざまなオペレーティングシステムのネイティブプログラミング言語との双方向の相互運用性をサポートしています。コンパイラは、多くのプラットフォーム向けの実行ファイル、静的または動的Cライブラリ、およびSwift/Objective-Cフレームワークを作成できます。
Cとの相互運用性
Kotlin/NativeはCとの相互運用性を提供します。既存のCライブラリをKotlinコードから直接使用できます。
詳細については、以下のチュートリアルを完了してください:
Swift/Objective-Cとの相互運用性
Kotlin/Nativeは、Objective-Cを介したSwiftとの相互運用性を提供します。macOSおよびiOS上のSwift/Objective-CアプリケーションからKotlinコードを直接使用できます。
詳細については、AppleフレームワークとしてのKotlin/Nativeチュートリアルを確認してください。
プラットフォーム間でのコード共有
Kotlin/Nativeには、プロジェクト間でKotlinコードを共有するのに役立つ、ビルド済みのプラットフォームライブラリのセットが含まれています。POSIX、gzip、OpenGL、Metal、Foundation、およびその他多くの一般的なライブラリやAppleフレームワークが事前にインポートされ、Kotlin/Nativeライブラリとしてコンパイラパッケージに含まれています。
Kotlin/Nativeは、Android、iOS、JVM、Web、およびネイティブを含む複数のプラットフォーム間で共通コードを共有するのに役立つKotlinマルチプラットフォームテクノロジーの一部です。マルチプラットフォームライブラリは、共通のKotlinコードに必要なAPIを提供し、プロジェクトの共有部分をすべて1か所でKotlinを使って記述することを可能にします。
メモリマネージャ
Kotlin/Nativeは、JVMやGoに似た自動メモリマネージャを使用しています。独自のトレーシングガベージコレクタを備えており、これはSwift/Objective-CのARCとも統合されています。
メモリ消費はカスタムメモリアロケータによって制御されます。これによりメモリ使用量が最適化され、メモリ割り当ての急激な増加を防ぐことができます。
