Java Server Faces 2.0

なにこのケバケバしいプレゼン
かなり会場には余裕があって、みんなJSFに期待してないというのがわかる。
裏番組で、Webフレームワーク比較ってのがあるのも大きいかと。
で、なんか、開始20分以上たってもまだJSF1.0/JSF1.2での不満点とか、Railsのようにしてって言われる、みたいなことを話してる。30分たって、やっと新しい仕様について。あと30分ですよ。
コンポーネントの作成は簡単になるよ、と。なんかxhtmlを書いてタグ定義して、リソースをまとめればいいとか
でも、具体的なコードの説明はなし。
Faceletはコアの一部になる?とはいえデモのコードはJSPだな。
ProjectStageってのが追加されて、開発中・運用・システムテストユニットテストで挙動が変えれる。


デモはじまた。
つうか、デモで、開発環境がEmacsの人とか、初めて見た。
こんな感じのコンポーネント作る。

<wow:foo/>


そのためには、こんなfoo.xhtmlファイル

<html xmlns="..."
  .../>
<p>Template</p>
</html>


やた!コンポーネントとして表示された。
ちょっといろいろあって、foo.xhtmlはこんな感じに。

<h:panelGrid>
<h:inputText name="user"/>
<h:inputText name="password"/>
<h:commandButton/>
</h:panelGrid>


このフォームから情報を取るのはこんな感じのJavaコード

@Xxxx("xxx.css")//なんかアノテーションで必要な画像ファイルなどを指定してた
@Xxxx("xxx.gif")
public class foo extends UINamingContainer 
  implements CompositeComponent
{
  public void procdessUpdates(FacesContext context){
    VaueHolder uwername = ths.findCOmponent("username");
    context.getExternalContext()
      .getRequestMap().put("groovyCalled", username.getText());
  }
}


ここまででもうすでにあと10分。早口になった。
Ajaxのためにはいろいろ必要ですね、と。また具体的なコードはなし。
"faces"っていうネームスペースを登録したよと。
ってか、なんか話すときにマイクが近くなったりして声が瞬間的に大きくなるのが気持ち悪い。
あと5分だけど、ちゃんとデモできるの?となりの部屋からは、もう拍手とか聞こえる。
なんか、長いJavaScriptを開いて、なんもわからん。
NetBeansがちゃんとJavaScriptシンタックスハイライトするということだけはわかった。
Ajaxの動きをしてますよっていうのを見せられても意味ないわ〜


てか、おわた。
JSF2.0がどうこうというより、このプレゼンはひどかった。
|

ということでGoogle本社に行ってきた

マウンテンビューというところにあるので、電車で移動


マウンテンビューでGoogle行く前に、一緒にいった人の家によったとき、かたつむりがいたので写真とったら、かわいく撮れてた。


で、Googleでは、なんかGoogleの日本人技術者と交流するイベントがあったらしい。
そこで、ちょっとGoogleのサービスの開発裏話。


まずは「Google急上昇ワード」。検索件数が多くなったものを表示するiGoogleガジェット
テレビでなにかが取り上げられると、PCよりも携帯のほうがするどい反応があるらしい。
で、最初は60分ごと更新だったのだけど、こういうのはリアルタイム性がないと面白くないので、20分まで短縮した。
あとで丸山先生が聞いたところによると、MapReduceで処理が帰ってくるのに20分かかるらしい。


次に、Google Mapsに写真をはりつける機能
これ話したのはヘンリミッチェルという人
英語で自己紹介したあと、「というわけで・・・」と日本語、それもぼくよりうまい日本語で話はじめた。
うまく緯度経度を使うために、2次元座標をヒルベルト曲線を使って1次元座標に変換


もうひとつ、スポンサーとのやりとりについての話してたけど、日本人の人がうまくない英語で話してた。
ここまで日本語で話してたのに、どうして、ここまで無理して英語なんだろう?と思ってた。
丸山先生いわく、こんだけ英語へたでもgoogle入れるよ、っていうデモなんじゃね?と。


てことで、セッションのようなものは終わり。
ちょっと接点があったGoogle技術者の人と会うことができて、話すことができた。
あと、ルービックキューブもらった。


追記:このイベントだったらしい
Google Japan Blog: シリコンバレーにて Japan Open House を開催します

Java Servlet 3.0 API: What's new and exciting

Servletの仕様。
Webのフレームワークがあるとかなんとか言っても、やっぱり基本はServlet

プラガビリティ

つけたりはずしたりのやりやすさ。
要するに、フレームワークを使うときとか。いまだと、フレームワーク使うときに、ドキュメントに書いてある通りにweb.xmlをさわる必要があって、なんか儀式みたいなのが必要だったんだけど、jarファイルのMETA-INFフォルダに固有の設定が書いてあるweb.xmlを入れれるという話。
あと、初期化時にちょっとweb.xmlをいじくれるAPIが用意される模様。でも、できることはServletとFilterの登録のみ。
web.xmlの情報を取ってくるような話はしてなかった。実は入るとか、そんなサプライズはなさげ。
とりあえず、こんな感じでサーブレットとかフィルタが追加できます。

@ServletContextListener
public class MyListener{
	public void contextInialized(ServletContextEvent sce){
	ServletContext sc = sce.getServletCont();
	sc.addServlet("myServlet", "sampleServlet", "foo.bar.myservlet", ...);
	sc.addServletMapping("


	sc.addfilter(myfilter", "
	sc.addfiltermapping(...

Ease of Development

アノテーション
これがどうして2.5でできなかったのかと思ってるのですが。

@Servlet(urlMapping="/foo"})
public class SimpleSample{
}

とか

@Servlet(urlMapping="/foo", "/var"),name="MySevlet")
public void SampleUsingAnnotAttribute{
  @GET
  public void handleGet(req, res){
  }
}

非同期サーブレット

コメット対応とかWebサービス呼び出しとか
こんな感じ。


ServletRequestに追加されるAPI
suspend(long timeoutms)
void resulme();
void complete();
boolean issuspended();
boolean isresumed();
boolean istimeout();

ServletResponse
void disable();
boolean isdsabled();
void enable();

セキュリティ

loginとかlogoutとか。
id:taichitaichiがどうすんだよとDISってた。
まだExpert Groupで議論中

その他

HttpOnlyCookies
id:taichitaichiがDISってた


保留中
Fileアップロード
コンテナ共通のinit-param
とりあえず今はearly draftで、public reviewは今年の夏。