Go to Contents Go to Java Page

JavaOne 2002 in SF Report

 
 

6/11 第 2 日

 
 

ZDnet の記事には 5,000 人の参加者と書かれていましたが、そんなもんなんでしょうか。その割には混雑しています。カンファレンスの会場が A 〜 C Hall を使わずに Esplande の狭い部屋を使っているからかもしれません。

でも、5,000 人はないと思うのですが...

本題に入って、まずは今日の Genral Session からです。

 

 
 

General Session

 
 

Don McMillan

Don が JavaOne に帰ってきました。今回も、J2CE (Java 2 Platform, Comedy Edition) です。

すごいまじめな顔をしながら、ろくでもない話を早口でまくしたてていきます。

前半、スライドを使用せずに話だけだったのですが、全然分かりません ^^;; 自分の英語力のなさにあきれてしまいます。これが分かるようになるまでは何年かかるのでしょうか。

後半はスライドを使ってくれたので、なんとかついていけました。スライドの枚数と情報量のグラフを出して、枚数が多くなればなるほど意味はない、特に 50 枚以上は 0 である。ちなみにこのスライドの枚数も 50 枚を超えているので、意味はまったくないのだが... など、など。

やっぱり、こういうお遊び的な要素がないと !

 

Richard Green

まず、ニュースとして HP と Dell のデスクトップに Java がプリインストールされることが決まったようです。

さて、スピーチに戻りましょう。

ソフトウェア開発者を Complexity と Coding Required を軸にした 4 つのエリア (Technician, System Architecture, Corporate Developer, Integrator ) に分割して、どの分野でも Java が使われるようにしていくこと、またそのためのプランを説明しました。

特に Corporate Developer と Integrator においてまだ Java の浸透度が低いのでそこをてこ入れしていくのだそうです。

そこで、VB に対抗するツールとして取り上げたのが、話題になっている Rave です。デモだけだと、簡単そうにアプリを作ってましたが、使いこんでみると違うかもしれません。とりあえず、見た目は簡単そうです。

Early Access が秋とのことなので、もう少し待つ必要があります。

もう 1 つが、Wireless Connection Wizard です。Illustrator で絵を作ることができ、Wizard でそれをスキンのようにとっかえひっかえできることをデモしてました。

こちらは今日から Early Access がダウンロードできるようになったそうです。

また、彼の持論である Java Ecosystem を説明し、Volume - Developer - Application をつなぐ輪によって正のフィードバックがかかることで Java がより拡大していくことを示しました。

James Gosling

はじめは恒例の T-Shirts。今年は投石器のような投 T-Shirt 器が登場しました。かなり大きいものです。ただ、迫力の割には、威力は??? それに加えてセッティングが面倒くさそうです。

T-Shirt もどんどんとエスカレートしてしまったので、来年からはコンテストを行うそうです。ルールは

  • T-shirt を聴衆に投げる機器
  • Cool で欠点のないこと
  • 基本的なルール
    • 消防署長を悩ませないようなもの
    • ステージにフィットする大きさ
    • 観客に届くこと
    • (スリングショットはカリフォルニアでは禁止されている)

詳細は後で発表されるようです。

ここ 2, 3 年、Gosling のセッションではリアルタイムに関するものが必ず取り上げられています。今年も、まず登場したのが、火星探査機。昨日打ち上げが行われたのですが、これは Java は使われていないものだそうです。

Java が使われている方は、実機が会場に持ち込まれていました。Locky 7 という名前です。思っていたより小さいものです。探査機のコントロールには RTSJ が使われており、地球側のシステムと通信しながら制御を行うのだそうです。ちなみに地球側のシステムも Java だそうです。

次に、店舗における在庫補充ロボットを紹介しました。三菱製のロボットアームを使用しています。商品にはすべて ID タグがつけてあるという前提で、商品が売れたらそれを知ることができます。するとロボットが在庫から商品を運んでくるわけです (といってもアームが届くところにおいてあるので、UFO キャッチャー見たいなものですが...)。

このシステムも RTSJ を使用しています。

その他に Jentro AG の声でナビゲーションをしてくれる携帯電話アプリケーション (GPS が必須です)、JXTA を使用した渋滞情報などを紹介しました。

JXTA を使ったものは、車に GPS をつけて JXTA アプリケーションを動作させます。アプリは車の位置と渋滞状況を他の車とシェアします。車が多数になればなるほど、緻密な渋滞情報を得ることができるようになるわけです。

 

 
 

Technical Session

 
 

今日、聴講したのは次の 4 セッションです。

  • TS-1496 More Programing Puzzlers
  • TS-2690 Performance Monitoring for the Java HotSpot Virtual Machine
  • TS-2173 Java Web Start int he Trenches: Tips for Developing JNLP Application
  • TS-1759 Grid Computing Using Java Technology, Jini Network Technology, and Web Services

HotSpot はほとんどツールの使い方だけになってしまっていまいち。

また、Grid Computing も前半はおもしろかったのですが、後半は非常につまらなかったです。彼らが、Grid Computing 用の Middleware を作ったという話なのですが、何のためにどのようにして使うのかの説明もなく、既存の Grid Computing 用のライブラリ (例えば OGSA と) と何が違うのか、どこが優れているのかなどの背景事項をまったく説明しないからなのです。

研究成果を発表するにしても、それはないよなぁという感じです。

というわけで、Programing Puzzler と Java Web Start についてレポートします。

TS-1496 More Programming Puzzlers

去年の横浜の JavaOne でも行われた Programming Puzzler が再び戻ってきました。ただ、内容は横浜の焼き直し。SF の焼き直しを横浜で行うことはよくありますが、横浜の焼き直しを SF でやるのははじめてではないでしょうか。

横浜とはちがって、壇上に回答者をあげることはしませんでした。回答者がいたほうが盛り上がると思うのですが。

問題は 10 問。裏をかくような問題も多いです。

さて、問題です。

String Out
    public class Puzzling {
        public static void main(String[] args) {
            String a = new String("blah");
            System.out.println(a);
        }
    }
 

    public class String {
        private java.lang.String a;
 
        public String(java.lang.String a) {
            this.a = a;
        }
    
        public java.lang.String toString() {
            return a;
        }
    }

選択肢

  1. Won't Compile
  2. blah
  3. Throws Exception
  4. Other

答えはどれだと思います。

正解は 3 です。

理由はよく考えてみてください。この問題は会場のウケが一番よかったものです。逆にいえば、だまされた人が一番多かったということなのでしょう。

 

TS-2173 Java Web Start int he Trenches: Tips for Developing JNLP Application

セッションのはじめにどのくらいの人が JWS を使っているのか聞いたところ、ほとんどの方が使われていました。もちろん私も使っています。でも、この結果は結構ビックリ。まだ全然メジャーになっていないと思っていたのですが、考えを改めないと。

このセッションでは JWS を使う上で Configuration, Programing, Packageing & Deployment の 3 つの段階それぞれの Tips を紹介するというものです。

すべての Tips を書くわけではないですが、気になったものを上げておきます。

Conf Tip

アイコンファイルと description は必ず用意すること。

特にアイコンは指定されている複数の解像度、色深度のものをすべて用意したほうがいい。

Conf Tip

できる限り遅延ダウンロードを使用する。立ち上げの時に必要のない JAR やライブラリはで立ち上げの時にダウンロードしてしまうと、起動時間が長くなってしまう。

遅延ダウンロードさせるには <resource> タグの中のタグ (<nativelib> など) の属性として次のように書く download = "lazy"

Conf Tip

複数の JNLP ファイルを使用する。

アプリケーションは引数の違いなどで設定をすることができるが、これをダイナミックに行うには複数のパラメターを変化させた JNLP を複数用意する

Conf Tip

オフラインでも使えるようにする

オフラインかどうかは本当は問題ではなくて、リソースにアクセスできるかどうかが問題なのである。

Prog Tip

スタンドアローンでも使用できるようにしておく。

デバッグ時はスタンドアローンで行うほうが便利。

Deploy Tip

Web アプリケーションとしてパッケージ化する。また、JNLPDownloadServlet を使用する。

そうすると、ホストを変えたとしても、サーブレットがそこを補完してくれる。また、バージョニングや部分ダウンロードも行える

Deploy Tip

HTTP プロキシーに気をつける。

ブラウザ-の設定から HTTP プロキシーを検出できるが、完全とはいえない。

 

 
 

Birds of a Feather (BOF) Session

 
 

今日聞いたセッションは 1 つだけです。

  • BOF-2040 Java 2 Platform Profiling: Future Directions

BOF-2040 Java 2 Platform Profiling: Future Directions

今までプロファイラは JVMPI を使用してきたのですが、Tiger から新たなインタフェース JVMTI が導入されます。セッションに 5 分ぐらい遅刻したら JVMTI が何の略なのかの説明は終わってしまい、分からないままです。JCP のサイトにも書いてないし.... JVM は Java Virtual Machine、最後の I はインタフェースだと分かっているのですが、さて T は何のことなのでしょう。

プロファイルを行うには通常 3 種類の方法が考えられます。

  1. In-Process で Java を使用
  2. In-Process で Native コードを使用
  3. Out-Process

1 の方法では JVM へのアクセスに JPLIS を使用します。ただ、これも何の略なのか分かりません。

2 の方法が現在のプロファイラで最も一般的に使われている方法です。いままでは JVMPI を使用していたのですが、Tiger からは JVMTI を使用します。

3 の方法はデバッガで使用されていた手法です。ただ、Tiger ではこの方法でプロファイルもできるようになりました。というかデバッグのためのインタフェースとプロファイルのためのインタフェースが統合したようです。

3 では JVM とのやり取りを JVMTI、プロファイラのプロセス間通信に JDWP、アプリケーションのプロセス外にあるプロファイラのフロントエンドとのやり取りに JDI を使用します。

JDWP は Java Debug Wire Protocol、JDI は Java Debug Interface で、JPDA (Java Platform Debugger Architecture) で決められているものです。

Tiger の JVMTI は JVMPI や JPDA の JVMDI に代わるインタフェースです。機能的に JVMDI のスーパセットになっています。

かなり強力で、バイトコード単位でいろいろと制御やイベントを扱うことができるようです。また、あまりにも細かい情報が多数あるとそれに埋もれてしまうのですが、興味のあるものだけ指定して情報を取り出すことが可能になりました。

もちろん、HotSpot などと一緒に動作させることも可能です。

機能の分類はメモリやスレッドにはじまって、オブジェクト、フィールド、ローカル変数、JNI など多岐にわたっています。例えば、スレッドではスレッドのスタート、すべてのスレッドの取得、スレッドのサスペンド、サスペンド中のスレッドの一覧取得などができます。

ヒープに関する機能では強制 GC、ヒープのルートの取得、reachable object のイテレーションなどが行えます。

イベントも JVMPI に比べるとずいぶんと強化されました。

  • Breakpoint
  • Class File Load Hook
  • Class File Load/Prepare/Unload
  • Compiled Method Load/Unload
  • Data Dump Request
  • Data Reset Request
  • Dynamic Code Generation
  • Exception Throw/Catch
  • Field Access/Modification
  • Frame Pop
  • GC Start/Finsh
  • Method Entry/Exit

もちろんオブジェクトのアロケートや開放も検出できます。

JVMPI に比べるとかなり強力になっているので、さまざまな情報を取得することができます。それをプロファイリングに活かせば、パフォーマンスチューニングの力強い味方になってくれると思います。

 

 
 

おまけ

 
 

昨日の訂正から。お菓子もコーヒも出てました。量や回数は少なくなりましたが。

ところで、今日は Sun のアジアパシフィックのパーティに出席させていただきました。といっても 20 人弱ぐらいでわいわいとおしゃべりをするぐらいの規模です。そこには、Sun の藤井さんや NEC の岸上さんなども参加されており、いろいろとお話を伺うことができました。藤井さんははじめてお会いするのですが、岸上さんは第 4 回の JavaOne で出会って以来ほとんど JavaOne でしかお会いしないという JavaOne 仲間なのです。その他にも中国やニュージーランド、シンガポールなどからも参加されていたようです。今回の JavaOne の中で一番英語を喋ったかもしれません ^^;;

今日、 1 セッションしか BOF を聴講できなかったのはこういうわけです。

 

(2003.6.11)

 
 
Go to Contents Go to Java Page