|
6/28 初日 |
||
今日から通常のセッションがはじまります。 はじめから混雑している JavaOne です。やはり General Session は並ばないといい席がとれません。延々と続く行列は、確認できている範囲ではあと 100 m ぐらい続いていました。 Compuware の人たちが体をオレンジに塗って大声で叫んでなにやらパフォーマンスらしきものをしていたのですが、いまいちうけはよくありませんでした。あげくのはてにゲリラ的にやっていたらしく、JavaOne のスタッフともめていました。 さて、今日聴講したセッションは
その他に Java Everywhere Living Billboard というイベントに参加してきました。
|
去年まで Graham Hamilton と Tim Lindholm の 2 人でおこなっていたのですが、今年は J2EE を Bill Shannon が担当するようになって 3 人体制です。今年の Sun のシャツはいつものデニムと変わって赤いシャツに変わったのでとても目立ちます。 まずは Graham Hamilton による J2SE からです。 そういえば名称が今回から変更になっています。
JDK が復活しました。また、いままで 1.X の X がメジャーバージョンだったのが、正式に X の部分だけ独立してメジャーバージョンになったのでした。
J2SE まずは Tiger 登場。J2SE 5.0 ではなくて、本当のトラが登場しました。といっても赤ちゃんのトラ。こういうゲストは珍しいですね。 Tiger のテーマに沿って概要を説明しましたが、割愛。それよりもその次のバージョン Mustang (6.0) & Dolphine (7.0) に関して言及したことのほうが興味深かったです。 Mustang と Dolphine は同時にプランを立てて、機能を分割していくようです。
私としては 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 も候補になっているようです。 これ以外のトピックとしては
特に 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 だそうです。
|
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 点を上げていました。
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 SimplerJSR-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 しかなかった同期化も、各種そろえています。
それぞれを説明することは省略しますが、その特性を知った上で適材適所に使えばいいのだと思います。 最後に Atomic 処理です。AtomicInteger, AtomicArray, AtomicFieldUpdater のように型ごとに 3 種類、あり Integer の他に Long, Reference があります。 New Features in the Java Programing LanguageTiger の言語仕様のうち、Autoboxing と Generics のワイルドカードに関してです。いままで、SF の JavaOne と同じものを日本の JavaOne でしゃべるというパターンはありましたが、逆はなかなかないです。 Autoboxing のキーとなるのは Identity だそうです。 たとえば次のようなコードではどうでしょう。 Boolean b1 = true; Boolean b2 = true; b1 == b2 ? true: false; b1 と b2 はオブジェクトなので値の比較には equals を使いたいところです。しかし、== を使っても参照の比較でなく値の比較にならなければなりません。 このような問題がいろいろなところで出てくるらしいのです。また、より大きなオブジェクトを生成するのは難しいという問題もあります。 このようなことから Autoboxing でキーとなるのは Identity なのだと。確かにめんどうくさそうです。
|
今日、聴講した 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 のレポートはなしです。
|
このタイトルだとなんだか全然分からないのですが、Looking Glass のイベントです。せっかくなので、Moscone の隣の Metreon の壁に Looking Glass のデモを写してしまいましょう、というイベントなのです。 プログラムの最後の方にわずか数行しか書いていなかったせいか、集まったのは 30 人程度。それも半分以上 Sun の関係者の方でした。JXTA の Soto さんがいらっしゃったのですが、なんと子供づれでした。 主役の川原さんはウクレレをもって登場。ビルに移しているその前でウクレレを弾くなんて、なかなかかっこいいです。
|
おまけ |
|||||||
今日のランチはチキンのランチボックスです。そのほかにサンドウィッチもありましたが、いつもある温かいランチはありませんでした。 また、食事をするところはパビリオンと同じスペースになっているのですが、ちょうど境目ぐらいのところでアーティストによるパフォーマンスがおこなわれています。今は 2 人のアーティストが製作していました。完成したらどうなるんでしょう。今から楽しみ。 今回の JavaOne はいたるところで経費削減されているのがよく分かります。朝食にジュースがつかない、おやつがほとんど出ない。毎年、恒例になっているマッサージがなどなど。 また、例年街中にあふれていた JavaOne の広告もありません。かといって Apple があるかというとそれもないのですが... 今年で Medialinks も終わりだし、Sun も苦しいのでしかたないのでしょうか。 それでもすごいなと思うのは、障害者に対する配慮です。耳の不自由な参加者がいると、かならず手話の人がつきそって、セッションを手話で訳しているのです。すごいですね。
デジカメの電池が切れてしまったので、すこしでも充電しようと Technical Session と BOF の間に一度ホテルに帰ったのです。 そうしたら、おきたのです。何度も旅行していますが、これははじめて。 なにかというと火災報知器が鳴り出して、退去しなさいと放送が入ったのです。もちろん、エレベータは使わないようにといっていました。みんなでぞろぞろと階段を下りていったのですが、きな臭いにおいは全然ないのです。 階段を降りきって外に出た頃に消防車到着。ポンプ車とはしご車です。 しかし、やはり間違いだったようです。焼けだされなくてほっとしていると同時に、なかなかおもしろい経験ができたとうれしい気分が半分。
(2004.6.28) |
|