|
6/29 第 2 日 |
|||
一時期の熱狂的な雰囲気はなくなり、落ち着いた雰囲気の JavaOne です。 それだけ Java が浸透したということでもあるとは思いますが、とんがったところがないのはちょっとさびしいところです。 それでも参加者は去年よりも増えているような気がします。しかし、参加者がおじさん化してきていると思うのは私だけでしょうか。もっと若い人が参加してくればいいと思うのですが。 ところで、今日も General Session に並んでいたら、Compuware のオレンジの人がいました。でも、昨日みたいに大騒ぎすることなく静かにしてます。静かにしていると逆に気味が悪いです ^^;; さて、今日聴講したセッションは
今日は BOF は後で書く理由により聴講しませんでした。
|
High-Performance XML Processing: Techniques and Tips With the Java API for XML Processing (JAXP) 1.3JAXP 1.3 で私にとって一番うれしいのは XPath が使えるようになったことです。今までは XSLT のスタイルシートの中で使用することはできましたが、プログラム中では使えなかったのです。 使用するにはまず XPathFactory オブジェクトを static なファクトリメソッドで生成します。次に XPathFactory クラスの newXPath メソッドを使用して XPath オブジェクトを取得します。 実際に XPath を使用して該当するものを取り出すのは evaluate メソッドです。引数は XPath の評価式、InputSource、戻り値の型です。evaluate メソッドの戻り値は Object になります。Tiger に特化しているらなら Generics を使ってもらいたいところですが、そうもいきません。ちょっと残念。 評価式をコンパイルしておくことも可能です。それには XPath#compile メソッドを使用します。 そのほかの機能としてXInclude、DOM Level 3、SAX 2.0.2 などがあげられています。
Sharing the Virtual Machine昨日の General Session で J2ME の KVM でマルチタスクという話がありましたが、それの J2SE 版です。というかこっちが先のようですが。 1 つの VM の中に仮想的に複数の Java アプリケーションを動作させるというコンセプトです。Java による Java のための仮想 OS のような感じです。 なぜ、こんなことをするのでしょうか。その理由として
起動時間が短くなるというのはすでに JVM が動作しているので、コア部分のクラスローダリングが不必要となるためです。また、メモリも読み込みのみのヒープを共有することによって、使用量を抑えることができます。一種のシェアードライブラリのようなものです。 パフォーマンスの向上は動的コンパイルによるものです。コアでよく使われるライブラリはすでに動作しているアプリケーションで動的コンパイルされている可能性がたかくなるので、再び動的コンパイルする時間が不必要になります。このため、起動してすぐに動的コンパイルの恩恵にあずかることができるわけです。 動作している複数のアプリケーションが同士の関係も重要なキーとなります。Java のオブジェクトであればクラスローダを変更することで分けることができますが、JNI も同じようにそれぞれのアプリケーションで分離できるようになっています。これらは JSR-121 の Isolation がベースとなっているようです。
Observability Architecture in J2SE Platform Release 1.5Tiger ではいろいろと JVM の内部情報が見れるようになったのですが、そのあたりの話です。また、内部情報だけで通常のオブジェクトから情報を引き出す方法についても解説しました。 このようなことをおこなうツールや API には
などがあります。 まず、java.lang.instrument パッケージの説明から。java.lang.instrument パッケージはいわゆる Bytecode Instrumentation (BCI) を実現するための API です。BCI といえば Javassist が有名ですが、本家のほうも対応を始めてきました。基本的には ClassFileTransformer インタフェースをインプリメントしたクラスを記述します。コードを変更するためのエージェントは premain メソッドを持ちます。premain メソッドの中で、ClassFileTransformer インタフェースをインプリしたクラスを Instrumentation オブジェクトに登録します。 起動するときには -javaagent:[エージェントのJARのパス]=[エージェントへの引数] というオプションを使用します。 次の JVMTI は J2SE 1.4 までのプロファイリングインタフェースの JVMPI とデバッガインタフェースの JVMDI が統合されたものです。Tiger ではまだ JVMPI も JVMDI も残っていますが、次の Mustang からは JVMTI だけになる予定です。
|
おまけ |
||||||||||||||
今日のランチはチキンのサンドウィッチ。去年と同じような感じです。写真ではハンバーガみたいですが、サンドウィッチです。うしろにある紙袋にはクッキーが入っています。直径 10 cm ぐらいの大きなソフトクッキーです。日本の Starbucks で売っているのと同じです。 あともう 1 つはキャロットケーキ。これがまたアメリカの典型的なケーキでむちゃくちゃ甘い。私がいうくらいなので、甘すぎて食べられない人も多いようです。それでも、私は食べましたが ^^;; ついでに昨日の絵を見に行ったら 3 枚完成していました。残り 1 枚もほとんど完成に近いようです。それぞれ Java をイメージした絵のようです。 その下の写真は別に変なものではなくて、会場で演奏していたバンドです。スライドギターがなかなかよかったのですが、あまり聞いている人がいないのでかわいそうなぐらいでした。
さて、今日 BOF を聴講しなかったのは、日本からの参加者でカニを食べに行ったからなのです。みんなで 15 人。結構な人数ですね。 いきなりきました。カニ丸ごと ^^;; カニを食べに行きましょうといわれていたときには、まさかこんなのが出るとは思いませんでした。かなり油があり、ゆっくり食べていると油が固まってきておいしくなくなってしまいます。黙々と食べてしまいました。食べ終わったら手がベトベト ^^;; その後ケーキも食べましたが、それほどおなかいっぱいになっていないのです。アメリカに来てから胃が拡張しているのかもしれません。 ちなみに値段は時価。英語で時価のことを Quoted Price ということをはじめて知りました。勉強になるなぁ。
(2004.6.29) |
|