4

I sometimes wonder why Java is referred as a Platform Independent Language?

I couldn't find a proper explanation of the below points :

  1. Is the JVM same for Windows/Linux/Mac OS?
  2. Are the bytecode generated same for a same Class in the above environments?

If the answer to the above questions are NO then how the platform independence is achieved.

Please help me out in learning this basic concept.

4

7 に答える 7

3

マシンの依存性: これは、ハードウェア アーキテクチャで実行したいものは何でも、別のアーキテクチャでは実行できないことを意味します。同様に、AMD アーキテクチャ用の実行可能ファイルを作成した場合、Intel のアーキテクチャでは実行できません。プラットフォームの依存性は、Linux で実行できない Windows OS 用の実行可能ファイルを作成したことです。アセンブリで記述されたコード (プロセッサによって提供される) または機械語はマシンに依存しますが、C でコードを記述した場合、 CPP、JAVAの場合、コードはマシンに依存せず、基盤となるOSによって提供されます。

プラットフォームの非依存性: C または CPP コードを作成すると、プラットフォームに依存するようになります。これは、基になる OS によって提供される命令セットに一致する中間ファイル、つまりコンパイル済みファイルが生成されるためです。したがって、コンパイラとOSの両方を理解できるメディエータが必要です.JavaはJVMを作成することでこれを実現しました。注: 基盤となるマシン アーキテクチャと直接対話できる言語を使用して作成されたプログラムである OS を削除した場合、マシンに依存しない言語はありません。OS は、コンパイルされたコードを取り、それを基礎となるアーキテクチャの上で実行するようなプログラムです。

于 2013-07-18T08:56:39.263 に答える
2

プラットフォームに依存しないということは、Java プログラムを 1 つの形式で配布するだけでよいということです。

この 1 つの形式は、JVM が存在する場所ならどこでも実行できるように、各プラットフォーム (プラットフォーム用に最適化されたさまざまなプログラムとしてコーディングされている) の JVM によって解釈されます。

于 2013-06-14T05:45:25.563 に答える
1

Java はプラットフォーム独立言語と呼ばれます。これは、任意のオペレーティング システムでコードを実行するために実質的に必要なのは、そのシステム JVM だけであるためです。

JVM は Java コードのコマンドをシステムのコマンドに「マップ」するため、どのオペレーティング システムでもコードを変更する必要はなく、そのシステムの JVM (Oracle から提供されている必要があります) をインストールするだけです。

信条は「一度書けば、どこでも実行できる」です。

于 2013-06-14T05:46:03.547 に答える
1

この 2 分間のビデオ チュートリアルを見て、Java がプラットフォームに依存しない理由を理解するのに役立つことを願っています。すべてがわずか2分37秒で説明されています。

なぜ Java はプラットフォームに依存しないのですか? https://www.youtube.com/watch?v=Vn8hdwxkyKI

そして、これが以下の説明です。

Java プログラムを実行するには、(i) コンパイルと (ii) 解釈ステップの 2 つのステップが必要です。

一般に「javac」として知られているJavaコンパイラは、Javaファイルのコンパイルに使用されます。コンパイル プロセス中に、Java コンパイラは Java ファイルのすべてのステートメントをコンパイルします。Java プログラムにエラーが含まれている場合、出力画面にエラー メッセージが表示されます。コンパイル プロセスが正常に完了すると、コンパイラは、クラス ファイル / バイナリ コード ファイル / バイト コード ファイル / マジック コード ファイルと呼ばれる新しいファイルを作成します。

生成されたクラス ファイルはバイナリ ファイルであるため、クラス ファイルのすべてのステートメントを解釈するには、一般に Java として知られる Java インタープリターが必要です。解釈プロセスが正常に完了すると、マシンは出力画面に出力を生成します。

この生成されたクラス ファイルはバイナリ コード ファイルであり、Java インタープリター (Java) によって提供されるコンポーネントに依存し、オペレーティング システムで使用可能なツールとコンポーネントには依存しません。

したがって、Java インタープリターがオペレーティング システムで使用可能であれば、どのタイプのオペレーティング システムでも Java プログラムを実行できます。したがって、Java 言語はプラットフォームに依存しない言語として知られています。

于 2014-06-19T17:52:15.563 に答える