Your SlideShare is downloading. ×
  • Like

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
301
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです 。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込む ことはできません。以下の事項は、マテリアルやコード、機能を提供すること をコミットメント(確約)するものではないため、購買決定を行う際の判断材 料になさらないで下さい。オラクル製品に関して記載されている機能の開発、 リリースおよび時期については、弊社の裁量により決定されます。 Oracleは、米国オラクルコーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 3. Java EE 7 2013 年 6 月リリース The standard in community-driven enterprise software Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 6. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 7. 各バージョンにおける実装アーキテクチャ Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック ロジック データ・アクセス DB Queue Batch
  • 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. 3パターン Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. パターン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. パターン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. どこから考える Java EE 開発 全体アーキテクチャ 個別テクノロジー Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 14. 個別のテクノロジーはどこから学ぶ? Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック ロジック データ・アクセス DB
  • 15. 変化するView関連技術に柔軟に対応 メンテナンス性の高いシステム構築 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. ビュー実装に依存しない柔軟性の高いシステム構築 ビュー関連処理 データ・アクセス Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス ビジネス・ロジック ロジック DB
  • 18. データ・アクセス ビジネス・ロジック Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • ビュー • ビジネスロジック • データ・アクセス – JPA – JMS – Batch ビュー関連処理 データ・アクセス CDI EJB JPA
  • 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. 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. 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. データ永続化 ‒ 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. ビジネス・ロジック Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JPA ビジネス・ロジック • ビュー • ビジネスロジック – CDI – EJB • データ・アクセス ビュー関連処理 データ・アクセス CDI EJB
  • 24. フレームワーク間の依存性を 極力排除し疎結合で結びつけ 拡張性・メンテナンス性を向上 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. ビジネス・ロジック ‒ 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. ビジネス・ロジック ‒ 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. ビジネス・ロジック ‒ 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. ビジネス・ロジック - 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. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JPA CDI EJB ビュー • ビュー • ビジネスロジック • データ・アクセス ビュー関連処理 ビジネス・ロジック データ・アクセス
  • 31. HTML5/JavaScript に精通? 自らHTML 5 で実装 :JAX-RS フレームワークを利用:JSF Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. 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. 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. 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. パターン1~3のように どのように View 技術が変わっても Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 37. バックエンドをしっかり作る事で 柔軟なViewに対応可能 将来的にメンテナンス性が大幅向上 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 38. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
  • 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. 本日公開 • 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. パターン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. パターン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. 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. 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. 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. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted 47
  • 47. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confiden@al – Internal/Restricted/Highly Restricted 48