なんだ、JAVAなんて、たいしたこと無いじゃないかとおもったでしょ。その通り、技術的には、なんてことはないのです。問題は、商売、ビジネスですね、こちらの話しなのです。世界中のメーカが自分のMPU用にJavaVMをつくれば、一つプログラムを書くだけで、本当にどこでも動きますね。write once run anywhereでしたっけ?他の言語は、大体、方言が多くて、皆微妙に違うので、なかなかこうは行きません。SUN社が勧進元になって、ビジネス的にJAVA仕様を統一してこそできる快挙なのです。
コンパイラだって、理想的には、write once , run anywhereですが、実際には、微妙に方言があり、OSに依存するのです。機械語が違う部分は、コンパイラが吸収しますが、OSのAPIなどの違いはコンパイラで吸収することはできないのです。同じUnix系でも、LinuxはSystemV系、FreeBSDはその名の示す通りBSD系で、どちらか一つのソースをそれぞれのコンパイラでコンパイルしても、一般にはどちらかは動きません。ちょっとですが、ソースを書き換えなければなりません。ソースって、コンパイルする前のプログラムの事です。ではJavaはそういう違いをどこで吸収しているのかといえば、JavaVMで吸収しているのです。JavaVMがOSを覆って隠しているのですね。で、JavaVMはプラットフォームによって一つ一つ違うわけです。魔法はないのです。どこで苦労するかが違うだけです。
ブラウザは、HTTPと言うプロトコルで、URLで指定されたコンピュータのフォルダからファイルをget命令でダウンロードしてくる。それが、htm/htmlファイルなら、ブラウザは、タグを解釈して、表示する。txtファイルなら、そのまま表示する。jpgやgifなどの画像なら、それを画像として解釈して、表示する。ブラウザでhtmlファイルや画像が表示されることを何の不思議とも思わず、見ているかもしれないが、これらのファイルも手元のHDDにダウンロードされている。普通、c:\Windows\Temporary Internet Filesに書き込まれている。
ファイルが、mp3のような拡張子の場合、IEには、プラグインはないが、さりとて、ファイルとしてダウンロードされずにMP3プレイヤが起動して演奏が始まる場合がある。この場合、ファイルは、c:\Windows\Temporary Internet Filesに、独特のファイル名で入っているので、探し出すのがたいへんである。同様に、zipやlzhでも、単純なダウンロードではなく、ダウンロードして、解凍してしまう。解凍する必要がない場合でも、勝手にそうなり困ることもある。
別に、HDDだって、繋ぎ目が連続しているわけではないが、連続しているように見せるコントローラを内蔵しているのである。ところが、CDでは、そうはなっていないので、ここに継ぎ目ができると、オーディオのCDプレーヤーの中にはエラーを起こすものがでるそうである。そんな訳で、トラックの間にリンクブロックと呼ばれる数KB分の継ぎ目(というか、隙間)ができることを音楽CDは嫌うので、CD−Rを何回にも別けて、曲を継ぎ足していく、トラックアットワンス(ファイルを書くメニューの場合、、トラック毎にセッションを閉じて書くのであるが、音楽CDのメニューではトラックアットワンスはセッションを最後に追記するまで閉じない;track at once)は使わず、CD1枚を一回で書いてしまうdisk at once(音楽用円盤をdisc、計算機用円盤をdiskと書く風習が、この業界にはある。元々の英語にそんな意味は無い)で書くのが良い。