![見出し画像](https://assets.st-note.com/production/uploads/images/173646849/rectangle_large_type_2_07310c563bd8517b65aaffc1ab25d03b.png?width=1200)
Javaをこどもにも分かりやすく言語化してみる
こんにちは、職訓でプログラミング学んで就職目指し中のミケです。
絶賛Javaの学習中。
でも、まだどのプログラミング言語を集中して学ぶべきか悩んでます。現役エンジニアや転職エージェントに相談、YouTube動画を見るとますます悩みの渦に・・・
Javaは難しい?
プログラミングを学び始めてみると、「Javaは厳格で難しい」「大規模なシステム向け」といった話を耳にすることが多くなりました。
初学者にはハードルが高く、学習に時間がかかる難しさがあるみたい。
しかしカリキュラムなのでやらなくちゃいけない・・。
こんなJavaを少しでも理解し、好きになるべくJavaの特徴や学ぶメリットなどをこどもにでも分かりやすく噛み砕いてみました☺️
私自身、難しいと全く頭に入らず理解が深まらないことがあるので、出来る限りカンタン・シンプルにして学びたいです。
そもそもJavaを習得するとどんなことができる?
Webアプリ開発(例:企業向けの管理システム、ECサイト)
Androidアプリ開発(JavaはAndroidの公式言語の1つ)
サーバーサイド開発(業務システムや大規模サービスのバックエンド)
組み込みシステム(家電やIoTデバイスのプログラム)
金融・銀行システム(高い安全性と堅牢な設計が求められる分野)
2. Javaを使っている企業や業界は?
大手IT企業(Google, Amazon, IBM など)
金融・証券業界(銀行のシステム、証券取引システム)
Webサービス企業(ECサイト、SNS、予約システムなど)
Androidアプリ開発会社(スマホアプリの開発)
ゲーム開発会社(MinecraftのようなJavaベースのゲーム)
3. Javaの求人事情は?
Javaエンジニアの求人数は多め(特にサーバーサイド開発や業務システム)
大企業での採用率が高い(安定した開発環境を求める企業が多い)
フリーランス向け案件も多数(案件単価が高め)
未経験OKの求人もあるが、基本的な知識は必須
4. Javaが「難しい」と言われる理由は?
文法が厳格(型指定が必須で、他の言語に比べてルールが多い)
オブジェクト指向の理解が必要(初心者には難しく感じる)
環境構築がやや複雑(Javaの開発環境を整えるのに手間がかかる)
学習に時間がかかる(基礎→オブジェクト指向→実践までの道のりが長い)
5.Java習得にかかる学習時間(初心者の場合)
基礎学習(3〜6ヶ月)学習時間:約200〜400時間
実践的な開発スキル(6ヶ月〜1年)約400〜800時間
実務レベルの応用(1年〜2年)約800〜1600時間
まとめてみたけど、なんだか難しいし堅いというイメージしかありません。
実際に触ってみても、最初から躓いてますw
例えば・・
「Javaは、コンパイラでコンパイルしてバイトコードに変換して、マシン語に変換しながらCPUを動かす」・・??
私の学習方法は非効率だと思います。
気になったらとにかくなぜ?どうして?を気が済むまで調べて理解したいのでよく掘り下げます。
これも初っ端からチンプンカンプンなので調べてみましたww
クッキー作りにたとえて Java の動きを理解してみる〜🍪✨
コンパイラが〜、コンパイルが〜がよく分からないので、Java がどのように動くのか、クッキー作りに例えて説明してもらいます!
① Java のプログラムを書く = クッキーのレシピを書く
プログラムを書くのは、クッキーのレシピ を書くのと同じ!
Java のコード (レシピ) の例
public class Cookie { public static void main(String[] args)
{ System.out.println("クッキーを焼くよ!"); } }
意味:クッキーを焼くよ!って書いてある
② コンパイル = レシピを翻訳する
でも、コンピュータは人間の言葉(Java)をそのままでは理解できません。
だから、一度 翻訳 (コンパイル) しなきゃいけないんですね。
コンパイラ(翻訳機)がすること
→ Java のコード(レシピ)を 「バイトコード」 という形に変える。
これは 料理の専門用語で書かれたレシピ みたいな!
パティシエ業界だとして、「このフルーツをコンフィチュールしておいて」という言葉だと、一般人には馴染がないので理解できないですよね?(ジャムを作って)
フレンチレストランだと、「このシーフード、シトロンでデグラッセしてからソース作って」(レモンで旨味を取り出して、その風味をソースに)
業界の人には通じるけど、一般人からすると全く分からない指示なのでこれを翻訳して理解出来るようにしてくれるって感じだとイメージしてみました。
③ バイトコード = 料理の専門書のようなもの
バイトコードは人間にはちょっと読みにくいけど、
料理が得意なロボット(JVM)が読める言葉。
バイトコードのイメージ
0xCAFEBABE aload_0 invokevirtual #3 ...
難しい記号ばかりだけど、JVMなら読めるらしい。
④ JVM(Java仮想マシン) = クッキーを作るロボット
JVM は、バイトコードを読みながら、実際にクッキーを作るロボット。
このロボットは その場でレシピを見ながら調理する から、どんなキッチン(OSやパソコン)でも動く働き者♪
JVM の仕事
小麦粉を入れる
砂糖を混ぜる
オーブンで焼く
完成!
⑤ 実行 = クッキーが完成!
JVMがバイトコードを読みながら、実際にクッキー(プログラムの動作)を作ってくれます。
画面に表示されるもの
System.out.println("クッキー焼けたよ!");
クッキー完成(=プログラムが動いた)
※ちょっとニュアンス的に合っているか自信はありませんが、概ねこういう動き、理解で良いのではないかと思いますw
クッキー作りで考えるとJavaのコンパイルやバイトコードなどの流れがなんとなく少しだけ理解出来たような気がしなくもないです・・
分からないことも含めて、一歩ずつ進んでいきましょう〜