Java Language
#1 Introduction and General

Return to Labo.

これまでに、Javaについて、e−mailのやりとりで勉強してきた内容を整理した。参加したメンバーは、ある程度、プログラムに関して知識の有る連中であるので、基本的な説明は、割愛している。また、自分自身がJavaに対して素人であるため、表現や、内容に、誤りが有る場合もあると思われる。質問や要望については、ここまで,なお、文中に登場する、ウッズ,ビャ子は、実在の人物である.

はじめに,
数年前から、気になっていた事.それまで隆盛を誇っていたC/C++言語に混じって、聞こえてきたJAVA?スクリプトだのアプレットだの言って、なんだか訳がわからんのです.そもそもJAVAって何て読むんだ???『ジャバ』?それとも『ジャワ』?SunやNetscape,その他出版物等の記述を見ると、どうも飲み物(ジャワ茶)をイメージしているみたい.でも、みんなは、ジャバって言うし・・
既に、測定器メーカなどでは、Javaによるソフトウエアの配布を始めている所も有り、今後のソフトウエア開発に、何らかの形で絡んでくる事は充分考えられる言語であるので、学んでおいて損は無い.一時期自分はC言語を死ぬほど勉強したが、現在求められている技術は、Cでは無くて、C++であり、Javaなのである.
→で、最初はスクリプトである.コンパイラ要らない,ブラウザのみでOKと言う手軽さも有る.(お題は考え中)但し、これを習得するには、必ずHTML(Hyper Text Mark-up Language)の習得(全部知らなくて良い)が必要なのだ.

  1. Javaの読み方,
    『ジャバ』である.というか、俺はあくまでも「ジャワ」だが、極力ジャバに近い発音をするように心がけよう.

  2. 分かっている事,
    • 最初にJava(アプレット)ありき!
      Sunマイクロシステムズ(UNIX等のOSで有名)が作った言語で(言語はC++とPascalとBASICを混ぜた感じかな〜?これ自体、別に特に優れた言語ってイメージは無い)、特筆すべきはマルチCPUでの実行っていうのを考えて、その配布経路にある時点での形式を決めている点だ.

    • マルチCPUって?
      例えば、Windows+Intel系では、Windowsのドライバがハードウエアの格差を埋めているので、PC9801のソフトがIBMPCで動くなどという芸当が出来るのだが、このソフトをMACやUNIX機に持ち込んで動くか?というと動かない.CPUの理解できるマシン語というのが全く違うCPUで動かす事は基本的には出来ないのである.例外的に、CPUの動きを真似するエミュレータ的ソフトを通して、動作させるケースも有るが、実行までにワンクッション有るのはいただけない.その点Javaは、どんなCPUでも,即ち、今後開発されるCPUを含む如何なるCPUに於いても、実行可能な形を考えて決められている.

    • マルチCPUで実行出来る形?
      例えば、HTML等のテキストは、どんなCPUでも、どんなOSでもブラウザさえ有れば読める形式だ.安易に考えると、テキスト形式のソースで配布すれば、各CPUのOSに合わせてせてそれぞれコンパイルすれば、使えると言う訳だ.しかしながら、高級言語のままのソースを公開するのは、ソフトウエア開発サイドから言わせれば無法地帯に我が子を置き去りにするようなもの.自社の技術を全て提供しているも同然の行為なのである.Javaアプレットの考え方は、もう一歩踏み込んで、中間言語での配布をしている.すなわち、それを受け取った側が、簡単にマシン語に変換出来て、しかも、何れのCPUにもハンデが無いギリギリのラインまでコンパイルを進めた形である.こんな事をする利点は,

      • ハード,CPU,OSに関わらず、何とか実行出来る.
      • 受け取った側が実行を開始するまでの時間が短くて済む.
      • 受け取った側(ブラウザ)への負担が少ない.


      等であるが、他の利点を挙げるとすれば、現行のものと全く違うマシン語セットを持ったCPUが開発された時に、過去に配布したアプレットをコンパイルし直さなくても良いという事だろうか?

    • スクリプトって?
      MS−DOSのバッチファイル,UNIXでのcsh,BASIC等は、スクリプトなのかな.インタプリタ言語は全て、スクリプト言語なんだけど、全然馴染みの無い言葉だった.一部の通信ソフトには、スクリプト言語ってのが存在してたけど、わざわざ難しくスクリプト等と言い始めたのは、最近の様な気がする.あのMicrosoftが『ディレクトリ』の事を『フォルダ』と言い始めた様に・・・,まあ、そんな事はどうでも良いのだ.即ち、BASICの様に、ブラウザが読み込んだ時点で、1行ずつマシン語に変換して実行していくのがJavaScriptだと考えて良い.
      (ブラウザによっては有る程度まとめてコンパイル「コンパイルは適切では無いね,変換かな?」してしまっているものも有るが・・)

    • 書式の違い
      JavaScriptは、基本的にJavaのサブセットとして、Netscape社が提案した言語だから、当然、書式は似てるけど、コンパイラ言語とスクリプト言語に付いて回る違いは当然有る.例えば、変数の型宣言などは、Javaでは必ず必要だけど、JavaScriptでは、ほとんど必要無い.また、同様に型変換も、JavaScriptでは、適当にやってくれるけど、Javaでは、それなりの関数を通して行うといった感じ,
      (この辺は、一般のBASICとコンパイラ言語の違いにも言える)
      今はまだ、両者とも生まれて間もない言語だから、似ていて当然だけど、そのうち、全く違う言語に成長して行くんだろうな.ま、それが宿命っていうか健全な言語の成長だと思うけどね.かつてFORTRANの書式を真似して作られた、BASICがそうだった様に・・.でも、個人的には、両方とも扱いたいから、有る程度互換性を保って成長して欲しいところ・・・.

Return to Labo. Next