Go to Contents Go to Java Page

JavaOne 2002 in SF Report

 
 

3/26 第 2日

 
 

まずは昨日の訂正から。毎日訂正してますが ^^;;;;

昨日のレポートでは Rich Green がいつも同じ格好をしていると書きましたが、今日は昨日とは違ういでたちでした。そういえば、JavaOne Japan ではスーツを着ていたのを思いだしました。というわけで、いつも同じ格好であるというのはまちがいです。Green さんごめんなさい。

さて、Zaurus が話題になっていますが (Native の人が発音すると ゾーラスと聞こえます)、Zaurus が 802.11b のカードと一緒に売り出されているおかげで、なんとというかやっぱりというか PC でも会場内で 802.11b が使えます。いわゆる、Hot Spot です (JVM の HotSpot ではないですが)。セッションの会場の中はかなりきついのですが、通路や Hucker's Lab などではバッチリです。

ホテルで電話でつなぐよりも全然快適。ありがとう、Sharp さん。

でも、これに気がついている人は以外に少ないような気がします。というか、802.11b のカードらしきものをさした PC をまだ見ていないのです。もしかすると、はじめから組みこまれている PC の人は気づいているかもしれないのですが...

 

 
 

Keynote Session

 
 
Scott McNealy
Scott McNealy

今年の Keynote には Scott McNealy が帰ってきました。開口一番、「去年は休んでしまって済まなかった」といっていました。

ところが、Scott McNealy のスピーチではおなじみの 10 Jokes が今年はなかったのです。とはいえ、英語力に問題のある筆者には、すぐには笑えないで、あとでスクリプトを見て、「あぁ、そうだったのか」、というのが落ちなのですが... しかし、なんだか寂しい気がします。

内容的にはコミュニティの力に重点をおいていたように思えます。「JavaOne が 7 年続いてきたのも、君たちのおかげだ」みたいに。そこで、JavaOne ではなくて JavaWon というスライドを出したりして、Joke はやはり忘れないところがいいです。

その他にも JavaWins とか Java 1 of 2 とか出してました。

コミュニティという点では、Apache の人を壇上に上げて、Apache との関係修復を発表しました。、こじれていた JCP と Apache の関係が修復できたそうです。これで、Java もどんどんオープンソースに向かってしまうのでしょうか。

その後も Nokia の人などいろいろな人が表れてスピーチしたりデモをしたりしたのですが、結局は「独占はいけない、ユーザが選択できる余地を残さなくてはならない。だから、MS はダメだ」みたいなスピーチでした。

JavaWon
JavaWon
JavaWins
JavaWins

 

 
 

Technical Session

 
 

今日、聴講したのは

  • TS-1218 Jini Network Technology Nuts and Bolts: From the Source
  • TS-3477 New I/O APIs for the Java Platform
  • BUS-1633 Reuse for Real: Implementing Software Reuse in the Java 2 Platform, Enterprise Editino (J2EE) Environment - An Expert Panel
  • TS-2502 More Effective Programming with Java Technology
  • TS-1992 Garbege Collection and the Java Platform Memory Model

BUS というのはビジネスセッション、TS がテクニカルセッションです。基本的にはビジネスセッションは聞かないのですが、パネラーの中に Martin Fowler がいたので参加しました。個人的に Martin Fowler のファンなので ^^;;

Martin Fowler は「リファクタリング」や「アナリシスパターン」など、また最近では Kent Beck らと一緒に Extream Programming でも有名です。

有名人ということでは、今日の午後に聴講したセッションは有名人が多いです。TS-2502 のスピーカの Joshua Bloch は「Effective Java プログラミング言語ガイド」の著者ですし、TS-1992 の Peter Haggar は「Javaの鉄則―エキスパートのプログラミングテクニック」の著者でもあり、JSR-001 Realtime Extension の Spec. Lead でもあります。

今日は、この 3 人の有名人のセッションについて簡単にレポートします。

BUS-1633 Reuse for Real: Implementing Software Reuse in the Java 2 Platform, Enterprise Editino (J2EE) Environment - An Expert Panel

いわゆるソフトウェアの再利用はできるのか、できるのだとすればどのようにすれば再利用が促進されるのか、ということについて議論をするパネルです。日本で行うパネルと違って、本当にパネル同士が意見をぶつけ合うので、見ていておもしろいです。ただし、聞き取りは大変なのですが ^^;;

Martin Fowler の他に 3 人のパネラーと司会でパネルが行われたのですが、おもしろいのは Martin Fowler 以外の人はマーケティングなどのビジネス的な面から話をしようとするのですが、それに Martin Fowler は真っ向から反対するのです。

Martin Fowler の論旨は単純で

  • ソフトウェアの品質がよくなければ再利用はできない。

といことにつきます。品質には安定性やロバスト性、使いやすさなども含まれます。そうすると、結局はほとんどのコードは再利用できないと彼はいいます。

確かにその通りだと筆者も思います。コストを安くするために、これこれのコンポーネントを再利用しろといわれたとしても、どこの馬の骨が書いたか分からないような品質の悪いコードを使う気には少なくとも私はなりません。

他とえば、Web Service では品質の分からないコード (SOAP のサービス) を組み合わせてシステムを作るのですが、本当にそのシステムの性能がそれで満たされるかはかなり疑問があります。

UDDI の問題点として与信がありますが、その前にコードの品質、信頼性をどのように表していくかも問題になるかもしれません。

TS-2502 More Effective Programming with Java Technology

Effecitve Java の筆者が、さらに Effective にということで、次の 3 つの点について説明をしました。

  1. Avoid Duplicate Object Creation
  2. Defensive Copy
  3. Immutable Class

Avoid Duplicate Object Creation は new String("abc") のような無駄なオブジェクトの生成をやめようということです。ただし、オブジェクトの生成がいけないのではありません。最近の VM ではオブジェクト生成にかかるコストが小さくなってきているからです。

避けなくてはいけないのは、無駄なオブジェクトの生成です。

次の Defensive Copy と Immutable Class はどちらもコードのロバスト性を高めるためのものです。

Defensive Copy は、たとえば次のようなコードです。

public class A {
    private Date date;
    public setDate(Date date) {
        this.date = date;
    }


    private void foo() {
// date に対して何らかの処理を行う } }

これに対して、次のようなコードを書いたとしましょう。

    A a = new A();
    Date now = new Date();

   
    a.setDate(now);


    now.setTime(0);

このコードを実行した後に A の foo を実行すると、予想した結果と異なってしまいます。それは A のプロパティの date が書き換わっているからです。

これを防ぐために Defensive Copy をしましょうということなのです。Defensive Copy を使うと setTime は次のようになります。

    public setDate(Date date) {
        this.date = new Date(date.getTime());
    }

Immutable Class は書きかえることのできないクラスです。たとえば、String や Integer などがこれにあたります。

この Immutable Class を使えば、前述したような問題は起こらなくなります。エンティティを表すようなクラスは Immutable Class にはできませんが、小さいクラスであれば Immutable にできるかどうか検討する余地があると思います。

TS-1992 Garbege Collection and the Java Platform Memory Model

GC のメカニズムに関する解説ではなくて、GC を前提としたプログラミングスタイルに関するセッションです。

特に Soft, Weak, Phantom Reference に関してと、volatile や synchronized に関して説明がありました。

GC を前提にした場合、次のようなことはしては行けないことです。

  • 必要のない、サイズの大きなオブジェクトを作らない
  • オブジェクトを多く作りすぎない
  • finalize メソッドを使用しない

また、気をつけなくては行けないこととして

  • 配列などリークの起こりやすいものは、扱いに気をつける

その他に、volatile だからといってスレッドセーフにはならないということ、Double Check Locking はやめようなどを解説しました。

 

 
 

Birds of a Feather (BOF) Session

 
 

BOF セッションは Moscone Center ではなくて、近くにある Sheraton Hotel で行われています。ここでも無線 LAN が使えるかと思って試してみたのですが、残念ながらここでは使うことはできませんでした ^^;;

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

  • BOF-1017 Assert Your Authority!
  • BOF-1223 The Jini Network Technology BOF
  • BOF-1354 JSR-134: The Java Game Profile API Community Discussion

Assertion に関しては、私の Web ページを見てください。ここでは Jini のセッションについて Technical Session での内容と合わせてレポートします。

BOF-1223 The Jini Network Technology BOF

BOF の中には Meet XXX Team とか Community Meeting などといったタイトルのセッションが多くあります。これは、実際に API などを開発した人に対する Q&A セッションになります。Community Meeting はもうちょっとくだけていて、一緒に情報交換しましょうみたいなのりになりますが、基本的には Q&A になります。

このセッションも Jini の開発者たちへの Q&A セッションでした。Jini 部隊のトップである Jim Waldo をはじめとした面々がそろっています。

Jini に関しては去年の 12 月に Jini Starter Kit v1.2 が公開されたので、それに関するものが中心でした。Starter Kit では、ユーザがより簡単に Jini のアプリケーションを開発できるための Helper がいろいろと提供されています。たとえば次のようなものがあります。

  • LookupDiscovery
  • LeaseRenewalManager
  • LeaseRenewalService
  • EventMailboxService
  • TransactionFactory
  • JoinManager

また v1.2 の新機能としては

  • Shared VM Support
  • Multi NIC Multicast Support

などがあるそうです。

技術的な面では TaskManager というクラスで Thread Pool を行い、処理の流れを runAfter メソッドでコントロールしているとか、WakeupManager では周期的に行う処理を記述できるようになっていることなどがあげられていました。

Q&A ではリースの期間をどのように設定すればいいかなどの質問がありました。これの明確な答えはないのですが、一般的に短いほうがいいということ、アプリケーションのプロファイルを行って処理に必要な時間を割り出して設定するなどの答えが出されていました。

 

 
 

おまけ

 
 

やはり Zaurus を買ってしまいました ^^;; なぜか ¢99 だけ値上がりしていて、$299.99 でした。

さて、ちょっと使ってみた感想ですが、やはり Linux だなぁと感じます。ターミナルがあったりして、そこでちゃんと ls や grep を実行することができます。ファイルツリーは普通の Linux とはずいぶん違うようで、どこになにがあるか探すのが一苦労です。設定のところに Shutdown もあります。Shutdown で reboot させると、ちゃんと Linux が立ち上がってくるのを確認できます ^^;; 写真はちょっと見にくいと思いますが、雰囲気だけでも感じてください。

一般的な使い心地は、結構使えそうだなというところです。形は日本で売っている Zaurus と同じなので、PocketPC よりは小さいけど、Palm よりは大きいぐらいです。

とりあえず、スケジューラやアドレスブック、メモ帳、To Do List などのアプリケーションは一通りそろっています。ブラウザーは Opera でした。

Java のプログラムは PrimTest と Quasarというプログラムだけのようです。Java の実行系がどこにあるかまだ探しきれていないので、もしかすると他にもあるかもしれません。

今日しか使っていないのですが、以外だったのが、電池の持ちが悪いことです。もしかしたら、フル充電を何度かくりかえせば、電池の持ちもよくなるかもしれませんが...

Initial Screen
初期画面
Opera Browser
Opera
Booting
ブート

 

(2002.3.26)

 
 
Go to Contents Go to Java Page