遅くなってしまいましたが、4月4日と5日に開催された
JavaOne
の二日目の5日の参加報告です。
【参加したセッション】
- 9:00-11:00 [JK2-01] Technology Keynote
- 11:15-12:15 [JS2-01] Chuck Munn Lee 「The Java EE 6 Programming Model Explained」
- 12:30-13:30 ランチセッション-エンジニアに直接質問してみよう!
- 13:15-14:15 休憩
- 14:30-15:30 [JS2-24] 輪島 裕之 「ビジネスの継続的改善に貢献するJava EEアーキテクチャとアジャイル開発」
- 15:45-16:45 [JS2-33] 山本 裕介 「JSR 353: Java API for JSON Processing」
- 17:00-18:00 [JS2-41] Douglas Clarkeis 「Java Persistence API on the Grid」
- 18:15-19:15 [BoF2-04] 木村 貴由、寺田 佳央 「The New JSR-107 Caching Standard 」
- 19:30-20:30 スペシャルセッション
1. 9:00-11:00 [JK2-01] Technology Keynote
■SE 7での主な変更点
- MapやらListの宣言時の型宣言を行うジェネリックス
-> 左辺だけ記述して、右辺については省略可能
- Switch文の条件にStringが使用可能に
- try-catchのcatch句で条件をor表記可能に
-> 例) catch(NullPointerException | NumberFormatException)
- FileStreamのclose()が不要になる
-> try-with-resourceを使って自動close
(1)については非常に嬉しい!
MapのMapを作ったときには1行が200文字程度になったりするから・・・
ま、そんなMapを作るくらいならBeanをうまく作った方が現実的なような気がしますが(汗)
(2)これについても嬉しい!
Stringの比較をする際にはIf文が大変なことになるから。
それがSwitch文で書ければ、分岐が分かりやすくなる。
(3)今まで予期したExceptionのCatch句が複数になる場合、
ログ出力とかはそのクラス内でprivateメソッドを作って共通処理化して、
そのメソッドを呼び出すようにしていた。
結局テストのし易さとかで判断するようになると思うけど、
今はまだ旨みが分からんな。。。
(4)これってDBのトランザクションもだっけ?
それだったらかなり嬉しい!ちょっと調査が必要だな。
2.11:15-12:15 [JS2-01] Chuck Munn Lee 「The Java EE 6 Programming Model Explained」
正直なところ、英語も早かったし、通訳も早かった。。。
途中まで、というか最初しか付いていけなかった。
分かった範囲では、次の感じ。
- これまでWeb.xmlに書いていたサーブレットの設定がアノテーションでできる
- 同じくフィルターの設定もアノテーションでできる
これでweb.xmlの記載量が減ることは確か。
でも、一方のサーブレットから他方のサーブレットを呼びたい時はどうすんだ?
サーブレットクラス自身には自分のマッピングルールだけ書けば、
他のサーブレットからでも、そのマッピングルールが参照できるってこと?
1ユースケース内であればイイと思うけど、ユースケースの入り口のような
複数箇所から呼ばれそうなサーブレットはweb.xmlに記載して共通化した方が
チーム開発では便利なような気がする。。。
フィルタに関してはSaStrutsでも同じようにできるようになるのか?
それならweb.xmlが太ることなく設定できるからいいかも。
けど、どのクラスに設定したかは探すのが大変になりそうだ。
でも、パッケージ構成とかクラス名とかを工夫すれば解決できるか。
ん~どうなんだろ??
3.12:30-13:30 ランチセッション-エンジニアに直接質問してみよう!
正直なところ、ご飯を食べてるだけで、ほとんど英語でディスカッションされていたので、
内容が分からなかった。。。
本来はネイティブな方が通訳になってくれて、日本語での質問がOKだったのに、10回中3回くらいしか日本語なかった。
4.13:15-14:15 休憩
ノートPCとケータイの充電が(私の体力も)切れてしまったので、カフェで1時間休憩した。
この間にGmailに来てたメールを処理したり、ブログ書くようにまとめ作業を行ったりした。
カフェは窓際に面していて、東京タワーやスカイツリーが見えた。風景写真を撮影している人も居た。
とても明るく開放的な雰囲気で、電源タップが用意されていたので、PCを触ったり食事をしながら雑談をしたり、って感じ。
あとは、各協賛会社のブースもあって、かなりにぎわっていた。
5.14:30-15:30 [JS2-24] 輪島 裕之 「ビジネスの継続的改善に貢献するJava EEアーキテクチャとアジャイル開発」
アジャイル開発の事例紹介が聞けると思って参加。確かに事例は聞くことができた。
他の会社がどのように開発スケジュールをひいているのか、を聞くことができた。
また、要員確保の方法と契約方法について、どのような契約方法があってどのような特徴があるのかを知ることができた。
6.15:45-16:45 [JS2-33] 山本 裕介 「JSR 353: Java API for JSON Processing」
TwitterだけでなGoogle、Yahoo!でも使用されているJSON(JavaScript Object Notation)。
現在最もポピュラーなWebAPIであるJSONについて標準化を行っていること、その内容についてお話いただいた。
XMLと比較して、JSONは設定が簡単で人間でも読みやすいのが特徴。
■Javaの標準化に関する略称
- JCP:Java Community Process Java標準化機構
- JSR:Java Specification Request Java新機能提案
- TCK:Technology Compability Kit 準拠判断テストツール
JSONについては、JSR353で標準化作業が行われている。
標準として策定されるためにはTCKも作成する必要がある。
このセッションの中で一番驚いたのが、
JSONのモデリングにVisitorパターンが採用されていること。
Visitorパターンをちゃんと把握しているわけではないけど、ちょっと違和感を感じた。
Template Methodの方がしっくりくるような気もするけど。。。
このJSR353が策定・承認されて、Javaの標準APIとして搭載されるようになれば、
独自でAPIを突っ込む必要がなくなるので、楽になるだろうなぁ。
6.17:00-18:00 [JS2-41] Douglas Clarkeis 「Java Persistence API on the Grid」
このセッションではJavaとDatabaseとの関連について話があったみたい。
正直私の頭では、ついていくことがかなり難しかった。。。
ついていけたのは
「Java Persistence API(JPA)は、POJOとDBのEntityをマッピングしてくれる」
ということ。
このマッピングルールはアノテーションまたはXMLで設定する。
実際のマッピング処理は、Entity Manager Factoryが行う。
JPAはキャッシュを行うので、パフォーマンス向上も図れる。
けど、キャッシュ上にあるデータとDB上にあるデータでの不整合発生が問題点だったからコントロールできるようにした。
それがData Gridらしい。
ここら辺から「コヒーエンス」とか知らない単語がバンバン出てきて付いていけなくなってしまった。。。
とりあえず、アノテーションとかXMLを利用することで、DBのエンティティとのマッピングを自動化できることが分かった。
具体的な使い方については、分からないので、調べて試してみる必要があるな。
7.18:15-19:15 [BoF2-04] 木村 貴由、寺田 佳央 「The New JSR-107 Caching Standard」
Java EE 7で本格導入されるJavaのキャッシュについてのお話。
寺田さんと木村さんの絶妙なやり取りが面白く、飽きないプレゼンだった。
JCache(JSR107)がJava Objectのキャッシュ。
使い方はConcurrentMapに類似していて、Java SE/EE 6以降で使用可能。
mavenを使用することでAPIをインポートすることができる。
Google App Engineではmemcahceが該当する。
キャッシュの対象にすべきデータは下記の4種。
- DBから取得した値(参照回数の多いデータ)
- ネットワーク越しの処理結果
- オブジェクト生成に時間のかかる処理結果
- 大規模Session情報(Sessionに大きな情報を格納すると読み書きバッファが多くかかるから)
GAEではレスポンス時間とデータ量がポイントになってくるから、
Sessionとキャッシュとリクエストとをうまく使い分けていく必要があると感じた。
どのタイミングで確定させるのがいいのかな?やっぱり詳細設計の段階かな~
8.19:30-20:30 スペシャルセッション
スペシャルセッションでは、各勉強会の主催者によるパネルディスカッション。
社内の勉強も大切だがそれだけでは不十分なんだな、って感じました。
私個人では自分で勉強会を立ち上げるのは、ちょっと厳しいので既存の勉強会から参加して勉強をしていこうと思った。