ホームページ  >  記事  >  Java  >  なぜ Java はクロスプラットフォームなのでしょうか?

なぜ Java はクロスプラットフォームなのでしょうか?

青灯夜游
青灯夜游オリジナル
2019-05-22 17:51:1422219ブラウズ

クロスプラットフォームの理由: Java 仮想マシン (JVM) はクロスプラットフォーム可能です。JAVA プログラムはコンピュータ (CPU) 上で直接実行されるのではなく、Java 仮想マシン (JVM) 上で実行されます。すべてが独自の JVM 仮想マシンを持っているため、JAVA 言語はクロスプラットフォームで使用できます。 Java はまず Java ファイルをバイナリ バイトコード クラス ファイルにコンパイルし、次に JVM がそのクラス ファイルを解釈して実行します。Java は JVM 上で実行されるため、そのコードは変更することなく、さまざまなプラットフォーム上の JVM 上で実行できます。

なぜ Java はクロスプラットフォームなのでしょうか?

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

JAVA 言語はなぜクロスプラットフォームに対応できるのでしょうか?

Java がクロスプラットフォームである理由は、Java 仮想マシン (JVM) がクロスプラットフォームであるためです。

Java プログラムによってコンパイルされたコードは、ハードウェア システムによって直接実行できるコードではなく、「中間コード」、つまりバイトコードであるためです。次に、異なる Java 仮想マシン (JVM) が異なるハードウェア プラットフォームにインストールされ、JVM はバイトコードを、対応するハードウェア プラットフォームで実行できるコードに「変換」します。したがって、Java プログラマは、ハードウェア プラットフォームが何であるかを考慮する必要はありません。したがって、Java はクロスプラットフォームに対応できます。

なぜ Java はクロスプラットフォームなのでしょうか?

仮想マシン (JVM) を備えているため、JAVA プログラムはコンピュータ上で直接実行されるのではなく、Java 仮想マシン (略して JVM) 上で実行されます。各プラットフォームには独自の仮想マシン (JVM) があるため、JAVA 言語はクロスプラットフォームで使用できます。

  • Java コードは CPU 上で直接実行されるのではなく、Java 仮想マシン (JVM) 上で実行されます。

  • Java はまず Java ファイルをバイナリ バイトコードのクラス ファイルにコンパイルし、次に jvm がそのクラス ファイルを解釈して実行します。

  • Java は jvm 上で実行されるため、そのコードは変更することなく、さまざまなプラットフォーム上の jvm 上で実行できます。

知識を広げる:

JVM の専門的な説明は次のとおりです。

Java Virtual Machine (略して JVM) は、コンピューティングデバイスの仕様であり、コンピュータのさまざまな機能を実際のコンピュータ上でシミュレートすることによって実現される架空のコンピュータです。 Java 仮想マシンは、バイトコード命令のセット、レジスターのセット、スタック、ガベージ コレクション ヒープ、およびストレージ メソッド フィールドで構成されます。 JVM は特定のオペレーティング システム プラットフォームに関連する情報をシールドするため、Java プログラムは Java 仮想マシン上で実行されるターゲット コード (バイトコード) を生成するだけでよく、変更することなく複数のプラットフォーム上で実行できます。 JVM がバイトコードを実行するとき、実際には最終的にバイトコードを特定のプラットフォームで実行するためのマシン命令に解釈します。

上記の説明が理解できないのは普通のことです。最初は専門的な説明を投稿するつもりはありませんでしたが、考えた結果、やめることにしました。やはり、皆さんに詳しく理解していただきたいからです。 JVMの。専門的な説明が理解できない場合は、わかりやすい英語で説明します。

JVM (Java 仮想マシン) は、JRE に含まれるプラットフォームです。 Java プログラムを実行する必要がある場合、JVM がそれをコンパイルして実行します。私たちが記述する Java ソース コードは、コンパイル後にバイトコード ファイルと呼ばれる .class ファイルを生成します。 Java 仮想マシンは、バイトコード ファイルを特定のプラットフォーム用のマシン コードに変換して実行する役割を果たします。

そして、JVM は多くのシステム バージョンに分かれています。Windows、Linux、macOS など、どのプラットフォームで Java プログラムを作成しても、JVM を見つけるだけで正常にコンパイルできます。 . そして実行。言い換えれば、対応する JVM が異なるプラットフォームにインストールされている限り、バイトコード ファイルを実行でき、作成した Java プログラムを実行できます。これが、Java に優れたクロスプラットフォーム機能とプラットフォームに依存しない機能がある理由です。

このプロセス中、私たちが作成した Java プログラムは一切変更を加えず、JVM の「中間層」を介してのみ異なるプラットフォーム上で実行できるため、「一度コンパイルすればどこでも実行できる」という目標を真に実現できます。

JVM は「ブリッジ」であり、「ミドルウェア」であり、クロスプラットフォームを実現するための鍵です。Java コードはまずバイトコード ファイルにコンパイルされ、次に JVM がバイトコード ファイルを機械語に翻訳することで、クロスプラットフォームを実現します。 Java プログラムを実行する目的。

注: コンパイルの結果はマシン コードを生成するのではなく、バイトコードを生成します。バイトコードは直接実行できず、実行する前に JVM によってマシン コードに変換される必要があります。異なるプラットフォームでのコンパイルによって生成されるバイトコードは同じですが、JVM によって変換されるマシンコードは異なります。

したがって、Java プログラムを実行するには、JVM のサポートが必要です。コンパイルされた結果はマシンコードではなく、実行前に JVM によって再度変換する必要があるためです。 Java プログラムを実行可能ファイル (.exe など) にパッケージ化した場合でも、JVM サポートは必要です。

注: クロスプラットフォームは JVM ではなく Java プログラムです。 JVM は C/C を使用して開発されます。コンパイルされたマシン コードなので、クロスプラットフォームには対応できません。異なるバージョンの JVM を異なるプラットフォームにインストールする必要があります。

JVM の実行効率について

Java が発表されてから最初の数年間、人々はさまざまな意見を持っていました。バイトコードの解釈は、マシンコードをフルスピードで実行するよりもはるかに遅いはずです。クロスプラットフォームの利点と引き換えにパフォーマンスを犠牲にする価値はありますか?

ただし、JVM には、最も頻繁に使用されるバイトコードをマシンコードに変換して保存するオプション (ジャストインタイム コンパイルと呼ばれるプロセス) があります。このアプローチは非常に効果的であるため、Microsoft の .NET プラットフォームでも仮想マシンが使用されています。

現在のジャストインタイムコンパイラは、従来のコンパイラの競合となるほど優れており、JVM が実行時情報を監視できるため、場合によっては従来のコンパイラを上回ることさえあります。たとえば、ジャストインタイム コンパイラは、頻繁に使用されるコードを監視して最適化し、関数呼び出し (つまり、「インライン」) を排除できます。

ただし、Java には C/C にはない追加のオーバーヘッドがあり、重要なアプリケーションは遅くなります。たとえば、Java はプラットフォームに依存しない描画方式を使用しているため、GUI プログラム (クライアント プログラム) の実行が遅く、仮想マシンの起動にも時間がかかります。

推奨される関連ビデオ チュートリアル: Java ビデオ チュートリアル

以上がなぜ Java はクロスプラットフォームなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。