7年ぶりに日本でJavaOneが開催されました。
私が4月4日に参加したセッションについて、技術的な内容については他の方々のBlogを参考にしてください。
ここでは私の感想を主に書いて、他には備忘録を書きたいと思います。
【 参加したセッション】
- 9:00-11:00 [JK1-01] Strategy Keynote
- 11:15-12:15 [JS1-04] 櫻庭 祐一 「NIO.2を使って、簡単ファイル操作」
- 12:30-13:30 ランチセッション-GlassFish
- 13:15-14:15 [JS1-14] 斉藤 賢哉 「Java EE 6時代におけるエンタープライズシステムのあり方」
- 14:30-15:30 [JS1-21] John Clingan 「Pragmatic Cloud and PaaS with Java EE 7 (and GlassFish)」
- 15:45-16:45 [JS1-33] 寺田 佳央 「What's coming in Java Message Service 2.0」
- 17:00-18:00 [BoF1-02] 佐藤 直生 「Windows AzureでのスケーラブルなJavaアプリケーション構築」
- 18:15-19:15 [BoF1-04] 谷本 心 江里口 温 「トラブルシューターの頭の中身 ~7年間のJavaトラブルシュートサービスから」
- 19:30-20:30 スペシャルセッションLT
1. 9:00-11:00 [JK1-01] Strategy Keynote
このセッションでは、主に下記の2点についての報告があった(と思う)
- これまでの標準化の進捗状況や今後のスケジュールについて
- Java 7に搭載される各Editionの機能紹介
(Java SE 7/Java EE 7/Java FX 2.0/GlassFish など)
あとはJavaがここまで発展したのは、コミュニティの存在が大きかったらしい。
各講演の中でスピーカーは常々、使ってみて不便なところがあったらメーリングリストにメールを投げて欲しい、コミュニティで発言して欲しい、と仰っていたのが印象的。Javaを一緒に作っていきましょう!という強いメッセージを感じた。
続いて、Education分野であるOracle資格についての講演があった。
この中で話題になったのは、以下の2点。
・Javaの資格がOracleDBと同様にBronze、Silver、Goldという3形態になること
・現在のJava資格の合格者は日本だと合格点ぎりぎりだが、インドではほぼ満点。
日本人、頑張らないと仕事がなくなりそうって感じた。
資格については興味があったので、資格のレベルをまとめる。
【Gold】単独で開発が可能なレベル
【Silver】上級者のサポートの元で、開発が可能なレベル
【Bronze】Javaに関する基本知識レベル
そいや今はJavaSEに対してはOJC-Pが、JavaEEにはOJC-WCが、対応している認識だけど、これからはどうなるんだろう??
2.11:15-12:15 [JS1-04] 櫻庭 祐一 「NIO.2を使って、簡単ファイル操作」
■NIO2でできるようになったこと
・ファイルのコピーが簡単になった
・ファイルのメタデータの操作が可能になった
・ディレクトリツリーに対する操作も簡単になった
・ファイルを使用する際に冗長だった記述が非常にシンプルになった
これまで私個人の見解としては「Javaはファイル操作が苦手だ、」というイメージを持っていたけど、NIO2の登場によって、そんなイメージも完全になくなりそうな予感。
Java FXと組み合わせることで、Javaでかなり使い勝手の良いファイル操作アプリが作れそうな予感もする!
3.12:30-13:30 ランチセッション - GlassFish
GlassFishとはOracleが提供しているアプリケーションサーバーの開発プロジェクトのこと。
他に有名なJavaのアプリケーションサーバーにはTomcatがある。
GlassFishのライセンスはオープンソースになっているものもある。
GlassFish3はJava EE 6に、GlassFish4はJava EE 7に対応。
セッション開始時には、GlassFishのTシャツを投げる。
また、終了時にはGlassFishのシールを配布する、というイベントがあった。
4.13:15-14:15 [JS1-14] 斉藤 賢哉 「Java EE 6時代におけるエンタープライズシステムのあり方」
■Java EE5からの特徴
・開発容易性を実現
→POJO:シンプルなクラス
→アノテーション:XML地獄からの開放・テスト容易性の確保
■Java EE 6の特徴
・JSF2.0(Java Server Faces)
Webアプリケーション標準フレームワーク
【特徴】
1.HTMLにJSFタグを埋め込むだけ(モックアップが不要)
2.JSF拡張フレームワーク
3.JS + JAX-RSパターン(ネットワークの切れ目=担当者の切れ目)
・EJB(Enterprise Java Beans)
トランザクション管理、インターフェースが省略可
シングルトンSessionBean
■デザインパターン
・EE 5:プレゼンテーション層+ビジネスロジック層+DAO層
※各層を疎結合にすることが目的。
※ただし、各層をつなぐための”グレーコード”(DTO)が必要。
詰め替えを行うための不要な処理が必要となり、コード量が増大
・EE 6:フルスタックなフレームワーク
※CDIによって各コンポーネントの結合が楽になる
※”グレーコード”(DTO)が不要
■CDIを使用することで、
保守性・生産性がアップするらしい。
アプリ実装範囲の軽減することができるらしい。
モデリングが容易になるらしい(オブジェクト指向、モデリングスキルが必要だけど)
設定ファイルが不要になるらしい
5.14:30-15:30 [JS1-21] John Clingan 「Pragmatic Cloud and PaaS with Java EE 7 (and GlassFish)」
このセッションに関しては途中までしか把握できなかった。
把握できた内容は以下の通り。
Java EE 7は「PaaS」でクラウドに対応するよう作られている。
そのために、WebサーバとしてGlassFishが提供されている。
・SaaS:Software as a Service → PaaSに加えてWebアプリまでを提供。Webメールなど
・PaaS:Platform as a Service → IaaSに加えてWebサーバまでを提供(Webアプリとデータは自分で用意)
・IaaS:Infrastructure as a Service → サーバそのものを提供(Webアプリサーバなどは自分でインストール)
SaaSは業務でも開発しているものなので把握していたが、他の二つについてはきちんと把握できなかったから、復習になった。
6.15:45-16:45 [JS1-33] 寺田 佳央 「What's coming in Java Message Service 2.0」
大きな変更点
・アプリケーションサーバを利用
→JDBCと同じように、コネクションプーリングの利用が可能
・EJBコンテナを利用して
→コネクション接続の記述不要(コード削減)
・例外の実装方法が変更
→7のtry-with-resourceに対応(コネクションのクローズ処理を書かなくてOK)
・ある例外を非チェック例外にした
→try-catch不要(rollbackの記載が不要)
・Messageスケジューリングもできる(非同期通信として処理可能)
今まで使ったことはないが、かなり使いやすそう、というイメージを持った。
GAEだとTaskQueueがあるけど、そんな感じで使えるんだと思う。
AjaxでTaskQueueを動かしておいて、完了時にMessageを返して、って感じで使うといいのかなぁ~って思った。
7.17:00-18:00 [BoF1-02] 佐藤 直生 「Windows AzureでのスケーラブルなJavaアプリケーション構築」
サーバは世界に6台(日本にはない)。アプリデプロイ時にメインサーバを選択できる。
(ただし、すべてのサーバに自動バックアップされる)
■Azureで使えるもの
・テーブル:Key-Valueストア
・キュー
・BLOB:ファイル形式
・Drive:マウントしてローカルドライブのように使える
・データについては、SQL Azure DB(SQL Server)を利用
→論理サーバを提供
・Trafic Manager
→データセンター毎にクラッシュした場合、他方のセンターへ割り振り
・staticなデータはキャッシュしておく
(キャッシュサーバは日本にもある)
GAEとは異なり、デプロイ時にメインサーバを選べたり、サーバの設定ができるらしい。
GAEと同様にJavaアプリが動くので、状況によって使い分けることが大切になりそう。
あとは互いの特徴を調べて比較しないと何とも言えんな。
8.18:15-19:15 [BoF1-04] 谷本 心 江里口 温 「トラブルシューターの頭の中身 ~7年間のJavaトラブルシュートサービスから」
事例の紹介と、それに対し「どのように原因を究明するのか」の実演が行われた。
キーワードはこちら。
java -XX:+HeapDumpOnOutOfMemoryError
jvisualvm
jstack
Jメーターで負荷テスト
私自身、作成したロジックのパフォーマンスを実際に検証することはなかった。
特にWebアプリを作っていると、ApachやTomcatの設定、SQLパフォーマンスに目が行き、Javaそのもののパフォーマンスを考えることが少ないように思う。
だけど、今回この話を聞いてパフォーマンス検証の重要性を感じた。
ヒープダンプを取ったりスレッドの状態をチェックしたりやってみよう。
Eclipseのプラグインでも見れるのかな?
9.19:30-20:30 スペシャルセッションLT
ここでは何人だったかな?5分で思いのたけを話すLTでした。
LTだけあってかなりユニークなプレゼンもありました。
一番びっくりしたのは「;」なしで色々実装した、というプレゼン。
そんな発想が私にはなかったので。。。ただただ「すげー」だった。。。
スペシャルセッションではご飯も出ました。
おにぎり2個とから揚げとたくあんと出し巻き卵と・・・
そんなくらいだったかな?
おにぎりの1個はJavaマスコットのDukeになってましたww
初日はこんな感じでした。
かなり刺激的な一日で途中からパンクしていました。。。
あとは、業務の中で、JavaでWebアプリ開発をしているけど、Javaについて知っていることは、ほんの一部でしかないことを実感しました。
全部を全部、自分だけで勉強することは難しいから、業務で知りえた範囲から一歩外側も勉強して知識を少しずつでもいいから増やしていきたい、と感じました。
2日目の5日の分については、また後日アップしたいと思います。