Javaはなぜ嫌われる?エンジニアが実務で使ってみた感想


Javaは嫌いって人もいるみたいだけど、実際どうなの?
これからJavaを学ぼうか迷う…

Javaについてネガティブな意見を耳にすると、実際どうなのか気になる人は多いですよね。また、これからJavaを学ぼうか悩んでいる人もいるはず。

そこで、本日は実務でJavaを使っているエンジニアの僕が個人的なJavaに対するネガティブな見解を述べていこうと思います。

もちろん、個人的見解なので万人がそうというわけではない点はご了承ください。

この記事はこんな人のために書きました。

  • Javaが嫌いという意見が多いが、実際に使っているエンジニアの意見を聞いてみたい
この記事の要約
  • Javaは文字列の長さや環境構築に手間がかかる点から嫌われることがある
  • 嫌われる点はあるものの、Javaは多くの開発で重宝されるプログラミング言語

なお、1人で学習が進められるか、途中で挫折しないか不安な人は「侍エンジニア」をお試しください。

侍エンジニアでは現役エンジニアと学習コーチの2名体制で学習をサポートするため、挫折しづらい環境で学習が進められます。

受講料が最大70%OFFになる「給付金コース」も提供中。未経験から効率よく学習を進めたい人は、ぜひ一度お試しください。

\ オンラインで相談可能 /

目次

文字列が長い

まず筆者が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を使うべきのでそちらの記事も貼っておきますね。

Javaインストールで初心者がつまずかないための完全攻略ガイド
更新日:2024年6月28日
Kotlinの開発環境を構築しよう!実行方法まで簡単に解説
更新日:2024年6月28日

JVMが遅い

JavaはJVM上で動作します。このJVMの実行が遅いという点もありますね。

こちらが最適化できてない問題もあるかもしれませんが、人によってはJavaは静的な言語だがJVMで実行されるのでもはやインタプリタみたいな声を聞くこともありますね。

これは余談ですが、Javaとの完全互換性を謳っているKotlinにはKotlin/Nativeというものがありこれは直接アセンブラにコンパイルできます。

言語を語るときは当時の時代的背景を理解しよう

ここまで、Javaに関するネガティブな意見を紹介してきました。

しかし、言語仕様について何か思うことがある際は、その時の時代的背景も一緒に理解する癖をつけることは大切です。イケてない仕様があってもその時代ではそういう仕様が流行っていたとか、求められていたという背景があったりします。

そこまで意識を向けるのは大変ですが、全ての事象には理由があるのでその理由を理解できるようになると寛容になりますし、さらに言語への理解が深まります。

まとめ

今回は、Javaのネガティブな意見をまとめて紹介しました。

Javaはオブジェクト指向を学ぶにはとても良いと思いますし、決してJava自体に欠陥があるといった話ではありません。

また、現在Javaで動いているシステムはとても多い上、新規プロダクトにJavaを採用することもこれからまだあると思うので、Javaを書くことが求められるシチュエーションというのはまだまだあると思います。

なので現在毛嫌いしている方やこれから学ぶ必要がある方も必要であればしっかり書けるようにしておきましょう!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次