Javaが嫌い
これからJavaを学びたいけどどうなんだろう
Javaを少し書いたことがある人やこれからJavaをはじめようという人はJavaについてのネガティブな意見を多く目にして実際はどうなのか知りたい人も多いですよね。
こんにちは!エンジニアのかいです。本日は実務で実際にJavaを使っているエンジニアとして個人的なJavaに対するネガティブな見解を述べていこうと思います。
もちろん、個人的見解なので万人がそうというわけではないのでご了承ください。
この記事はこんな人のために書きました。
- Javaが嫌いという意見が多いが、実際に使っているエンジニアの意見を聞いてみたい
文字列が長い
まず筆者がJavaを使う上でめんどくさいなと思うこととして挙げられるのは文字列がいちいち長いということですね。
標準モジュールや、様々なライブラリを使おうとした時に書く文字列が長くてめんどくさいという点があり、IDEが必須になります。モジュールの名前が長い上に中で呼び出すメソッド名も長いみたいなこともよくあります。
もちろんIDEを使うのでミスなどが起こる確率は低いですが、パッとコードを見た時に非常に見通しが悪かったり、やる気が削がれるという経験が筆者にはありますし、初心者の方がみたら「うわっ」となることは間違いないでしょう。
とはいえ、Javaは時代とともに継ぎ足し継ぎ足しされてきた過去があるのでこのように名前がどんどん長くなってしまったのは仕方ないという面もありますね。

equalsでないと値の比較ができない
次は、値の比較が=で行えないという点ですね。例えば、以下のような点ですね。
public class Main { public static void main(String[] args) { String test = "test"; String test2 = new String("test"); System.out.println(test == test2); } }
false
=では、ポインタを比較しているため、違うインスタンスということでfalseが出力されます。なので、中身の比較には、equalsを使う必要があります。
public class Main { public static void main(String[] args) { String test = "test"; String test2 = new String("test"); System.out.println(test.equals(test2)); } }
true
こういう仕様なのでこう書けば良いのはいいんですが、普通にめんどくさいですよね。=で比較できる方が直感的で良いです。
IDEが必須である
これは、上述したとおり各文字列が異様に長いこともあり生で書くと常に、タイポとの戦いや、コピペの沼にハマることになるのでJavaはIDEが必須言語と呼ばれています。IDEは便利なので筆者もよく使いますが、必須ということはどこでもその環境を用意する必要があるということなんですよね。
IDEを毎回入れるのはめんどくさいですし、IDEばかり使っていると生で全く書けなくなることもあり、それを問題視するかどうかはエンジニア次第ですが筆者は多少の問題があるとは思っています。
初心者のうちは何が違うかわからないけどなんとなくIDEの教えに従ったらうまくいったみたいなことが多発し、そこを理解しようとする作業をスキップしがちだからですね。
また、ひと昔前はJavaの開発やAndroidの開発ではEclipseというものが主流だった時期があり、これを利用したことによってJavaは嫌いだ!という風になったエンジニアもいると思います。
しかし今はJavaの開発ではIntelliJが主流でとても優秀なのでIDEの使いにくさでマイナスになることはあまりないと思います。筆者もIntelliJの有償版を愛用していますが、無料版でもJavaやKotlinなどはサポートされているのでJavaのIDEといえば、今はIntelliJ一択ですね。
環境構築がめんどくさい
Javaの環境構築は結構めんどくさいです。詳しい解説は省きますが初心者の心を折るには十分ですね。
環境構築については以下に記事を貼っておきます。以下記事ではEclipseの説明がありますが、古い記事ですのでIDEで開発環境を整える場合にはIntelliJを使うべきのでそちらの記事も貼っておきますね。


JVMが遅い
JavaはJVM上で動作します。このJVMの実行が遅いという点もありますね。
こちらが最適化できてない問題もあるかもしれませんが、人によってはJavaは静的な言語だがJVMで実行されるのでもはやインタプリタみたいな声を聞くこともありますね。
これは余談ですが、Javaとの完全互換性を謳っているKotlinにはKotlin/Nativeというものがありこれは直接アセンブラにコンパイルできます。
言語を語るときは当時の時代的背景を理解しよう
Javaのネガティブな意見はたくさんありますよね。筆者も感じることは多々あります。
しかし、言語仕様について文句をいうときはその時の時代的背景も一緒に理解する癖をつけることは大切です。イケてない仕様があってもその時代ではそういう仕様が流行っていたとか、求められていたという背景があったりします。
そこまで意識を向けるのは大変ですが、全ての事象には理由があるのでその理由を理解できるようになると寛容になりますし、さらに言語への理解が深まります。
まとめ
Javaのネガティブな意見をまとめてきたとおり、筆者もJavaはあまり好きではありません。
しかし、好きではないというのは上記に挙げてきたような理由や、書いていて楽しくないということであり、オブジェクト指向を学ぶにはとても良いと思いますしJava自体が欠陥であるとか悪いとかいうわけではないです。
また、現在Javaを動いているシステムはとても多い上、新規プロダクトにJavaを採用することもこれからまだあると思うのでJavaを書くことが求められるシチュエーションというのはまだまだあると思います。なので現在毛嫌いしている方やこれから学ぶ必要がある方も必要であればしっかり書けるようにしておきましょう!
それでは!!