JavaコンパイラとJava仮想マシンの理解 - 第4部
これまでに、Java の動作とコード構造、クラス、メインメソッド、ループ制御について学びました。この投稿では、Java コンパイラと Java 仮想マシンについて見ていきます。これらが何のために存在し、それぞれの役割は何かを解説します。
Javaコンパイラとは何ですか
Javaは強い型付け言語であり、これは変数が正しい種類のデータを保持しなければならないことを意味します。強い型付け言語では、変数は誤ったデータ型を保持することができません。これはJavaプログラミング言語で非常によく実装された安全機能です。
Javaのコンパイラは、変数におけるデータ型の保持の違反について徹底的にチェックする責任があります。実行時にいくつかの例外が発生することがありますが、これはJavaの動的バインディング機能に不可欠です。Javaプログラムが実行されると、以前には存在しなかった新しいオブジェクトが含まれる可能性があるため、変数が保持できるデータ型にいくつかの例外が許可されています。
Javaコンパイラは、コメントを除いて決してコンパイルされないコードの部分にフィルタを設定します。コンパイラはコメントを解析せず、そのままにします。Javaコードはプログラム内で3種類のコメントをサポートしています。
1. /* COMMENT HERE */
2. /** DOCUMENTATION COMMENT HERE */
3. // COMMENT HERE
/* と */ または /** と */ の間、もしくは // の後に置かれたものは、Java コンパイラによって無視されます。
Javaコンパイラは、任意の構文違反を厳密にチェックする責任があります。Javaコンパイラはバイトコードコンパイラとして設計されており、実際のプログラムファイルから純粋にバイトコードで記述されたクラスファイルを作成します。
Javaコンパイラはセキュリティの第一段階です。それは、変数のデータ型の不正をチェックする防御の最前線です。不正なデータ型はプログラムやその外部に損害を与える可能性があります。また、コンパイラは、プライベートクラスのような制限されたコードを呼び出そうとしているコードの断片があるかどうかもチェックします。これにより、コード、クラス、重要なデータへの不正アクセスが制限されます。
Javaコンパイラは、JVMを必要とし、任意のデバイス/プラットフォーム/アーキテクチャ上で実行できる、プラットフォームおよびアーキテクチャに中立なバイトコード/クラスファイルを生成します。
Java仮想マシン(JVM)とは何ですか
Java仮想マシンは、Javaアプリケーションとオペレーティングシステムの間に追加のセキュリティ層を置く次のラインのセキュリティです。また、Javaコンパイラーによってセキュリティチェックされたクラスファイルがコンパイルされているかどうかを確認し、誰かがクラスファイル/バイトコードを改ざんして、無許可の重要なデータへのアクセスを制限するかどうかを確認します。
Java仮想マシンは、クラスファイルを機械語にロードしてバイトコードを解釈します。
JVMは、ロードとストア、算術計算、型変換、オブジェクト作成、オブジェクト操作、制御転送、例外のスローなどの機能を担当しています。
Javaの作業モデルでは、Javaコンパイラがコードをクラスファイル/バイトコードにコンパイルし、次にJava仮想マシンがクラスファイル/バイトコードを実行します。このモデルは、コードが高速で実行されることを保証し、追加のレイヤーがセキュリティを確保します。
では、あなたはどう思いますか - JavaコンパイラとJava仮想マシンのどちらがより重要な役割を果たしていると思いますか?Javaプログラムは、基本的に両方の層(コンパイラとJVM)を通過する必要があります。
この記事は、JavaコンパイラとJVMの役割をまとめています。ご意見は下のコメントでお待ちしております。次の記事「Javaのオブジェクト指向アプローチ」に取り組んでいます。それまで、TecMintに注目し、つながっていてください。いいねやシェアをして、私たちの広がりを手伝ってください。
