Go to Contents Go to Java Page

JavaOne 2004 in SF Report

 
 

6/28 初日

 
 

今日から通常のセッションがはじまります。

はじめから混雑している JavaOne です。やはり General Session は並ばないといい席がとれません。延々と続く行列は、確認できている範囲ではあと 100 m ぐらい続いていました。

Compuware の人たちが体をオレンジに塗って大声で叫んでなにやらパフォーマンスらしきものをしていたのですが、いまいちうけはよくありませんでした。あげくのはてにゲリラ的にやっていたらしく、JavaOne のスタッフともめていました。

さて、今日聴講したセッションは

その他に Java Everywhere Living Billboard というイベントに参加してきました。

 

 
 

General Session

 
 

今年は JavaOne の顔が変わりました。John Gage が休みなのです。その代わりに、去年パビリオンから中継などをしていた方が MC をやっています。

それにしても John Gage がいないと、どうしても JavaOne に来た気がしないのはしかたないところなのでしょう。来年はどうなるんでしょう。

 

Jonathan Schwartz

はじめにいってしまいますが、あまりおもしろくありませんでした。

新しいことを発表することもなく、話もいつもさして変わるものではありませんでした。いつものように Java Economy ということで Ubiquity - Developer - Industry - Consumer が輪をなして発展していくこと、マーケットが確実に大きくなっていること、Java を使うことで Oppotunity が広がることなどを話しました。

どうでもいいことなのですが、何度か Jonathan Schwartz のスピーチを聞いていますが、彼はそれほどスピーチがうまくないですね。ポスチャーがいまいち。体をうしろに反らしてしゃべることが目につくのです。足が曲がっていることもよくあるし。Scott McNealy のようにそれを逆に武器にしているのであればいいのですが、正攻法でこられると目についてしまうのです。

さて、スピーチの中でいくつかデモを行いました。

1 つが MediaTouch という企業の携帯型脈拍計。指先につけるだけで、Bluetooth で携帯にリアルタイムに血圧を送信するものです。次に行ったのが Q Next という企業のビデオチャット。チャットだけでなく、ファイル共有なども行っていました。

ここまでは Jonathan 本人がデモを行ったのですが、その後 Siemens VDO が車載コンピュータのデモを行いました。なんと、会場に本当に BMW を持ちこんできました。ナビゲーションなどをデモしましたが、内容的にはそれほどすごいものではなく、製品レベルにまで持っていったことがすごいところなのでしょう。

そのあと、Java Stdio Creator のデモがありました。

そして、オープンソースに話が進みました。ここで、Java 3D がオープンソースになることが発表されました。また、Project Looking Glass もオープンソースになることが決まりましたが、その時期はもう少し先になるらしいです。

Looking Glass に関しては川原さんが少しだけデモを行いました。セッションの後でコンポーネントスクエアの田村さんとお話したのですが、川原さんは第 2 の Miko Matsumura ではないかと。

Miko Matsumura は初期の JavaOne でデモを専門におこなっており、見せ方がとてもうまいのです。私はそのときにエバンジェリストという肩書きをはじめて知ったのでした。

Gosling Schwartz
James Gosling Jonathan Schwartz

最後に少しだけ James Gosling が登場。T シャツを投げるマシンのコンテストをおこなっていたのですが、それの優秀賞の候補が毎日紹介されるようです。今日は VisiComp が作成した圧縮空気を使用したマシンです。Nitro といっていたのですが、まさかニトログリセリンじゃないですよね。なにはともあれ、すごい飛びます。それこそ迫撃砲のような感じで飛んでいきます。

あまりに早いので写真が取れませんでした。残念。

下の写真はスクリーンに映っているものをとったので、鮮明ではないのですが雰囲気だけでも。

Bomber Bomber
T-Shirt マシン たまこめ中

 

 
 

Technical General Session

 
 

去年まで Graham Hamilton と Tim Lindholm の 2 人でおこなっていたのですが、今年は J2EE を Bill Shannon が担当するようになって 3 人体制です。今年の Sun のシャツはいつものデニムと変わって赤いシャツに変わったのでとても目立ちます。

まずは Graham Hamilton による J2SE からです。

そういえば名称が今回から変更になっています。

J2SDK -> JDK
J2RE -> JRE
J2SE 1.5 -> J2SE 5.0
J2EE 1.5 -> J2EE 5.0

JDK が復活しました。また、いままで 1.X の X がメジャーバージョンだったのが、正式に X の部分だけ独立してメジャーバージョンになったのでした。

 

J2SE

まずは Tiger 登場。J2SE 5.0 ではなくて、本当のトラが登場しました。といっても赤ちゃんのトラ。こういうゲストは珍しいですね。

Tiger のテーマに沿って概要を説明しましたが、割愛。それよりもその次のバージョン Mustang (6.0) & Dolphine (7.0) に関して言及したことのほうが興味深かったです。

Mustang と Dolphine は同時にプランを立てて、機能を分割していくようです。

  • Compatibility, Stability, Quality
  • Diagnosibility, Monitoring & Management
  • XML & Web Services
  • Ease of Development
  • The Cooporate/Enterprise Desktop
  • "Becoming More Transparent"

私としては Diagnosibility が入っているのがうれしいところです。Java は JVM があるので Monitoring & Management のコードをアプリケーションに入れないでも、これらの機能を使用できるという強みがあります。ここに Diagnosis も入れば鬼に金棒状態です。

言語に関しては "Groovy" (JSR-241) が入るそうです。よく分からないのですが、帰国したら Watch してみます。スクリプトのサポート (JSR-232) も大きなところです。去年の JavaOne で話題になった PHP のサポートが実現するわけです。

XML と Web Sevices に関しては、JAXB と JAX-RPC がコアに入りそうです。ただし、JAX-RPC はクライアントがメインでサーバは Lightweight なものになるそうです。サーバはテスト用という位置づけなのでしょう。その他に、XML Encryption や Digital Signature も候補になっているようです。

これ以外のトピックとしては

  • Split Verifier
  • Java Isolaters (JSR-121)
  • Compiler API
  • Extesions Jar format
  • JDBC 4.0

特に JDBC はメタデータを使用して、かなり簡単に書けるようになっていました。

最後に Desktop がらみの話で Longhorn, Gnome, Mac のサポートや、Java Deskop Integration Component (JDIC)、Java Desktop Network Component について言及されました。JDIC と JDNC はまだまだどのようになるか分かりません。

 

J2ME

J2ME はちょっとさびしかったというのが感想です。ME の Tim Lindholm の話が始まったとたん、かなりの数の観客がぞろぞろと会場を出ていったのです。すでに携帯電話などの Java は当たり前になり、US では J2ME は下火になってきているのかもしれません。

また、セッションの内容もそれほど目新しいことはありませんでした。もうちょっとがんばってもらいたいんだけどなぁ。とはいうものの、J2ME にかかわるものとしては製品に組み込むんだからそんなにしょっちゅうアップデートしないでほしいと思う気持ちもあるのです。

今回は比較的新しいところでは "Tsunami" があります。今の CDC は J2SE 1.3 がベースになっているのですが、これを J2SE 1.4 にするためのプロジェクトです。

1.4 のすべてを取り込むのは無理ですが、assertion などが入るらしいです。

今回のJavaOneでは今までの CLDC 一辺倒だったものから徐々に CDC へのシフトが感じられます。私にとってはこの傾向は非常に好ましいと思っています。

また、ちょっとだけおもしろそうだったのが、KVM でマルチタスキングです。1 つの KVM の上で複数の MIDlet を動かしてしまうというものです。しかし、これはあくまでも例として話されたので、実現するかどうかはよく分かりません。

また、CDC に対してよりハイレベルなプログラミングに関して言及しました。特に XML の必要性やエンタープライズアプリケーションのクライアントとしての CDC がハイレベルなプログラミングを必要としているといっています。

しかし、そのせいで CDC と CLDC の間の Gap が大きくなっていることも言及していました。なにかこのギャップを埋めるものが必要なのかもしれません。

 

J2EE

J2EE 5.0 に関する話がメインになっています。

5.0 での大きなテーマが EoD です。特に Metadata がキーになっています。

EJB ではたとえば Session Bean の場合に SessionBean インタフェースをインプリメントする必要はなく、したがって ejbCreate メソッドなどを実装する必要がなくなっています。その代わりに @Session というアノテーションをクラスの頭につけるようになります。

これによりインタフェースも自動生成してくれるので、自分でインタフェースを作成する必要がありません。これらによりいわゆる POJO に関しても最低限の変更 (アノテーションを付加するだけ) で Bean 化することができます。

同様に DD や JNDI, JAX-RPC, なども Metadata をサポートしてきます。

ただし、EJB 3.0 などはほぼ仕様が決まったようですが、JNDI などはまだまだのようです。ここでも 3 種類の方法を説明して、まだどれにするか決まっていないようでした。

J2EE 5.0 のターゲットは 2005 年の Second Half だそうです。

Tiger Trio
Tiger 登場 3 人トリオ

 

 
 

Technical Session

 
 

Technical Session は 4 つのセッションに参加したのですが、Fast Track to the Java 2 Platform, Standard Edition (J2SE) v1.5 は Technical Keynote とかなり重なるので割愛します。

また、New Features in the Java Programing Language は Autoboxing と Generics のワイルドカードに関してだったのですが、ワイルドカードは JTC 2004 でおこなったものと同じなので Autoboxing の部分だけレポートします。

 

Java Platform Performance

セッションはいくつかの部分に分かれており、パフォーマンス測定に関する注意、OS による違い、CPU による違い、Tiger でのパフォーマンスに関してです。す。

まずはパフォーマンス測定に関して。パフォーマンスチューニングをおこなうときに、第 1 におこなわなくてはいけないことが測定です。しかし、間違った測定をしてしまうと何の意味もありません。

このセッションでは特にマイクロベンチマークに関して言及しました。

たとえば、HotSpot では Dynamic Compilation がかかるので、メソッドを複数回実行しないと実際のパフォーマンスは測れない、Disc Cache を使用するかどうかのフラグのデフォルトがプラットフォームによって異なっていることなどをあげました。

正確に測定するには次の 3 点を上げていました。

  • Monomorphic Call Transformation
  • Branch Target
  • Execution Frequently

OS に関しては 2GB の壁について言及がありました。Linux では連続領域で 2GB 以上のアロケーションできないことや、x86 版の Solaris でも 2 GB の壁があるが次の OS のバージョンアップで解消されるなどです。

Tiger では "Smart Tuning" がおこなわれます。JVM 自身が解析をおこないながら、ヒープの調節をおこなったりいろいろと賢いことがおこなわれるようです。

なんと "Forget EVERYTHING You Just Heard!" といいきっていました。

下手にチューニングするより、JVM に任せたほうがよっぽどパフォーマンスがよくなるということなのでしょう。

 

Concurrency Utilities in JDK Software Version 1.5: Multithreading Made Simpler

JSR-160 の Concurrency Utilities の解説です。

Concurrency Utilities は範囲が広くてすべてカバーするのはなかなか大変なのですが、エッセンスを凝縮したようなセッションになりました。

まず非同期処理をおこなうための Executor とスレッドプールです。Public Review 前は Executors クラスの execute メソッドを使用して非同期処理を開始していましたが、Executor インタフェースの execute メソッドを直接コールするように変更されています。

Executor インタフェースの実装クラスは通常は Executors クラスのファクトリメソッドを使用して得られたものを使用します。スレッドプールも同様にファクトリメソッドが用意されています。

次にコンテナに関して。

JSR-160 ではいくつかのコンテナが追加されました。まず Queue インタフェース。Queue インタフェースはブロックしませんが、ブロックするものが BlockingQueue になります。

それぞれスレッドセーフでないクラス、スレッドセーフであるクラスが提供されています。

また、Hashtable クラスや Collections#synchronizedMap メソッドの代わりに使えるのが ConcurrentHashTable クラスです。同様に CopyOnWriteArrayList クラスなども追加されています。

次がロックです。

Lock インタフェースを実装したクラスには ReentrantLock クラスがあります。このクラスはリエントラント・ミューテクスを使用してロックを実装しています。

Read/Write に特化したのが、ReentrantReadWriteLock です。このクラスでは read と write のロックがそれぞれ readLock メソッド、writeLock メソッドによって得ることができます。

今までは synchronized しかなかった同期化も、各種そろえています。

  • Semaphore
  • CountDownLatch
  • CyclicBarrier
  • Exchanger

それぞれを説明することは省略しますが、その特性を知った上で適材適所に使えばいいのだと思います。

最後に Atomic 処理です。AtomicInteger, AtomicArray, AtomicFieldUpdater のように型ごとに 3 種類、あり Integer の他に Long, Reference があります。

New Features in the Java Programing Language

Tiger の言語仕様のうち、Autoboxing と Generics のワイルドカードに関してです。いままで、SF の JavaOne と同じものを日本の JavaOne でしゃべるというパターンはありましたが、逆はなかなかないです。

Autoboxing のキーとなるのは Identity だそうです。

たとえば次のようなコードではどうでしょう。

    Boolean b1 = true;
    Boolean b2 = true;
    b1 == b2 ? true: false;

b1 と b2 はオブジェクトなので値の比較には equals を使いたいところです。しかし、== を使っても参照の比較でなく値の比較にならなければなりません。

このような問題がいろいろなところで出てくるらしいのです。また、より大きなオブジェクトを生成するのは難しいという問題もあります。

このようなことから Autoboxing でキーとなるのは Identity なのだと。確かにめんどうくさそうです。

 

 
 

BOF

 
 

今日、聴講した BOF は 2 つあるのですが、Monitoring and Managing a Java Virtual Machine in the Java 2 Platform, Standard Edition (J2SE) 1.5: JSR 174 Update and Case Study の方はあまり新しいことは取り上げられませんでした。

また、Java Programing Language and Compiler Issues は前のセッションと同じく Joshua Bloch と Neal Gafter だったのですが、なんと前のセッションが終わらずにそのままなくなってしまいました。前のセッションは How the Java 2 Platform, Standard Edition (J2SE) 1.5 Language Changes Affect Your Favorite API です。これは去年の JavaOne でもありましたし、自分でもいろいろ調べていたので、聴講せずにいたのです。

私が部屋に入ったときにはそのセッションの Q&A になっていて、延々と質問が出されていました。それはなかなかおもしろいものや、勘違いなどあるのですが、Neal Gafter と Joshua Bloch は丁寧に質問に答えていたのが印象的です。

ということで今日は BOF のレポートはなしです。

 

 
 

Java Everywhere Living Billboard

 
 

このタイトルだとなんだか全然分からないのですが、Looking Glass のイベントです。せっかくなので、Moscone の隣の Metreon の壁に Looking Glass のデモを写してしまいましょう、というイベントなのです。

プログラムの最後の方にわずか数行しか書いていなかったせいか、集まったのは 30 人程度。それも半分以上 Sun の関係者の方でした。JXTA の Soto さんがいらっしゃったのですが、なんと子供づれでした。

主役の川原さんはウクレレをもって登場。ビルに移しているその前でウクレレを弾くなんて、なかなかかっこいいです。

歌う川原さん 歌う首藤さん
Billboard 川原さん
川原さん  

 

 
 

おまけ

 
 

今日のランチはチキンのランチボックスです。そのほかにサンドウィッチもありましたが、いつもある温かいランチはありませんでした。

また、食事をするところはパビリオンと同じスペースになっているのですが、ちょうど境目ぐらいのところでアーティストによるパフォーマンスがおこなわれています。今は 2 人のアーティストが製作していました。完成したらどうなるんでしょう。今から楽しみ。

Lunch Art Art

今回の JavaOne はいたるところで経費削減されているのがよく分かります。朝食にジュースがつかない、おやつがほとんど出ない。毎年、恒例になっているマッサージがなどなど。

また、例年街中にあふれていた JavaOne の広告もありません。かといって Apple があるかというとそれもないのですが...

今年で Medialinks も終わりだし、Sun も苦しいのでしかたないのでしょうか。

それでもすごいなと思うのは、障害者に対する配慮です。耳の不自由な参加者がいると、かならず手話の人がつきそって、セッションを手話で訳しているのです。すごいですね。

 

デジカメの電池が切れてしまったので、すこしでも充電しようと Technical Session と BOF の間に一度ホテルに帰ったのです。

そうしたら、おきたのです。何度も旅行していますが、これははじめて。

なにかというと火災報知器が鳴り出して、退去しなさいと放送が入ったのです。もちろん、エレベータは使わないようにといっていました。みんなでぞろぞろと階段を下りていったのですが、きな臭いにおいは全然ないのです。

階段を降りきって外に出た頃に消防車到着。ポンプ車とはしご車です。

しかし、やはり間違いだったようです。焼けだされなくてほっとしていると同時に、なかなかおもしろい経験ができたとうれしい気分が半分。

Lunch Art

 

(2004.6.28)

 
 
Go to Contents Go to Java Page