Javaの夢

Java

Javaは生き残るのか?

サーバーサイトのプログラミング言語としてPHP以外によく選択されるのがJavaです。

Java言語の登場時、すばらしいプログラミング言語が登場したと思ったものでした。

PHPはソースコードを解釈しながら実行インタープリター型言語です(PHP8からJITコンパイラーが導入されてはいませんが、WordPressではなぜかあまり効果がないようです)。

ただ、プログラムの実行パフォーマンスを追い求めるとどうしてもコンパイル型言語にいきつきます。

しかし、代表的なコンパイル言語であるC/C++言語の生産性の低さは周知の通りです。

Javaの夢

JavaはそんなC/C++の問題をある程度解決していました。

少なくともメモリ破壊やメモリリークの問題はJavaではありえません。

そしてJavaコードはJavaバイトコードにコンパイルされます。

JavaバイトコードはJava VM(Java仮想マシン)で実行されます。

Java VMはどんどん最適化され、ゆくゆくはJavaバイトコードを直接実行するCPUも登場するだろう……

つまり、Java言語で開発しておけば将来安泰。

この「Javaの夢」が多数のJava案件とJavaプログラマーを生み出したように思います。

幻のJavaバイトコード対応CPU

そんなJavaのバイトコードを直接実行するCPUは過去に開発されたことがあるようです。

奥歯にものが詰まったような言い方なのは詳細を知らないからです。

つまり、早い話そんなCPUは普及しませんでした。

まあ、Java VMが実用的なパフォーマンスを出せているのも普及しなかった理由かもしれません。

ただ、パフォーマンス向上はインタプリタ型言語でも進んでいるのです。

パフォーマンスに問題がなければJavaなどのコンパイル言語より生産性の高いインタープリタ言語が選択されるのは当然と言えます(逆に言えば理由もないのにC/C++を選択しているような案件に首を突っ込むとロクなことになりません、経験上)。

スタンドアロンはAndroid頼み

WindowsやMacのスタンドアロンプログラムもJavaで書いておけば安泰だよね、……と考えるプログラマーはもういないかと思います。

JavaでGUIを実装するのは大変すぎるからです。

また、WindowsについてはJavaをパクったにインスパイアされたC#の存在も原因の1つかと思います。

WindowsスタンドアロンでJavaでなくC#が選択される理由は以下です。

  • 優れたGUIフレームワーク(.NET Framework)
  • 使いやすい開発環境(Visual Studio)

JavaかC#かといったプログラミング言語の選択にはフレームワークや開発環境がいかに大事かってことですね。

まあ、「EclipseとVisual Studioのどちらで開発するのが楽ですか?」って聞かれたら答えは明白ですから……

そんな中、スタンドアロンJavaが生き残る唯一の望みがAndroid開発です。

AndroidアプリはDalvik VMと呼ばれる仮想マシン上で実行されます。

Dalvik VMはJava VMにかなり似ており、今のところ主流な開発言語はJavaです。

ただ、ライバル(?)のiOSアプリ開発はより生産性の高いSwift言語が主流であり、Androidアプリ開発でもKotlin言語などが模索されています。

いずれにしてもAndroidでのJava開発が下火になればスタンドアロンのJavaも絶滅の道を辿りそうです。

サーバーサイドのJavaシステムはたくさんありますが……

サーバーサイドであれば前述のGUIフレームワークの問題もなく、多数のJavaで動くサーバーがあります。

ただ、かつてのような、

  • (プログラマーにとって)Javaのスキルは他でも活かせる
  • (顧客にとって)Javaで作っておけば安泰

といった夢はもはや期待できません。

せいぜい、スキルをAndroidアプリ案件に使い回せる程度です。

そのAndroidも前述の通り将来は怪しい状況です。

有償化

そんな怪しい将来に追い打ちをかけると思われるのがOracleのJDK(Java Development Kit) 11以降の有償化です。

有償化自体はたいした問題ではないと思います。

OracleのJDKを商用利用したければお金を払えばいい話です。

どうしてもお金を払うのが嫌なら無償のものに替えればいい話です。

……と、ここまでは顧客の立場での話です。

Javaプログラマーにとっての危機は有償化を契機に顧客が、

そもそもJavaで開発するメリットって何だっけ?

とかいらぬ事を考え始めることです。

Javaが生き残れなければ、ただ「Javaが書けます」だけのウリのプログラマーも淘汰されることになります。

コメント