スポンサーリンク

KotlinとJavaを比較してみた

現在 Android アプリをネイティブで開発するとすると、Kotlin と Java の2択になると思いますが、どちらが良いのでしょうか。
今まで Java でしか開発したことがなかったのですが、最近 Kotlin の勉強も始めたので自分なりに比較してみました。

Java と比較した Kotlin のメリットとしては下記になるかなと思います。

  • Null 安全
  • 簡潔に記述できることが多い
  • 言語仕様的な強みがある(デフォルトパラメータなど)

Null 安全については言わずもがなな気がしますが、Null Pointer Exeption が発生しないというのは大変心強いです。
(Null 安全については、また別途記事を書くかもしれません)

簡潔な記述は、例えばインスタンスの作成に Java では必要な new キーワードを必要としないなどです。
あと(読みやすいかどうかはおいといて)if や when が式であるので柔軟な書き方ができます。

var a = 10
println(when {
    a<0 -> "minus"
    a>0 -> "plus"
    else -> "zero"
})

言語仕様的な強みというのは、例でも書いていますがデフォルトパラメータなどです。

fun method(param1: String, param2: String = "default") {
    ...
}

Java で上記の method を再現しようとすると、下記のようにメソッドをオーバーロードする必要があります。

void method(String param1) {
    method(param1, "default")
}

void method(String param1, String param2) {
    ...
}

このように多くのメリットがありますが、デメリットもあると思います。
個人的に感じているのは下記の 2つです。

  • 読み書きできる人が(まだまだ)少ない
  • 言語仕様に変更が加わる可能性がある

読み書きできる人が少ないことに関しては、Google が Android アプリ開発の推奨言語に指定したこともありますし、今後の広まりを考えれば問題にならないかもしれません。
ただ、会社などで複数人で開発する場合は全員が Kotlin をかけるとは限らないため、Java を選択せざるを得ないかもしれません。

個人的には2つ目の方が気になっています。
Kotlin はまだ若い言語なので、今後仕様がに変更が加わることはありうる話です。
実際、swift が 2 から 3 に変わったときは当時開発中のコードを大きく修正するはめになって、非常に苦労した覚えがあります。

ということで、Kotlin にはメリットも多いですが、覚えたからと言って手放しで Kotlin を選択するのは危険かもしれません。

とはいえ、今後の開発の主流は間違いなく Java から Kotlin になっていくと思うので、個人的にはできる限り Kotlin でいこうと考えています。

※この記事の内容は https://3jino-oyatsu.com/blog/200/ からお引越ししたものです

タイトルとURLをコピーしました