Javaは嫌い

早く寝たのに早く目が覚めてしまったので、朝からちょっと調べ事。ふと思い立って、freeなJavaVMを調べてみたり。

元々Javaは嫌いな言語である。私が母校で俺言語を作るという講義を持っていた時には、「Javaはダメな言語である」という話を1時間ばかししていたくらいである。何がダメとかということはいろいろ言われているので、重複することも多くなるので書かないが、それとは別に嫌いなのである。何が嫌いかと言えば、

  • Sunの俺言語(ISOになってない)でかつオープンソースの完全な実行系がない
  • 言語仕様の変更が激しい
  • 中途半端な汎用言語

といったあたりである。

Sunの俺言語であることは、オープンソースな実行系が存在していれば別に問題はない。perlだってRubyだって俺言語なのだから。ただ、こいつらにはオープンソースの実行系が存在しているので(つか、それしかないし)、特別に問題は起きない。

JVMは確かにいくつもオープンソースな実装があるのだが、問題は標準のクラスライブラリである。「標準」なのだからこれも言語仕様のうちになると思うのだが、そのオープンソースな実装がpoorなのは非常に困る。別にこれはオープンソース界が怠慢なのではなくて、私の目から見ると「一生懸命オープンソースな実装を作ったと思ったらSunがAPIを増やしている」という状態に見える。しかも、わりとどうでも良さそうなものまで「標準」にしてしまっているというのも困りもの。

中途半端な汎用言語であるというのは、言語仕様の細かい部分の話ではない。たとえばオンラインの業務システムで使おうとした時、GCが起きてしまうというような部分のことである。

確かに動的な言語であるということはプログラムを書き易くする面もある。しかし運用ということまで考えると、動的だと困るということも少なくない。反応時間の予測は難しくなるし、反応時間を保証しようとすると「GCを起こさない書き方」みたいな本末転倒なテクニックが必要になったりする。

プロトタイピングに使う言語としてのJavaは、まぁそんなに悪いものではないような気もするのだが、どうもこいつは基幹業務で使うようには考えられていないような気がしてならない。そもそもJavaという言語を設計した時に「COBOLは何が良くて40年(当時は30年か)も生き長らえて来たか」ということをもっと考察して欲しかった。それをしないで「基幹業務に使える」と言うのは、かなりの詐欺である。それで良いと言うことなら、DelphyでもCでもC++でも良いわけだし。

後なんとなくいやーんなのは、IBMが積極的に推進しているということで、PL/Iとダブって見えるということだ。キャッチフレーズも妙に似たところがあるし、中途半端に汎用言語だということもそっくりである。

多分Java一番の間違いは「何でもできる」「どこでも動く」とか言ってしまったことで、その次の間違いは「Sunが手放そうとしない」ってことではないかと思う。なので、私の目にはC#の方がもうちょっと魅力的に見える。