.
.

Mac Treasure Tracing Club

September 2002 MACお宝鑑定団 
counter

JavaOne_Title.jpg
apple.jpg

サン・マイクロシステムズ社が、9月25日〜27日にかけてパシフィコ横浜で開催した
第2回JavaOne Conference in Japan」で行なわれたアップルのセミナーレポートです。

Mac OS XにおけるJavaテクノロジー

・ Mac OS XにおけるJavaテクノロジー

JavaOneにおけるAppleのコンファレンス・セッションとしてApple Computer. Inc,においてJava Technologies Evangelistを務めるAlan Samuel 氏による「Mac OS XにおけるJavaテクノロジー (Mac OS X the Ultimate Java Development Platform)」が行われました。氏はエバンジェリストという事で、Appleにてデベロッパに対してJavaのサポートを行ったり、Javaコミュニティに対してAppleの事を理解して貰うような任務に当たるスタッフとなっています。

alan.jpg
Apple Java Technologies Evangelist Alan Samuel 氏


まずは、Javaを支えるMac OS Xの解説よりスタート。

Mac OS XはBSDをベースにし、スリープからの高速な復帰などMobilityを向上させる為の改良を施したUNIX系OSであり、それらの成果はオープンソースコミュニティ「Darwin」として公開していると説明されました。また、PDF, OpenGLなどのデファクトスタンダードを積極的に統合しており、Java2についても1999年05月というかなり以前よりOSの一部分として実装を行っていると説明されました。

 これらのスタンダート取り込み作業と併行してAppleが進めている戦略がiTunesやiMovieなどを中心として進めるデジタルハブ戦略。QuickTimeテクノロジーなどは他のUNIXには見られないMac OS Xならではのシステムであり、スタンダート準拠戦略と相まって非常に素晴らしいOSとなっていると説明されました。今回はJavaOneという事もあってか「Mac OS Xはスタンダードな規格を積極的にきちんと実装している」というポイントを非常に強調しているのが印象的でした。

 続けて、Mac OS XにおけるApplication Frameworkは「Carbon, Cocoa, Java, BSD」の4つであると説明された後に、何故Javaが重要なのかという説明が行われました。それによるとJavaには既に全世界で数百万のデベロッパが存在する上に、VMを持つ事でクロスプラットホームにおける非常に高いポーティングを実現している為にLinuxやSolarisなどの他プラットホームで経験を積んだデベロッパも極めて容易にMac OS Xでの開発に従事して貰える点に非常に大きな意味が有り、またQuickTimeのように他プラットホームでは実現出来ないような事もMac OS Xで動作するJavaであれば実現出来るという事は非常に大きなアドバンテージとなっています。また、Mac OS XであればOS自体にHotSpot VM, JDK, JSSEなどのJ2SEコンポーネントが完全にインプリされているので、デベロッパはユーザにJavaを組み込ませる手間を意識させる必要が無く、更にはオーバーヘッドによる速度低下なども意識しなくて済む点が大きなアドバンテージの1つであると説明されました。

AppleではこれらのようにMac OS XをJavaがきちんと動作するプラットホームとして整備する一方で、開発環境の整備や、Mac OS XでJavaを利用する際に有効なアドバンテージの追加なども進めています。

Appleが行った作業としては、Javaも開発可能な「Project Builder」を純正の開発環境として無償で提供するといったものを始めとして、エンドユーザーに向けては「Javaで書かれたのか、それとも他言語で書かれたのかと言う事は意識させる必要の無い問題である」という事からMacOS・Windowsで動作させるJavaについてはQuickTimeの全機能にjavaからのアクセスを可能にする 「QuickTime for Java」、Mac OS Xではサラウンド・オーディオなどのオーディオの強化を実現する 「Core Audio for Java」の整備などのマルチメディア面での強化、Javaアプリでのメニューバーの実現などの作業を行ったという事が挙げられます。デベロッパに向けてはJavaの弱点を補完すべく、Java VMのSMP対応、Swingをデフォルトで利用する際のAquaインターフェイスへの準拠、更にPurejavaでは無くなるもののCocoa Frameworkを利用したいデベロッパに対してのCocoaへのBridgeの整備などを行い、更にはJavaの決定的な弱点であった共通で利用するClassをシェアリングする事で動作に必要なメモリを節約出来るShared Classの整備などが挙げられます。

AppleではSunのJava開発チーム、特にJ2SEなどのPC向けJavaの開発チームと直接電話でやり取り出来るほどの非常な密接な連係を実現しているためにフィードバックも頻繁に行っており、前に上げたShared ClassについてはPC用アプリでは1アプリごとに3〜6MBのメモリ節約になるという非常に効果的だったために、フィードバックを受けたSunは将来の何らかのバージョンにて取り込むことを決定した事からも分かるように、AppleはJavaの搭載だけに留まらず進化にも積極的に取り組み、協力しているとの事でした。

これらの作業をApple自身が行いつつJava開発者に「Appleが不足しているものは何か?」というリサーチをした結果、ツールの整備が非常に重要であると判明した為に「デベロッパには苦労させずに、Appleが苦労する」ことでデベロッパのSwitch.が容易に行えるように「他のプラットホームに有るものは全部持って来る」を究極の目標としてサードパーティと共同でツールのポーティングを行い、その結果の1つがBorland JBuider 7のMac OS X対応であると説明されました。

さて、Mac OS Xにてjavaを利用する際のアドバンテージの最後にして最大のものは、高品位で高速な画面描画。10.2においては純粋にJavaで描画を命令するだけでもPDFベースのQuartzによる描画についてGPUによるハードウェアアクセラレーションが行われる上に、PDFによる描画である為にWYSIWYGであるのは勿論の事、機種依存せずに何に対しても出力が可能である上に、Systemでダブル・バッファリングを行うのでJavaアプリごとに行う必要が無くなり、逆に場合によってはトリプル・バッファリングの実現を可能にしたり、全てのフォントについてアンチエイリアス処理による高品位出力が実現されるなどのアドバンテージを持ちます。これらは単純な画面描画についてですが、Java 2Dを介した描画命令を利用した際にはSwingを利用してプログラミングするだけで自動的にOpenGLによるアクセラレーションが行われます。

swingset.jpg
Swingアクセラレーションのサンプル。
6fpsから1600fpsと、実に250倍以上の描画速度の向上が確認出来る


さて、これらがMac OS X全てにおけるJavaのアドバンテージですが、Mac OS X server 10.2においては、これ以上にApache Tomcat (java Servlet & JSP) がデフォルトで搭載されています。また、今のところAppleとしての提供は行わないものの3rd Partyが提供する j2EE Serverを動作させる事が可能であると説明されました。

さて、Appleの今後のJavaに関する作業についてですが、予定よりも遅れている J2SE 1.4については間もなくADCメンバーに対してDeveloper Previewを配付出来るようになる見通しだそうです。これは最終的に仕様をfixさせたモノでないので、デベロッパには試用してもらった上で不足している機能などについてAppleへフィードバックして欲しいとの事でした。

また、Java全般について、Mac OS Xにて最新のものに追従している部分と、遅れている部分が有るという事についてAppleとしてもきちんと認識しており、今後は足りない技術の追加を行いつつ、遅れている部分については出来るだけ早くSunのリリーススケジュールに追従するように作業を続け、それと同時にまだまだ遅いJavaの起動速度についての高速化、SwingのAquaへの更なる統合、JavaとSystemの更なるシームレスな統合などを実現させる作業を継続するので、今後も注目して欲しいという事でセッションが終了しました。


Mac OS X and WebObjects

・新居雅行さんの司会進行にて、JavaOneにおいて「Mac OS X and WebObjects」というタイトルでのBirds-of-a-Feather(BOF)が行われました。しかしながら、今回はWebObjectsのパートを担当されるであろう 石井竜一氏 (株式会社オブジェクトビジョン) が都合により参加されませんでした。

bof.jpg
Allen Denison氏(Apple JavaPM), Appleスタッフ, 藤木淳氏(キヤノン), 新居雅行氏


 BOF最初のスピーカーは、AppleComputerにおいて Java TechnologyのProducts Managerを務めるAllen Denison氏が務められたものの、内容は「JavaにおけるMac OS Xにおけるアドバンテージ」という事で午後始めに行われたAppleセッションとほぼ同一でした。ただ、今回はグラフィックアクセラレーションの例としてCameleonに追加して、Sunが配布しているSwingのサンプルコード 「SwingSet」 を利用する事で今まで遅くて使い物にならなかったスクロールなどの機能もネイティブアプリ並の速度で動くようになったという実働デモが行われました。

allen.jpg
Apple Computer, Inc Java Product Manager の Allen Denison氏


また、Swingの高速化に伴う恩恵の実例として、それ自身がPureJavaアプリである Borland JBuilder 7 について「Linux版やSolaris版にほとんどポーティングの手間を掛ける事無く動作させる事が出来た」というエピソードを交えながら、他のネイティブコードで書かれた開発ツールと同じように快適に動作するというデモが行われました。

続けてキヤノンの藤木淳氏のプレゼンテーションへ。

fujiki.jpg


最後までJava2をサポートする事が無かったMac OS 9のMRJと現在のJava VM(J2SE 1.3をサポート)を比較する事で、Mac OS XによってMacOSも立派なJavaサポートOSとなったと説明されました。また、JavaデベロッパがMac OS Xを選ぶ理由として、やはり現時点ではMac OS Xのみがサポートしているグラフィックアクセラレーションを挙げられ、実例としてMacworld NY 2002でも高い評価を受けたPureJavaで書かれた国内産ネットワークゲーム 「ゲットアンプド外伝 下町の侵略者」が極めて高速に動作するという実働デモが行われました。

getamped.jpg
ネイティブアプリ並の描画が行われるPuroJavaゲーム "GetAmped"


 また、Mac OS Xによって立派なJavaプラットホームの一員になったという事の一例として、自身も参加されているApacheコミュニティが進めるプロジェクトの1つである、PureJavaでSVGサポートする 「Batik 」プロジェクトについて取り上げられ、プロジェクトリーダーを除く全コアメンバーとなる4名全員の開発環境がMac OS Xが動作するPowerBook G4, iBookなどに乗り換えたと言うSwitch.の実例が発表されました。プロジェクトではコアメンバー5人中4人までがMac OS Xユーザーという事で、グラフィックアクセラレーションや Shared Class などの現時点ではMac OS XのみがサポートしているJava VMの先進的な機能を積極的に取り入れて行く事についても検討が開始されているとの事でした。

batik.jpg
SVGエンジンの開発チームもMac OS XにSwitch.中


以上でプレゼンテーションは終了。

BOFという事で、それ以降は開発担当者・ハッカーとの直接FAQタイムとなりました。

以下内容を一問一答形式で。

● Mac OS XではSwingをOpenGLによってハードウェア・アクセラレーションするようにしているが、JavaにおけるOpenGLサポートの "Java 3D" をサポートする可能性は?

現在、Java 3D, Java AIを確かにサポートしていないが、これは Sun とライセンスを締結していない為でも有る。しかし、Swingのアクセラレーションとして OpenGLをネイティブコールしている現状は、代理案として十分 (魅力的) だと思っている。今後(の方針として)はSunとライセンスを締結して、Java 3Dもサポートして行くように努力したいと思う。

● Swingハードウェア・アクセラレーションを受ける際の要求ハードウェアはQuartz Extremeと一緒か?

グラフィックチップの種類はアクセラレーションには関係なく、グラフィックメモリの搭載量が問題となるだけである。32MB以上有る事が望ましいが、16MB以上あればアクセラレーションするはずである。

● PureJavaアプリは起動時間がネイティブアプリの2倍ぐらい掛かるが、今後改良されるか?

Javaの起動は確かに遅いが、それに関してはどんなプラットホームでも一緒であり、Sunと一緒に何とかしようと検討中である。Sunはアプリケーションの起動時に、必要の有る無しは関係なく何でもかんでも(有るだけのClassを)起動時に読み込ませようとしようとしているので、それらの読み込みに時間が掛かると認識している。Appleとしては Shared Classをサポートする java VM を搭載する事によって起動時にロードされるデータを減らして、起動を高速化させようとSunに働きかける方向で動きたいと思う。

● 10.2になってServerなどのエンタープライズ関連製品におけるjavaに変化はあるのか?

Mac OS X Server 10.2では、Serverの共有ライブラリの最適化や、Max Heap サイズの最適化、Server・Cliantのメモリサイズを800MBから2GB程度までの拡大などという改良を行った。

エンタープライズ向け製品と言えばWebObjects(WO)で有るが、WO5.1リリースにおける最初の目標はJ2EEのサポートであり、これは実現した。これを踏まえた上で年末までには「Webサービスの更なる改善」を実現する次のバージョンリリースを予定している。今日は、これ以上の情報公開は控えたい。

● WebObjectsで複数のWebアプリを立ち上げている時に、どのJava VMでどのアプリが動作しているのか識別出来ずに、全部Java VMとなってしまう。立ち上げたJavaアプリのプロセスIDとJava VMの関連を管理出来るようにならないか?

WebObjectsのモニターにて、この問題に引っかかると認識しているので問題解決には取り組んでいる。将来への課題とさせて欲しい。

1時間という短い時間のBOFであった為にFAQタイムは以上でしたが、次期バージョンのWebObjectsが年末までにリリースされるように作業が進められているというのは、(NDAの無い場としては) 初めて語られた情報でありました。




.

Copyright (C) 2000 Mac Treasure Tracing Club.
All rights reserved. Site design by BRESTO, Inc.
AppleのColorSyncを使用しています。