3

私が理解していない Java に関する本を読んでいるときに、Java Buzzwordsという用語で、この抜粋に出くわしました。

動的

Java プログラムは、実行時にオブジェクトへのアクセスを検証および解決するために使用される大量の実行時型情報を保持します。これにより、コードを安全かつ適切な方法で動的にリンクできます。これは、実行中のシステムでバイトコードの小さな断片が動的に更新される可能性がある Java 環境の堅牢性にとって重要です。

私の質問は次のとおりです。

  1. 「ランタイム型情報」という言葉 はどういう意味ですか? 例を挙げていただければ幸いです。
  2. 「実行中のシステムでは、バイトコードの小さな断片が動的に更新される可能性があります。」私の理解では、javacコマンドを使用すると、Javaコードがバイトコードに変換され、javaコマンドを使用して実行されます。では、実行中のシステムでバイトコードのフラグメントを更新する必要があるのはなぜですか?
4

3 に答える 3

4
  1. JVM、および JVM で実行されている Java プログラムは、オブジェクトの実際の型を取得できます。Java では、オブジェクトが実際に特定の型を持たない場合、オブジェクトが特定の型を持っていると偽ることは不可能です。JVM はそれをチェックして検出し、例外をスローします。

  2. 実行中のコードをリモートでデバッグする場合でも、実行中のソース コードを変更してコンパイルし、プログラムを停止して再起動することなく、バイトコードを再ロードするよう JVM に指示できます。Java EE コンテナーと多くのフレームワークも、実行時にバイトコードを生成し、実行中の JVM にロードします。

于 2013-07-12T15:02:37.443 に答える