GlassFishで 実 感! エンタープライズJavaの 進 化 日 本 オラクル 株 式 会 社 Fusion Middleware 事 業 統 括 本 部 Fusion Middleware 第 一 SC 本 部 寺 田 佳 央
Agenda はじめに Java EE 6のご 紹 介 Oracle GlassFish Server 3のご 紹 介 Oracle GlassFish Serverの 今 後 Copyright 2010, Oracle. All rights reserved. 2
はじめに
もう 一 度 Java EE を 見 直 してみませんか? Copyright 2010, Oracle. All rights reserved. 4
Java EE の 開 発 にこんなイメージを 持 ってませんか? Java EE はXML 設 定 が 困 難 設 定 が 膨 大 パッケージも 面 倒 (ear,war,jar...) アプリケーションサーバも 重 い すぐに 動 作 確 認 ができず 開 発 効 率 が 悪 い 再 起 動 を 待 つのが 耐 えられない Copyright 2010, Oracle. All rights reserved. 5
Java EE 6 ではかんたん 開 発 がさらに 進 化 しました 開 発 効 率 が 大 幅 に 向 上 しました GlassFish v3はとてもかんたん 軽 量 です GlassFish v3.1は 本 番 環 境 向 けの 機 能 を 提 供 します Copyright 2010, Oracle. All rights reserved. 6
Java EE 6の 概 要 2009 年 12 月 10 日 正 式 リリース Copyright 2010, Oracle. All rights reserved. 7
Java EE 6 のテーマ 拡 張 性 プロファイル Pruning Webプロファイル Enterprise Platform (フルJava EE) 仕 様 の 削 減 かんたん 開 発 新 技 術 の 追 加 DI, CDI, JAX-RS, Bean Validation 更 新 された 技 術 JPA2.0, EJB 3.1, JSF 2.0 等 Copyright 2010, Oracle. All rights reserved. 8
拡 張 性 Servlet 3.0 アノテーション マルチパート 対 応 非 同 期 サーブレット プラガビリティの 向 上 web-fragments.xml Struts, Spring 等 管 理 / 設 定 が 容 易 設 定 ファイル(web.xml)の 複 雑 さが 軽 減 Copyright 2010, Oracle. All rights reserved. 9
プロファイル Java EEの 技 術 を 用 途 毎 に 分 割 して 提 供 Java EEのサブセットを 提 供 独 自 プロファイルの 開 発 が 可 能 例 : 電 話 会 社 向 けプロファイル Java EE 6で 最 初 に 提 供 されるプロファイル Webプロファイル(Webの 開 発 に 特 化 ) Enterprise Platform(フルJava EE) Copyright 2010, Oracle. All rights reserved. 10
Web プロファイル Webアプリケーションの 開 発 に 特 化 した 軽 量 プロファイル Webプロファイルに 含 まれる 技 術 Servlet JPA JSP / EL JTA JSTL DI/CDI JSF Managed Beans Bean Validation Interceptors EJB Lite Common Annotations Copyright 2010, Oracle. All rights reserved. 11
Pruning 仕 様 の 削 減 - 2 段 階 プロセス 古 く 使 われなくなったAPIの 整 理 コンポーネントのオプション 化 次 期 バージョン(Java EE 7)で オプション 化 JAX-RPC(->JAX-WS) EJB Entity Beans(->JPA) JAXR JSR-88 Copyright 2010, Oracle. All rights reserved. 12
Servlet 3.0 JSR-315 特 徴 かんたん 開 発 拡 張 性 マルチパート 対 応 ファイルアップロード 非 同 期 Servlet のサポート セキュリティ(login/logout 処 理 に 対 応 ) Java SE 5の 言 語 仕 様 で 新 たに 追 加 されたアノテーションを 使 用 し 宣 言 的 プログラミングモデルを 採 用 またジェネリクスの 利 用 も 可 能 Copyright 2010, Oracle. All rights reserved. 13 13
Servlet 3.0 Servlet 3.0 で 利 用 可 能 なアノテーション @WebServlet @WebFilter @WebListener @WebInitParam @ServletSecurity @MultipartConfig Servletの 定 義 フィルタの 定 義 リスナの 定 義 パラメータの 定 義 セキュリティの 制 約 ファイルアップロード アノテーションの 設 定 はweb.xmlで 上 書 き 設 定 可 能 Copyright 2010, Oracle. All rights reserved. 14 14
Servlet 3.0 package hello; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; @WebServlet(name="Hello", urlpatterns={"/hello"}) public class Hello extends HttpServlet { } @Override protected void doget(httpservletrequest request, HttpServletResponse <web-app> response) throws ServletException, <servlet> IOException {... <servlet-name>hello</servlet-name> } <servlet-class>hello.hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello/* </url-pattern> </servlet-mapping>... </web-app> Servlet 3.0のソースコード Servlet 2.5まではweb.xmlの 編 集 が 必 須 Copyright 2010, Oracle. All rights reserved. 15 15
EJB 3.1 JSR 318 特 徴 パッケージの 簡 略 化 EJB 3.1 Lite の 提 供 ローカルビジネスインタフェースのオプション 化 標 準 化 された Global JNDI 名 Java SEに 組 み 込 み 可 能 なEJBコンテナ その 他 の 新 機 能 Copyright 2010, Oracle. All rights reserved. 16 16
EJB 3.1 パッケージングの 簡 略 化 Java EE 5 のパッケージング foo.ear foo.ear WEB-INF/web.xml WEB-INF/classes/ com/acme/fooservlet.class WEB-INF/classes foo.jar com/acme/foobean.class com/acme/foo.class foo.ear lib/foo_common.jar com/acme/foo.class foo_web.war WEB-INF/web.xml WEB-INF/classes/ com/acme/fooservlet.class foo_ejb.jar com/acme/foobean.class 適 切 なアーカイブファイル (ear,war,jar)へパッケージ 化 が 必 要 面 倒 なパッケージング/ 作 業 負 担 が 大 Copyright 2010, Oracle. All rights reserved. 17 17
EJB 3.1 パッケージングの 簡 略 化 WEB-INF/classes/com/acme/ FooServlet.class FooBean.class (EJB) かんたんなパッケージング EJBをwarファイルへ 含 める 事 が 可 能 WEB-INF/classes:ファイルとして WEB-INF/lib: 分 割 jarファイルとし て 今 まで 同 様 のパッケージ 化 も 可 能 ejb-jarファイル 配 備 記 述 子 はオプション 化 記 載 する 必 要 がある 場 合 別 途 WEB-INF/ejb-jar.xmlへ 記 述 可 能 Copyright 2010, Oracle. All rights reserved. 18 18
EJB 3.1 - Lite の 提 供 Full EJB 3.1 機 能 のサブセットを 提 供 Lite Full = Lite + ローカルセッションBeans Message-Driven Beans CMT/BMT Web Service Endpoint Declarative Security 2.x/3.x Remote view Interceptors RMI-IIOP Interoperability Timer Service Async method call 2.x Local view CMP/BMP Entity Copyright 2010, Oracle. All rights reserved. 19 19
Bean Validation 1.0 JSF/JPAと 統 合 アノテーションによる 制 約 の 表 現 @NotNull @Size(max=40) String address; カスタム バリデーター 例 :Emailバリデーターをカスタム 作 成 Custom validator classの 作 成 Custom validator methodのbeanへの 追 加 @Email String recipient; Copyright 2010, Oracle. All rights reserved. 20 20
Java Persistence API 2.0 EJBから 独 立 (JSR-317) JPA 2.0 = JPA 1.0 + α モデリングの 強 化 JPQL 新 しい 構 文 の 追 加 Criteria API の 提 供 メタモデルAPIの 提 供 悲 観 的 ロックの 追 加 バリデーションのサポート 設 定 オプションの 標 準 化 Copyright 2010, Oracle. All rights reserved. 21 21
JPA 2.0 - Criteria API JPQLの 変 わりにプログラミングでクエリーを 記 載 EntityManager em = ; CriteriaBuilder cb = em.getcriteriabuilder(); CriteriaQuery<Person> p = cb.createquery(person.class); Root<Person> person = p.from(person.class); p.select(person).where( cb.equal(person.get(person_.name),taro Yamada ); Metamodel APIとの 併 用 でタイプセーフに Person_.nameの 有 無 と 型 のチェックをコンパイル 時 に 可 能 (IDEの 強 力 な 型 チェック 機 能 でランタイムエラーを 抑 制 ) Copyright 2010, Oracle. All rights reserved. 22
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 Copyright 2010, Oracle. All rights reserved. 23 23
Dependency Injection DI 1.0/CDI 1.0 新 たな@Inject アノテーション @Inject @LoggedIn User user; Injection メタモデル どんなBeanもInject 対 象 EJB session beans Plain classes with @ManagedBean CDIがモジュール 内 で 見 つけたクラス デフォルトで 無 効 有 効 化 する 場 合 は beans.xmlを 配 置 META-INF/ WEB-INF/に 配 置 Copyright 2010, Oracle. All rights reserved. 24 24
GlassFish v3の 概 要 2009 年 12 月 10 日 正 式 リリース Copyright 2010, Oracle. All rights reserved. 25
GlassFish v3 新 機 能 概 要 Java EE 6 の 参 照 実 装 Java EE 6 の 仕 様 に 完 全 準 拠 軽 量 高 速 起 動 かんたん 開 発 /かんたん 管 理 プロファイルに 対 応 先 進 的 なサーバアーキテクチャ 非 同 期 I/O 対 応 OSGiモジュールサブシステム 対 応 かんたんな 操 作 unzipによるインストール(tomcatと 同 様 ) Oracle JRockit VM 正 式 対 応 GlassFish v3.0.1より 正 式 サポート Copyright 2010, Oracle. All rights reserved. 26
起 動 時 間 の 劇 的 な 短 縮 超 高 速 起 動 起 動 時 間 約 4 秒 (CPU: 2.4GHz Core 2Duo/4GB) 軽 量 コンテナ 使 われない 機 能 を 未 初 期 化 開 発 効 率 の 大 幅 な 向 上 再 起 動 時 間 の 待 ち 時 間 の 減 少 Copyright 2010, Oracle. All rights reserved. 27
かんたん 開 発 統 合 開 発 環 境 連 例 統 合 開 発 環 境 との 連 携 で 開 発 が 容 易 開 発 環 境 からサーバ 起 動 停 止 Webアプリケーションデバッグ 統 合 開 発 環 境 用 プラグイン 情 報 : https://glassfishplugins.dev.java.net/ Copyright 2010, Oracle. All rights reserved. 28
再 配 備 時 におけるセッションの 持 続 再 配 備 時 にセッションを 保 存 開 発 環 境 で 有 効 コマンドオプション:-keepSessions=true 統 合 開 発 環 境 と 連 携 Eclipse NetBeans Copyright 2010, Oracle. All rights reserved. 29
かんたんな 管 理 機 能 視 覚 的 に 理 解 が 容 易 な 管 理 コンソール 日 本 語 化 可 能 ( 更 新 ツールより) 軽 快 な 操 作 管 理 用 コマンドを 用 意 管 理 用 REST APIを 提 供 アップデートツールの 統 合 Copyright 2010, Oracle. All rights reserved. 30
非 同 期 I/O 対 応 同 期 I/O(Blocking) リクエストキュー Request 4 Request 5 非 同 期 I/O(Non-Blocking) リクエストキュー 空 B B Thread-1 Thread-1 B B B Thread-2 Thread-3 B Thread-2 Thread-3 1 処 理 に1スレッドを 占 有 スレッド 内 で 処 理 を 分 割 Copyright 2010, Oracle. All rights reserved. 31
GlassFishのOSGi 対 応 GlassFish v3 のアーキテクチャ Copyright 2010, Oracle. All rights reserved. 32
GlassFish 組 み 込 み 可 能 コンテナ GlassFish Embedded Server API を 提 供 EJB 3.1 Embeddable API Java SEプログラム 内 から GlassFishを 起 動 Maven Plug-inの 提 供 Apache Mavenとの 連 携 JUnit による 容 易 なテスト デスクトップアプリケーションで EJB 機 能 を 利 用 可 能 Embedded Container Transaction Manager Security System Java SE Messaging Engine 組 み 込 み 可 能 コンテナの 概 念 Copyright 2010, Oracle. All rights reserved. 33
組 み 込 みコンテナを 利 用 したJunitテストコード @Test public void testsayhello() { Map p = new HashMap(); p.put("org.glassfish.ejb.embedded.glassfish.instance.root", "/Applications/GlassFish/glassfishv3-webprofile/glassfish/ domains/domain1"); EJBContainer container = EJBContainer.createEJBContainer(p); try{ Hello hello = (Hello)container.getContext().lookup ("java:global/classes/hello"); System.out.println(hello.sayHello()); }catch(exception e){ e.printstacktrace(); }} Copyright 2010, Oracle. All rights reserved. 34
GlassFishの 今 後
製 品 のロードマップ 2010 年 末 Ver 3.1 2011 年 Ver 3.2 未 定 Ver 4 GlassFish v3.1 2010 クラスタ 中 央 集 中 管 理 機 能 高 可 用 性 /セッションリプリケーション Coherenceのサポート 等 GlassFish v3.2 2011 クラスタ 機 能 の 改 良 仮 想 化 サポート Java EE 7のEarly Access 機 能 を 提 供 GlassFish v4 Java EE 7 対 応 Copyright 2010, Oracle. All rights reserved. 36
GlassFish v3.1の 新 機 能 クラスタ 機 能 クラスタ 対 応 SSH プロビジョニング(Node Agentの 廃 止 ) アプリケーションのバージョニング 対 応 ローリングアップグレード 機 能 の 提 供 ドメイン 管 理 サーバの 高 可 用 性 HTML5 WebSocket 対 応 管 理 監 視 機 能 の 強 化 DTraceを 使 用 したモニタ WebLogic との 互 換 性 を 提 供 WebLogicのデプロイメント 記 述 子 をサポート Copyright 2010, Oracle. All rights reserved. 37
GlassFish v2.1.1のクラスタ 機 能 ノードエージェント 方 式 各 物 理 ノードにGlassFishをイン ストール 各 物 理 ノードにノードエージェン トを 作 成 ノードエージェントの 起 動 停 止 は 各 マシン 上 で 実 施 ドメイン 管 理 サーバからで 各 ノ ードエージェントのインスタンス を 管 理 Copyright 2010, Oracle. All rights reserved. 38
GlassFish v3.1のクラスタ 新 機 能 sshd SSH Client sshd SSH プロビジョニング 方 式 ドメイン 管 理 サーバ 内 に SSH Client ライブラリを 統 合 Hudson(Trilead-ssh2)の 成 果 物 を 利 用 各 物 理 ノードでsshdを 起 動 システムの 初 期 化 とドメイン 管 理 サーバへの 登 録 将 来 的 な 実 装 予 定 各 マシンへのインストールもssh 経 由 で Cloud 環 境 でプロビジョニング Auto Scale 対 応 等 Copyright 2010, Oracle. All rights reserved. 39
GlassFishの 特 徴 無 償 ダウンロード 7x24 時 間 サポート Java EE 標 準 の 参 照 実 装 大 規 模 コミュニティ(100 万 ダウンロード/ 月 ) Java EE 6 にいち 早 く 対 応 (Web Profile 対 応 ) 軽 量 モジュール 化 (OSGi 対 応 ) 高 速 起 動 (5 秒 以 下 ) オープンソースアプリケーションサーバで 最 速 (SPECjAppServer ベンチマーク) 再 配 備 時 のセッション 保 持 Microsoft.NET 3.0/3.5との 相 互 運 用 性 各 種 Webサービス 対 応 スクリプト 言 語 (JRuby/Rails,Jython,Djyango,Scala/Lift, PHP, Server-side Java Script, Groovy/Grails)のネィティブ 対 応 GlassFish Enterprise Managerを 通 じたモニタ 拡 張 管 理 Copyright 2010, Oracle. All rights reserved. 40
GlassFishの 参 考 情 報 Oracle GlassFish Server http://www.oracle.com/technology/global/jp/products/glassfish Oracle GlassFish Server 全 ドキュメント( 英 語 ) http://docs.sun.com/app/docs/coll/1343.13?l=ja Sun GlassFish Enterprise Server v3 管 理 ガイド( 日 本 語 ) http://docs.sun.com/app/docs/doc/821-1299 GlassFish Community https://glassfish.dev.java.net GlassFish Wiki http://wiki.glassfish.java.net/ ブログ http://blogs.sun.com/theaquarium/ http://yoshio3.com/ Copyright 2010, Oracle. All rights reserved. 41
まとめ GlassFish v3 は 先 進 的 なアプリケーションサーバ Java EE 6 の 参 照 実 装 軽 量 / 高 速 起 動 インストールも 容 易 Java EE 以 外 のスクリプト 言 語 にも 対 応 Cometアプリケーションの 動 作 環 境 として 最 適 Java EE 6 でさらに 進 んだかんたん 開 発 XML 設 定 ファイル 編 集 の 軽 減 EJB 組 み 込 みコンテナで 単 体 テストが 容 易 統 合 開 発 環 境 連 携 でJPAのDBモデリングも 容 易 GlassFish v3.1でエンタープライズ 機 能 を 提 供 Copyright 2010, Oracle. All rights reserved. 42
本 ドキュメントは 弊 社 の 一 般 的 な 製 品 の 方 向 性 に 関 する 概 要 を 説 明 するものです また 情 報 提 供 を 唯 一 の 目 的 とするも のであり いかなる 契 約 にも 組 み 込 むことはできません 以 下 の 事 項 は マテリアルやコード 機 能 を 提 供 することをコミットメ ント( 確 約 )するものではないため 購 買 決 定 を 行 う 際 の 判 断 材 料 になさらないで 下 さい オラクル 製 品 に 関 して 記 載 されてい る 機 能 の 開 発 リリースおよび 時 期 については 弊 社 の 裁 量 により 決 定 されます Oracle PeopleSoft JD Edwards 及 びSiebelは 米 国 オラクル コーポレーション 及 びその 子 会 社 関 連 会 社 の 登 録 商 標 です その 他 の 名 称 はそれぞれの 会 社 の 商 標 の 可 能 性 があります Copyright 2010, Oracle. All rights reserved. 43
Copyright 2010, Oracle. All rights reserved. 44