こんにちは、awatakiです。
今までの私のエントリーと言ったらPEPPERに関する活動報告のみでしたが、今回は僕が昨今のJavaに関して考えていることを述べようかと思います。
#はじめに
私としてはJavaはもう10年弱付き合ってきた言語なのですが、昨今のJavaは何やら雲行きが怪しい。そう感じざるを得ません。
さて、今回このような話をしようと思った理由としましては、ご存知の通りOracleJDKがJava11にアップデートする際に有償化するという話を受けてです。
このOracleJDKを有償化する話に際してとある記事を見かけまして、JDKとOracleJDKとJVM言語についての認識に混同があり、意外とそのあたりの関係に理解がされていないのかなと思い今回、記事を書いてみようかと思います。
#JDKについて
まず、最初にJDKとは何かというとJavaのSDK実装です。Javaの共通仕様に基づいて開発に使用される様々な機能やツール、開発の手助けとなるライブラリ機能と、Javaの実行環境であるJVMがバンドルされてるものがJDKです。
このJDKには基本的に二種類あってかつてJavaの開発元であったサン・マイクロシステムズがJavaがブラックボックス化することを危惧し立ち上げたコミュニティによって開発されているOpenJDKとサン・マイクロシステムズを買収し、現在の開発元であるOracleが開発しているOracleJDKの2つです。
#本来のJava
Javaは本来オープンなものでした。サン・マイクロシステムズは自身が開発するSunJDKのソースコードをOpenJDKコミュニティに寄贈し、JavaのSDKを他の企業が作ってサン・マイクロシステムズが審査し、審査されているJDKを公開する。それが本来のJavaの姿です。ですが、2010年Oracleに買収されそれは変わってしまいました。OracleはJDKをバイナリで配布し、独自のライセンスによってクローズドなものになってしまいました。
それだけでは飽き足らずJavaを今度はマネタイズしようとしている。もはやこれはJavaではない。Javaの名前を騙った何か別のものだ。
Javaは既に死んでしまったのだ。
#Javaのこれから
では、Javaはやめて移行が簡単なJVM言語に・・・という話をよく聞くがこれもこれで間違いです。
前述の通り、JVMはJDKにバンドルされている。なら実行環境だけのJREに・・・なんて思うでしょうがこれは実は違います。
JVM言語は多くに於いてJDKに実装されているJavaのapiを叩いているのでJDKと密結合しているんですね。
ならOpenJDKを使えばと思われますがOpenJDKはOracleJDKがマネタイズ化することに際して半年に一回バージョンアップという風にしました。
これによってOpenJDKの1バージョンのサポート期間は半年になってしまいました。こんなのでは業務だと設計している間にバージョンが上がるので使えたものではありません。
サポート期間とか無視して使うというのも現実的ではありません。当然脆弱性が長い期間使っていれば見つかるわけで、脆弱性を長い期間放置するのはサービスとして欠陥です。
こんな感じで正直なところJavaは死ぬ運命が見えているので、動いているサービスは現在のPHPやCOBOLみたいなどうしようもないサービスとして処理され置き換えられていくのかなと。
#Kotlinについて
さて、できっかけの記事にかかれていたんですが、KotlinをAndroidで採用されたのは今回の有償化問題と関係はありません。
Googleに対してOracleがOracleJDKを使っているという点で訴訟したことを受けてGoogleがJavaからの移行をした先がKotlinというわけです。
そこのあたりを混同してはいけません。KotlinはJDKを使います。
#まとめ
OracleJDKのクローズドソース化やGoogleへの訴訟を見て、OracleがJavaを腐らせたのは明白です。
Javaを広める上でAndroidに使われたなんて仲良くすることはあれども訴訟なんてするのはJavaの将来ではなく企業の利益しか考えてない証拠にほかなりません。
このような横暴が続く以上Javaは使うべきではないでしょう。