2002年04月29日 月曜日

Java World 2002.06

JDK 1.4が付属すると言うことで購入した。JDK1.4のレビューも掲載されていたのでこれはよいと思って買ったのであるが、JDKの今回のリリースの見所はXML関係のライブラリ充実(JXAPの追加)と言うところか。JAXPをダウンロードせねばなぁと思っていただけに結構嬉しい。あと最近の興味で遊べそうなのはImage I/O APIでしょうか。
C++のtemplateに相当するJava Genericsの搭載はJDK 1.5に延びたらしいので、まだまだキャストの呪縛からは逃れられないのは残念。僕はC++が大好きな人ではなくなったけど、膨大なC++の余計な(笑)機能のうち、templateは珍しく評価している機能なだけに、Javaにまだ存在していないのは痛い。もっともtemplateを評価しているのはSTLの存在によるところが大きいのであるが。評価Java Genericsを使用したSTLみたいなライブラリが登場すると、非常に魅力なのだけどねぇ。

Javaの話題

Javaは良く初心者に優しい言語であると言われている。確かにDOS上のCコンパイラ Turbo-CとQuick-C、C++コンパイラ Turbo C++、WindowsのVisual C++、Borland C++をちょっとずつかじって使ってきた結果、結局VB/VBAなプログラムをおもにする人間に成り下がってしまった人の意見を言えば、確かにC++よりは優しい言語だと思う。
まぁそれはCを使ったことがある人というか、CとC++でさんざん困ったことがある人の意見なので、万人向けではないとは思う。ただあえて言いたい。C++とJavaって同じくらい難しいんじゃないのと思わずにいられない。逆にC++もすべての機能(少なくとも多重継承とかは普通使わないでしょ。)を使わないと言う割り切りであれば、C++もそんなに悪くないと思うのだ。僕はOOPの一部しか利用していない(OOPで強力にデータ型を記述できるようになった)ので、良く議論されているC++の余計な機能に関してあまり深刻な悩みではない。僕はGUIなプログラムを書かないので、僕が作る程度のプログラムだったら基本的にJavaで書いても、C++で書いてもそんなにソースに変化がないわけだ。(少なくともロジックはそのまま持っていっても問題ないし。)
じゃぁ、ここでJavaをやろうかのうと思い立ったのは非常に簡単で、完全にGUIな環境に移行したあとにずっと漠然に思っていたのであるが、プログラムでお絵かきをするのが難しいんですよね。少なくともC++の場合には、使うコンパイラによって統一的な扱いがないというか、MFCで統一されていると言われればそうかも知れないが、MFCを使えって言うのでしょうか? C++でやらずにSDKだけでやれと言うのでしょうか? ずいぶん真面目に取り組んだけど、少なくともWindowsのバージョンとMFCのバージョンの変化に追従するための学習期間と資金的な問題を僕には解決できません。(まだGtk+には手を出してはいないけども。さすがにもうC++でプログラムは書けないですな。忘れてしまったことはいっぱいあるし。)
そういう点で、最近のJavaは良くなったなぁと思うのだ。ちょっとFractalな絵を描きたいなぁとか、Chaosな計算をして遊びたいなぁと言うときに、手軽に遊べる言語が欲しいんです。ただそれだけですよ。何もこんな事のためにMFCを勉強する気にはなれません。とはいえ、あのでかいJDKのAPI群をどこから理解すればいいのであろうか? やっぱこっちも厳しいとおもったり。でも最近本当にXMLで遊びたいので、ようやく乗り出す気になった訳。ついでにJavaはAlpha版に熱狂的にとりついて、そのあと熱を失ったかのようにさよならしているから、ようやく手をつけても環境が変化しないだろうと言う見切りがついて、ようやく安心して使える状態にまで熟成したなぁと思った訳なのです。