【オワコン?】Javaが古いと言われる理由とその背景
プログラミング言語とは何か、と聞かれたとき、恐らく最も有名で名前も挙がるであろう言語こそ「Java」です。
ただ、そんなJavaですが、最近は「古い」「Javaは終わった」などという声も耳にします。
今回は、未だに初学用にも用いられる「Java」について、なぜ古いと言われるのか、その理由と背景をつづります。(個人の主観です。客観的な根拠やデータに基づいた考察ではありません。)
Javaが古いと言われる理由
Javaが古いと言われる理由ですが、大きく分けるなら以下2点が挙げられます。
- 記法が古い
- 機能が煩雑
もちろん、Java自体に歴史があるため、古いと言えば当然の話ではあるのですが、今回は上の2つについて詳しく解説していきます。
記法が古い
まず、Javaを学んだことがある方なら、現代のプログラミング言語と比較して、その”記法の古さ”は目につくのではないでしょうか。
Javaの記法の古さを際立てているのは、主に暗黙的なルールの多さにあります。
そもそも「プログラミングを簡単にできるように」を一つのモチーフとしているJavaは、プログラミング、というよりはコーディングを簡易化する、さまざまなルールが設けられています。
有名なのが、Setter・Getterのルールですね。
SetterやGetterは、サーバサイドの処理を構築する際に、「set○○〇()」・「get○○〇()」という関数名を付けた関数に、値を設定するような処理を記述すると、それに応じた処理が勝手に動くというものです。(曖昧な説明)
これは一見すると便利なように思えるのですが、要するに「開発者側で定義した独自関数ではない関数が定義されている」という状態で、今のコンポーネント単位の開発思想からすると「お節介でややこしい」処理のようにも思えます。
他言語を学んでいる方からしても、「get○○〇()」という関数名は、何らかのデータを取得する独自関数にもよく用いる関数名のルールであるため、独自に定義した関数なのか、Javaの機能を使いたくて定義した関数なのか、よくわからない属人的なコードに仕上がってしまいます。
また、変数を定義する際の「型」のルールが厳格に定義されているのも、Javaの厳しいところです。
スマートな実装ができると言えばそうですが、charとstring、doubleやintなど、意味は理解していても、それらを随所で適切に使い分けながらコーディングするのは、現役エンジニアからしても面倒と言えます。
これらが要するに「Javaの古さ」。
結局「Javaのルールを理解していないと、コードの意味をはき違えてしまう」という要素は、Java主流ではない現代においては時代遅れとしか言いようがないのです。
機能が煩雑
Javaは古いという話にも繋がりますが、現代のプログラミング言語と比較すると、機能の多さは、かえってJavaの煩雑さにもなっています。
要するに、「わざわざ勉強するのが面倒」ということですね。
例えばアプリケーションを作るなら、よりアプリ開発に特化し、記法も単純な「Kotlin」や「Swift」などが出ていますし、デスクトップアプリケーションを作るなら、もっと包括的にライブラリをカバーする「C#」があります。
ゲームを作るにしても、現代ではUnityやUEを使うのが主流です。
Javaはアプリケーションもサーバサイドも補える万能言語ですが、だからこそ、特定の何かに向けた仕様にはなっていません。
結局、何か作りたいとなったとき、「Javaでも作れるけど、わざわざ使うほど簡単でもない」と、中途半端な言語になってしまっているのが現状でしょう。
まとめ
Javaは古いと言われる理由は様々ですが、やはり古風な記法や機能煩雑さからなる学習コストの高さによって、Javaの使用者そのものが減少している背景があります。
サーバサイドにしろ、アプリケーションにしろ、開発するならそれに適した言語やライブラリが沢山出ているので、もうJavaを使う時代ではなくなったのかもしれませんね。