JavaOne2014 2日目メモ (9/29)
2日目。朝は霧が出ていて少し寒いが、日中になると日差しが出て半袖でも良いくらい暑くなる。今日から本格的にセッションの開始。
Java EE 8 [CON3015]
Java EE8のスペックリードであるLinda DeMichielさんによる、Java EE 8の現状の方針を話すセッション。
Java EE 8の大きなテーマは3つ。
HTML5/Web層の改善
- JSON-Bの導入 : JSON - オブジェクトマッピングを標準化する
- JSON-P 1.1 : JSON Patch、JSON Pointerへの対応
- ServerSentEvent(SSE)への対応 : 既にGlassFishのJAX-RS実装であるJerseyで実装
- アクションベースのMVC
- Servlet4.0によるHTTP2.0対応
Easy of Development / CDI Alignment
Tutorial: JVM Platform as a Service [TUT3525]
スエーデンのCITERUSという企業の技術者が、2012年にJavaが使えるPaaSを使ったプロジェクトを経験談を交えながら、各PaaSプラットフォームの特徴やデモを示すセッション。
なぜPaaS?
- 何よりもtime-to-marketの達成がPaaSを使う一番の目的。
- 過去の事例では、顧客のコアドメインがITと関連が薄く、ITインフラ(サーバとか)を持ってなかったのがPaaS適用を推進した。
dotcloudを使ってみて
- Java、MongoDB、PostgreSQL、RabbitMQが使いたかったため、テクノロジスタックが合った
- 実際に運用してみたら色々問題も出てきた
- ヨーロッパ - アメリカのレイテンシによる性能問題、価格の値上げ改定
- 結果的にjerasticを使ってサービスを提供しているスエーデン国内のPaaSサービスに移行し、各々の問題に対処した。
HTTP 2.0 Comes to Java: What Servlet 4.0 Means to You [CON5989]
HTTP2.0(SPDY)の登場に伴い、ServletやJava SE9のAPIへの機能追加について紹介するセッション。まだ JSR369 Servlet4.0 として検討がはじまったところで、いくつかのコード案が紹介されたが写真取れず。
Java SE 9側でのHTTP2.0クライアントのアイディアについては、以下のようなコード例が紹介された。
HttpRequestGroup group = HttpRequestGroup.create(); HttpRequest req = group.createRequest() .setRequestMethod("POST") .setRequestURI(new URI("http://www.foo.com/a/b")) .setRequestBody("param1=1,param2=2") .onResponseHeader("X-Foo", (request, name, value) -> { System.out.println("receive an X-Foo header") }) .sendRequest() .waitForCompletion();
HTTP2.0では、1つのコネクションが1対1でのリクエスト/レスポンスモデルではなく、複数のリクエストが1コネクションで並行して送受信されるため、リクエストのグループ化(HttpRequestGroup)が導入し、その後のリクエスト送信にもメソッドチェーンや、リクエスト応答のヘッダ処理にラムダ式を書いたり、最近のJavaっぽいAPI案となっている。
Modular Architectures Using Microservices [CON6132]
モジュラアーキテクチャの考え方を、クラウド環境でOSGiを使うためにリモート呼び出しなどをサポートするAmdatuを使って実現する方法を紹介したセッション。
まず、amdatuによる実装を示す前に、ソフトウェアをなるべくモジュール化して連携させるモジュラアーキテクチャとマイクロサービスの考え方を紹介した。
モジュラアーキテクチャとは
原則として以下の2つを要件として紹介した。
マイクロサービスとは
- マーチンファウラ氏のブログの内容を時折引用。
- 分散システム固有の設計には注意する必要
- どれか1つが落ちていても、サービスが縮小継続できるように
- モニタリングに手間が掛かるのは、分散の代償
OSGiについて
Banking on OpenJDK: How Goldman Sachs Is Using and Contributing to OpenJDK [CON5177]
Goldman Sachs社のOpenJDKへの取り組みに関するセッション。
Goldman SachsとJava
- 1998年頃からJavaを技術評価として利用開始
- 2004年から自社コレクションフレームワークを作り始め(githubで公開中)
- 2013年からOCAにサインして、OpenJDKへのコントリビュートを開始した
- 190GB以上のヒープを持つシステム、大量の分岐があって、JITコードキャッシュに影響を与える特殊な環境が特徴的。
なぜOpenJDKに力を入れ始めたのか
- ソースが見れるのが何よりも重要
- 商用でクラッシュしても解析できる
- HotSpotの内部で改善できそうな部分を自分たちで見つけることができる
- パッチを投げることが、自分たちのためにも、コミュニティのためにもなる
どんな風にOpenJDKを使っている
- トラブルシューティング、新規能の研究・検証に使用
- JVMTIでアサーションエラーが発生したバグ解析とパッチ作成の事例を紹介
- 今のところ、プロダクション環境では使っていない
OpenJDKしてのソースが公開により、筆者自身もAPIやHotspotでのトラブル時に大変助かっている。Redhat Enterprise Linuxを使っているシステムではOpenJDKがバンドルされていて気軽に使えるので、もっと使われるところが増えると嬉しい。