質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JVM

JVM(Java Virtual Machine)があれば、一連のコンピューターソフトウェアプログラムとデータストラクチャが、仮想マシンモデルを使って他のコンピュータプログラムやスクリプトを拡張できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

Q&A

解決済

2回答

2298閲覧

インタプリタやコンパイラ、Javaのプログラム実行時の動作について

aaaaaaaaaaaas

総合スコア13

JVM

JVM(Java Virtual Machine)があれば、一連のコンピューターソフトウェアプログラムとデータストラクチャが、仮想マシンモデルを使って他のコンピュータプログラムやスクリプトを拡張できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

0グッド

0クリップ

投稿2019/04/14 03:48

疑問は2つです。
・インタプリタはプラットフォームを選ばないというのは本当か
・Javaはコンパイラとインタプリタ両方を用いて機械語に変換しているのに、なぜ実行速度が速いのか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/14 03:59

ユーザー名を適当にしてるので真面目な質問とは思えません
guest

回答2

0

ベストアンサー

・インタプリタはプラットフォームを選ばないというのは本当か

インタープリターは、プラットフォーム依存でしょ。
Javaの場合で言えば、同じコードが、環境に依存したインタープリターがあるから、同じコード(建前)で動くという事と理解してます。
あ、違った、コンパイラが出力した中間言語がそのままで該当マシン用のインタープリターがあれば、動くという事ですね。
(HTML言語は、どのブラウザでも動くと同じですね)

・Javaはコンパイラとインタプリタ両方を用いて機械語に変換しているのに、

インタープリターは、機械語に変換しません。中間コードを解釈し、逐次実行するだけです。コンパイラは、ソースコードから、中間言語を出力しますね。

なぜ実行速度が速いのか

これは何に対してでしょうか? C等のコンパイラに対しては遅いと思いますが、、、。

投稿2019/04/14 06:22

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インタプリタはプラットフォームを選ばないというのは本当か

そのように作っているならそうなります.

Javaはコンパイラとインタプリタ両方を用いて機械語に変換しているのに、なぜ実行速度が速いのか

java は基本, 機械語に変換はしておりません.
速さは相対的なものですので, "10倍違う" としても, 10秒と1秒の差と, 0.01秒と0.001秒の差では, 全く感じ方が違うと思います.

投稿2019/04/14 04:01

jimbe

総合スコア12543

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xebme

2019/04/14 05:27

「JVMはインタープリタである」「インタープリタは機械語に変換する」という思いこみがあるようです。もしかしたら、それを誰かに教わったのかもしれない。
raccy

2019/04/14 06:06

JavaはJITを採用しているから、最終的に機械語に変換してから実行しているのではないのですか?
xebme

2019/04/14 06:42

raccyさん、おしゃるとおり「最終的に」機械語に変換されるので、早くなるという説明は必要だと思います。でも、JIT、HotSpotはインタープリタでしょうか?JVMが登場した時にはない機能でした。スタックマシンの遅さを克服するために考案されたコンパイラ技術です。それをインタープリタという概念に含めるのかは何か違和感があります。
raccy

2019/04/14 06:55

となると"java.exe"はコンパイラーでもインタープリターでもなければ、一体何なのか?となってしまうような気がします。
xebme

2019/04/14 06:59

ハードウェア(スタックマシン)のエミュレータだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問