• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WindowsでのJavaについて)

WindowsでのJavaについて

このQ&Aのポイント
  • Windows上でのJavaの役割とは?どのような処理を行っているのか気になります。
  • 仮想計算機とは何か?JavaプログラムとCプログラムの違いについて知りたいです。
  • JavaScriptプログラムはWindows上でどのように実行されるのかが分からないので教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • flamin50
  • ベストアンサー率63% (19/30)
回答No.2

コンピュータの概念を少し調べていただかないと、理解は難しいかもしれません。 次のようなキーワードを検索すると良いと思います。 機械語、アセンブラー、高級言語 コンパイラー、インタープリター 仮想マシン、エミュレータ 中間言語(バイトコード) 1.コンピュータは機械語しか処理できません。  機械語は32ビット、64ビットなどを単位とした1と0の羅列です。  1と0の羅列を人が読みやすいニーモニック(英数字)に置き換えたのがアセンブラーです。 2.機械語はコンピュータの動作そのものを記しています(メモリ参照、演算、分岐など)。  これを、人間の作業に近いイメージで書けるようにしたものが高級言語です。  Cは高級言語です。高級言語は機械語に翻訳する必要があります。それをするのがコンパイラーです。  コンパイラーは翻訳して機械語のファイルを作るだけですが、翻訳してすぐにコンピュータに実効  させることもできます。これがインタープリターです。インタープリターはいわば「通訳」です。 3.機械語はコンピュータの種類(CPU)によって違います。 したがって、コンパイラーもインタープリターも、それぞれ別のものが必要です。  同じ高級言語の記述から、それぞれのマシンに応じた機械語に翻訳します。  4.他のマシンの動作をソフトウェアで処理して、いかにも他のマシンのようなふりをするのが  エミュレータです。たとえば、MacOSの上でWindowsのふりをするエミュレータがあれば、  Windows マシン用に翻訳された機械語がMacで動作します。  JAVA仮想マシンもエミュレータです。いろいろなOSの上で「JAVAマシン」のふりをします。 5.JAVAも高級言語なのでコンパイル(翻訳)が必要です。ただし、本当の機械語ではなく、  JAVA仮想マシンが処理できるようにした中間言語に翻訳します。これがバイトコードです。 6.JAVAのアプリ/アプレットーはバイトコードで配布されます。Webページなどにも組み込まれています。  したがって、これを実効するためには仮想マシン(エミュレータ)が必要です。  アップデートの通知があるのは、この仮想マシンだと思われます。 「機械語」の定義などに語弊がありますが、たいだいのイメージはこんな感じだと思います。

MetalLover
質問者

お礼

御回答ありがとうございます。 大変御丁寧に説明して頂き、非常に感謝しています。 「機械語、アセンブラー、高級言語 コンパイラー、インタープリター 仮想マシン、エミュレータ 中間言語(バイトコード)」 については、説明して頂いた内容で、大体理解できました。 仮想マシンについては、もう少し勉強したいと思いました。 その仮想マシンについてですが、Java以外に、Cなどの高級言語のプログラムも、 仮想マシンを使っているからこそ、様々なOS上で、 動かす事ができるのでしょうか?

その他の回答 (2)

  • flamin50
  • ベストアンサー率63% (19/30)
回答No.3

2 です。 先にお答えした記述は、ほんのさわりにすぎません。 無理に簡略化したので語弊もあります。私自身の誤解もあると思います。 先にあげたキーワードなどを検索するなりして、学習されることをお勧めします。 Cのコードは主にコンパイルされて実行形式に変換されます。 実行形式は各マシン(OS)によって異なります。先に説明した「機械語」に近いイメージです。 市販のアプリがOSを選ぶのはこのためです。 Cのコンパイラは各マシン(OS)ごとに用意されているので、基本的に同じソース(Cのコート)から、 各マシン用の実行形式のファイルが作れます。 実行形式のファイルは、そのOS上で動く様に作られるので、仮想マシンは必要ありません。 一方、JAVAのバイトコードは「JAVAマシン」の上で動作するように作られます。 JAVAマシンは現実には存在しないので、 WinやMacOSの上で「JAVAマシンのふりをする」仮想マシンが必要です。 参考まで。

MetalLover
質問者

お礼

御回答ありがとうございます。 御説明して頂いた内容で、 CとJAVAの根本的な違いが分かりました。 ありがとうございました。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

javaのバーチャルマシンはIEで動きます。つまりJavaを使用したサイトがあるという事です。これらのサイトにアクセスするとローカルのコンポーネントを動かして、サイトが見れるのです。 でも最近javaの仮想マシンにセキュリティの穴が多くみつかり、アンインストールするユーザーも増えてます。オラクル社の対応が間に合って無いのでしょうね。 でもそれによってサイトが見れないなどの不都合は出るでしょう。 IEにはJAVAの挙動の設定ができますので、そちらで制御することもできます。 ちなみにJAVAとCはまるで違います。どちらかと言うとC#に近い言語でオブジェクト指向型です。C++より安全を重視して作られた言語でフリーで広まったので、最近では主流になってます。それに追従させるためにMSが考えたのがC#です。MSはVBを捨ててまでC#に賭けてますが、VBのように手続き型言語ではWebは処理しきれないのと、セキュリティも危ないからです。同じことはC言語にも言えます。

MetalLover
質問者

お礼

御回答ありがとうございます。 Javaの実行環境の事を、Java仮想マシンというのですね。 これによって、様々な場所で、Javaプログラムが動くという事は理解できました。 では、JavaScriptプログラムも、こういった仮想マシンによって、 実行されるのでしょうか?

関連するQ&A