JavaOne 2013 サンフランシスコ報告会 Tokyoで「Java EE のアップデート」の発表をしてきました。
使った発表資料を公開します。
最近はs5でプレゼンファイルを作るのが常態化しています。Emacsだけで作れて楽だからです。しかしs5の見栄えには満足していません。きれいなテーマを探しましたが見つからなかったので、結局、いつもの見栄えのプレゼンでした。
テキストで書けて、HTMLもしくはPDFで出力できて、それなりに見栄えが良いプレゼン作成ツールがあれば乗り換えたいものです。
ダウンロード版(HTMLファイルをWebブラウザで開いてください):
javaone2013.tar.gz
JavaOne2013 サンフランシスコ報告会 Tokyo
井上誠一郎
アリエルネットワーク CTO
ワークスアプリケーションズ ゲストフェロー
自己紹介
名前
- 井上誠一郎
主な著書
- 「パーフェクトJava」
- 「パーフェクトJavaScript」
ブログ
- 「ありえるえりあ」
JavaOne参加経験
- 今年が3度目の参加(2010年、2012年、2013年)
[any material that should appear in print but not on the slide]
今日のお題
- Java EEのアップデート
[any material that should appear in print but not on the slide]
アジェンダ
- 予備知識
- JavaOne2013のJava EE概論
- Java EEセッションのピックアップ
- Java EEを取り巻く状況
[any material that should appear in print but not on the slide]
Java EEの認知度?
- Java EEの最新バージョン?
- CDI?
- JPA?
- JAX-RS?
[any material that should appear in print but not on the slide]
Java EEの最新バージョン
- 最新バージョンはJava EE 7
- 目玉
- WebSocket対応
- JSON標準API
- Java Batch
- Concurrency Utilities
[any material that should appear in print but not on the slide]
CDI
- CDI: Contexts and Dependency Injection
- DI(Dependency Injection)の標準規格
- Java EE 6で登場
- 今やJava EEの中心規格(主役はEJBからCDIへ)
- Java EE 7のCDI 1.1で beans.xml が不要に
[any material that should appear in print but not on the slide]
JPA
- JPA: Java Persistence API
- ORM(O/Rマッパー)の標準規格
- Hibernateも今ではJPA実装のひとつ
- Hibernateはじめ、JPA実装は各々それなりに独自拡張を持つのが実状
- Java EE 7のJPA 2.1で、SQLのDDL生成やストアドプロシジャに対応
- NoSQL系への対応は話題のみ
[any material that should appear in print but not on the slide]
JAX-RS
- RESTfulなURLルーティングやHTTP処理の標準規格
- アノテーションでURLとクラスやメソッドを対応づける
- Java EE 7のJAX-RS 2.0で非同期APIとクライアントAPI追加
[any material that should appear in print but not on the slide]
アジェンダ
- 予備知識
- JavaOne2013のJava EE概論
- Java EEセッションのピックアップ
- Java EEを取り巻く状況
[any material that should appear in print but not on the slide]
JavaOne2013のJava EE: キーノートのトピック
- Java EE 7リリース(2013年6月)
- Project Avatarのオープンソース化
- IBMのJava CTO「IaaS基盤にOpenStack、PaaS基盤にCloud Foundry」
- 2013年7月のリリース記事: IBMとPivotal社が協業「WebSphere(Liberty) on the Cloud Foundry Platform」
[any material that should appear in print but not on the slide]
JavaOne2013のJava EE: キーノートのトピック(裏)
- 全体的に盛り上がらず
- Java EEの扱いが軽い印象
- Java MEにスポットライト
[any material that should appear in print but not on the slide]
JavaOne2013のJava EEセッション: カテゴリ
- Client and Embedded Development with JavaFX
- Core Java Platform
- Edge Computing with Java in Embedded, Smart Card, and IoT Applications
- Emerging Languages on the Java Virtual Machine
- Java Development Tools and Techniques
- Java EE Web Profile and Platform Technologies
- Java Web Services and the Cloud
- Securing Java
[any material that should appear in print but not on the slide]
JavaOne2013のJava EEセッション カテゴリごとのセッション数
- カテゴリ「Java EE Web Profile and Platform Technologies」: 131セッション
- カテゴリ「Java Web Services and the Cloud」: 83セッション
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(Java EE7の新顔編)
メイントピックのセッションに限定
- Java API for WebSocket: 6
- Java Batch: 2
- Java API for JSON Processing: 6
- Concurrency Utilities: 2
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(Java EE7で大きく変更編)
メイントピックのセッションに限定
- JAX-RS: 9
- JTA: 1
- EL(Expression Language): 2
- JMS: 4
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(定番編)
メイントピックのセッションに限定
- CDI: 4
- JPA: 7
- EJB: 1
- JSF: 4
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(Java EEコンテナ編)
単なる検索結果(メイントピックとは限らない)
- GlassFish: 16
- TomEE: 2
- WebLogic: 4
- JBoss: 7
- WildFly: 0
- WebSphere: 2
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(実装編)
単なる検索結果(メイントピックとは限らない)
- Grizzly: 3
- Jersey: 7
- Weld: 0
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(JPA実装編)
単なる検索結果(メイントピックとは限らない)
- Hibernate: 4
- EclipseLink: 5
- OpenJPA: 2
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(フレームワーク編)
メイントピックのセッションに限定
- Spring Framework: 3
- Play Framework: 3
- Ninja Framework: 0
- Grails: 3
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(NoSQL編)
単なる検索結果(メイントピックとは限らない)
- MongoDB: 7
- CouchBase/CouchDB: 2
- HBase: 2
- Cassandra: 2
- Riak: 0
- Redis: 1
- Neo4j: 2
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(NewSQL編)
単なる検索結果(メイントピックとは限らない)
- VoltDB: 1
- NuoDB: 1
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(PaaS基盤編)
単なる検索結果(メイントピックとは限らない)
- Cloud Foundry: 3
- OpenShift: 1
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(PaaS編)
単なる検索結果(メイントピックとは限らない)
- Google App Engine: 2
- Amazon Beanstalk: 2
- Heroku: 1
- Jelastic: 2
- CloudBees: 2
- Windows Azure: 2
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(サーチエンジン編)
単なる検索結果(メイントピックとは限らない)
- Lucene: 1
- Solr: 1
- ElasticSearch: 1
[any material that should appear in print but not on the slide]
JavaOneセッション数で勢いを測る(データ連携編)
単なる検索結果(メイントピックとは限らない)
- Apache Camel: 4
- Spring Integration: 3
- Mule: 1
[any material that should appear in print but not on the slide]
アジェンダ
- 予備知識
- JavaOne2013のJava EE概論
- Java EEセッションのピックアップ
- Java EEを取り巻く状況
[any material that should appear in print but not on the slide]
「Java Caching (JSR 107): The State of the Union [CON10175]」
- 12年かけてJCacheのスペックがまとまりそう
- 今年の12月にスペック確定(予定)
- javax.cacheパッケージのAPI(プログラマブルAPIとアノテーションAPI)
- アノテーションはJava EE 8とSpring4で採用予定
- 実装: Ehcache、Oracle Coherence
[any material that should appear in print but not on the slide]
「What’s New in Java Transaction Processing [BOF3433]」
- JTAが1.1から1.2にバージョンアップ
- 10年ぶりのバージョンアップ
- 宣言的トランザクション
- @Transactional (クラスもしくはメソッドに書ける)
- CMT(コンテナによるトランザクション管理)がEJBの専売特許でなくなる
- CDI管理のBeanをCMT可能
- 要はSpringの@Transactional
- EJBの立場は? (後述)
[any material that should appear in print but not on the slide]
「JSR 356: Inside the Java WebSocket API [CON3436]」
- 実装: https://tyrus.java.net
- プログラマブルAPIとアノテーションAPIの両方あり
- 同期処理APIと非同期処理APIの両方あり
[any material that should appear in print but not on the slide]
WebSocket プログラマブルAPIコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class EchoEndpoint extends Endpoint { @Override public void onOpen(final Session session, EndpointConfig config) { session.addMessageHandler(new MessageHandler.Whole>String<() { @Override public void onMessage(String msg) { try { session.getBasicRemote().sendText(msg); } catch (IOException e) { ... } } }); } } |
[any material that should appear in print but not on the slide]
WebSocket アノテーションAPIコード例
1 2 3 4 5 6 7 8 9 |
@ServerEndpoint("/echo") public class EchoEndpoint { @OnMessage public void onMessage(Session session, String msg) { try { session.getBasicRemote().sendText(msg); } catch (IOException e) { ... } } } |
[any material that should appear in print but not on the slide]
「Jersey 2 MVC in Action [BOF5548]」
- JerseyはJAX-RS規格の実装
- JAX-RS自体はMVCフレームワークではない
- Java EEのMVCフレームワークはJSFなので、JAX-RSがそこに踏み込めない
- Jerseyは独自拡張でMVCフレームワークを提供
- Jersey MVCはSpring MVCと同じアーキテクチャ
- ビュー処理のサポートテンプレートエンジン: JSP、Freemarker、Mustache
[any material that should appear in print but not on the slide]
「Decompose That WAR! Architecting for Adaptability, Scalability, and Deployability [CON2328]」
- 巨大なwarをどう分割するか
- 巨大なwarの問題点:
- 開発速度の低下
- IDEやコンテナへの高負荷
[any material that should appear in print but not on the slide]
「Decompose That WAR! Architecting for Adaptability, Scalability, and Deployability [CON2328]」(cont.)
- war分割しすぎの問題点:
- 実行処理低下
- 無駄な通信
- システム全体の理解が困難
- warにまたがったトランザクション
- warにまたがる機能
[any material that should appear in print but not on the slide]
「Decompose That WAR! Architecting for Adaptability, Scalability, and Deployability [CON2328]」(cont.)
- war間の通信: 非同期のメッセージキューを利用
- Netflix社のAPI Gatewayパターン:
- 複数RESTサービスの前に配置
- 後方の各RESTのレスポンスを集約
- REST呼び出しは並列かつ非同期処理
- RESTエラー時はキャッシュデータかデフォルトデータで代用
[any material that should appear in print but not on the slide]
[any material that should appear in print but not on the slide]
「The Spring Update [CON2439]」
- Spring Source社からPivotal社へ
- http://spring.io
- ソースコード管理がGitHub
- Spring 4.0は、Java8およびJava EE 8対応
- SpringのJdbcTemplateなどはJava8のLambdaと相性が良い
- WebSocketやJava BatchでJava EEと協力関係
[any material that should appear in print but not on the slide]
「The Spring Update [CON2439]」(cont.)
- Spring DataでNoSQL(MongoDB、Redis、Neo4j)やSolrに対応
- Spring for Hadoop
- Spring XD (ストリームデータ処理)
- WebSocket上にSTOMP(Simple (or Streaming) Text-Oriented Messaging Protocol)
- Spring Rooは…?
[any material that should appear in print but not on the slide]
アジェンダ
- 予備知識
- JavaOne2013のJava EE概論
- Java EEセッションのピックアップ
- Java EEを取り巻く状況
[any material that should appear in print but not on the slide]
Java EEの歴史
1 2 3 4 5 6 7 |
名称: マーケティングメッセージ J2EE 1.2: ? J2EE 1.3: ? J2EE 1.4: Webサービス(SOAP) Java EE 5: アノテーション + DI + ORM Java EE 6: DI標準化(CDI)。RESTful API(JAX-RS)。Webプロファイル Java EE 7: HTML5(WebSocket)。JSON。バッチ処理 |
[any material that should appear in print but not on the slide]
J2EE
[any material that should appear in print but not on the slide]
Java EE(Web層の進化)
[any material that should appear in print but not on the slide]
Java EE以降のEJB
[any material that should appear in print but not on the slide]
Java EE 7のEJB
[any material that should appear in print but not on the slide]
Java EE 8以降の世界?
[any material that should appear in print but not on the slide]
Java EE 8?
- Java EE 5は大変革(Java SE 5と同様のrevolution)
- Java EE 6と7は大きな変革は無し(Java SE 6,7と同様のevolution)
- Java EE 8は? (Java SE 8はrevolution)
[any material that should appear in print but not on the slide]
まとめ
- Java EE 7は順調に発展
- まだJava EE 7対応コンテナがGlassFishのみなので目立つ事例なし
- Java EE 8の姿は見えない(クラウド対応のキーワードのみ)
- JSFとEJBが死んだらrevolution
[any material that should appear in print but not on the slide]
関連文書:
- 関連文書は見つからんがな
最近のコメント