Java EE 再入門
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Java EE 再入門

on

  • 47 views

Java EE Re-Introduction

Java EE Re-Introduction

Statistics

Views

Total Views
47
Views on SlideShare
45
Embed Views
2

Actions

Likes
2
Downloads
0
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Java EE 再入門 Presentation Transcript

  • 1. JavaEE 再入門 To Java EE 7 from J2EE 1.4 November 2014 @minazou67
  • 2. JavaEE再入門 はじめに 本スライドは、J2EE 1.4 からJava EE 7 の新機能について広く浅く解説し、 短時間でJava EE に関する知識を網羅 的に学習することを目的としています。 Java を学ぶきっかけになれば幸いです。 2 •本スライドでは、Java の基本的な事項(変数、演算子、制御構文、クラスなど) については取り扱いません。 •本スライドで紹介している機能が、Java EE の新機能の全てではありません。 •本スライドに掲載されている会社名、製品名、サービス名、ロゴは、各社・各団体の商標または登録商標です。
  • 3. JavaEE再入門 Target •Java の知識がJava EE 5 付近で止まっている人 •Java 使ってるけど、実は よく知らないという人 •Java EE 初心者な人 3
  • 4. JavaEE再入門 Goal Java EEの各バージョンの更新内容 を再確認することにより、既存の知 識を整理すると共に、最新バージョ ンのJava EE について学び、より モダンなプログラミングスタイルを 身に付けましょう。 4
  • 5. JavaEE再入門 Java に関する あれやこれや 5
  • 6. JavaEE再入門 J2EE 1.4 Java EE 5 2003年11月 JSR 151 Java EE 6 Java EE 7 2006年5月 JSR 244 2009年12月 JSR 316 2013年5月 JSR 342 Java EE Release History 2年6ヶ月 3年6ヶ月 3年5ヶ月 6
  • 7. JavaEE再入門 JCP JSR Java 関連用語など JEP 7 「Java SE 再入門」に書いてます。 JRE JDK JVM Java Byte Code JNI JNDI Reference Implementation Java Platform IDE
  • 8. JavaEE再入門 J2EE 1.4 (JSR 151) 8
  • 9. JavaEE再入門 •2003年11月24日にリリース •主なテーマは、Web サービス •20件のSpec •J2EE 1.3 と同様に、JCP のもとで仕様を考案 •WS-I Basic Profile 1.0 に対応 •Web サービス(SOAP) 機能を標準でサポート •EJB の機能拡張(Web サービス対応) •新しいWeb フレームワークとして、JavaServer Faces (JSF) を導入 J2EE 1.4 概要 9
  • 10. JavaEE再入門 •WS-I (Web Services Interoperability Organization) は、 Web サービスの相互運用性を図ることを目的とし たオープンな団体 •複数のプラットフォーム、開発言語、アプリケー ション上で、Web サービスの相互運用を容易にす るための利用法(プロファイル)を推進 •Basic Profile は、SOAP, WSDL, UDDI の基本仕様 •Attachments Profile は添付ファイルの仕様で、 Basic Profile 1.1 と組み合わせて利用 •Basic Security Profileはセキュリティの仕様で、 Basic Profile の拡張プロファイル WS-I Basic Profile 10
  • 11. JavaEE再入門 •JAX-RPC (Java API for XML-Based RPC) は、 XML ベースのRPC (Remote Procedure Call) の 標準仕様 •分散型アプリケーションの構築が可能 •JAX-RPC 1.1 は、WS-I Basic Profile 1.0 に準拠 し、SOAP 1.1 をサポート •SOAP 1.1 over HTTP プロトコルで通信 •XML とJava オブジェクトとをバインディング •JAX-RPC 1.1 の実装として、Apache Axis が有名 JAX-RPC 11
  • 12. JavaEE再入門 •EJB (Enterprise JavaBeans) は、分散オブジェクト 指向に基づいたサーバコンポーネントモデル仕様 •分散トランザクション管理やセキュリティ制限、 ネーミングサービスなど、ビジネスロジックの実装 に有用な機能をまとめて提供 •Java に特化したCORBA のサブセットのようなもの •EJB コンテナの上で動作 •EJB 2.0 から導入されたMDB (Message Driven Bean) は、非同期処理をサポート EJB 12
  • 13. JavaEE再入門 EJB の利用イメージ 13 Java Platform, Enterprise Edition Client Container EJB Container Web Container Web Browser Application Client Enterprise Bean Enterprise Bean JSP Servlet JSF Enterprise Bean Database
  • 14. JavaEE再入門 •仕様が重厚長大で習得が困難 •デプロイメント記述子(XML) の記述が冗長で複雑 •インターフェースの実装が必要で密結合化 •不要なコールバック・メソッドの実装が必要で面倒 •データベースへのアクセスが面倒 •開発生産性が低く、実行性能が悪い •環境構築やデプロイ、テストが面倒 •若者のEJB 離れ EJB 2.1 の問題点 14
  • 15. JavaEE再入門 •重量コンテナ(EJB) の代替として、軽量コンテナと ORM (Object Relational Mapper) が台頭 •軽量コンテナは、DI (Dependency Injection) コンテ ナとも呼ばれる •POJO (Plain Old Java Object) ベースでの開発が可能 •代表的な軽量コンテナとしては、Spring Framework やSeasar が有名 •POJO とDI による疎結合化により、開発やテストが 容易に •JavaEEの次期バージョンへ多大な影響を与えた 軽量コンテナとORM 15
  • 16. JavaEE再入門 •JSF(JavaServer Faces) は、Web アプリケーション 用のコンポーネントベースのフレームワーク •MVC アーキテクチャー・パターンに準拠 •イベント駆動型のプログラミングモデルを採用 •JSF 独自のTag Library を利用し、JSP ページを作成 •再利用可能な「UIコンポーネント」を組み合わせて Web ページを構築 •カスタムコンポーネントを容易に作成可能 (PrimeFaces には100 以上のコンポーネントやスキンが存在) •GUI ツールによる画面開発が可能 •参照実装は、Mojarra JSF 16
  • 17. JavaEE再入門 Java EE 5 (JSR 244) 17
  • 18. JavaEE再入門 •2006年5月11日にリリース •主なテーマは、Ease of Development (EOD) •23件のSpec •名称がJ2SE からJava EE に変更され、バージョ ン番号から小数点以下が削除された •アノテーションを使用したPOJO (Plain Old Java Object) ベースの開発が可能に •Enterprise JavaBeans (EJB)を単純化 •Java Persistence API (JPA) の導入 •Web サービスの新しい仕様であるJAX-WS を導入 Java EE 5 概要 18
  • 19. JavaEE再入門 •POJO (Plain Old Java Object) ベースでの開発が可能 •コールバック・インターフェイスの実装が不要 •例外処理の簡素化 •デフォルト値の設定によるコードの簡素化 •JNDI アクセスのカプセル化 •インターセプターの導入により、横断処理が可能 •アノテーションの導入により、XMLファイルを削減 •アノテーションとDI による疎結合化 •Java Persistence API (JPA) の導入によるデータ ベースアクセスの簡素化 EJB 3.0 19
  • 20. JavaEE再入門 •Hibernate やJDO (Java Data Objects) の影響を 受けた、Java EE 標準のORM仕様 •POJO ベースのO/R マッピングが可能 •EJB コンテナは不要で、Java SE 環境でも動作可能 •SQL によく似たク工リ言語であるJPQL (Java Persistence Query Language) により、Entity に対 する問い合わせが可能 •JPQL により永続化対象のデータベースに非依存 •JavaEE 5 のJPA 1.0 はEJB 3.0 の仕様の一部 •JavaEE 6 のJPA 2.0 でEJB 3.1 と分離 Java Persistence API (JPA) 20
  • 21. JavaEE再入門 JPA のArchitecture イメージ 21 Application JNDI Database JDBC JTA EntityManager EntityManagerFactory Persistence Context Entity Entity Entity Entity <ライフサイクル管理> persist merge remove flush Entity <データ操作> Find createQuery createNamedQuery createNativeQuery
  • 22. JavaEE再入門 •JAX-WS(Java API for XML-Based Web Services) は、 JAX-RPC 1.1 の後継となるWeb サービスの仕様 •RPC 指向(同期) からメッセージ指向(非同期) へと変化 •JAX-RPC 1.1 と同様にSOAP 1.1 とWSDL 1.1 をサ ポート •SOAP 1.2 とWS-I Basic Profile 1.1 もサポート •アノテーションの使用が可能 •XML とJava オブジェクトとのデータバインディング には、JAXB を採用 •SOAP with Attachments (Sw/A) とMTOM の両方の 添付ファイル仕様をサポート JAX-WS 22
  • 23. JavaEE再入門 •統合式言語(Unified EL) の導入 (JSF のEL 式とJSP のEL 式を統合) •JSF で用いられていた遅延評価用のEL式が使用可能 •trimDirectiveWhitespaces 属性が追加され、生成する HTML コードから余分なホワイトスペースを除去可能 •アノテーションによるResource Injection をサポート •J2SE 5.0 で追加された列挙型(enum) をサポート •カスタムELResolver の作成が可能 (Spring, EJB, JNDI などの標準ではサポートされていないオブ ジェクトの取り扱いが可能) JSP2.1 23
  • 24. JavaEE再入門 •J2SE 5.0 が必須 •アノテーションのサポート(リソースの注入が可能) •filter-mapping が複数サーブレット名指定、ワイルド カードに対応 •servlet-mapping が複数URL パターンの指定に対応 •http-method にHTTP/1.1 の全メソッド名を使用可能 •getContextPathAPI の追加 •web.xml のルート要素にmetadata-complete 属性を 追加し、アノテーション処理の実施を制御可能に •エラーハンドリング後のステータスコードの変更が可能 Java Servlet2.5 24
  • 25. JavaEE再入門 Java EE 6 (JSR 316) 25
  • 26. JavaEE再入門 •2009年12月10日にリリース •主なテーマは、柔軟性・拡張性の向上と軽量化 •28件のSpec •Web Profile 形式での提供をサポート •プルーニングの導入 •EJBの機能拡張とEJB Lite の導入 •RESTful Web Services のサポート(JAX-RS) •JSF のメジャーアップデート •CDI, Interceptors, Bean Validation の導入 •web.xml のオプション化 Java EE 6 概要 26
  • 27. JavaEE再入門 Full Profile JAXP JAXM JAXR JAX-RPC JAXB JAX-WS JAX-RS JCA JMS EJB JavaMail Management JACC JASPIC Web Profile 27 Web Profile は、Web アプリケーションに必要な API のみを集めた、Full Profile のサブセットです。 サブセット形式での提供により、アプリケーション サーバの軽量化が可能になりました。 Web Profile JSTL/JSP/EL Servlet JSF Managed Beans Common Annotations Interceptors JPA EJB Lite CDI/DI Bean Validation JTA
  • 28. JavaEE再入門 •古くなった仕様を削減し、プラットフォームを軽量化 するために導入した仕組み •仕様がプルーニングされると、次のPlatform リリー スでは必須コンポーネントではなくなり、オプション 扱いになる可能性がある •JavaEE6では、以下の仕様をプルーニング プルーニング 28 JSR Technology JSR 093 JAXR (Java API for XML Registries) JSR 088 Java EE Application Deployment JSR 101 JAX-RPC (Java API for XML-Based RPC) JSR 153 EJB Entity Bean
  • 29. JavaEE再入門 •パッケージングの簡略化(war に直接梱包可能に) •Singleton Session Beans が追加 (スレッドセーフな唯一のBean を簡単に実装可能に) •タイマーサービスの仕様が大幅に強化 (アノテーションでカレンダー形式のスケジューリングが可能) •アノテーションで非同期処理を簡単に実装可能 •ローカルビジネスインタフェースの実装を省略可能 •JNDI 名を標準化し、移植性を向上 •組み込み可能なEJB コンテナが提供され、Java SE 環境での単体テストを容易に実施可能 EJB 3.1 29
  • 30. JavaEE再入門 •EJB のサブセット仕様 •Full Profile とWeb Profile の両形式のアプリケー ションサーバで実行可能 •セキュリティが確保された、トランザクション対応の ビジネスロジックを手軽に実装可能 •タイマーサービスやMDB (Message-Driven Bean)、 非同期メソッド呼び出しは、使用できない •インターセプターは使用可能 EJB Lite 30
  • 31. JavaEE再入門 •JAX-RS (Java API for RESTful Web Services) は、REST スタイルのWeb サービスを提供するための仕様 •JAX-WS に代わる新しいWeb サービスの仕様 •アノテーションベースで宣言的に実装可能 •リソースの要求をURI のパスで定義 •参照実装は、Jersey JAX-RS 31 importjavax.ws.rs.GET; importjavax.ws.rs.Path; importjavax.ws.rs.Produces; importjavax.ws.rs.core.MediaType; @Path(value="/welcome") publicclassWelcomeResource { @GET @Produces(MediaType.TEXT_PLAIN) publicString welcome() { return"welcome"; } }
  • 32. JavaEE再入門 •新たなテンプレート言語であるFacelets(xhtml) を導入 •Facelets の導入により、コンポーネントの再利用やデザ イナとの分業が容易に •Apache Tiles のようなテンプレート機能の追加 •Bean Validation (JSR-303) との統合 (コンポーネント毎のエラー表示が可能) •CDI (JSR-299) との統合 •暗黙的なナビゲーションの導入 (ナビゲーション定義用のXML ファイルが不要に) •Ajax 対応(JavaScript の知識は不必要) JSF2.0 32
  • 33. JavaEE再入門 •CDI (Contexts and Dependency Injection)は、コ ンテキスト(スコープ) を持った依存性注入の仕様 •バラバラだったDIの方法を全てのレイヤで統一 •スコープの種類は、Application, Session, Conversation, Request, Dependent •型に基づくタイプセーフなインジェクションが可能 •@Qualifier アノテーションで静的な型解決が可能 •@Produces アノテーションで動的な型解決が可能 •JavaEE 6 のCDI 1.0 ではbeans.xml は必須 •参照実装は、JBoss のWeld CDI 33
  • 34. JavaEE再入門 JAX-RS + CDI の実装例 34 importjavax.ejb.Stateless; importjavax.inject.Inject; importjavax.ws.rs.GET; importjavax.ws.rs.Path; importjavax.ws.rs.PathParam; importjavax.ws.rs.Produces; importjavax.ws.rs.core.MediaType; @Stateless @Path(value="/cdi") publicclassSampleResource { @Inject privateSampleService service= null; @GET @Path("/find/{id}") @Produces(MediaType.TEXT_PLAIN) publicString update(@PathParam("id")longid) { service.find(id); return"Find! ["+ id + "]"; } }
  • 35. JavaEE再入門 •Interceptors は、CDI でAOP (Aspect Oriented Programming) を実現するための仕様 •ビジネスロジックなどのBean の呼び出しをインター セプトし、横断的な関心事を分離 •ログ出力や独自の認証チェックなどに使用可能 •アノテーションとInterceptor クラスを作成し、対象 のBean にアノテートすることでAOP が可能 •beans.xml にInterceptor を定義して有効化 •複数のInterceptor をリスト定義した場合は、リスト の上から順に適用される Interceptors 35
  • 36. JavaEE再入門 Interceptors の実装例 36 @Interceptor @Logable publicclassLoggingInterceptor implementsSerializable { @AroundInvoke publicObject invoke(InvocationContext ic) throwsException { Logger logger= Logger.getLogger(ic.getTarget().getClass().getSuperclass().getName()); logger.info(ic.getMethod().getName() + " start."); try{ returnic.proceed(); } finally{ logger.info(ic.getMethod().getName() + " end."); } } } @Logable @RequestScoped publicclassSampleServiceImpl implementsSampleService { } @Inherited @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public@interfaceLogable{ }
  • 37. JavaEE再入門 •Bean Validationは、JavaBeans の値の妥当性を チェックするための仕様 •検証のためのメタデータをアノテーションで指定 •Spring MVC やJSF, JAX-RS, JPA などで使用可能 •標準でnull、最少、最大、サイズ、正規表現、真偽値 などのチェックが可能 •エラーメッセージは、properties ファイルやアノテー ションのmessage 属性で変更可能 •独自に作成したアノテーションによる検証も可能 •参照実装は、Hibernate Validator Bean Validation 37
  • 38. JavaEE再入門 Bean Validation の実装例 38 publicclassSampleBean { @NotNull privateString notNull; // Min・Max @Min(-10) intintMin; @Max(10) intintMax; // Decimal Min・Max @DecimalMin("-10.5") @DecimalMax("10.5") String stringMinMax; // Size @NotNull @Size(max = 10, message = "{max} 文字以内である必要があります。") String stringSize; @Size(min = 0, max = 10) List<Integer> listSize; // Pattern @Pattern(regexp = "[0-9]+") privateString stringPattern; // getter/setter }
  • 39. JavaEE再入門 •アノテーションを利用したEoD (Servlet, InitParam, Filter, Listener, Security などのアノテー ションを提供しweb.xml は不要に) •Web-Fragment 機能によりweb.xml の分割が可能 (jar 内のweb.xml をデプロイ時にマージ可能) •Web リソースのモジュール化 (WEB-INF/lib に静的コンテンツやJSP を纏めたjar を配置可能) •非同期処理のサポート(アノテーションで簡単に実装可能) •認証用API (login, authenticate, logout) の追加 •マルチパート対応(ファイルのアップロード処理が簡単に) •HttpOnlyCookie, JSESSIONIDの変更, URL Rewriting の無効化のサポート Java Servlet3.0 39
  • 40. JavaEE再入門 Java EE 7 (JSR 342) 40
  • 41. JavaEE再入門 •2013年5月28日にリリース •主なテーマは、簡素化の強化とHTML5 サポート •30件のSpec(+3 Spec のオプション) •WebSocket とJSON のサポート •JAX-RS の仕様を拡張 •JavaServer Faces (JSF) のHTML5 対応 •Expression Language (EL) のメジャーアップデート •Batch フレームワークの提供 •Concurrency Utilities(並行処理ユーティリティ)の提供 •Java Message Service API (JMS) の改善 Java EE 7 概要 41
  • 42. JavaEE再入門 •Java API for WebSocket は、Java でWebSocket 通信するためのAPI 仕様 •WebSocket は、RFC 6455 で定義されたTCP ベー スのプロトコルで、サーバー・クライアント間での双 方向通信が可能なプロトコル •WebSocket で通信することで、通信コスト削減、 サーバープッシュが容易などのメリットがある •WebSocket の利用には、モダンなブラウザとアプリ ケーションサーバーが必要 •アノテーション・ベースのプログラミングをサポート •Java SE 環境でも利用可能 Java API for WebSocket 42
  • 43. JavaEE再入門 WebSocketのサーバ側の実装例 43 @ServerEndpoint("/websocket") publicclassSampleWebSocketEndpoint { privatestaticfinalLogger LOG= Logger.getLogger(SampleWebSocketEndpoint.class.getName()); @OnOpen publicvoidonOpen(finalSession session) { LOG.info("On open"); } @OnMessage publicvoidonMessage(finalString message, finalSession session) { LOG.info("On message ["+ message+ "]"); try{ session.getBasicRemote().sendObject("Received ["+ message+ "]"); } catch(IOException | EncodeException e) { LOG.severe(e.getMessage()); } } @OnClose publicvoidonClose(finalSession session) { LOG.info("On close"); } }
  • 44. JavaEE再入門 •JSON-P (Java API for JSON Processing) は、JSON をパース・生成・問い合わせするためのAPI 仕様 •Streaming API とObject Model API の2種類のAPI が存在 •Streaming API は低レベルなAPI で、イベントベー スのJsonParser とJsonGenerator を提供 •Object Model API は、JSON データをメモリ上にツ リー構造で表現することにより、DOM のような操作 が可能だが、Streaming API よりも遅く、メモリを より多く消費する •Java オブジェクトとJSON のバインディング機能は、 仕様に含まれていない JSON-P 44
  • 45. JavaEE再入門 •JAX-RS 1.1 の仕様を拡張 •クライアントAPI を提供 •リクエストとレスポンスに対するフィルターをサポート •Message Body の加工を目的とするインターセプター をサポート •CDI をサポート(EJB との併用が不要) •Bean Validation をサポート (アノテーションによるパラメーター検証が可能) •非同期処理をサポート JAX-RS 2.0 45
  • 46. JavaEE再入門 •HTML5 サポート(HTML5 タグ・属性への対応) •パススルー機能の導入(未定義のタグ属性をスルー) •Faces フローの導入 (画面フロー定義と対話スコープの提供) •Resource Library Contracts の導入 (テンプレートやCSSを動的に切り替え可能に) •Stateless Views の導入 (状態を保持しないことによるパフォーマンスの向上) •ファイルアップロード機能の提供 •セキュリティトークン方式によるCSRF 対策 JSF 2.2 46
  • 47. JavaEE再入門 •JSP の仕様から切り離され、個別のJSR として独立 •ラムダ式の使用が可能 •コレクション操作のためのEL stream API を提供 •Static なフィールドとメソッドに直接アクセス可能 •スタンドアロンでの利用が可能になるELProcessor クラスを提供(JSP・JSF 以外からも利用が可能に) •セミコロンオペレータ「;」で複数処理の記述が可能 •アサインメントオペレータ「=」で値の代入が可能 •文字列連結オペレータ「+=」で文字連結が可能 •独自の型コンバーターの利用が可能 EL 3.0 47
  • 48. JavaEE再入門 •Java バッチフレームワークの標準仕様 •仕様のベースはSpring Batch •ジョブスケジューラー機能はスコープ外で、cron な どから起動される想定 •ジョブやステップをXML で定義 •チェックポイントによる分割コミットやエラーハンド リング(Skip・Retry・Restart) 機能を提供 •アノテーション・ベースのプログラミングをサポート •Java SE 環境でも利用可能 Batch Applications for the Java Platform 48
  • 49. JavaEE再入門 Batch Application のイメージ 49 Java Platform, Enterprise Edition Batch Application Job Scheduler (cron, etc…) JAX-RS Database CDI JTA jBatch JPA Files JobRepository Job Operator Job Step
  • 50. JavaEE再入門 •JTA (Java Transaction API) は、分散トランザクション をサポートしたトランザクション管理のための仕様 •コンテナ管理のトランザクション(CMT) と、Bean 管 理のトランザクション(BMT) の2種類の管理方法が存在 •CMT では、トランザクション境界をコンテナが管理 •BTM では、トランザクション境界をコードで管理 •JTA 1.1 までは、EJB コンテナが必須 •JTA 1.2 (Java EE 7) では、@Transactional アノテー ションを使うことでEJB コンテナが不要 (CDI 管理のBean をCMT 可能) JTA1.2 50
  • 51. JavaEE再入門 •ノンブロッキングのI/O のサポート (ReadListener, WriteListener インターフェースの提供) •プロトコルのアップグレード対応 (upgrade API によるWebSocket 対応) •キュリティ機能の強化 (changeSessionId API によるログイン後のセッションID の変更や、deny-uncovered-http-methods によるアクセ スメソッドの制限など) Java Servlet3.1 51
  • 52. JavaEE再入門 おまけ 52
  • 53. JavaEE再入門 Web Service のトレンド 53 JAX-RS JAX-WS (SOAP 1.2) JAX-RPC (SOAP 1.1) SOAP (XML) REST (JSON) SOA (Service Oriented Architecture) Microservice JAXB (Java-XML) JSON-B (Java-JSON)
  • 54. JavaEE再入門 Application Server のJava EE サポート状況 Application Server 名称 サポート状況 Oracle WebLogic Server 12c Java EE 6, Java EE 7 (一部のみ) IBM WebSphere Application Server V.8.5 Java EE 6 Red Hat JBoss EAP 6.3 Java EE 6 FUJITSU Interstage Application Server V11.0 Java EE 6 Hitachi uCosminexus Application Server V9 Java EE 6 NEC WebOTX Application Server V9.2 Java EE 6 Oracle GlassFish Server 3.1.2 Java EE 6 GlassFish 4.1 Open Source Edition Java EE 7 WildFly 8 (旧JBoss Application Server) Java EE 7 Apache TomEE 1.7.1 Java EE 6 Web Profile 54 (2014年10月23日時点)
  • 55. JavaEE再入門 Java EE 7 全体イメージ 55 Java Platform, Enterprise Edition Web Services Enterprise Application Management and Security Web Application JAXM JAXR JAXM JAX-RPC JAX-WS JAX-RS JMX J2EE Management Deployment JACC JASPIC Debugging EJB JPA JTA Bean Validation Interceptors CDI/DI JSP/JSTL EL Java Servlet JSF JSON-P WebSocket Lite Full Profiles Web Profile
  • 56. JavaEE再入門 Matrix of the Java EE version and JSR (Web Services Technologies) Technology JSR EE 1.4 EE 5 EE 6 EE 7 Java API for XML Processing (JAXP) 063 1.2 - - - 206 - 1.3 (SE) 1.4 (SE) 1.4 (SE) Java APIs for XML Messaging (JAXM) 067 1.2 1.3 1.3 1.3 Java API for XML Registries (JAXR) 093 1.0 1.0 1.0 1.0 (Op) Java API for XML-Based RPC (JAX-RPC) 101 1.1 1.1 1.1 1.1 (Op) Implementing Enterprise Web Services 109 1.1 1.2 1.3 1.3 Streaming API for XML (StAX) 173 - 1.0 1.0 (SE) 1.0 (SE) Web Services Metadata for the Java Platform 181 - 2.0 2.1 2.1 Java Architecture for XML Binding (JAXB) 222 - 2.0 2.2 2.2 (SE) Java API for XML-Based Web Services (JAX-WS) 224 - 2.0 2.2 2.2 Java API for RESTful Web Services (JAX-RS) 311 - - 1.1 - 339 - - - 2.0 56 (太字はWeb Profile対象)
  • 57. JavaEE再入門 Matrix of the Java EE version and JSR (Web Application Technologies) Technology JSR EE 1.4 EE 5 EE 6 EE 7 Standard Tag Library for JavaServer Pages(JSTL) 052 1.1 1.2 1.2 1.2 JavaServer Pages (JSP) 152 2.0 - - - 245 - 2.1 2.2 2.3 Expression Language (EL) 245 - - 2.2 - 341 - - - 3.0 Java Servlet 154 2.4 2.5 - - 315 - - 3.0 - 340 - - - 3.1 JavaServer Faces (JSF) 127 1.1 - - - 252 - 1.2 - - 314 - - 2.0 - 344 - - - 2.2 Java API for JSON Processing (JSON-P) 353 - - - 1.0 Java API for WebSocket 356 - - - 1.0 57 (太字はWeb Profile対象)
  • 58. JavaEE再入門 Matrix of the Java EE version and JSR (Enterprise Application Technologies) Technology JSR EE 1.4 EE 5 EE 6 EE 7 Managed Beans 316 - - 1.0 - 342 - - - 1.0 Concurrency Utilities for Java EE 236 - - - 1.0 Common Annotations for the Java Platform 250 - 1.0 1.1 1.2 Interceptors 318 - - 1.1 1.2 Java EE Connector Architecture (JCA) 112 1.5 1.5 - - 322 - - 1.6 1.7 Java Persistence API (JPA) 220 - 1.0 - - 317 - - 2.0 - 338 - - - 2.1 Java Message Service API (JMS) 914 1.1 1.1 1.1 - 343 - - - 2.0 58 (太字はWeb Profile対象)
  • 59. JavaEE再入門 Matrix of the Java EE version and JSR (Enterprise Application Technologies) Technology JSR EE 1.4 EE 5 EE 6 EE 7 Enterprise JavaBeans (EJB) 153 2.1 - - - 220 - 3.0 - - 318 - - 3.1 - 345 - - - 3.2 Contexts and Dependency Injection for Java (CDI) 299 - - 1.0 - 346 - - - 1.1 Dependency Injection for Java (DI) 330 - - 1.0 1.0 Bean Validation 303 - - 1.0 - 349 - - - 1.1 Batch Applications for the Java Platform 352 - - - 1.0 Java Transaction API (JTA) 907 1.0 1.1 1.1 1.2 JavaMail API 919 1.3 1.4 1.4 1.5 JavaBeans Activation Framework (JAF) 925 1.0 1.1 1.1 (SE) 1.1 (SE) 59 (太字はWeb Profile対象)
  • 60. JavaEE再入門 Matrix of the Java EE version and JSR (Management and Security Technologies) Technology JSR EE 1.4 EE 5 EE 6 EE 7 Java Management Extensions (JMX) 003 1.2 1.4 (SE) 1.4 (SE) 2.0 (SE) Debugging Support for Other Languages 045 1.0 1.0 1.0 1.0 J2EE Management 077 1.0 1.1 1.1 1.1 Java EE Application Deployment 088 1.1 1.2 1.2 1.2 (Op) Java Authorization Contract for Containers (JACC) 115 1.0 1.1 1.4 1.5 Java Authentication Service Provider Interface for Containers (JASPIC) 196 - - 1.0 1.1 60 (太字はWeb Profile対象)
  • 61. JavaEE再入門 Java EE 関連のお勧め書籍 61 タイトル: Java EE 7 Essentials 出版社: Oreilly & Associates Inc 著者: Arun Gupta(著) 発売日: 2013/9/6 ページ数: 343ページ 価格: 5,631円(税込) : 2,040円(税込) [Kindle 版] タイトル: Beginning Java EE 6 出版社: 翔泳社 著者: Antonio Goncalves (著) 日本オラクル株式会社(監訳) 発売日: 2012/03/08 ページ数: 608ページ 価格: 4,536円(税込)
  • 62. JavaEE再入門 Java EE8 62 JSR 366 として正式にスタートし、2016年Q3 に リリース予定。以下のような機能を提供予定。 JSR 仕様 JSR 107 JCACHE -Java Temporary Caching API キャッシュ機構を提供する標準API JSR 365 Contexts and Dependency Injection for Java 2.0 CDIのモジュール化(Java SE 上でのコンテナ起動など) JSR 367 Java API for JSON Binding (JSON-B) Java オブジェクトとJSON のバインディング JSR 369 Java Servlet 4.0 HTTP/2 対応(Request/Response の多重化やServer Push) JSR 370 Java API for RESTful Web Services (JAX-RS 2.1) Server-Sent Event (SSE) のサポート JSR 371 Model-View-Controller (MVC 1.0) アクションベースのMVC フレームワーク(テンプレートは対象外)
  • 63. JavaEE再入門 まとめ 63
  • 64. JavaEE再入門 •フルスタックな標準技術 •IDE のサポートが比較的優秀 •知識の差分アップデートが可能 •アプリケーションサーバがライブラリを提供 してくれるため、デプロイ用アーカイブの ファイルサイズの肥大化が抑制でき、配備時 間や起動時間の短縮が可能 •有償サポートによる脆弱性対応 •プログラマの確保が比較的容易 Java EE の良いところ 64
  • 65. JavaEE再入門 •コードが冗長になりがち •OSS の後追いで進化のスピードが遅い •仕様が重厚長大で全体を把握するのが大変 •サーバの起動に時間が掛かる(過去の話) •JavaEE準拠のサーバ間でもアプリケーショ ンの互換性を維持できない場合がある •日本語の書籍が少ない •若者のJava EE 離れが顕著 Java EEの良くないところ 65
  • 66. JavaEE再入門 世の中には多数のライブラリやフレーム ワークが存在しますが、システム特性や 開発規模、メンバー構成などにより最適 なアーキテクチャは異なります。 Java EEは、規模が大きく、ライフサイ クルの長いアプリケーションの開発に適 していると言われており、現時点でも主 要な選択肢の一つです。 66 最後に
  • 67. JavaEE再入門 Modern Java is the best Java. 67
  • 68. JavaEE再入門 おわり 68