JVM上で動作する代表的な言語がJava・Kotlin・Scalaです。同じJVMを基盤としつつ、設計思想と書き心地は大きく異なります。本記事では、3つの言語を比較し、用途別の選び方を解説します。
3つの言語の位置付け
- Java:エンタープライズ標準。安定・学習リソース豊富
- Kotlin:Java互換でモダン。Android公式・サーバーサイドでも人気
- Scala:関数型・型システムが強力。データ・分散処理に強み
項目別比較
記法の簡潔さ
- Java:冗長になりがち(最新版でレコード・switch式等で改善)
- Kotlin:型推論・data class・nullable型などで簡潔
- Scala:高度に簡潔だが習熟度で可読性が変わる
null安全
- Java:Optional推奨もnull安全強制ではない
- Kotlin:型レベルでnull安全(String? vs String)
- Scala:Option型で表現
主な用途
- Java:エンタープライズWebアプリ・大規模システム
- Kotlin:Android開発・サーバーサイド(Spring対応)
- Scala:Spark・Akkaなどデータ・分散システム
同じ処理の書き比べ
// Java
public record User(String name, int age) {}
// Kotlin
data class User(val name: String, val age: Int)
// Scala 3
case class User(name: String, age: Int)
エコシステム
- Java:Spring Boot・Jakarta EEなど企業向けが厚い
- Kotlin:Ktor・Spring Boot(Kotlin DSL)・Compose Multiplatform
- Scala:Spark・Akka・Play・Cats/ZIOなど関数型ライブラリ
選び方の指針
- Android開発:Kotlin一択
- 大企業のJVM基盤に乗る:Java安定 / Kotlin移行
- ビッグデータ・関数型:Scala
- 新規サーバーサイド(モダンJVM):Kotlin
近年の動向
- Javaは半年ごとリリースで進化中(バーチャルスレッド・パターンマッチ等)
- Kotlinはサーバーサイド進出が顕著(特にJetBrains・Spring)
- ScalaはScala 3で大幅刷新、学習しやすく
まとめ
JVM言語は「安定のJava」「モダンのKotlin」「関数型のScala」と棲み分けが明確です。既存資産・人材・用途を踏まえて選びましょう。新規Androidや小〜中規模サーバーならKotlin、大規模・歴史的負債を抱える環境ならJava継続が現実的です。