【つらつらメモ】【#2】javaが動く仕組み
メモ投稿の第2弾、javaが動く仕組みについてです。
「javaはどこでも動く」という話を昔から耳にしていますが、改めてなんでどこでも動くのかについて調べた結果を書いていきたいと思います。
【背景】
アーキテクチャについて考えていた時に冒頭にでてきた言葉を思い出して、素直になんでjavaはどこでも動くのにほかの言語だと動かないのかということが気になって調べてみました。
【結果】
結論としては、javaを動かすときに使用しているJVM(java virtual machine)が各OSの差異を吸収しています。(実際はWindows用のjvmやMac用のjvmがあるみたいですが。)
なのでjavaのコード書いてjvm上で動かしさえすれば、あとはその資源をどの環境にもっていっても動作させることができます。
【補足】
プログラムが動作するときの仕組みについて・・
jvmについて調べている最中に「インタプリンタ型言語」、「コンパイラ型言語」という言葉が出てきたので、それらについてもこの場で触れておきます。
javaは「コンパイラ型言語」にあたり、ソースコードを一度PCが理解できるバイトコードへと変換し、その後実行するという仕組みをとります。特にjavaに関してはjvm内にJIT(Just In Time)コンパイラというものが存在し、バイトコードの実行をより効率的に行えるような仕組みが備わっています。
一方、「インタプリタ型言語」はソースコードを実行する際に1行ずつバイトコードへと変換し、実行するという仕組みをとります。一度に全コードをバイトコードへと変換する「コンパイラ型言語」と比較すると、実行速度が遅くなるというデメリットがありますが、1行ごとに実行→デバッグが可能であるというメリットもあります。
次回はnode.jsについて書きたいと思います。
【参考】