30
<Insert Picture Here> Java EE 6 最新機能のご紹介 日本オラクル株式会社

Java EE 6 最新機能のご紹介

Embed Size (px)

Citation preview

Page 1: Java EE 6 最新機能のご紹介

<Insert Picture Here>

Java EE 6 最新機能のご紹介

日本オラクル株式会社

Page 2: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved. 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 3: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Java EE 6のテーマ

• 拡張性の向上• アプリケーションの簡単な拡張

• 柔軟性の向上/軽量化• 目的に応じた必要十分な構成

• プルーニング

• かんたん開発• 新技術の追加

• DI, CDI, JAX-RS, Bean Validation

• 更新された技術

• Servlet 3.0, JPA2.0, EJB 3.1, JSF 2.0 等

3

Page 4: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Java EEの歴史

4

1998年5月 1999年12月 2001年9月 2003年11月 2006年5月 2009年12月

JPEProject

J2EE 1.2

Servlet

JSP

EJB

JMS

RMI/IIOP

Enterprise Java Platform

J2EE 1.3

CMP

ConnectorArchitecture

Robustness

J2EE 1.4

WebServices

Management

Deployment

Async. Connector

Java EE 5

Ease of Development

Annotations

EJB 3.0

Persistence

New and Updated

Web Services

WebServices

Ease ofDevelopment

Flexibility

Java EE 6

Pruning

Extensibility

Profiles

Ease ofDevelopment

EJB Lite

RESTfulServices

DependencyEjection

Web Profile

Page 5: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

拡張性

• プラガビリティの向上• web.xmlの変更なしで3rd ライブラリ/フレームワークをプラグイン

• フレームワーク開発者がフレームワーク内に設定

• web-fragments.xmlに記述してjar/META-INFに含める

• Servletにアノテーションを付与

• これによりアプリ開発者はjarをwarに含めるのみで利用可能

5

Webアプリ開発における拡張性

Page 6: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Web Fragment

• jarファイルのMETA-INF/web-fragment.xml

6

<web-fragment

version=”3.0”

xmlns="http://java.sun.com/xml/ns/javaee">

<servlet>

<servlet-name>welcome</servlet-name>

<servlet-class>WelcomeServlet</servlet-class>

</servlet>

<listener>

<listener-class>RequestListener</listener-class>

</listener>

</web-fragment>

Page 7: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

目的に応じた必要十分な構成

• Java EEの技術を用途毎に分割提供

• Java EE 6で提供されるプロファイル• Webプロファイル(Webの開発に特化)

• Enterprise Platform(フルJava EE)

7

プロファイリング

Page 8: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Webプロファイル

• Java EE 6 リリース時に提供される最初のプロファイル

8

• Servlet

• JSP / EL

• JSTL

• JSF

• Bean Validation

• EJB Lite

• JPA

• JTA

• DI/CDI

• Managed Beans

• Interceptors

• Common Annotations

Web開発に特化した軽量プロファイル

Page 9: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

プルーニング

• 候補の策定後、その次のバージョンで削減

• 次期バージョン(Java EE 7)でオプション化• JAX-RPC(->JAX-WS)

• EJB Entity Beans(->JPA)

• JAXR

• JSR-88

9

古くなった仕様の削減(2段階プロセス)

Page 10: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Servlet 3.0 – かんたん開発

• 概要• J2SE 5.0で追加された言語機能に対応

• アノテーション

• 型の安全性(Generics)

• 使いやすいデフォルト値の定義によるゼロコンフィギュレーション

• アノテーションによる定義

• web.xmlはオプション化

10

Page 11: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Servlet 3.0 – かんたん開発

• アノテーションにより、Servlet、Filter、Listener、Securityの定義が可能• @WebServlet – Defines a Servlet

• @WebFilter – Defines a Filter

• @WebListener – Defines a listener

• @WebInitParam – Defines an init param

• @ServletSecurity – security constraints

• @MultipartConfig – file upload

• web.xmlでオーバーライド

11

アノテーション

Page 12: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Servlet 3.0 – かんたん開発

12

Servlet 2.5 example

<!--Deploymentdescriptorweb.xml-->

<web-app>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>

com.foo.MyServlet

</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name>

<url-pattern>/myApp/*</url-pattern>

</servlet-mapping>

...

</web-app>

/* Code in Java Class */

package com.foo;

public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res) {

...

}

...

}

Page 13: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Servlet 3.0 – かんたん開発

13

Servlet 3.0 example

package com.foo;

@WebServlet(name=”MyServlet”, urlPattern=”/myApp/*”)

public class MyServlet extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res)

{

...

}

Page 14: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Servlet 3.0 – その他新機能

• マルチパート対応• ファイルアップロードに対応

• @MultipartConfig

• 非同期処理のサポート• @WebServlet(asyncSupported=true)

• コンテナによるスレッド管理

• e.g. Comet, chat, push apps

• セキュリティの拡張• プログラミングによる認証、ログイン、ログアウトのサポート

• HttpServletRequest.authenticate

• HttpservletRequest.login

• HttpServletRequest.logout

• @ServletSecurity

14

Page 15: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

EJB 3.1 – 特徴

• パッケージングの簡略化

• EJB 3.1 “Lite” の提供

• その他の新機能• ローカルビジネスインタフェースのオプション化

• 移植可能なGlobal JNDI名

• Java SEに組み込み可能なEJBコンテナ

• Singleton Session Beansの追加

• タイマーサービス

• 非同期処理

15

Page 16: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

EJB 3.1 – シンプルなパッケージング

• warに直接梱包可能

16

BuyBooks.warShoppingCart

EJB Class

ShoppingCart.jar

BuyBooks.war

ShoppingCartEJB Class

BuyBooks.war

Page 17: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

EJB 3.1 “Lite”の提供

• Full EJB 3.1機能のサブセットを提供

17

• Lite• ローカルセッションBeans

• CMT/BMT

• Declarative Security

• Interceptors

• Full = Lite + • Message-Driven Beans

• Web Service Endpoint

• 2.x/3.x Remote view

• RMI-IIOP Interoperability

• Timer Service

• Async method call

• 2.x Local view

• CMP/BMP Entity

Page 18: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

EJB 3.1 - その他の新機能

• Local Business Interfaceのオプション化• インタフェースの定義が不要

• 移植可能なGlobal JNDI名• ベンダー固有のJNDI名を標準化されたGlobal JNDI名に統一

• 移植性の向上

• Singleton Session Beansの追加• 並列アクセス処理対応

• Startup / Shutdownコールバック機能の追加

• タイマーサービス• 自動タイマー生成/カレンダーベースタイマー

• 非同期処理

18

Page 19: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

RESTful ウェブサービス

• すでに広く採用されている

• ハイレベルHTTP API

• アノテーションベースのプログラミングモデル

• 必要に応じてプログラム可能なAPIも利用可能

19

JAX-RS 1.1

Page 20: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

JAX-RS リソースクラス

• @Path アノテーションにより識別

20

@Path(“widgets/{id}”)

@Produces(“application/widgets+xml”)

public class WidgetResource {

public WidgetResource(@PathParam(“id”)

String id) { … }

@GET

Widget getWidget() { … }

}

Page 21: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Standard Validation API

• JSF、JPAと統合

• アノテーションによる制約の表現• @NotNull

• @Size(max=40) String address;

• カスタム・バリデーター• e.g.Emailバリデーターをカスタムで作成する

• Custom validator classの作成

• Custom validator methodのBeanへの追加

• @Email String recipient;

21

Bean Validation 1.0

Page 22: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Persistence

• エンティティではないCollectionフィールドの永続化• @ElementCollection

• @CollectionTable

• JPQL 拡張• e.g. CASE WHEN, NULLIF, COALESCE

• 動的クエリ生成のためのクライテリアAPI

• 悲観的ロック

22

JPA 2.0

Page 23: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Criteria APIサンプル

23

EntityManager em = ... ;

CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Employee> cq =

cb.createQuery(Employee.class);

Root<Employee> emp = cq.from(Employee.class);

cq.select(emp);

cq.where(cb.equal(emp.get(Employee_.lastName), "Smith"));

TypedQuery<Employee> query = em.createQuery(cq);

List<Employee> rows = query.getResultList();

Page 24: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

JavaServer Faces 2.0 – 特徴

• Faceletsの採用

• アノテーション• @ManagedBean/@RequestScope/@SessionScope

• faces-config.xmlオプション化• ManagedBeanのアノテーション化

• JSFナビゲーションを改良• ボタン/リンク名とXHTMLファイル名のマッチング

• その他の定義にはfaces-config.xmlが必要

• 標準リソースフォルダ(css/js/images etc)• Resourcesフォルダ、warのルートもしくはMETE-INF配下

• /resources/scripts/, /resources/css/, /resources/img/

• その他: Ajax対応/ブックマーク可能なURL

24

Page 25: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Dependency Injection

• 新たな@Inject アノテーション• @Inject @LoggedIn User user;

• Injection メタモデル

• どんなBeanもInject対象• EJB session beans

• Plain classes with @ManagedBean

• CDIがモジュール内で見つけたクラス

• デフォルトで無効、有効化する場合は、beans.xmlを配置• META-INF/、WEB-INF/に配置

25

CDI 1.0

Page 26: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Demo

26

Page 27: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Demo内容

• Oracle Enterplize pack for Eclipse + GlassFish の設定

• シンプルなJava EE 6 アプリケーションの作成(Servlet, EJB)

• Java Persistence API 2を利用したDB読み込み

• Java Server Faces 2 – Faceletsの利用

• JAX-RSによるRESTfulウェブサービスの作成

27

Page 28: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Summary

• かんたん開発がより強力に• 今までできたことはよりかんたんに、

• できなかったこともかんたんにできるように

• より拡張性が向上

• より柔軟に

28

Java EE6 Platform

GlassFish + OEPE

• Eclipse上でJava EE 6アプリケーションの開発が可能

• OEPE 11.1.1.6 downlaodhttp://www.oracle.com/technetwork/developer-

tools/eclipse/downloads/index.html

Page 29: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved.

Page 30: Java EE 6 最新機能のご紹介

Copyright© 2010, Oracle. All rights reserved. 30