Go to Contents Go to Java Page

JavaOne 2002 in SF Report

 
 

3/28 第 4 日

 
 

昨日のリポートで今年は朝にペストリーがないと書いたら、今日はペストリーでした。だからといって、明日ベーグルになるとは思えないんですけど。

Sold Out
Sold Out

JavaOne も終わりに近づいてきた雰囲気がただよいはじめました。今日の 15 時までで Pavilion は一足先に終わりになり、18 時ごろに前を通りかかったらすでに片付けが始まっていました。

今日の夜は After Dark Activity として Wayne Brady のショーがあります。といっても、全然知らない人なんですが。Whose Line Is It, Anyway? という TV 番組で有名なコメディアンなんだそうです。

その他にも After Dark Activity があって、毎年恒例なのが Ice Hockey のゲームです。Scot McNealy が大の Hockey ファンだそうで。今年は 26 日の火曜日に Sun Micosystems vs Apple Computer が行われたそうです。

話題は変わりますが、Zaurus は売りきれてしまったようです。看板にでかでかと Sold Out の文字が... 買えなかった人は残念でした。

 

 
 

Keynote Session

 
 

JavaOne の会期中にはいろいろなプログラミングコンテストが行われています。今日の Keynote セッションのはじめに Time-bending code contest の表彰が行われました。優勝者には Java Jacket や無期限の JavaOne パスがわたされました。

このほかにも Zaurus のコンテストも行われているようです。

他の Keynote については今日も特におもしろい話はなかったので省略します。

 

 
 

Technical Session

 
 

今日、聴講したのは

  • TS-1602 The Java API for XML Binding ("JAXB"): XML Data Binding for the Java Platform
  • TS-1257 Understanding the Java 2 Platform , Standard Edition (J2SE) Privileged Code - A Practical Approach
  • TS-1073 Threads, Concurrency, and Synchronization
  • TS-2558 A Crash Course in Dynamic Class Generation

今日は JAXB と Threads についてリポートするつもりですが、他のセッションについても軽くふれておきます。

TS-1257 はアプリケーションの署名やポリシーについてのセッション、TS-2558 は JSP などが行っているような動的なクラス生成に関するものでした。特に TS-2558 は既存のクラスのバイトコードを操作して、新たなクラスを生成してしまいます。このために、GNU の gnu.bytecode を使用しています。これを使うとバイトコードを直接操作することができるそうです。

TS-1602 The Java API for XML Binding ("JAXB"): XML Data Binding for the Java Platform

JAX ファミリーの中で Web Service には直接関係のない JAXB ですが、興味のある方は多いようです。

JAXB は XML ドキュメントから動的に Java のオブジェクトを生成したり、逆に Java のオブジェクトから XML ドキュメントを生成したりするための API です。これは以下のような絵で表されます (よく見る絵ですが))。

XML Binding
XML Binding

 

JAXB では Schema からクラスを生成するための Schema コンパイラというツールが含まれています。Schema コンパイラは Schema として、DTD と XML Schema を扱うことができます。

Schema コンパイラは XML Schema で定義されているデータタイプは Java のクラスにマッピングし、その他のタグをクラスとして抽出します。このとき、ネームスペースはパッケージになるようになっています。タグのアトリビュートもしくはリーフ要素がクラスのプロパティになります。

生成されるクラスはインタフェースになり、プロパティに対する getter/setter が定義されています。

Runtime での機能は次のようになります。

  • Marshalling
  • Unmarshalling
  • Validate

Unmarshalling/Marshalling 時に Validation Check で引っかかったときには、処理を続けるかどうかを選択することが可能になったたなど JAXB 自体の柔軟性が向上しています。

JAXB は JSR-31 でしよう策定されていますが、今後の予定は次のようになっています。

  • Community Draft Q2 2002
  • Public Draft and Pre Released Reference Implementation Q3 2002
  • Final Draft Q4 2002

TS-1073 Threads, Concurrency, and Synchronization

今日、一番混雑していたセッションです。皆さんやはり同じようなところで悩んでいるんですね。また、混雑する要因の 1 つが、スピーカの 1 人が Doug Lea だったからでもあります。Doug Lea は「Java スレッドプログラミング」の著者です。たとえば、Java のスレッドの priority に関しては "Priorities mean NOTHING!" と断定してしまうとこなど、かなり聴衆に受けていました。発表資料にはもう少し穏やかに書いてありましたが。

セッションは次の 3 つの部分に分かれていました。

  • Synchronization
  • Thread Communications
  • Idiom & Pitfalls

やっぱり、一番おもしろかったのは Doug Lea が担当した最後の Idiom & Pitfalls でした。Tips 的なものを並べておきます。

Synchronization

  • Don't have to hold lock long time.
  • Prepare objects first, then hold lock.
  • Associate between the object lock and data change is up to programmer.
  • Think twice and three times before holding the locks on multipule objects at same time.
  • Try to avoid holding lock while sleeping or performing blocking I/O.

Thread Communication

  • Thread must be prepared to be interrupted.
  • Don't hide interrupt.
  • wait() must be in a loop. The condition may not be suitable to proceed.
  • Use notifyAll() rather than notify().
  • Avoid holding other locks while waiting.

Idom & Pitfalls

  • Cost of synchonization isn't free, but prety cheap.
  • Accessing methods of JDK1.0 collection classes, java.io package's stream classes, and StringBuffer class are all synchonized.
  • Avoid cost of synchonization, use JDK1.2 collection classes.
  • If you want to synchrnonized collection, use synchronized wrapper (e.g. Collections.synchronizedList() )
  • Avoid cost of synchonization, do new I/O channels.
  • Double-checked locking is wrong.
  • Priorities might not mean anything.
  • Yield/sleep may not mean anything.
  • There are lots of potential dangers in finalizer.
  • You should use immutable oject, but some immutable objects have potential problem (e.g. java.lang.String)

 

 
 

Birds of a Feather (BOF) Session

 
 

BOF は今日が最終日です。BOF の発表資料は公開されないので、発表を聞かない限りその情報を得ることができないと思うと、夜遅くまで聞いてみようと思ってしまいます。

今日は次のセッションを聴講しました。

  • BOF-1649 Java Platform Debugger Architecture (JPDA) Thechnology: Current & Futures
  • BOF-3221 User Interface Design and Deployment
  • BOF-2933 Java Advanced Imaging API: Practical Experience and Beyond

今回はあまり話題になることのない BOF-2933 の JAI についてレポートします。

BOF-2933 Java Advanced Imaging API: Practical Experience and Beyond

JAI はイメージを処理するための API で Java 2D の上位に位置します。その特徴としては

  • Network-aware
  • Scalable
  • High Performance
  • Cross Platform

特に特徴的なのは JAI が push 型のイメージ処理を行うことです。他の Java の画像関連の API は AWT が push、Java 2D が immediate 型の処理を行っています。

push というのはどういうことかというと、JAI では画像に対するオペレーションをすべてグラフ構造で保持します。イメージ処理はオペレーションを (グラフに) 追加していき、最後にその結果を引き出すような形になるからです。

push 型の利点は使用するメモリが少ない、lazy evaluation ができるなどです。逆にライブラリが複雑になってしまうという欠点もあります。

デモでは JAI を SOAP や J2EE と合わせて、Client からの要求により Server 側で動的にイメージを生成することを行っていました。

現状の JAI のバージョンは 1.1.1 ですが来月にバグフィックスバージョンの 1.1.1_01 がリリースされるそうです。

また、1.1.2 では次のような機能を追加するそうです。

  • DataArray allocation & recycling
  • ColorModel generation control
  • Union Operation

ベータを 8 月、最終版が 10 月にリリース予定です。

また、JAI と一緒に開発されている Image I/O も次のような機能を取り入れるそうです。

  • ImageRead & ImageWrite Operations
  • NIO-based ImageInputStream/ImageOutputStream
  • Accelerated JPEG & PNG Plugins

次の 1.2 で取り入れる機能はまだ検討段階だそうです。

 

 
 

おまけ

 
 
JavaOne Today
JavaOne Today

今日は JavaOne の参加者がどのように日々の情報を入手するかレポートします。

去年から JavaOne Today という新聞が JavaOne の期間中に毎日発行されるようになりました。

JavaOne Today にはその前日に行われた Keynote の記事や、インタビュー、クイズなどがのっています。去年は Duke の漫画があったり下のですが、今年はなくなってしまったようです。

また、忘れてならないのが、セッションの変更に関する情報です。JavaOne ではセッションが追加されたり、キャンセルされたりすることが多々あります。また、時間が会場が変更されることもあります。

これを知らないで、会場に行くとプログラムとは全然違うセッションだったりします。

3 年前まではこのようなセッションの変更は 1 枚の紙で配布されていました。それも 1 枚の紙には 1 つのセッション変更の情報しか載っていないので、全部を知るためには多いときには 10 枚ぐらいの紙を集めなくてはならず、かなり面倒でした。

JavaOne Today ではセッションの変更情報がすべてのっているので、格段に便利になりました。たとえば、今日の JavaOne Today には掲載されている 1 例を挙げると

TS-3537 New Session
Building Portlets with the Java 2 Platform, Enterprise Edition (J2EE) and Web Services

Thursday, March 28, 5:15-6:15 p.m., Moscone Center, Room 130
Sue Vickers, Senior Product Manager, Oracle Corp.

こんなふうに記載されています。

また、人気のあったセッションはビデオのアンコール上映があります。この情報も JavaOne Today にのっています。

とりあえず、朝会場についたら JavaOne Today、というのがここでの習慣です。

(2002.3.28)

 
 
Go to Contents Go to Java Page