Chapter 01

Javaの特徴

KeitoYuasa
KeitoYuasa
2023.02.05に更新
このチャプターの目次
  • Javaは、Webアプリ、Androidアプリ開発が得意
  • コンパイラ言語、静的型付け言語。
  • JVM言語の一種(OS上ではなく、JVM上で実行される。そのためOSに依存せず、一度記述すればどこでも実行することができる)
  • クラス単位で、プログラムを実装していく(≒オブジェクト指向)

クラスの実行

  • ネイティブコード:CPU/OSに依存した機械語
  • バイトコード:CPU/OSに依存した機械語ではなく、ソースコードとネイティブコードの中間に位置するコード。実行時にそのCPU/OSで動ける機械語に翻訳するもの。そのため、同じバイトコードを異なるOS上で実行することができる。要は、JVM用の機械語。
  • JVM:Javaを実行するために仮想的に具現化したコンピューターの事。JVMがバイトコードを理解し、ネイティブコードに翻訳する。標準ではJVMは、JVM内のコンパイラを使って、バイトコードからOSに合ったネイティブコードへ変換する。コンパイラを使用せずインタプリタのみでネイティブコードを1つ1つ翻訳することもできる(かなり実行速度が遅くなる)。ネイティブコードをCPUが実行する。

まとめるとJVMを挟むことで、一度書いたらどこでも動かせることができる。
(つまり、javaのソースコードをOSごとに生成する必要がない。一度生成したクラスファイルはJVMがOSの違いを吸収してくれるのでどのOSにも移植可能。)

コンパイル→クラスファイル(中間ファイル)が生成される→JVMがクラスファイルを実行→JVMがJVM内にあるコンパイラを使って、バイトコードをまとめてネイティブコードに変換して実行する。

クラスファイルは、バイトコードと呼ばれる実行可能なバイナリで記述されている。これは、JVMが解釈可能なコード。
OSにインストールされたJVMがクラスファイルをさらにOSで扱えるものにコンパイルし、実行している。