Java EE 7 ハンズオン概要 - 日本オラクル | Integrated Cloud … ·  · 2016-06-03Java...

22
Java EE 7 ハンズオン 概要 日本オラクル株式会社 Oracle University 野邊 哲男 Java Day Tokyo 2016 2016524Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

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. | 4

Java EE 7概要

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. | 14

Java EE 7ハンズオンの概要

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 テクノロジについて説明します。