• ベストアンサー

HTML,Java等はなぜOSに依存しないのか

HTML,Java等はOSに依存しないと よく聞きますが、なぜタグの記述は Basic,C 等の言語と違い、自他OSに 理解されるのでしょうか 理解のある方どうか教えて下さい

  • www
  • お礼率14% (2/14)
  • HTML
  • 回答数3
  • ありがとう数7

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

  • ベストアンサー
回答No.2

本質的な部分はすでに回答のあったとおりでよいと思い ますが、もう少し易しい説明を試みてみたいと思います。 「OSや機種依存のない」プログラミング言語やHTMLのよ うなものは、要するに機種やOSの違いを埋めるプログラ ムを介して用いらるものになっているということです。 HTMLであれば、ブラウザソフトが、Javaであればプログ ラムで組まれた仮想計算機が、いわばそれぞれの機種、 OS上で仮想的なマシンとして共通の命令を処理すると考 えていただければよいのではないでしょうか。したがっ て、いかなるOSであれ、コンピュータであれ、そのよう な中間的な処理をするプログラムがなければ、Javaなり HTMLなりが作動してくれはしません。 逆にいえば、Basicであれ、Cであれ、そのような処理を 行うプログラムが存在しさえすれば、機種やOSの壁を越 えて同じように使用できるわけです。現代がインターネッ トの普及期にあたるため、ネットで幅広く用いられてい るJavaとHTMLに脚光が浴びせられているためにこの2つ が目立つのでしょうが、考え方そのものはそれほど新し くはありません。 Common Lisp、Perl、あるいは新しいところでRubyのよ うなインタプリタで処理されるプログラム言語やスクリ プト言語なども、機種、OSを越えて使用されています。 こうしたプログラムは、インタプリタ=通訳という言葉 どおり、その都度、特定機種のための機械語にソースプ ログラムを解釈しなおさなければなりません。そのため、 実行速度が遅くなるといわれています。 先に回答のあったC言語のような場合は、言語そのもの の規格がANSIに準拠したものになっていれば、それぞれ の機種上で作動するコンパイラによって、その機種向き の機械語に翻訳されます。したがって、ソースは機種の 壁を越えますが、コンパイルされたプログラムはその機 種以外では作動しません。 Javaの場合は、両者の中間の道を選択しているというふ うに理解してよいと思います。昔々のPascalにもそのよ うなものがあったと思いますが、ソースプログラムを、 中間言語(ソースプログラムのような可読性はありませ ん)にコンパイルして、コンピュータ上に作られた仮想 機械(プログラムで作られたコンピュータだと思ってく ださい)上で作動させるわけです。インタプリタよりは 実行速度を上げることが可能ですし、どのようなプログ ラムの組み立てられ方がなされているかを秘匿しておく ことも可能になります。 ちょっと説明がごちゃごちゃしちゃいましたが、ポイン トは、プログラムと特定マシンの間で中間的な処理を行 うプログラムが存在しており、そのおかげで、機種やOS の壁を越えることができるのだ、ということです。

その他の回答 (2)

  • kenkenkent
  • ベストアンサー率30% (565/1854)
回答No.3

HTMLについては、考え方を変えてみると判りやすいと思います。 HTMLはアプリケーションではなく、アプリケーションで 利用するファイルだと考えて下さい。 他のアプリケーションでも、MacとWinでファイルの互換性があるものがありますよね? あれと似た様なものです。ただ、他のアプリケーションと違うのは、 『始めにアプリ有りき』ではなくて、『始めにファイル有りき』である点です。 通常のアプリケーションだと、Mac版でもWin版でも読み込める様にファイルを作りますが、 HTMLの場合は、始めにHTMLと言うファイルがあり、 それを正しく読み込める様にMac、Win、UNIXなどで、 それぞれネットスケープやらIEやらと言ったブラウザーソフトが開発されて行った訳です。 Javaについては、またちょっと違う考え方になりますが、 いわゆる『エミュレーター』が存在していると考えると判りやすいかも知れません。 Java自体はオブジェクト指向言語(って何?)なのですが、 それを動作させる為に、『Java仮想マシン』というプログラムが存在しています。 と、私もあんまりよく理解していないもので、これくらいしか 表現が思い付かなかったのですが・・・(^^;

www
質問者

お礼

makorin さん neanderthalensis さん kenkenkent さん 解答をありがとうございます。 わかりやすかったです。 私自身がちゃんと理解できているか 確認をとらせてください。 自分の言葉に直してみます。 ・私の誤解は、HTML、Java が直接OSに理解されている  というような錯覚を起こしたことに始まった。 ・書籍等を再読すると Hot Java 発表の翌1996年、  Netscape Navigator でも Java をサポート、と記載。  これは Netscape Navigator に 「Java仮想マシン」が加わったのだと理解。  (でいいでしょうか?・・) ・よく考えてみると C も実行ファイルではなく  ソースファイルを持っていけば異なるOS、 機種間でも実行の目的を果たせる。 さらに興味を持ったのは次の事柄です。 (以下 Ohmsha 発行の 「Javaプログラミング 1001Tips」 より引用いたしました) ’バイトコードを実行する際に、インタプリタが 「プラットフォームに依存しない0と1からなる プログラム」をブラウザが動作している コンピュータのプロセッサが理解できるかたちに 翻訳している。  言い換えれば、インタプリタは、  バイトコードを使用中のプロセッサ、  例えばPentium用の1と0に置き換えている。’ このインタプリタやコンパイラの処理の上で どういった作業が行われているのか。 また「プラットフォームに依存しない 0と1からなるプログラム」と 「プラットフォームに依存する 0と1からなるプログラム」の間には どのような違いがあるのか。漠然とした疑問です。 再度調べたり考えてみたいと思います。 もし解説や詳しいWebサイト、書籍等の アドバイスがあればご教授ください。 新たにOkwebのサイトにも 質問しようかとも考えています。 前述の質問への解答、解説ありがとうございました。

  • makorin
  • ベストアンサー率44% (31/70)
回答No.1

HTMやJavaはOSが理解するわけではないので、OS依存がないのです。 Basicに関してはインタプリタ依存なので、インタプリタさえ移植してしまえば、どんな環境でも動作します。 CもANSI準拠のみであれば、どんな環境に持っていってコンパイルしてしまえば動作します(Cはそれが売り) Cなどのコンパイルして単体で動作させる言語は、ネイティブアプリケーションなので、OSとのやりとりを自身で行います。 逆にJavaの場合は仮想マシン上で動かし、その結果を仮想マシンがOSとやりとりするので機種依存が無いのですが、逆に仮想マシン依存があります(バージョンなどの違いで) あとHTMLに関してはマークアップ言語なのでプログラム言語とはちょっと違います。 HTMの場合はブラウザ上で見ることが目的なのですが、そのブラウザでの依存が存在します。NetscapeとIEでは動作が違うときがありますよね。

関連するQ&A

  • java HTML

    HTMLなどのWebデザイナー畑の人間が Javaなどのプログラミング言語をHTMLの癖がついちゃった後に覚えるのは無理がありますか?

    • ベストアンサー
    • Java
  • HTMLからJava

    HTMLのFORMタグから送信した情報を サーブレットを使わずローカルでJavaアプリに渡して 、処理内容を分けることは可能でしょうか? javaでFORMの内容をどうやって受けとるのかわからない ので。

    • ベストアンサー
    • HTML
  • JavaとHTMLについて

    Java初心者です。アプレットを使ってプログラムしています。HTMLには<applet> のタグをつかってclassファイルをHTMLの中に取り込みますが、他の方法もあるのでしょうか?<embed><object>とかも無理して使えるのでしょうか?Web上でJavaを扱う際に、アプレット以外の方法があれば知りたいのですが。また、そういったものを調べるのに適したサイトや書籍をお教え下さい。お願いします

  • JAVAはどんな事が出来ますか?

    javaの参考書を買ってきたのですが、いまいちjavaがどこまで出来るのか分からないんです。 プログラム言語と言うことはCとかと変わらない能力を持っているのですか? 参考書を買ってしてもまだ、javaをただの記述言語としか思っていません。お願いします。

  • javaアプリケーションをHTML上から実行する

    JAVAアプレットの場合は、HTML上で実行するときに 目的のクラスファイルを<applet>タグで囲んで実行しますが、 これがJavaアプリケーションの場合、HTML上から Javaアプリケーションを実行することは可能なのでしょうか? また可能な場合は、どのようにしてJavaアプリケーションを 実行すればよろしいのでしょうか?

    • ベストアンサー
    • Java
  • Integer型のサイズリミットはマシン又はコンパイラーに依存する?(C, Java, Pascal, Ada)

    学校の課題で困ってます。 整数型のサイズのリミットはマシンやコンパイラで依存する言語とそうでない言語がありますよね??CやC++は依存してJavaは依存しないと思うんですがAdaやPascalではどうなのですか?これらはあまり詳しくないのでわかりません。 詳しい方いたらお願いします。 もしCやJavaについても違うとかありましたら言ってください。

  • HTMLでPerlみたいに計算は出来ますか?

    HTMLだけで1+1やC言語の繰り返しforなどは出来るのでしょうか? また出来るのであればタグを教えてください。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • javaでhtmlを解析する方法

    Java言語を使ってhtmlのリンク切れチェックと任意のタグの中の文字列を抽出をするソースコードを具体的に知りたいです。 もし、知っている方がいらっしゃったら教えて下さい。お願いします<m(__)m>

  • OSによって自動で表示させるものを分ける

    HTMLタグについての質問です OSによって、自動的に文章を変えたいのですが、可能でしょうか。 または、同じリンクをクリックしてもリンク先が変わるでもいいです。 自分のレベルですが、中級程度です。C++は分かりませんが、Javaは分かります。

  • JavaからCへ

    僕は今までJavaを勉強していたのですが、 つい最近になって、C言語に手をつけ始めました。 Javaを知っていればC言語は結構とっつきやすいのではないかと思って始めたのですが、Javaに慣れすぎたせいか、C言語の文法がどうもしっくりきません。 特に関数あたりが・・・・。 C言語の関数って、Javaでいうところのメソッドですよね? 僕はそのように解釈しているのですが、あまり自信がないので、ご存知の方がいましたらどなたか教えてください。 あと、Javaを学習した人のためのC言語の本、もしくはC言語を学んだ人のためのJavaの本がありましたら教えてください。

    • ベストアンサー
    • Java