• 締切済み

JAVA実行環境とは

JAVAはOSに依存しない代わりに実行環境に依存しますとよく言われていますが、それに関係する用語を教えてください。 java runtime edition これはjavaをrunさせるのでclassファイルをアセンブラに変換するものだと思いますが、そうですか? java virtual machine これもjavaを動かすものみたいなのでclassファイルをアセンブラに変換するものだと思いますが、そうですか? JREとJVMは同じ意味の言葉ですか? javaソースのコンパイルの時にJREやJVMは参照されないと思いますが、そうですか?

みんなの回答

回答No.2

>java runtime edition java runtime edition というものはありません。 Java Runtime Environment (JRE) もしくは Java Platform, Standard Edition の誤りのように思います。 JREは Java virtual machine (JVM) を含む Java の実行に必要な一連の機能の集合であるのに対して、 Java Platform, Standard Edition は基本的なJava実行環境を定義する仕様のことです。 JVM はJava クラスファイルを読み取って実行するソフトウェアで、それぞれ異なるものです。 JRE は JVM を含む、と考えるとわかりやすいかと思います。 JVM は必ずしもマシン語に変換しなければならないと決まっているわけではありませんが、 最近の JVM では効率を上げるためマシン語にコンパイルすることが多いようです。

scnut
質問者

補足

Java Runtime Environmentの間違いでした。 以下の3つのパスはJAVAの実行とは関係のない開発の方のものですか? C:\WINDOWS\JAVA C:\Program Files\Java C:\Program Files\Java Web Start

noname#94983
noname#94983
回答No.1

「classファイルをアセンブラに変換する」というのが、まぁそういえなくもないか……でもそう表現するのは妙だしな……という感じで、YESともNOともいいづらいものがありますね。 Javaのプログラムは、実行するとJava仮想マシン(JVM)が起動し、その中でクラスファイルがロードされます。このJVMは、ソフトウェア的に作成された仮想コンピュータです。これ自身にソフトウェア的なCPUの機能が要されています。クラスファイルは、この仮想マシンのCPUで実行されるマシン語で記述されています。 この仮想マシンは、仮想CPUのマシン語を、仮想マシンが起動しているプラットフォーム上のマシン語コードに変換する働きを持っています。ですから、最終的には、仮想マシンが「クラスファイルを(ネイティブ環境のCPUの)マシン語に変換するもの」といっていいかも知れません。 で、この仮想マシンは、それ単体で配布されているわけではありません。標準で付属するライブラリだのユーティリティプログラムだのといったさまざまなものが、使用の際には必要となるからです。例えば、Windowsなどにしろ、CPUだけでは動きませんね? OSに付属するAPIがないと、Windows用に書かれたプログラムは動きません。これと同じようなものです。 そこで、そうした仮想マシンの実行に必要なものをセットして配布されています。これが「JRE」です。つまり、JREは、JVMを含んだソフトウェアセットです。JVM自体がJavaを動かすためのソフトウェアといってもよいですが、「CPUだけしかないパソコン」でソフトが動かないのと同じで、JREというセットでないとJavaのプログラムは動かせません。 更に、このJREを含め、開発に必要なファイル類までもセットにしたのが「JDK」という開発キットです。「コンパイルの時にJREやJVMは参照されない」というのは、おそらくそのはずです。ただ、開発キット自体にJREが内蔵されていませんから、これをわざわざ取り除いてコンパイルするとどうなるか確認したことはありませんが。

scnut
質問者

お礼

ありがとうございました。 アセンブラに変換と書きましたのは書き間違いで、回答してもらったようにマシン語をイメージしていました。

関連するQ&A