JavaコードがJVM(Javaコード - >バイトコード - >マシンコード)を介して実行される理由。なぜ "C"のような直接のネイティブマシンコードにコンパイルできないのですか?仮想マシンが必要な理由Javaプログラムを実行する必要があります。
答えて
Javaコードをプラットフォームに依存しないようにする。更新
Cプログラムは、特定のプラットフォーム上でコンパイルされる場合
、それだけ、それがコンパイルされたプラットフォームで実行することが可能なコンパイルされたコードを生成します。 WindowsマシンでコンパイルされたCプログラムは、Linux/Unix/MacOSマシンでは実行できません。
Javaの主な設計目標の1つは、プラットフォームに依存しないコードを作成することでした。 これは、コードのコンパイルとコードの実行の間に特別なステップを追加することで実現しました。これが「バイトコード」を生成するステップです。
Javaプログラムの結果を「バイトコード」ファイルと呼びます。拡張子は.classです。バイトコードには実際にJava仮想マシンが解釈できる命令が含まれています。つまり、 'javac'はJavaプログラムをJVMが理解できる一連の命令に変換します。
JVM - Java Virtual Machineは、OS上で実行され、プラットフォーム(OSと基本ハードウェア)ごとに個別に実装されます。
この設計では、WindowsマシンでJavaプログラムをコンパイルし、生成された.classファイルをLinuxボックスで実行して、プラットフォームの独立性を達成することができます。
Javaは、定義されたアーキテクチャと命令セットを持つJVMに実装できます。 JVMが動作しているマシンを心配することなく、Javaプログラムを実行できる独自のJVMを、異なるマシンに組み込むことができます。さらに、多くの最適化がJVMに追加されています。
JVMの実装を持つマシンであれば、理論上はJavaバイトコードにコンパイルされたプログラムを実行できます。 Javaバイトコードは、異なる言語がコンパイルできる上位レベルの言語としても機能します。もちろん、異なる言語を同じマシンコードにコンパイルすることはできますが、コンパイルされたコードを非マシン固有のバイトコードではなく、あるタイプのマシンに結びつけます。
JVM実装では、アプリプログラマーの代わりにマシン固有の詳細も処理されます。これにより、Javaコードでは、通常はc/C++でプリプロセッサを使用して解決される32/64ビットコードのバリエーションを排除できます。
- 1. 仮想デストラクタをデフォルトにする必要がありますか?
- 2. 仮想インデックスを削除する必要がありますか?
- 3. 仮想マシンにウイルス対策などが必要ですか?
- 4. C#仮想メソッドの下のコードを理解する必要があります
- 5. "rec"が必要な理由
- 6. TextWatcherが必要な理由
- 7. RIAが必要な理由
- 8. Androidに仮想マシン(DVM)が必要なのはなぜですか?
- 9. NHibernateはイベントを仮想にする必要がありますか?
- 10. Theanoスクリプトが実行されない理由を確認するのに役立つ必要があります
- 11. SQL:CREATE TRIGGERに先行する必要がある理由
- 12. Javaサーブレット内で実行されるシェルスクリプトファイルでスリープが必要な理由
- 13. SVN操作を実行する必要があります
- 14. ミドルウェアアプリケーションはビジネスロジックを実行する必要がありますか?
- 15. Mybatis - 動的クエリを実行する必要があります
- 16. AutoItでSQLクエリを実行する必要があります
- 17. StreamWriter.flush()を実行する必要がありますか?
- 18. 2回でORDERを実行する必要があります
- 19. RequestBasedLoggingを実行する必要があります
- 20. rakeアセットを実行する必要がありますか:プリコンパイルコマンド?
- 21. `parent :: _ construct()`を実行する必要がありますか?
- 22. Cocoaアプリケーションでコマンドを実行する必要があります
- 23. 仮想デストラクタ - 必要な場合
- 24. ファイルが必要な場合、Perl 6はMAINを実行する必要がありますか?
- 25. Javaで異なるクラスローダーが必要な理由
- 26. CopyOnWriteArrayListがシリアル化をカスタマイズする必要がある理由
- 27. random.choiceのリストが必要な理由
- 28. refrehアクセストークンのリフレッシュトークンが必要な理由
- 29. AMQPにmessageIdが必要な理由
- 30. 識別子が必要な理由
これは* a *の利点に触れていますが、それは完全な答えからは遠いです。その点を詳述してください。 – Carcigenicate
ポイントを精緻化。それが利益を望むことを望みます。 –