JavaOne2008 3日目 ようやくJavaOne開催
本日の収穫
- General Session
GeneralSessionではジェームズゴスリングがTシャツを投げて
華々しくスタート。今年のテーマはJAVA+YOU.
技術的なウリがなにかといわれると、実は今年はあんまりテーマが
定まっていない感じがしたかも。昨年に引き続きJavaFXかなあ?
- Java Platform, Standard Edition - Youthful Maturity -
主にModuleとスクリプティングの話。あ、JavaSE7はどうやら2009年2Qらしいですね。
Scriptingは今は主にJavaScriptだけど、今後はどんどん増えていくような話みたい。
どんどん状況によって言語を切り替えるのが今後の主流ですね、みたいなはなし。
Moduleは大きく分けて、moduleキーワードとJAMパッケージの説明
moduleは今までのpackageだけの結構フラットな構造から、もう少し細かい制御を
するための新しいキーワード。
サンプルはこんな感じ。
まずmoduleキーワードで同一モジュールにはいるやつを指定
module org.netbeans.core; package org.netbeans.core; public class Hoge { module int aaa; }
それを使いたい奴も同じmoduleにしておけば、
同一moduleとして扱われるようです。
module org.netbeans.core; package org.netbeans.core.utils; public class ClassUtil { Hoge h; }
で、package-infoみたいなmodule-infoなるものを書くみたい。
これはアノテーションベース。
@Version("7.0") @MainClass("org.netbeans.core.Main") @ImportModule(name="java.se.core", "version=1.7+") @ModuleInitializationClass(".......") module org.netbeans.core;
で、JAMパッケージにはこのmodule-infoが必須の模様です。
次はモジュールはモジュールでもJavaSE7自体をモジュール化してしまう話。
つまりでかすぎるので、JavaEEと同様プロファイルで分割するみたい。
位置づけ的にはJavaSEのsubsetになるみたいだね。
以下のようなのが出来るらしい
- Full JavaSE profile
- Rich client profile
- Headless profile
- More Effective Java
本日の目玉とも言える、More effective javaのJoshua Blochさんによるセッション。
はじめて見たんですが、すごいエネルギッシュなヒトでちょっとびっくりしましたw
セッションでは主に次の2点のEffectiveな使い方を説明
GenericsのEffecitveなのが意外と少なかったらどうやら去年やったみたいw
今年はPECS(Producer Extends, Consumer Super)の法則だけ。
これはジェネリクスのワイルドカードの使い方で、何かを生成するメソッドは
その引数をextendsとしておき、逆に何かを消費するメソッドはsuperを使うように
しましょうという法則みたいです。
つまり、
public class Stack<E> { public void pushAll(Collection<E> c) {.....} public void popAll(Collection<E> c) {.....} }
ではなく、
public class Stack<E> { public void pushAll(Collection<? extends E> c) {.....} public void popAll(Collection<? super E> c) {.....} }
としましょうってことのようです。
こうすることで、型としてのある一定の厳密性を保ちつつ、
かつあまり厳密すぎないジェネリクスが実現できるとの事。
Enumのほうも有用なテクニックだったのですが、
既に使っていたのでほうほうと聞きながら納得。あとは本を買うしかw
ちなみに!本に名前いりのサインしてもらいました^_^
あとこの本楽しみに待ってたよ!って言ったら、長いこと待たせてごめんねと言われちゃった^^;
最後はがっちり握手で。
- Server side technology
-
- Jersey
atdkk