- ベストアンサー
WindowsでのJavaについて
- Windows上でのJavaの役割とは?どのような処理を行っているのか気になります。
- 仮想計算機とは何か?JavaプログラムとCプログラムの違いについて知りたいです。
- JavaScriptプログラムはWindows上でどのように実行されるのかが分からないので教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コンピュータの概念を少し調べていただかないと、理解は難しいかもしれません。 次のようなキーワードを検索すると良いと思います。 機械語、アセンブラー、高級言語 コンパイラー、インタープリター 仮想マシン、エミュレータ 中間言語(バイトコード) 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ページなどにも組み込まれています。 したがって、これを実効するためには仮想マシン(エミュレータ)が必要です。 アップデートの通知があるのは、この仮想マシンだと思われます。 「機械語」の定義などに語弊がありますが、たいだいのイメージはこんな感じだと思います。
その他の回答 (2)
- flamin50
- ベストアンサー率63% (19/30)
2 です。 先にお答えした記述は、ほんのさわりにすぎません。 無理に簡略化したので語弊もあります。私自身の誤解もあると思います。 先にあげたキーワードなどを検索するなりして、学習されることをお勧めします。 Cのコードは主にコンパイルされて実行形式に変換されます。 実行形式は各マシン(OS)によって異なります。先に説明した「機械語」に近いイメージです。 市販のアプリがOSを選ぶのはこのためです。 Cのコンパイラは各マシン(OS)ごとに用意されているので、基本的に同じソース(Cのコート)から、 各マシン用の実行形式のファイルが作れます。 実行形式のファイルは、そのOS上で動く様に作られるので、仮想マシンは必要ありません。 一方、JAVAのバイトコードは「JAVAマシン」の上で動作するように作られます。 JAVAマシンは現実には存在しないので、 WinやMacOSの上で「JAVAマシンのふりをする」仮想マシンが必要です。 参考まで。
お礼
御回答ありがとうございます。 御説明して頂いた内容で、 CとJAVAの根本的な違いが分かりました。 ありがとうございました。
- IDii24
- ベストアンサー率24% (1597/6506)
javaのバーチャルマシンはIEで動きます。つまりJavaを使用したサイトがあるという事です。これらのサイトにアクセスするとローカルのコンポーネントを動かして、サイトが見れるのです。 でも最近javaの仮想マシンにセキュリティの穴が多くみつかり、アンインストールするユーザーも増えてます。オラクル社の対応が間に合って無いのでしょうね。 でもそれによってサイトが見れないなどの不都合は出るでしょう。 IEにはJAVAの挙動の設定ができますので、そちらで制御することもできます。 ちなみにJAVAとCはまるで違います。どちらかと言うとC#に近い言語でオブジェクト指向型です。C++より安全を重視して作られた言語でフリーで広まったので、最近では主流になってます。それに追従させるためにMSが考えたのがC#です。MSはVBを捨ててまでC#に賭けてますが、VBのように手続き型言語ではWebは処理しきれないのと、セキュリティも危ないからです。同じことはC言語にも言えます。
お礼
御回答ありがとうございます。 Javaの実行環境の事を、Java仮想マシンというのですね。 これによって、様々な場所で、Javaプログラムが動くという事は理解できました。 では、JavaScriptプログラムも、こういった仮想マシンによって、 実行されるのでしょうか?
お礼
御回答ありがとうございます。 大変御丁寧に説明して頂き、非常に感謝しています。 「機械語、アセンブラー、高級言語 コンパイラー、インタープリター 仮想マシン、エミュレータ 中間言語(バイトコード)」 については、説明して頂いた内容で、大体理解できました。 仮想マシンについては、もう少し勉強したいと思いました。 その仮想マシンについてですが、Java以外に、Cなどの高級言語のプログラムも、 仮想マシンを使っているからこそ、様々なOS上で、 動かす事ができるのでしょうか?