タイトルJava Watch on the X》prologue - Mac OS XのPure Javaの世界に入り込むカテゴリーJava Watch on the X
作成日2001/10/27 17:45:32作成者新居雅行
【MDOnline読者様限定コンテンツ】
今月より開始する「Java Watch on the X」のコーナーは、Mac OS X対応のプログラムをJavaで作成するということを主テーマにして、さまざまな情報をまとめていくといった主旨でお届けする。
Javaといっても、Mac OS Xには大きく分類して、「3つのJavaがある」ということは、以前からも指摘してきたとおりだ。1つは、ネイティブなライブラリ(フレームワーク)であるCocoaを利用したアプリケーションを作るという側面で「Cocoa-Java」などと呼ばれている。当初はAppleもこの枠組みを事ある毎に示していたのであるが、Mac OS Xの発売時期ごろを境目に従来のNeXT以来の開発言語であるObjective-Cでの開発に比重が移った。理由はいろいろあるが、主たる理由はデベロッパの支持が得られなかったということであるだろう。特に、これまでNeXTのプラットフォームからずっとサポートしてきた開発者は、Mac OS XのCocoaでの重要なサードパーティであることは間違いなく、そうした人たちがMac OS XのCocoa環境での発言力も大きいことは容易に想像できるし、開発言語としてObjective-Cを使うというのはおそらく前提条件だろう。加えて、デベロッパは、より“ネイティブ”な環境を好む傾向もある。Cocoaはネイティブであるが、Javaは仮想マシンで稼働するし、Objective-CのフレームワークをJavaで利用できるようにしたに過ぎない環境というのがある意味では敬遠されたのであろう。いずれにしても、Cocoa-Javaは決して完成度が低いという訳ではないところまでは来たものの、メインストリームにはなっていない側面もある。もっとも、Objective-Cへの注目が集まっているところにJavaで乗り込むのも勇気がいることであり、その意味ではCocoa-Javaファンは今は静かにしているのかもしれない。赤松正行氏から「Cocoa-Java」という書籍も広文社から発売されているなど情報も豊富になりつつあるので、それはそれでやはり注目できるプラットフォームであるとは十分に言えるだろう。
一方、もう1つのJavaであるWebObjectsという世界は、フレームワーク的にはCocoaとは起源は同じところにあるものの、Ver.5で完全にJava対応となった。こちらはObjective-Cでのアプリケーション作成はできなくなってしまった。フレームワーク自体を完全にJavaで記述しているのである。もちろん、Webアプリケーション作成という世界では、開発効率の高さなども含めてよう注目の製品でもある。WebObjectsのフレームワークは、CocoaのFoundation部分のようにある意味で共通のものもあるが、データベースをオブジェクトとして扱えるようにするEnterprise Objects Framework(EOF)や、Webブラウザで扱えるダイナミックエレメントなど独自のフレームワークを駆使してプログラミングを行う。標準のJavaライブラリを使ったり、XMLのクラスを使うなどの側面もあるものの、総じて独自のフレームワークを使ったアプリケーション作成が主となるのがWebObjectsの開発の世界である。
さらに、もう1つのJavaとして「Pure Java」の世界もある。Pure Javaはここでは、Javaの開発もとであるSun MicrosystemsがSDKとともに提供しているJava標準のライブラリを中心にプログラミングを行う世界であるとしよう。つまり、AWTやSwing、java.net、java.ioといったパッケージを主として使うプログラム作成である。たとえば、Cocoa-JavaではCocoaのフレームワークを使ってウインドウを作成することになるが、そのプログラムは、Mac OS Xでないと動かない。一方、Pure Javaのプログラムは、標準のライブラリを使ってウインドウを作成するので、Mac OS Xはもちろん、Mac OSやWindowsでも基本的に同じように稼働するプログラムが作成できる。クロスプラットフォーム対応にこだわるかどうかは実際に作るプログラムの目的にもよるとは思われるが、完全な互換性はなくて容易に別のプラットフォームに移行できるとか、Macintoshの世界以外からのソフトウエアや開発情報の供給も期待できるなど、それなりのメリットがある世界なのである。

Java Watch on the Xは、3つ目に説明した、Pure JavaプログラムをMac OS X向けに作成する場合のさまざまな情報をお届けする。ネイティブな世界じゃないものに魅力を感じない人も多いかもしれないが、まずはMac OS X上でのPure Javaのプログラムは、基本的にAqua対応のユーザインタフェースが稼働することを知っていただきたい。また、ダブルクリック可能なアプリケーションも作成できてアイコンも貼付けることができるし、書類ファイルとして、書類ファイルをダブルクリックしてアプリケーションが起動するといった基本的な動作もサポートする。つまり、外見上は一般ユーザにとってはそん色ないアプリケーションが作成できるのである。その意味では、動作原理上はネイティブではないものの、見てくれはほとんどネイティブであると言っても過言ではない。
一方、Javaにつきまとうパフォーマンスの問題は確かにある。たとえば、Javaのアプリケーションの方が起動には確かに時間がかかる傾向にある。実動作は相当なパフォーマンスが必要な処理は明らかに差が出るとしても、そうではないような一般的な処理はそれほど大差はないと言えるだろう。もっとも、Mac OSのMRJのような印象を持ってしまうかもしれないが、たとえばファイル処理はMac OSよりもMac OS Xの方が格段に速いようで、Javaでのファイル処理もそれなりに高速にできる。Mac OS Xではカーネルでのスレッド対応がなされているので、たとえばDual CPUマシンでのパフォーマンス向上にも期待ができる。「ネイティブアプリケーションと同じ」とは言えないまでも、パフォーマンスが問題になるようなプロジェクトばかりではないことは確かであり、Pure Javaでも実用に耐えられるアプリケーションを作ることは可能であると言える。
ただ、「Javaをサポートした最高のデスクトッププラットフォーム」などと発売前に大きくアピールしたMac OS Xであるが、Public Betaの段階では国際化対応のライブラリファイルがないとか、Pure Java環境でMac OS独自の処理に対応する機能が一切組み込まれていないなど、Pure Javaのプログラムは動いたとしても、まともなMac OS X対応のアプリケーションとして作成可能な状況ではなかった。さらに、Ver.10.0.xになっても、テキストフィールドがウインドウ内にあるなどGUIコンポーネントを使ったPure Javaのアプリケーションでは、インプットメソッドが選択するとアプリケーションが応答しなくなるなど、日本語環境での実用性はほとんどなかった。ただ、Ver.10.0.xでは基本的な機能がほとんど組み込まれているため、アプリケーション利用にはいたらないにしても、開発はできるようになったと言える。Pure Javaプログラマにとっては事実上のPublic Beta版に相当すると言ってもよいだろう。そして、Mac OS X 10.1がリリースされた。まだ一部に従来の不具合が残ることもあり、パフォーマンス的にも完全ではないにしても、「Mac OS XでPure Javaのアプリケーションを動かす」ということが現実的な線になったと言えるだろう。ともかく、最低限はクリアするというところまでは来たのである。前向きな見方で締めるとすれば、機は熟したというところだろうか。

これから、おおむね月に1回のペースで、「Java Watch on the X」をお届けする予定である。もちろん、Javaのすべてをこの連載で扱うつもりはない。Javaの基本的なところ、つまり言語だとか、ライブラリのごくごく基本的な利用方法などは前提知識とさせていただきたい。Java Watch on the Xで扱うのは、まずはMac OS Xでの特殊事情である。仮想マシンの動作の違い、あるいはMac OS Xだけで使えるクラスの使い方といった話題である。また、Mac OS Xでの実際の開発作業の方法を具体的に説明したり、実行環境との兼ね合いといった部分についても説明をするつもりである。こうした内容に加えて、Pure Javaのライブラリ機能を使ったプログラム作成を行ってみて、たとえばWindowsで稼働するようにしていたプログラムを移植したときに何か特別なことが必要になったりはしないか、あるいはMac OS X向けアプリケーションとして留意することは何だろうかと言ったことも追求する予定である。
ところで、一部の読者の方は、筆者が「Macintosh Java Report(MJR)」として1998年10月より1年近くに渡って、Mac OSでのJavaについてのオンラインコンテンツを販売していたことを思い出していただけるかもしれない。Java Watch on the Xは、まさにそれのMac OS X版だと思っていただければよい。MJRは基本的には現在は販売を終了している。

◇Macintosh Java Report(MJR)
 http://cserver.locus.co.jp/mjr.html

Java Watch on the Xの最初のテーマは、システムプロパティの詳細な検討を行うことである。これは、11月のテーマとは言わず、10月分として数日後に公開することにしよう。
関連リンク