Java EE 7 ハンズオン概要 - 日本オラクル | Integrated Cloud … · · 2016-06-03Java...
Transcript of Java EE 7 ハンズオン概要 - 日本オラクル | Integrated Cloud … · · 2016-06-03Java...
Java EE 7 ハンズオン概要
日本オラクル株式会社Oracle University
野邊 哲男
Java Day Tokyo 20162016年5月24日
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 2
Safe Harbor StatementThe following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
2
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 3
アジェンダ
Java EE 7概要
Java EE 7 ハンズオンの概要
[参考] Oracle University Java EE 7関連コースのご紹介
1
2
3
3
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 5
Java EE 7 概要• Java Platform, Enterprise Edition(Java EE)とは
– 企業向けの多層アプリケーション(Webなど)を開発/動作させるためのフレームワーク/技術仕様群
– Java Community Process(JCP)で策定• Java EE 7は、Java EE6をベースに3つのテーマを掲げ、機能拡張や新機能を提供。
– 開発生産性のさらなる向上、– HTML5対応、– エンタープライズニーズへの対応
• Java EE 7で追加された4つの新しい技術– Java API for WebSocket– Batch Applications for the Java Platform(jBatch)– Java API for JSON Processing – Concurrency Utilities
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 6
Java EE 7 の各仕様と当ハンズオンで主に使用するもの
JSP 2.2 JSF 2.2 EL 3.0 Java API for JSON 1.0
Interceptors 1.1 CDI 1.1 EJB 3.2 JAX-RS 2.0 Java API for WebSocket 1.0
JPA 2.1 JTA 1.2 Common Annotations 1.1 JMS 2.0 Batch Applications
1.0
Bean Validation 1.1 Connector 1.7
Servlet 3.1
Portable Extensions
Concurrency Utilities 1.0
アップデート 新機能 メジャー・リリース
ハンズオンハンズオン
ハンズオン ハンズオン
ハンズオン
ハンズオン
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 7
Java API for WebSocket (JSR-356)
• JavaでWebSocket通信を行うアプリケーションを開発するための標準API
• WebSocketでは、クライアントとサーバ間でハンドシェイクを確立後、特定のエンドポイントを基点に、双方向かつ非同期的にデータを送受信
ServerClient
HTTP
Tim
e
upgradeopen
receive
receive
Handshake RequestHandshake Response
WebSocket Connection
send
send
receive
send
send receive
send receive
payload
payload
payload
payload
payload
receive send payload
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 8
Java API for WebSocket• 下図は、Java API for WebSocketの簡単なサンプルであるEchoアプリケーションのイメージ
import javax.websocket.OnMessage;import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/echo")public class EchoEndpoint {
@OnMessagepublic String echo(String message) {
return message;}
}
ws://host:port/websocket-echo/echoサーバ側のエンドポイントクライアント
エンドポイントをベースにWebSocket通信
Hello WebSocket!
Hello WebSocket!
メッセージ着信時に OnMessageハンドラ実行その他のハンドラとして、接続オープン時にOnOpen、接続クローズ時にOnClose、エラー発生時にOnErrorを実装可能
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 9
Java Message Service 2.0 (JSR 343)• Java Message Service (JMS)は、Javaでメッセージの送受信を行うための技術仕様
– Pointo-To-Point (1対1)での送受信– Publish-Subscribe (1対多)での送受信
• JMS 2.0では、下記の機能を拡張– Simplified API–配信遅延–非同期送信–リソース定義の簡素化
JavaApp
JavaApp
Point-To-Point
Queue
JavaApp
JavaApp
Publish-Subscribe
Topic
JavaApp
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 10
Java Message Service 2.0 (JSR 343) Simplified API• JMSのConnectionとSessionを統合した新しいJMSContextやCDIにより、メッセージの送受信処理を簡潔な構文で実現可能Context messaging = null;ConnectionFactory connectionFactory = null;Queue queue = null;Connection connection = null;Session session = null;MessageProducer sender = null;try {
messaging = new InitialContext();connectionFactory = (ConnectionFactory) messaging.lookup("myCF");queue = (Queue) messaging.lookup("myQ");connection = connectionFactory.createConnection();session = connection.createSession(Session.AUTO_ACKNOWLEDGE);sender = session.createProducer(queue);TextMessage message = session.createTextMessage();message.setText(“Hello”;sender.send(message);
} catch (Exception ex) {ex.printStackTrace();
} finally {try {
sender.close();session.close();connection.close();
} catch (Exception ex) {
}}
@Inject@JMSConnectionFactory("myCF")JMSContext context;
@Resource(mappedName = "myQ")Queue queue;
…..
try {context.createProducer().send(queue, “Hello”);
} catch (Exception ex) {ex.printStackTrace();
}
旧来のJMS JMS 2.0
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 11
Batch Application for the Java Platform (JSR 352)• 通称 jBatchと呼ばれるバッチ処理をJavaで実装するための技術仕様• 「JOB」や「STEP」などを構成してバッチ処理フローを定義
jBatchの主要構成要素
JOB バッチ処理の単位。複数のステップで構成
STEP バッチ処理の実装単位
JobOperator JOBの実行や再実行の制御
JobRepository JOBの実行状態や結果の格納
STEP -A
JOB
STEP -B
STEP -W
STEP -X
STEP -Y
STEP -Z
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 12
jBatchの構成要素とステップの実装• JOBの構成は、XMLファイルで記述• STEPは、チャンク式またはバッチレット式でJavaクラスとして実装(次のスライド)
JOBStep 1
Step 2
Step 3
ItemReader
ItemProcessor
ItemWriter
ItemReader
ItemProcessor
ItemWriter
Batchlet
JobOperator
Job Repository
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 13
jBatchのステップの実装と実行イメージ• ItemReader…データを読込む処理を実装するクラス• ItemProcessor…ItemReaderで読込んだデータに対する処理を実装するクラス• ItemWriter…処理済のデータを書込み、コミットする処理を実装するクラス:チェックポイント毎に実行
• Batchlet…任意の処理を実装。1つのStepに1つの実装クラスItemReader ItemProcessor ItemWriterSTEP
チェックポイント毎にデータの書込み
チャンク式ステップの実行開始
チャンク式ステップの実行終了
データを読込みデータを処理
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 15
3章 JavaServer FacesとCDI• ブラウザからメッセージを入力して標準出力
IndexPageMgdBean
index.xhtml
CDI管理Bean
こんにちは
(NetBeans のGlassFish Serverの出力タブ)
標準出力
Send Messageボタン選択
出力
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 16
4章 Java Message ServiceとEJB (Message Driven Bean)• ブラウザからメッセージを入力してJMSトピック経由で標準出力
IndexPageMgdBean
index.xhtml
CDI管理Bean
こんにちは
(NetBeans のGlassFish Serverの出力タブ)
標準出力
Send Messageボタン選択
出力
MessageListenerMDBImpl
JMS トピックjms/inforegtopicMessage
DrivenBean
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 17
5章WebSocketとEJB(Singleton Session Bean)• ブラウザからメッセージを入力してJMSトピック経由で同じWebSocketセッションを持つくクライアントに送信
IndexPageMgdBean
index.xhtml
CDI管理Bean
Send Messageボタン選択
MessageListenerMDBImplJMS トピックjms/inforegtopic Message
DrivenBean
ClientManageSinglEJB
WebSocketメッセージ送信
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 18
6章 jBatch• ファイルtest_in.txtを読み込み、文字列を大文字に変換し、test_out.txtに出力する。また。
test_out.txtのファイルサイズを標準出力に出力する。
Job:simplejob
Step: mychunk
Step: mytask
MyReader
MyProcessor
MyWriter
MyBatchlet
Servlet:JobStartServlet
ファイルから文字列を1行読込む
読み込んだ文字列を大文字に変換
変換した文字列を別ファイルに書込む
mychunkステップで作成されたファイルのサイズを出力する
JobOperatorを使用してJob開始
javaee7netbeans
JAVAEE7NETBEANS
test_in.txt
test_out.txt
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 19
[参考] Oracle University Java EE 7関連コースのご紹介
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 20
Java EE 7 関連の主な研修コース• 下表はJava EE 7 関連の主要なコースです。• http://education.oracle.comから右図のように「javaee7」のキーワードでコース検索すると詳細を参照できます。
コース 概要
Java EE 7: 新機能(2日間)
このコースでは、Java EE 7 の新機能について説明します。Java EE 6 を使用していて Java EE 7 への移行を検討しているJava エンジニアに最適なコースです。
Java EE 7: Web アプリケーション開発(5日間)
このコースでは、Java Platform, Enterprise Edition 7 Webプロファ
イルに準拠したエンタープライズ・アプリケーションの作成およびデプロイについて学習します。このコースでは、Session Bean (EJB-Lite)、JPA、Servlet/JSP、CDI、JAX-RS RESTful Webサービス、Java API for WebSocketsなどの主要な Java EE 7 テクノロジについて説明します。