2016-12-31 5 views

答えて

2

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ボックスで実行して、プラットフォームの独立性を達成することができます。

+2

これは* a *の利点に触れていますが、それは完全な答えからは遠いです。その点を詳述してください。 – Carcigenicate

+0

ポイントを精緻化。それが利益を望むことを望みます。 –

0

Javaは、定義されたアーキテクチャと命令セットを持つJVMに実装できます。 JVMが動作しているマシンを心配することなく、Javaプログラムを実行できる独自のJVMを、異なるマシンに組み込むことができます。さらに、多くの最適化がJVMに追加されています。

2

JVMの実装を持つマシンであれば、理論上はJavaバイトコードにコンパイルされたプログラムを実行できます。 Javaバイトコードは、異なる言語がコンパイルできる上位レベルの言語としても機能します。もちろん、異なる言語を同じマシンコードにコンパイルすることはできますが、コンパイルされたコードを非マシン固有のバイトコードではなく、あるタイプのマシンに結びつけます。

JVM実装では、アプリプログラマーの代わりにマシン固有の詳細も処理されます。これにより、Javaコードでは、通常はc/C++でプリプロセッサを使用して解決される32/64ビットコードのバリエーションを排除できます。

関連する問題