Java
河野真治 @ 琉球大学情報工学です。
というわけで、プログラミング言語シリーズ。
James Gosling と言えば、実は、Gosling Emacs という、Stallman
のではないEmacs で有名な人だった。で、「C++ の騒ぎが収まっ
た後に、いまさら、オブジェクト指向言語? 」というのが最初の
印象です。最初は組込みとかの用途だったらしいのだが、売り込
みに失敗して汎用言語/WWW用の言語として売り出したらしい。
最初の印象は極めて悪いです。配列にはキャストして入れるのか
よ? で、配列に入っているオブジェクトのクラスがわからなくな
るから、new Interger(n) とかするの? 正気ですか? 自分の言語
のターゲットして、Java VMが使えるかと思って調べてみたら、Bloc
k begin, Block end っていうコードがある。そういうものは仮想
マシンコードとは言いません。そういうのは、構文木を表すコー
ドっていうの。処理系も遅かったしね。AWT も出来悪かったし。
しかも、ソースコード出さないわけ? おかげで、Kaffe とかいう
実装にはまったりしましたが。
IOが使いにくい。Byteとchar/string の扱いが面倒。Multi Thread
が、良く考えられてなくって、synchronized ばかりになってしま
う。そんなこんなで、一太郎ARKが、Pure Java で出たときは、ち
ょっと驚きました。「そんなものが書ける言語だったのか?」みた
いな感じ。Cで書いたUser level transport layer をJavaで書く
ってのをやって、すごく苦労したし(学生が...)。その時点で、オ
ブジェクトのリンクを工夫してnew をけちって再利用したりする
と、GCの関係で遅くなるなんて話も聞きました。「それじゃReal-
timeに使えないだろ」と思った。結局、GCされないメモリ領域と
かがReal-time Java では用意されたらしい...
もっとも、JITと、Interface は、良いアイデアだったと思う。ど
っちも借り物だけどね。Applet が流行らなかったのは残念だった
が。流行らなかった理由は、Applet で使えるJavaのエンジンのversion
が、ちっとも新しくならなかったから。例のMicrosoft の問題も
あったし。
なんだけど、1.5 になってから、ぐっと良くなった。Java のGeneric
は、配列のキャストのsyntax suger であって、型にしか付かない
ので理解しやすい。Iterator もまとも。nio は、ぐっとUnix寄り
になっていて使いやすい。Thread と Lock も整理されたし。
Java の仕事をちょっとしたこともあって、OSの課題の大半をJava
でも書きました。Ecli pse との相性はいいしね。Eclipse のdebuger
は、ちょっと使いにくいけど。Perl/Tk で書いた自分用のソリテ
アをJavaに書きなおすってのをやりたいのだが、微妙に暇が見付
けられず。なんでだろ。もっとも、Java で、それほど大きなアプ
リケーションを書いたことはありません。
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735