2024年でもJavaが依然として人気のある25の理由
(medium.com)「プログラミング言語には2種類あります。人々が不満を言う言語と、誰にも使われない言語です。」 — Bjarne Stroustrup.
「Javaを批判して不満を言う人たちは、たいてい若く、何よりもJavaScriptに多く触れているようです。JSと比べると、Javaは少し重く制約が多いように見えるかもしれません。あちこちにボイラープレートがあり、コンパイラが厳格に適用する型システムなどもあります。しかし、選べるのであれば、私はJSよりも最適ではないJavaコードベースを選びます。疑いの余地はありません。」
「数十、あるいは数百のファイルに分散したコードを扱う実際の経験を積んで初めて、Javaのいわゆる『制約』が、実際には自分で自分の足を撃つことを防ぐための安全装置なのだと気づき始めます。」
「Javaを見つけて再び乗り換えたことは、まるで啓示のようでした。私は自分がJavaとそのエコシステムを愛しているのだと気づきました。そこで、Javaエコシステムについて私が気に入っている点をいくつか書き留めることにしました。ですから、誰かがJavaを非難したら、彼らがなぜ間違っているのかを伝える25の理由がここにあります。」
- 成熟したエコシステム
- WRITE ONCE, RUN EVERYWHERE
- 後方互換性 (Backward compatiblity)
- 強い型付け (Strongly Typed) 言語
- 速いリリースサイクル、継続的な改善
- 優れたIDE
- GraalVMのNative Imageサポート
- オープンソースのライブラリとフレームワーク
- マルチスレッド
- 成熟したオブジェクト指向
- メモリ管理とガベージコレクション
- オブザーバビリティ (Observability) とモニタリング
- 関数型プログラミングのサポート
- 豊富なドキュメント
- ビルドツールと依存関係管理
- 強力なテスト機能
- 巨大なコミュニティ
- アノテーション
- セキュリティ機能
- 豊富なAPIセット
- パフォーマンス
- 構造化並行性
- 仮想スレッド
switch文のためのパターンマッチング- 文字列テンプレート
62件のコメント
Javaの長所として挙げられているものは、実際にはどれもJava以外の言語のほうがはるかに優れている点のように思える
Springに言及する方がいませんね。
私はJavaという言語自体への不満はありませんが、
Springを習得しなければならない国内の現実が少し息苦しく感じられて、魅力的には思えませんでした。
Javaは良いけれど、Springは……ひどいですね(泣)
25個すべてにこれといった差別化がない。敬意とは別として、レガシー祭りに群がるハイエナたち。
2024年になっても依然として人気がある理由を25個も挙げていますが、
あえてJavaでなくても代替できる言語は十分にあるように思います...
人気なのはJVMのほうです
理由の大半は、現代の他の言語のエコシステムと比較すると
それほど強みとは言えず、筆者はSpringとJavaを分けずに書いているように思えます。
Java という言語は開発環境がよく整っているので、好まれるのは当然です。
同様に、その環境内でこそ仕事をしてパフォーマンスを出せるため、その環境でだけ働きたいと思うものですし、別の環境を求められると反発も感じます。
ただ、今後はこうした言語でも AI がよりうまくコーディングするようになるでしょうし、自分の慣れた環境だけでなく多様な環境でも生き残れる適応力が、これまで以上に必要になるように思います。
そういう意味で、さまざまな言語への適応力は、もはや選択ではなく必須だと思います。
EntriesのWebアプリを作る必要があるなら、無条件でJavaを使うと思う。1番の理由だけで十分だから……。簡単な開発、素早い開発ならPythonが良さそう。JSは……自分には煩雑でイライラしたけど
JavaをやるくらいならKotlinをやるし、Javaという言語よりは、Kotlinの発展に追随してくれる言語は.NET系の言語だと判断しています。
Javaは、昔Javaで構築しておいた官公庁サーバーの保守言語として残っているくらいがよさそうです。韓国のCEOの方々は、広告で見たJavaという単語に慣れていて、Javaにこだわる傾向がありますよね。Kotlin、.NETを経験してからJavaを検討してみてください。
皆さん、Javaの話が出たのでついでに言うのですが……Goはどうでしょうか? 私はJavaよりむしろKotlinのほうが好きなのですが、Gradleで味わった挫折感があまりにも多くて、結局Goに落ち着きつつあります。少しだけ使ってみた立場からすると、Javaが必要なところならどこでもGoでもカバーできるのではないか? と思いました。
JS/TSについては私も好きではあるのですが、いくらなんでもJavaと同じ土俵に置いて比較するのは少し無理があるのではないかと思います。とはいえシングルスレッドという制約はあるわけですし、
pm2などでマルチプロセス化すると言われますが、Javaもvirtual threadがしっかりしていて、実際こちらのほうが良いと思うんです。もちろん、こういう考え方をしているうちにgoroutineを見て、私はGoに落ち着いたのですが……(笑)必要に応じて適材適所で言語を使い分けるのが良いと思います。私は2024年の今でもPHPという言語が大好きですし、JS、Java(Kotlin)も、Goほどではないにせよ愛着があります。言語は道具なのですから、その道具の目的に合わせてうまく使えばいいのではないかと思い、コメントしました。
今では本当に実用に足るレベルになったと思います。私は会社でも業務は go だけでやっています。
昔、godep や glide を使っていた時代は、dependency が一度でも食い違うとつじつまを合わせるのに丸一日かかって、これが言語なのか言語もどきなのかと悩んでいました.. 😂
シングルスレッドという制約はあるにしても、コンテナで包んで 1 つの Pod あたり CPU を食いすぎないようにしてオーケストレーションする時代では、その制約はそこまで大きいのか? という気しかしませんね
以前のように 1 台のサーバーで複数のコンテナを立ち上げる代わりに、そのコンテナが CPU を大量に消費するなら話は別ですが
大半の Web サーバーのケースでは CPU をそれほど消費せず、I/O スループットが大きいだけなので、Node も 1 つの選択肢として扱えると思いますね
もちろん CPU を多く使うドメインであれば、これは別の言語を検討してみるか、napi を通じてネイティブコードを呼び出すこともできるでしょう
ゴルーチンによって非同期処理がうまく抽象化されている特徴があるので、非同期処理に有用な言語だと思います。Rust や Python の非同期コードは、考えすぎた結果のように感じます。書くにしても読むにしても、認知負荷が高いほうだと思います。
私は generics が含まれる前の Go しか使ったことがありませんが、優れた言語だと思います。初期のころはツールが本当にいまひとつでしたが、かなり改善されていました。
文法は無骨ですが、その分学びやすいです。
ケンカしないでください....
議論が過熱しています。
反論がある場合は、その内容のみを書いてください。
サイトの利用方法に反するコメントは削除しました。
また、利用方法に合わない活動を繰り返しているアカウントはブロックしましたので、ご承知おきください。
健全な議論をお願いします。
Java 1.8は本当に素晴らしいバージョンですね!
write once run everywhereは、もうそろそろ手放してもいいキャッチフレーズなんじゃないかと思います.. wwでも、それがJavaなんですよね! www
IDEAでJavaを書くのは楽しいですが、IDEAがなかったら不幸だったと思います。(実際、不幸でしたし)
日本では採用面での利点もあり、電子政府フレームワークもあって、「Java共和国」という言葉が出るほどJava開発者の方が多いですよね。
企業で他言語からJavaへ移行するケースも多いのですが、経験上、一部のJava開発者の方はJavaだけをやりたがる印象がありました。
既存に構築された他言語のシステムが問題で、Javaに移行すべきだと言うんです。ところが、Kotlinもやりたがらないんですよね。
何か新しいものを学ぶことへの抵抗感があるように見えました。わざわざ全部Javaでやればいいのに、なぜ?という感覚です
SIをやっている人たちは、ジェネリクスを使わないんじゃないですか?
それが問題だとおっしゃっているようですが……(笑)
このレベルになると、Javaは宗教みたいなものだと思います。
Javaを批判して不平を言う人たちはたいてい若く、何よりもJavaScriptに多く触れているようです。という言葉を逆に解釈すると、それだけjsを使ってきた人たちは、経験としてjavaはいまいちだと感じたという話でもあります。
なぜそれぞれに長所と短所があるという事実を認めず、javaのほうが優れているという話ばかりするのか……。
document dbを使ってみたこともなく、ただそうした特徴は関係なくsqlが良いと言う人たちがいるのと似ていますね。
すでにjavaが多く使われている状況があり、多くの先輩開発者がjavaしかできず、その人たちが変えたがらないから変えられない、という事実は抜きにして考えている気がします。今の時点で見ると、javaならではの強みはほとんどないレベルだと思います。
長年の経験からすると、Python と JS のほうが熱狂的な信者の割合は高いと思います。
それはおそらく、Java言語ではなく JS/Python をアピールしなければならない立場だから、より主張が強いと感じられるのだと思います。
個人的には、Java以外の言語を最初からまったく考えようとしない人を少し見たことがあります。逆に、ほかの言語をやっていた人たちは、ほとんどが状況に応じて別の言語を使う意思がありました。
最初の言語がJavaなら、そういうこともあり得るのかなとは思いますが、そういうケースを身の回りで一度も見たことがないので、あまり想像がつきません。
私も大学に入って授業で最初に学んだ言語がC++で、学年が上がるにつれてほかの言語にも自然に触れてきたので、新しい言語を学ぶことにそれほど負担は感じていませんが……実際、基本的な文法(変数宣言、制御文、関数など)はどれもだいたい似ていますからね。
そういう場合は、たぶん最初に言語を学ぶときにあまりに狭い範囲で学んでしまって、視野が狭くなったのではないかと思います。そしてそういうのは、ディープラーニングや数理統計を目的にPythonを最初の言語として触れた人たちのほうで、より多く見てきました。私もそうですし、どちらも体験談なので、両方とも正しい話なのでしょう。
私も似たような経験をして、同じ考えです
Pythonが好きな人たちは、Pythonが良い言語だと主張したりはしません。JSでも、その言語自体が優れていると無理に言い張る人はいません。PythonもJSも、特定の分野で開発するうえでエコシステムが良いだけなんですよね。なぜかJavaの人たちだけは、とにかく無条件で良いと言い張っている感じがします…。
JSは、JS開発者自身でさえネタにします。これが言語なのかと……。TSがなかったら 泣
あえてJavaを擁護するなら、逆にJavaだけがとりわけあれこれの理由でよくからかわれがちな気もします。みんなに親しまれている近所のおじさんポジション……?
最近、Java関連の内容をGoogleで検索すると
スクールで習ったのと同じような内容の韓国語ブログ記事が大量に出てきて、
きちんとしたリファレンスを見つけにくくて腹が立ちます。
Google検索はかなり悪くなりましたね...
18、25、20、10、8、6、5、3、2、1などは、Javaだけの専売特許ではない。誤った比較
今見ると、Javaにもこうした機能があり、非難される理由はないということであって、JavaでしかできないからJavaを使えと言っているわけではないようです。
むしろ読みながら、うーん…….NETのほうがまだ良いのでは? という考えしか浮かびませんでした。
私もC#は好きですが、Windows以外の環境であえて使う必要があるのかと思います。
上のコメントと同じ内容です。あの時代が終わってから本当にずいぶん経っています。
MSの後手に回った選択が、人々の認識をここまで歪めてしまったんですね。
Windows向けアプリケーションだけを作るならMSエコシステムの利点が多くて良いですが、LinuxやmacOSではJavaより優れているものはないと思います。MSも遅れて対応していますが、あえて使う理由はありませんね。時期が良くない
もはや .NET Framework 時代の.NETではないのに、Windowsアプリケーションに限定するのですか。
すでに皆さんの手の中にある携帯電話で、.NETベースのゲームエンジンが動いているのですから。
222
333
Javaを批判しているわけではなく、Javaがうんざりする理由は、Java開発者だけがとりわけ他の言語の開発者を見下して比較し、奇妙なJavaへのプライドを持っているからです。Javaは好きですが、なぜそうするのか分かりません。言語ごとに哲学があり、長所と短所があり、エコシステムが違うだけなのに、妙なJavaへのプライドを突発的にさらけ出して不快感を与えています。
Java開発者がJavaへの誇りを主張する根拠として提示できる資料が必要に見えます。提示するのが難しいのであれば、それは受け入れがたい主張だと思います。
どの言語やツールにも、そういう人たちはいるものだと思います。Javaは登場当時、C/C++に比べてイケている 言語でありながら企業向けにも広く使われ、開発者の母数も大きいため、より目立つのではないかと思います。
そして最近は、Rust開発者たちがその役割を担っているように見えます。
驚くことに、Javaが主流になった理由は、マーケティングに莫大な費用を使ったからですwwww
https://www.youtube.com/watch?v=NVuTBL09Dn4
ある言語がどのように主流になるのかについてのYouTube動画があるのですが、ほかの方が見ても興味深いと思います!
https://www.youtube.com/watch?v=QyJZzq0v7Z4
Java開発者に腹を立てるべきなのに、Javaそのものにぶつけてしまう……
それはそっちの読解力が…
私が返信しなくても、ほかの方が書いてくれましたね。
違いますが?
読解力が何かも分かっていないようだね?
ふと、Javaで作られたEclipseとJavaScript(TypeScript)で作られたVSCodeを思い浮かべたなら……比較としては的外れでしょうか。もちろん、機能はEclipseのほうが多いです。
それは不適切な比較です..
登場した時期を見るべきでしょう。
Eclipseが登場してしばらくの間は、Eclipseが今のVS Codeのような地位を持っていました。
私もEclipseは本当に使いづらいので使いませんが、
当時はまともな選択肢がEclipseしかなかったんです。
JavaScriptの強みは、V8エンジンをGoogleが管理していることですね。
見捨てられたJava..
ElectronアプリのバックエンドはJavaScriptですよね。メインプロセスとレンダラープロセスが別々に動いていても、どちらもJavaScriptコードで動作しているのですから。
同じように、JVMも結局はネイティブで実装されたランタイムではないですか?