始めに
こんにちは〜まんじです。
今回はJavaとJavaScriptどっちから勉強すべき?というお話について書いていきたいと思います。
なんとなく文字が似てるから「どっちから」って考えになりがちですけど、基本的には別物と考えて必要なほうをやることがおすすめです。
両方必要な場合は先にどっちかからやって、その後にもう一方のほうをやるのがよさげです。
ただ、本当にJavaが必要なケースを除くと、ほとんどの人はJavaScriptがいいんじゃね?と個人的には思ってます。
JavaよりもJavaScriptじゃね?感
JavaScriptのがいいかもてきなお話。
理由1: JavaScriptのが難易度が低い
Javaに比べるとJavaScriptのが言語自体の難易度は低めです。
Java: 静的型付け言語、オブジェクト指向必須
JavaScript: 動的型付け言語、オブジェクト指向はどっちでもOK
静的型付け言語とかオブジェクト指向ってのがよくわからん人は無視してもらってよくて、要はJavaのが入門する頃はちょっと難しいということです。
プログラミング入門の頃とかは言語自体の難易度が低いほうが当然楽だし挫折しにくいです。
あとたまにある誤解として「難しい言語をやったほうがいい!」ってのがあるんですけど、これは間違いだったりします。
別に言語自体の難易度が難しいものをやったからと言って、技術力が爆上がりするわけでもなければ、難しい言語を習得するのは手段でしかないのでそこは忘れたくないところです。
ついでにJavaScriptやってからJavaやるほうが理解もしやすいです。
理由2: ぶっちゃけJavaScriptだけで大体の仕事はイケる
後述する理由と重複するんですけど、大体の会社の仕事はJavaScriptでいけるケースが多いです。
もちろんバックエンドにPHPやGoやJavaを採用してる場合にバックエンドエンジニアをやる場合にはその言語と周辺の開発知識が必要になりますが、JavaScript(node.js)をバックエンドに使ってる会社も多かったりします。
フロントエンドはほぼほぼJavaScriptに型をつけたTypeScriptが使われるので、プログラミングで仕事をする場合に関して言うと、JavaScriptだけで仕事の求人はすごく多いです。
なので、仕事って面でもJavaScriptがいいのでは?というお話。
Javaだとバックエンドのみなのと、古めの会社が多い印象です。
一方でJavaScriptはフロントエンドとバックエンド両方いけて、モダンな会社が多い。
理由3: プログラミング初心者にはJavaが難しい
JavaScriptのが難易度が低いって内容と重複しますが、Javaはプログラミング入門者〜初心者には難しいです。
具体的に何が難しいのかと言うと、ここらへん。
- オブジェクト指向
- 静的型付け言語
- コンパイル型言語
- ドキュメントなどのネット情報が全体的に古めでわかりにくい
- 環境構築がJavaScriptに比べるとめんどい
- JavaScriptはnpmでノリでコマンド打ち込んで実行すれば楽に動かせる
- Javaはコンパイル実行して実行するとか、コンパイルをせずに実行する(厳密にはされてるけど)ための用意などが別途必要
なんにせよ、最初の頃はJavaのが難しい確率は非常に高め。
JavaScriptはブラウザのconsoleタブですぐにコード自体は書けるし、Javaよりもいろいろゆるいので、なんにせよ入門しやすいですし理解できなくてもノリで動きます。
理由4: JavaScriptはバックエンドもフロントエンドもいける
これも上とやや重複しますが、JavaScriptはバックエンドもフロントエンドもいけるのですごく便利というか、コスパがいいです。
バックエンド: node.js
フロントエンド: 素のJavaScriptでも動くし、フロントエンドフレームワークを入れてモダンな開発もできる
実際ある程度の開発規模になるとJavaのほうがバグが少なくできるっぽいので、Javaのがバックエンド開発は良さげらしいんですけど、ある程度の小規模〜中規模ぐらいの開発だとJavaScriptでバックエンドも全然OKって感じらしいです。
バックエンドが別の言語でフロントエンドがJavaScriptだとプログラミング言語を2つ勉強しないといけないんですけど、JavaScriptなら両方いける。
Javaだとそもそもフロントエンドが無理ポです。
厳密にはhtmlに変な専用の文法を書くことでフロントエンドもJavaでいけるんですけど、MPAっていう昔ながらのタイプになりがちでリッチなUIがめちゃくちゃ作りにくいので最近だとあんまりそのタイプは使われません。
理由5: リソースはもはやJavaScriptのが多い
一昔前ではネットで調べて出てくる情報がJavaのが多かったみたいですけど、今だとJavaScriptのがリソースは全然多いなーって印象です。
何よりJavaに比べるとリソース自体も新しい傾向にあるんで分かりやすいってのがあります。
ぼくはJavaの研修を2ヶ月ぐらい新卒で入った会社でエンジニアでやってた頃があったんですけど、ググって出てきた情報がすごい古くてめんどうだった記憶が強いです。
※ 最近はChatGPTなどのAIが優秀なのでAIを多く使うことにはなる
Javaからやるべきケース
もしJavaをやるなら、、、というケースです。
ケース1: 仕事や学校の課題とか何かしらでJavaが必ず必要
仕事で使う言語がJava、学校の課題でJavaが必須などのケースです。
この場合はJavaScriptがいいと言っていても無理ぽだと思うので、だるくてもJavaをやるしかなさそう。
ケース2: バックエンドしかやる予定がない
フロントエンドはやらないし、バックエンドエンジニアでいくぜ!って場合にはJavaでもいいかもしれません。
が、、、バックエンドのみならGoとかのがモダンだしいいのでは感はありますし、バックエンドだけしかやらない予定でもJavaScriptでもいいかもしれません。
Javaをやるべきケースとか書いておいて、他の言語を推奨していますけど、バックエンド開発だけするなら、、、Javaでもいいかもしれませんけど個人的にはもうちょいモダンな言語でいいかもとは思う。
ケース3: Javaでしかできない何かをしたい
Javaでしかできない開発は最近だとほぼないと思われます。
シンプルにJavaを使ってる会社で開発するからJavaが必要になるとかそれぐらいで、ウェブアプリとかデスクトップアプリとかそこらへんもろもろはJavaScriptで全部作れます。
- ウェブアプリ
- Java: Springとか
- JavaScript: Next.jsとかNext.jsとかExpressとか
- デスクトップアプリ
- Java: JavaFX
- JavaScript: Electron
モバイルはJavaの場合はそもそもKotolinにしないと無理そうなんですけど、JavaScriptならReact nativeでできたり、、、という感じ。
ケース4: THE プログラミングっぽいほうをやりたい
オブジェクト指向ベースで静的型付け言語でコンパイル型言語のほうがなんとなくTHEプログラミング感はあるので、そういう場合はJavaがいいと思います。
イメージ的には「Cをやってポインタとかをやることが本当のプログラミングになるための方法だ!」に近い感じ。
ただ、本当のプログラマーになる必要性はあるのかってのは多少あるのと、多分GAFAMとかのコンピューターサイエンスとかの基礎力重視型を採用試験に入れてる会社とかじゃない場合には具体的なReact実務経験3年とかのが評価はされる印象です。
なので、THEプログラミングをやればいいのかってのは実際のところ分からないです。
JavaScriptだけやってりゃいいというお話
この記事のスタンス的に「JavaScriptだけやってりゃよくね?」という感じなんですけど、そこらへんを最後に書いて終わりたいと思います。
できることの関して
JavaScriptでできないことはほぼないです。
強いていうなら、大規模目なウェブアプリケーションのバックエンドはJavaScriptだと使われてないことが多いかなーという印象です。
- デスクトップアプリ
- Electron
- ウェブアプリ
- Next.jsなど含めいろいろナイスなフレームワークあり
- バックエンド開発
- ExpressとかNestやら
- フロントエンド開発
- React, Next.jsやらやら
- モバイル開発
- React native(実際、モバイルの開発ではそこまで使われないらしいけど)
- 業務システム系
- node.jsとかでスクリプトかく・・・?(業務システム系とは一体)
列挙したように、大体のユースケースはJavaScriptでできるというのもありますし、実際多くの現場で使われてます。
できるけど、仕事で使われない系とかは結構微妙なんですけど、、、JavaScriptなら多くの現場で使われているぞ・・・!てきな。
仕事に関して
JavaScriptで仕事する場合は厳密にはJavaScriptに型つけたTypeScriptで仕事することになるんですけど、求人はめちゃくちゃ多いです。
基本的にソフトウェア開発してるほぼ全ての会社がJavaScriptをフロントエンドに使っています。
なので、バックエンドとフロントエンド含めるなら、JavaScriptとフロントエンドなら不ロントエンドフレームワーク、バックエンドならバックエンド開発の知識(SQL, API, バッチやらアーキテクチャ)があれば大体応募可能です。
プログラミング言語自体の勉強に関して
JavaScriptのが入門しやすいし、リソースも多いし新しいし、勉強する場合もやりやすいです。
まとめ
JavaとJavaScriptどっちからやればいいんじゃ?っていうお話だったんですけど、どっちからというか、基本的にJavaがどうしても必要なケースを除けばJavaScriptがいいぜ!ってお話でした。