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