Java EE for Beginners

893 views
802 views

Published on

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
893
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Java EE for Beginners

  1. 1. これを聞けば分かる、 エンタープライズ Java の今 そして未来 Yoshio Terada Java Evangelist Fusion Middleware Org Aug 28, 2014 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted
  2. 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです 。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込む ことはできません。以下の事項は、マテリアルやコード、機能を提供すること をコミットメント(確約)するものではないため、購買決定を行う際の判断材 料になさらないで下さい。オラクル製品に関して記載されている機能の開発、 リリースおよび時期については、弊社の裁量により決定されます。 Oracleは、米国オラクルコーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  3. 3. Java EE 7 2013 年 6 月リリース The standard in community-driven enterprise software Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  4. 4. Java EE 7 へ含まれる JSR 一覧 Portable Extensions JSP 2.2 JSF 2.2 JAX-RS 2.0 EL 3.0 Servlet 3.1 Common Annotations 1.1 Interceptors 1.1 CDI 1.1 Managed Bean 1.0 EJB 3.2 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Connector 1.6 JPA 2.1 JTA 1.2 JMS 2.0 Bean Validation 1.1 Concurrency Utilities (JSR-236) Batch Application (JSR-352) Java API for JSON (JSR-353) Java API for WebSocket (JSR-356) 新規追加 大幅な更新 通常の更新
  5. 5. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  6. 6. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  7. 7. 各バージョンにおける実装アーキテクチャ Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック ロジック データ・アクセス DB Queue Batch
  8. 8. 各バージョンにおける実装アーキテクチャ Java EE 6 Pruning 拡張性 かんたん開発 CDI/JAX-RS Java EE 7 開発生産性向上 HTML 5 エンタープライズ・ ニーズへの対応 jBatch Concurrency Utilities Web Profile JAX-RS, JSON-P, WebSocket Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Java EE 6 • Java EE 7 2009年12月 2013年6月 Web Profile Servlet, EJB Lite
  9. 9. 3パターン Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  10. 10. パターン1:従来型の開発 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Java EE 6 • Java EE 7 ビュー関連処理 ビジネス・ロジック データ・アクセス JSF (Facelets) Expression Language CDI CDI EJB JPA
  11. 11. パターン2: HTML 5 & RESTful 開発 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Java EE 6 • Java EE 7 ビュー関連処理 ビジネス・ロジック データ・アクセス CDI EJB HTML5 (JavaScript) JavaFX JAX-RS JPA
  12. 12. パターン3:双方向リアルタイム - WebSocket Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Java EE 6 • Java EE 7 ビュー関連処理 ビジネス・ロジック データ・アクセス CDI EJB HTML5 (JavaScript) WebSocket Client WebSocket Server JPA
  13. 13. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  14. 14. 個別のテクノロジーはどこから学ぶ? Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック ロジック データ・アクセス DB
  15. 15. 変化するView関連技術に柔軟に対応 メンテナンス性の高いシステム構築 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  16. 16. @Stateless @SessionScope @Path(“persons”) @Entity @Named(value=“personmgr”) @WebService public class PersonManager { EJB CDI JAX-RS JPA JAX-WS Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted 17 @Id private String id;   @GET @Path("{id}") public Response getName( @PathParam(”id") String id ) { }
  17. 17. ビュー実装に依存しない柔軟性の高いシステム構築 ビュー関連処理 データ・アクセス Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビジネス・ロジック ロジック DB
  18. 18. データ・アクセス ビジネス・ロジック Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス – JPA – JMS – Batch ビュー関連処理 データ・アクセス CDI EJB JPA
  19. 19. データ永続化 - JPA データベース・テーブルと Java のクラスをマッピング @Entity! public class Customer implements Serializable {! @Id! private Long id;! private String address1;! private long age;! private String name;! private String telephone;! //セッタ・ゲッタ Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | }! ! DBのテーブル Entity クラス DB
  20. 20. JPA エンティティ・クラス @En$ty public class Person implements Serializable { @Id private String id; @Size(max = 255) @NotNull private String name; @Size(max = 255) private String emailaddress; } Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  21. 21. JPA エンティティ・クラス @En$ty @Table(name = "PERSON") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Person.findAll", query = "SELECT p FROM Person p”) }) public class Person implements Serializable { @Id private String id; } Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  22. 22. データ永続化 ‒ JPA クエリ • SQLに類似したクエリ言語 • Entity を使用したクエリ表現 • select, update, delete などの機能を提供 • データベースに非依存 SELECT c FROM Customer c! SELECT c FROM Customer c! WHERE c.name = ’Taro' AND c.address = ’Tokyo'! DELETE FROM Customer c WHERE c.age < 18! UPDATE Customer c SET c.firstName = 'TOO YOUNG’ WHERE c.age < 18! Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | DB
  23. 23. ビジネス・ロジック Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JPA ビジネス・ロジック • ビュー • ビジネスロジック – CDI – EJB • データ・アクセス ビュー関連処理 データ・アクセス CDI EJB
  24. 24. フレームワーク間の依存性を 極力排除し疎結合で結びつけ 拡張性・メンテナンス性を向上 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  25. 25. ビジネス・ロジック ‒ CDI or EJB Java EE 7 以降、CDIの利用範囲が向上(より重要に) CDI EJB DI/AOP @Inject @Inject, @EJB など EL式との連携 @Named N/A スコープ @RequestScope, @SessionScope 等 N/A トランザクション @Transactional (Java EE 7から追加) 利用可能(コンテナ or Bean Managed) 非同期実行 N/A (将来) @Asyncronous JMS 連携 N/A @MessageDriven リモート実行 N/A @Remote タイマー・サービス N/A (将来) @Schedule 起動時の初期化 N/A (将来) @Startup Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  26. 26. ビジネス・ロジック ‒ EJB (DB へクエリ実行) @Stateless public class ManagePersonLogic { @PersistenceContext(unitName = "JavaEE7-­‐SAMPLE-­‐PU") En$tyManager em; public List<Person> getAllPersons() { Query<Person> query = em.createNamedQuery("Person.findAll”,Person.class); return query.getResultList(); } } Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  27. 27. ビジネス・ロジック ‒ CDI (DB へクエリ実行) Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | @Dependent (@RequestScoped 等 CDI が用意するスコープを指定) public class ManagePersonLogic { @PersistenceContext(unitName = "JavaEE7-­‐SAMPLE-­‐PU") En$tyManager em; public List<Person> getAllPersons() { Query<Person> query = em.createNamedQuery("Person.findAll”,Person.class); return query.getResultList(); } }
  28. 28. ビジネス・ロジック ‒ EJB (DB へ永続化) @Stateless public class ManagePersonLogic { @PersistenceContext(unitName = "JavaEE7-­‐SAMPLE-­‐PU") En$tyManager em; public Person createPerson(Person person) { em.persist(person); return person; } } Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  29. 29. ビジネス・ロジック - CDI (DB へ永続化) Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | @Dependent (@RequestScoped 等 CDI が用意するスコープを指定) public class ManagePersonLogic { @PersistenceContext(unitName = "JavaEE7-­‐SAMPLE-­‐PU") En$tyManager em; @Transac$onal public Person createPerson(Person person) { em.persist(person); return person; } }
  30. 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JPA CDI EJB ビュー • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック データ・アクセス
  31. 31. HTML5/JavaScript に精通? 自らHTML 5 で実装 :JAX-RS フレームワークを利用:JSF Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  32. 32. JAX-RS : REST サーバ・エンドポイント @Path("/manage/") public class PersonManageREST { @Inject (もしくは @EJB ) ManagePersonLogic manageLogic; @GET @Produces({"applica$on/xml", "applica$on/json"}) public List<Person> findAll() { return manageLogic.getAllPersons(); } } Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  33. 33. JAX-RS : REST サーバ・エンドポイント @Path("/manage/") public class PersonManageREST { @Inject (もしくは @EJB ) ManagePersonLogic manageLogic; @POST @Consumes({"applica$on/xml", "applica$on/json"}) public void create(Person en$ty) { Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | manageLogic.createPerson(en$ty); } }
  34. 34. JSF : バッキング・ビーン Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | @Named(value = "pmanage") @RequestScoped public class PersonManagedBean { @Inject (もしくは @EJB ) ManagePersonLogic manageLogic; List<Person> persons; public List<Person> getPersons(){ return manageLogic.getAllPersons(); } } 同じビジネスロジック を使用
  35. 35. JAX-RS : REST サーバ・エンドポイント <p:dataTable var="person" value="#{pmanage.persons}" paginator="true" paginatorAlwaysVisible="false"> <p:column headerText="ID"> <h:outputText value="#{person.id}" /> </p:column> <p:column headerText="名前(漢字)"> <h:outputText value="#{person.name}" /> </p:column> <p:column headerText="メールアドレス"> <h:outputText value="#{person.emailaddress}" /> </p:column></p:dataTable> Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  36. 36. パターン1~3のように どのように View 技術が変わっても Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  37. 37. バックエンドをしっかり作る事で 柔軟なViewに対応可能 将来的にメンテナンス性が大幅向上 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  38. 38. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  39. 39. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java EE 8 のテーマ • HTML5 / Web 層の拡張 – HTTP 2.0 (SPDY) – JSON バインディング – SSE (Server-Sent Events) – アクション・ベース MVC 1.0 – JSF 2.3 ‒ Facelets, Ajax-CDI • 開発生産性の向上 – CDI の適用範囲拡大 – Security インターセプタ – JAX-RS 2.1 – WebSocket の改善 • Cloud Enablement – マルチテナント用設定 – セキュリティの拡張 – デプロイ/管理用の REST APIを提供
  40. 40. 本日公開 • JSR-366 - Java EE 8 & Web Profile – JSR 107 - jCache – JSR 365 - CDI 2.0 – JSR 367 - JSON Binding – JSR 368 - JMS 2.1 – JSR 369 - Java Servlet 4.0 – JSR 370 - JAX-RS 2.1 – JSR 371 - MVC 1.0 – JSR 372 - JSF 2.3 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  41. 41. パターン4:サーバ・プッシュ- Server-Sents Events • Java EE 6 ビュー関連処理 ビジネス・ロジック データ・アクセス • Java EE 7 • Java EE 8 CDI EJB Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | HTML5 (JavaScript) ServerSent Events JPA
  42. 42. パターン5:新しい Action MVC 実装モデル Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Java EE 6 • Java EE 7 • Java EE 8 ビュー関連処理 ビジネス・ロジック データ・アクセス CDI EJB HTML5 (JavaScript) MVC 1.0 (Facelets) JAX-RS JPA
  43. 43. Java EE 8 ロードマップ Proposed ファイナル JSR 登録 2014 Q2 2014 2015 2016 2017 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | アーリー・ドラフト レビュー 2015 Q1 パブリック レビュー 2015 Q3 ドラフト 2015 Q4 正式リリース 2016 Q3 Java EE 8 参照実装 / SDK 2014 2015 2016 2017
  44. 44. Adopt-a-JSR for Java EE 8 • Java EE を改善するための草の根活動 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | http://adoptajsr.java.net GET INVOLVED!
  45. 45. Java EE 7 SDK Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | DOWNLOAD oracle.com/javaee GlassFish 4.0 Full Platform or Web Profile glassfish.org
  46. 46. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted 47
  47. 47. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted 48

×