JavaプロジェクトにKotlinを追加する – チュートリアル
KotlinはJavaと完全に相互運用可能であるため、すべてを書き直すことなく、既存のJavaプロジェクトに段階的に導入できます。
このチュートリアルでは、以下の方法を学びます:
- JavaとKotlinの両方のコードをコンパイルするようにMavenまたはGradleビルドツールをセットアップする。
- プロジェクトディレクトリ内でJavaとKotlinのソースファイルを整理する。
- IntelliJ IDEAを使用してJavaファイルをKotlinに変換する。
このチュートリアルでは、既存の任意のJavaプロジェクトを使用するか、MavenとGradleの両方のビルドファイルが既にセットアップされている公開サンプルプロジェクトをクローンして使用できます。
プロジェクトの構成
JavaプロジェクトにKotlinを追加するには、使用するビルドツールに応じて、KotlinとJavaの両方を使用するようにプロジェクトを構成する必要があります。
プロジェクトを構成することで、KotlinとJavaの両方のコードが適切にコンパイルされ、相互にシームレスに参照できるようになります。
Maven
IntelliJ IDEA 2025.3 以降、MavenベースのJavaプロジェクトに最初のKotlinファイルを追加すると、IDEは自動的に
pom.xmlファイルを更新してKotlin Mavenプラグインと標準の依存関係を含めます。バージョンのカスタマイズやビルドフェーズの調整が必要な場合は、手動で構成することもできます。
MavenプロジェクトでKotlinとJavaを併用するには、pom.xml ファイルにKotlin Mavenプラグインを適用し、Kotlinの依存関係を追加します:
<properties>セクションに、Kotlinバージョンのプロパティを追加します:xml<dependencies>セクションに必要な依存関係を追加し、<plugins>セクションにも必要な構成を追加します:xml<build><plugins>セクションにKotlinプラグインを追加します:xmlKotlin Mavenプラグインで
<extensions>true</extensions>を有効にすると、以下に役立ちます:kotlin-stdlib依存関係をプロジェクトに自動的に追加する。- Kotlinを最初にコンパイルし、次にJavaをコンパイルするように実行フェーズを構成する。
- Javaコード内でKotlinコードを参照し、その逆も可能にする。
extensionsを有効にしたKotlin Mavenプラグインを使用する場合、
<build><pluginManagement>セクションに個別のmaven-compiler-pluginは必要ありません。IDEでMavenプロジェクトを再ロードします。
テストを実行して構成を確認します:
bash./mvnw clean test
Gradle
GradleプロジェクトでKotlinとJavaを併用するには、build.gradle.kts ファイルにKotlin JVMプラグインを適用し、Kotlinの依存関係を追加します:
plugins {}ブロックに、Kotlin JVMプラグインを追加します:kotlinplugins { // 他のプラグイン kotlin("jvm") version "2.3.0" }JVMツールチェーンのバージョンをJavaのバージョンと一致するように設定します:
kotlinkotlin { jvmToolchain(17) }これにより、KotlinはJavaコードと同じJDKバージョンを使用するようになります。
dependencies {}ブロックに、Kotlinテストユーティリティを提供しJUnitと統合するkotlin("test")ライブラリを追加します:kotlindependencies { // 他の依存関係 testImplementation(kotlin("test")) // 他のテスト用依存関係 }IDEでGradleプロジェクトを再ロードします。
テストを実行して構成を確認します:
bash./gradlew clean test
プロジェクト構造
この構成により、同じソースディレクトリ内にJavaファイルとKotlinファイルを混在させることができます:
src/
├── main/
│ ├── java/ # JavaおよびKotlinのプロダクションコード
│ └── kotlin/ # 追加のKotlinプロダクションコード(任意)
└── test/
├── java/ # JavaおよびKotlinのテストコード
└── kotlin/ # 追加のKotlinテストコード(任意)これらのディレクトリは手動で作成することも、最初のKotlinファイルを追加する際にIntelliJ IDEAに作成させることもできます。
Kotlinプラグインは src/main/java と src/test/java の両方のディレクトリを自動的に認識するため、.kt ファイルと .java ファイルを同じディレクトリに保持できます。
JavaファイルをKotlinに変換する
Kotlinプラグインには、JavaファイルをKotlinに自動的に変換するJava to Kotlinコンバーター(J2K)も同梱されています。ファイルに対してJ2Kを使用するには、そのファイルのコンテキストメニューまたはIntelliJ IDEAの Code メニューで Convert Java File to Kotlin File をクリックします。

このコンバーターは万能ではありませんが、JavaからKotlinへのほとんどのボイラープレートコードの変換において、かなり優れた働きをします。ただし、場合によっては手動での微調整が必要になることがあります。
コンパイラプラグインを詳しく見る
Spring や Java Persistence API (JPA) を使用するより複雑なプロジェクトがある場合は、Kotlin の言語機能をフレームワークの期待に自動的に適合させ、ボイラープレートを削減する Kotlin コンパイラプラグインを使用できます:
all-openプラグインは、特定の注釈(アノテーション)が使用されている場合に、クラスとそのメンバーを自動的にopenにします。これは、クラスが non-final であることを必要とする Spring のようなフレームワークに特に便利です。Spring の場合、
all-openの上に構築されたラッパーである専用のkotlin-springプラグインを使用できます。これは Spring のアノテーションを自動的に指定します。no-argプラグインは、特定の注釈を持つクラスに対して引数なしのコンストラクタ(zero-argument constructor)を追加で生成します。これにより、デフォルトコンストラクタを持たないクラスを JPA がインスタンス化できるようになります。kotlin-jpaプラグインも使用できます。これはno-argの上に構築されたラッパーであり、no-arg アノテーションを自動的に指定します。power-assertプラグインは、アサーションに対してコンテキスト情報を含む詳細な失敗メッセージを提供することで、デバッグ体験を向上させます。中間値を表示し、テストが失敗した理由を理解するのに役立ちます。
次のステップ
JavaプロジェクトでKotlinを使い始める最も簡単な方法は、最初にKotlinのテストを追加することです:
