JAVAについて
Javaについてのメモです。
Javaって?
- 数年前から、気になっていた事。それまで隆盛を誇っていたC/C++言語に混じって、聞こえてきたJAVA?スクリプトだのアプレットだの言って、なんだか訳がわからんのです。
- 第一JAVAって何て読むんだ??? ジャバ? それとも ジャワ?
SunやNetscape,その他出版物等の記述を見ると、どうも飲み物(ジャワ茶)をイメージしているみたい。でも、みんなは、ジャバって言うし・・最近は、ジャバとジャワの中間の発音をしています。
- 始めて読んだJavaスクリプトとアプレットのソース,
なんだかC++に似ているぞ!・・文字列の扱いはBASICに似ている。これなら理解
出来るかも・・と手を着けました。それで最初に作ってみたのが、TOPページに貼り付けてあるカレンダー(2000年問題は大丈夫か?)まあ、作者が気まぐれ起こしてなければ、今でもくっついてると思うけど
- はじめは、やっぱりスクリプトです。(歴史から言うとアプレットの方が古いんですけどね)
スクリプトをマスターせずに、オブジェクト指向の強いアプレットをやっても、Cを知らずにC++を始めるみたいなものだからね。始めてみると、やっぱりC/C++に似ている。ファイル関連の関数(クラスと言った方が適当か?)が無い事,プロトタイプ宣言が無いから、HTML文書が頭でっかちになってしまう事など、使えない要素はいくつも有るけど、一時的に計算などしたければ、JavaScriptで書いた方が早いかも・・
スクリプトとアプレット
- 最初に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に合わせてせてそれぞれコンパイルすれば、使えると言う訳だ。これは、JavaScript的な考え方で、Javaアプレットの考え方は、もう一歩踏み込んで、
中間言語での配布をしている。すなわち、それを受け取った側が、簡単にマシン語に変換出来て、しかも、何れのCPUにもハンデが無いギリギリのラインまでコンパイルを進めた形である。こんな事をする利点は、
- ハード,CPU,OSに関わらず、何とか実行出来る。
- 受け取った側が実行を開始するまでの時間が短くて済む。
- 受け取った側(ブラウザ)への負担が少ない。
等であるが、他の利点を挙げるとすれば、現行のものと全く違うマシン語セットを持ったCPUが開発された時に、過去に配布したアプレットをコンパイルし直さなくても良いという事だろうか?
- スクリプトって?
MS−DOSのバッチファイル,UNIXでのcsh,BASIC等は、スクリプトなのかな。インタプリタ言語は全て、スクリプト言語なんだけど、全然馴染みの無い言葉だったよね。一部の通信ソフトには、スクリプト言語ってのが存在してたけど、わざわざ難しくスクリプト等と言い始めたのは、最近の様な気がする。あのMicrosoftがディレクトリの事をフォルダと言い始めた様に・・・,まあ、そんな事はどうでも良いのだ。即ち、BASICの様に、ブラウザが読み込んだ時点で、1行ずつマシン語に変換して実行していくのがJavaScriptだと考えて良い。(ブラウザによっては有る程度まとめてコンパイルしてしまっているものも有るが・・)
- 書式の違い
JavaScriptは、基本的にJavaのサブセットとして、Netscape社が提案した言語だから、当然、書式は似てるけど、コンパイラ言語とスクリプト言語に付いて回る違いは当然有る。例えば、変数の型宣言などは、Javaでは必ず必要だけど、JavaScriptでは、ほとんど必要無い。また、同様に型変換も、JavaScriptでは、適当にやってくれるけど、Javaでは、それなりの関数を通して行うといった感じ,今はまだ、両者とも生まれて間もない言語だから、似ていて当然だけど、そのうち、全く違う言語に成長して行くんだろうな。ま、それが宿命っていうか健全な言語の成長だと思うけどね。かつてFORTRANの書式を真似して作られた、BASICがそうだった様に・・。でも、個人的には、両方とも扱いたいから、有る程度互換性を保って成長して欲しいところ・・・。
Javaの良い点/悪い点
- Javaの弱点?
- 何と言っても、ファイル処理が出来ない点かな。
これは、セキュリティ上、如何ともし難い事だけどね。どこかのホームページを覗いたら、ハードディスクが破壊されたり,ウイルスが書き込まれたなんて、しゃれにならないからね。でも、何とかセキュリティホールを作らずに、若干でもファイル処理が可能ならば、Javaはもっと発展すると思うけどな。
- JavaScriptには、グラフィック関係の関数のサポートがない点。
HTMLという限られた条件での使用では、仕方無いのかもね。でも、折角算術関数があれだけ豊富なんだから、イメージエリアをOpenして、そのフィールド内にlineとか、ペイントとかが出来るだけでも強力だと思うんだけどな。
- ブラウザ上でしか動作しない点。
これは、JavaがHTML言語と密接な関係が有るので仕方無いかも。でも、スタンド・アローンで動作する環境が有っても良いんじゃないかな? いちいちブラウザ立ち上げるのは厳しい。
- その他にも、実行(までの)速度が遅い点かな。
これは我慢出来るレベルだけどね。
- Javaの強み
- アプレット,スクリプト共にマルチCPUで動作する点かな。
将来、CPUやOSが変わっても、そのまま使えそうなのは良いね。
- 最も端的な方法で、オブジェクト指向を実現している点。
少なくとも、作者の知ってる限り、これほど個々のオブジェクトが独立していて、マルチタスクやGUIにマッチした言語は無いね。(Javaアプレットの方)
- 文字列操作などが強力。
特にスクリプトの方は、文字列の操作が異様に簡単。かつてのBASICがそうだった様に、(C→C++で若干の変更は有ったが・・)適当に書いても何とか動くところなんか、すごく好き。最近などは、関数使ってちょっとした計算をしたい時は、JavaScriptでやってしまう程。