2002年10月14日 月曜日

僕がJavaを積極的に使わない理由

今日はなんだか議論になってしまったので、一応日記にも書いておこうと思う。今の時点では僕はJavaを開発言語に使っても良いくらいの完成度になってきていると思っているので、以下の議論はだいぶんどうでも良くなっているのだが、何個かの理由があってまだJavaを開発用の言語に選択する気はありません。
僕はJavaに熱狂があった時代(Alpha版からBeta版の時代)を知っていて、そのあとに大きく失望したので使っていない訳だが、大ざっぱに言えば以下の項目に集約される。
仕様の策定がオープンでない
最近は解消された気はするが、仕様の策定がSunで行われていた頃は、信頼に足るコンパイラ供給ベンダがSunだけという感じだった。自分が使うツールの提供元がただの民間企業1社しかないというのは、あまりに脆弱だと思う。いまはThe Java Community Processである程度読みとれるし、コンパイラベンダも複数になったのでまぁいいかと思うのだが。
開発ツールの提供
当時JDKは、SolarisとWindows版しかなかった気がする。当時僕の主要な環境はLinuxだったので、採用すらできなかった。(BSDユーザーもMacユーザーも悔しかっただろう。)
国際化周りの対処の遅れ
JDK1.2でほぼ解決された問題と考えているが、やっぱ母国語が陽に使えないのは痛い。Unicodeをがんがん使うのは良いが、Unicodeを編集できるエディタが当時なかったこと、処理する対象は非Unicodeな文書で、Unicode周りの問題(正規化とか言うんだっけか)があってどうもねぇと思っている訳だ。
動作が遅い
これはJITコンパイラのおかげで解決を見たと言っていいだろう。(同じアルゴリズムでC++とほぼ同じくらいだから問題なかろう。)
僕は過去も今も「オープンソース」側の人なので、プログラムを書くのに最も重要なのは_「プログラムを書く自由」_だと思っている。僕はあくまで職業プログラマではないので、プログラムを書くことはこの上ない楽しみであり喜びであるべきなのだ。それゆえに上記の用件で最も大切だと思っているのは、言語仕様のオープン性とコンパイラの提供が永続的であることである。その条件を満たせない限り、使ってみようとなかなか思い立てないのである。
ただ今となっては時代遅れな意見も散見している気もするので、ぼちぼちJavaを個人的なプログラムの開発に使えるよう準備を整えて良いかと思っている。なにせXML周りはJavaがないと立ちゆかなくなってきているので切実なところであろうか。僕の中のJavaの不運は、_必要な物が必要な時に提供されなかったこと_につきる。(それで仕事する気が失せるんだもの。) 逆にLinuxは使いたい時に使える形で登場したのね。(こっちもかなり偶然性が強い。) まぁ時の運とはこういう物だろうな。
僕のなかでJavaの残りの問題は、C++におけるtemplateがないことくらい。これはJava GenericsがJDK1.5で実現すれば解決される。僕自身はライブラリ設計者ではないので、Genericな型を持つclassを設計することはないのだが、Collection classを使っていると、Collectionから要素を取り出すのに_型キャストが必要_と言うことと、_意図しない型の要素を追加できること_が気になるわけだ。Java Genericにはそれなりの期待をしている訳だ。
議論については、幾ばくかつきあうので、僕にJavaを使わせたい人は建設的なご意見をください。