SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
®




Java EE 6で復活する
エンタープライズJavaの世界
                               2010/5/18
日本IBM株式会社 ソフトウェア事業
WebSphereクライアント・テクニカル・プロフェッショナルズ
田中 孝清




                                     © 2010 IBM Corporation
IBM Software Group


Enterprise Javaの歴史
               の                                                   Seasar
                                                                                                  2009/12

                                                          Spring            SCA
                                  Hibernate
                                                          SDO        Ajax         2006/3
                                               Portlets                                           Java EE 6
                                                                                                  • Profile
                                 BPEL              2003/11                                           Web Profile
                                                                                  Java EE 5       • EJB 3.1
                                                                                  • EJB 3 / JPA       Interceptors
              Struts                                                                 POJO         • JPA 2.0
                               2001/9                                                                JPQLの拡張
                                                                                  • Servlet 2.5
                                                   J2EE 1.4                       • JSP 2.1       • Web Beans 1.0
               1999/12                             • EJB 2.1                         Unified EL   • Bean Validation 1.0
                                                      タイマー                        • JSF 1.2       • Common Annotation
                               J2EE 1.3               EJB-QL拡張                    • JSTL 1.2      • Servlet 3.0
                               • EJB 2.0           • Servlet 2.4                  • Webサービス       • JSP 2.2 / EL 2.2
                                  ローカルEJB          • JSP 2.0                         JAX-WS       • JSF 2.0
                                  abs. CMP         • Webサービス                         POJO         • JSTL 1.2
               J2EE 1.2
                                  MDB                 JAX-RPC                        JAXB         • Webサービス
               • EJB 1.1
                               • Servlet 2.3       • JMX Mgmt                        StAX            JAX-RS
               • Servlet 2.2
EJB 1.0                           イベント             • J2EE Deployment                 MTOM
               • JSP 1.1
Servlet 2.1                       フィルター            • JACC                         • アノテーション
               • JMS                                                                                    軽量化
               • JavaMail      • JSP 1.2                                             IoC(制御の反転)
                                  XML
                               • JAXP                                                                   拡張性
                                                                                    開発容易性
                               • Connectors
                               • JAAS                                                                 開発容易性


                                                                                                                          2
IBM Software Group


          ついに2009年12月に承認
Java EE 6 ついに    年 月
                                                ・・・難産でした




                         http://jcp.org/en/jsr/results?id=5025
                                                                 3
IBM Software Group


          ついに2009年12月に承認
Java EE 6 ついに    年 月
                                                             ・・・難産でした
 Intel Corp. voted Abstain
  Intel Corp. voted Abstain
 We were not satisfied with some of the information
  We were not satisfied with some of the information
 accompanying this ballot and have informed the Spec
  accompanying this ballot and have informed the Spec
 Lead. No technical issues. It's a good spec.
  Lead. No technical issues. It's a good spec.


 IBM voted Yes
  IBM voted Yes
 IBM's vote is based on the technical merits of this JSR and is not a vote on
  IBM's vote is based on the technical merits of this JSR and is not a vote on
 the licensing terms. IBM supports licensing models that create an open
  the licensing terms. IBM supports licensing models that create an open
 and level playing field by allowing third parties to create independent
  and level playing field by allowing third parties to create independent
 implementations of Java Specifications and that do not allow individuals or
  implementations of Java Specifications and that do not allow individuals or
 companies to exercise unnecessary control for proprietary advantage. We
  companies to exercise unnecessary control for proprietary advantage. We
 support open source as a licensing model for contributions in the JCP, and
  support open source as a licensing model for contributions in the JCP, and
 would hope others will support this direction.
  would hope others will support this direction.
                                      http://jcp.org/en/jsr/results?id=5025
                                                                                 4
IBM Software Group



他にもいろいろありました
POJOをベースとした新しいServlet APIの提出と揺り戻し
「JSR 299 Web Beans」に対抗して
Google/Springから出された「JSR 330 Dependency Injection for Java」


      「Java EE終了のお知らせ」(2009-05-09)
       「Java EE終了のお知らせ」(2009-05-09)
                     ひがやすお氏
                     ひがやすお氏


しかし,様々な困難を乗り越え,新しいJava EEは承認されました


       苦労の甲斐あって,いい仕様です

                                                             5
IBM Software Group


         仕様の
Java EE 6仕様の全体像
         仕様




                         6
IBM Software Group


           主要な
Java EE 6 の主要なゴール
 軽量化:Right Sizing
 – 柔軟なテクノロジースタック/Webプロファイル
 – "Pruning dead wood"
 拡張性
 さらなる開発容易性:Ease of Development
 – EJBにつづきServletもアノテーションベースに
 – CDI (Contexts and Dependency Injection)

機能の大幅な
機能の大幅な強化

プレゼンテーション層の強化
   –Web 2.0への対応 / Servlet 3.0,JSF 2.0,JAX-RS
永続化の機能強化
   –JPA 2.0,Bean Validation
                                               7
IBM Software Group



柔軟なテクノロジースタック
柔軟な
                                    Java EE
「Profile」の導入
– Java EEのサブセットをProfileとして定義              Web
 • Java EEの仕様群の全部もしくは一部だけをふくむ
– Java EEコンテナを提供するプロバイダーは,
  特定のプロファイルを選択して実装することが可能
 • Java EEの全ての仕様を実装しなくてもJava EE認定が受けられる
– ユーザーは,必要な機能だけを実装したコンテナを選択することが可能
Java EE 6の策定時点で定義されているプロファイル
– Java EE Profile
 • 定義されている,ほぼ全ての仕様を実装
– Web Profile
 • Webアプリケーションの実行に必要な仕様だけを実装


                                                8
IBM Software Group



プロファイル登場の背景
プロファイル登場の
      登場
肥大化したJava EE仕様

Java EE 6                                                Java SE
 EJB 3.1                     JACC 1.3
 Servlet 3.0                 JASPIC 1.0                   Java IDL
 JSP 2.2                     JSP Debugging 1.0            JDBC
 EL 1.2                      JSTL 1.2                     RMI-IIOP
 JMS 1.1                     Web Services Metadata 2.0    JNDI
 JTA 1.1                     JSF 2.0                      JAXP
 JavaMail 1.4                Common Annotations 1.1       StAX 1.0
 Connector 1.6               Java Persistence 2.0         JAAS
 Web Services 1.3            Bean Validation 1.0          JMX
 JAX-RPC 1.1                 Managed Beans 1.0            JAX-WS 2.2
 JAX-RS 1.1                  Interceptors 1.1             JAXB 2.2
 JAXR 1.0                    DI(JSR-299) 1.0              JAF
 Java EE Management 1.1      CDI(JSR-330) 1.0             SAAJ 1.3
 Java EE Deployment 1.2c                                  Common Annotations 1.1


                                                                                   9
IBM Software Group



           に まれる仕様
Web Profileに含まれる仕様                                                                 Java EE Profile
Web Profile
Web Application Technologies                              Web Services Technologies
JSR 315: Java Servlet 3.0                                 JSR 311: JAX-RS: The Java API
JSR 314: JavaServer Faces (JSF) 2.0                                 for RESTful Web Services 1.1
JSR 245: JavaServer Pages 2.2                             JSR 109: Implementing Enterprise Web Services 1.3
         and Expression Language (EL) 1.2                 JSR 224: Java API for XML-Based
                                                           サーブレット/JSP基本機能だけでなく
JSR 52: A Standard Tag Library for JavaServer Pages 1.2             Web Services (JAX-WS) 2.2
JSR-45: Debugging Support for Other Languages 1.0          ・トランザクション・サービス
                                                          JSR 222: Java Architecture
                                                           ・(リモート呼び出しのない)EJB
                                                                    for XML Binding (JAXB) 2.2
Enterprise Application Technologies                       JSR 181: Web Services Metadata
                                                           ・DBへの永続化を行うJPA仕様
                                                                    for the Java Platform
JSR 299: Contexts and Dependency Injection
          for the Java EE Platform 1.0                    JSR 101: Java APIs for XML based RPC 1.1
                                                           も含まれている
                                                          JSR 67: Java APIs for XML Messaging 1.3
JSR 330: Dependency Injection for Java
JSR 318: Enterprise JavaBeans 3.1 (EJB Lite)              JSR 93: Java API for
JSR 317: Java Persistence API 2.0                                  XML Registries 1.0 (JAXR) 1.0
JSR 250: Common Annotations for the Java Platform 1.1
JSR 907: Java Transaction API (JTA) 1.1                   Management and Security Technologies
JSR 303: Bean Validation 1.0                              JSR 196: Java Authentication Service Provider
                                                                   Interface for Containers 1.0
JSR 318:   Enterprise JavaBeans 3.1                       JSR 115: Java Authorization
JSR 322:   Java EE Connector Architecture 1.6                      Contract for Containers 1.3
JSR 914:   Java Message Service (JMS) API 1.1             JSR 88: Java EE Application Deployment 1.2
JSR 919:   JavaMail 1.4                                   JSR 77: J2EE Management 1.1

                                                                                                              10
IBM Software Group


"Pruning dead wood"
 古い仕様を将来のバージョンで
 削除することを予告
 – Deprecate EJB Entity beans
 – Deprecate JAX-RPC
 – Deprecate JSR-88 J2EE Deployment
 – Deprecate JAX-R


 追加・追加で肥大化してきた仕様を
 より適切なサイズに




                                      11
IBM Software Group


さらなるEase of Development
さらなる
 EJBに続きServletもアノテーションに

    WebServlet(name=”MyServlet”, urlPatterns={"/foo", "/bar"})
   @@WebServlet(name=”MyServlet”, urlPatterns={"/foo", "/bar"})
   public class SampleUsingAnnotationAttributes extends HttpServlet{
    public class SampleUsingAnnotationAttributes extends HttpServlet{
       public void doGet(HttpServletRequest req, HttpServletResponse res) {{
        public void doGet(HttpServletRequest req, HttpServletResponse res)

 – web.xml (構成ファイル)はオプション
 Dependency Injectionのためのアノテーション仕様も標準化
 – JSR 299: Contexts and Dependency Injection
                               for the Java EE Platform 1.0
 – JSR 330: Dependency Injection for Java


         二つの大きな流れ
         • 設定情報はデプロイメントディスクリプタではなくJavaソースに
         • Javaコード中に初期化コードはかかない

                                                                               12
IBM Software Group



Dependency Injection
private DataSource ds;
 private DataSource ds;

InitialContext ic == new InitialContext();
 InitialContext ic    new InitialContext();
ds == (DataSource)ic.lookup("java:comp/env/jdbc/MyDS");
 ds    (DataSource)ic.lookup("java:comp/env/jdbc/MyDS");
Connection con == ds.getConnection();
 Connection con    ds.getConnection();

                      「初期化コード」から「DI」へ

 Resource(name == "jdbc/MyDS")
@@Resource
 Resource
  Resource(name    "jdbc/MyDS")
private DataSource ds;
 private DataSource ds;



                                       オープンソース・フレームワークである
                                       Spring FrameworkやSeasar2が
                                       切り開いた分野

                                                               13
IBM Software Group



                             Injection)
CDI (Contexts and Dependency Injection)

    ServletでのDI
    ServletでのDI
           での
                                     CDI
                           DIの仕様を
                             統合
     EJBでのDI
     EJBでのDI
        での
                                     Context
                                        and
  WebサービスでのDI
  WebサービスでのDI
     サービスでの                         Dependency
                                     Injection
  ユーザー定義の
  ユーザー定義のDI
      定義

  DIの機能をコンテナから分離 → Java SEでも使用可能
  ビジネスロジック層とプレゼンテーション層の連携が容易に
                                                 14
IBM Software Group


CDIの使用例
   の
import org.example.HelloService;
 import org.example.HelloService;

 WebServlet(name == "HelloWorld", urlPatterns == {{ "/HelloWorld" })
@@WebServlet
 WebServlet
  WebServlet(name    "HelloWorld", urlPatterns       "/HelloWorld" })
public class HelloWorld extends HttpServlet {{
 public class HelloWorld extends HttpServlet
    @Inject HelloService helloService;
     @Inject HelloService helloService;


                                    package org.example;
                                     package org.example;
                                    import javax.inject.Named;
                                     import javax.inject.Named;

                                    @Named
                                     @Named
                                    public class HelloService {{
                                     public class HelloService
                                        public void sayHello() {{
                                         public void sayHello()
                                            System.out.println("Hello!");
                                             System.out.println("Hello!");
                                        }}
                                    }}

                                                                             15
IBM Software Group


強化された
強化されたServlet仕様
  された       仕様
メジャー・バージョンアップ! (Version 2.5 → 3.0)


新機能も盛りだくさん
– 構成のためのアノテーション大量追加
– 非同期処理のサポート
– 複数構成ファイル(web-fragment.xml)の導入
– HTTPServletRequestにログインとログアウト処理を実現する機能
– Servletおよびフィルタを動的に追加するメソッド
  ServletContext#addFilter, ServletContext#addServlet登場
– multipart/form-data形式のリクエストに対応(Partクラスの追加)



                                                          16
IBM Software Group


Servletの非同期処理サポート
       の非同期処理サポート
従来のServlet                       Servlet 3.0の非同期処理
                                                                 Serlvet実行スレッドを
                                                                 早期に解放して
       Servlet                     Servlet                       処理のスケーラビリティを
                                                   別スレッド         維持
 doGet()                     doGet()
                                        startAsync() + start()
                                                                 非同期処理を行う
                                                                 スレッドからも
                                                                 HttpServletRequstや
                                                                 HttpServletResponse
時間の                                                              などのオブジェクトに
かかる                                          時間の                 アクセスが可能
処理                                           かかる
                                             処理                  様々な応用
                                                                  – Commetアプリ
                                                                  – 長時間のDBアクセス
                                                                  – メッセージングの
 response                                    response               結果を待つ
                                                                    アプリケーション



                                                                                       17
IBM Software Group


multipart/form-dataのサポート
                   の
 FileUploadサーブレットも簡単に!


                                                         サイズの制限も可能


      @WebServlet("/upload")
       @WebServlet("/upload")
      @MultipartConfig(maxFileSize=1000000)
       @MultipartConfig(maxFileSize=1000000)
      public class MyUploadServlet extends HttpServlet {{
       public class MyUploadServlet extends HttpServlet
        @Override
         @Override
        protected void doPost(HttpServletRequest request,
         protected void doPost(HttpServletRequest request,
          HttpServletResponse response) throws ServletException, IOException {{
           HttpServletResponse response) throws ServletException, IOException

          response.setContentType("text/plain; charset=UTF-8");
           response.setContentType("text/plain; charset=UTF-8");
          PrintWriter out == response.getWriter();
           PrintWriter out     response.getWriter();
          for (Part pp :: request.getParts() {{
                Part
           for (Part
                 Part     request.getParts())
                                            ()
                           request.getParts()
                           request.getParts()())
             out.write("Part name: "" ++ p.getName());
              out.write("Part name:       p.getName());
             out.write("Size: "" ++ p.getSize());
              out.write("Size:       p.getSize());
             out.write("Content Type: "" ++ p.getContentType());
              out.write("Content Type:       p.getContentType());
          }}
                                                                              18
IBM Software Group


        な   サービス
RESTfullなWebサービス
リソースは一意なURIをもつ
– 例:http://api.server.example.com/repository/user/E12345

リソースに対する操作をHTTPのメソッドで表現する
–GET:        読み取り
–PUT/POST:作成/更新
–DELETE:               削除
Statelessな呼び出しプロトコル


                                                           19
IBM Software Group


JAX-RS
 RESTfull Webサービスを実現するAPIの標準化(JAX-RS)
 – サーブレットを使わないWebアプリケーションも可能

@Path("repository")
 @Path("repository")
public class TestRepositoryService {{
 public class TestRepositoryService
  @Path("version")
   @Path("version")
  @GET                                       /repository/version で呼び出し
   @GET
  @Produces("text/plain; charset=UTF-8")
   @Produces("text/plain; charset=UTF-8")
  public String getVersion() {{
   public String getVersion()
     return "Test Service version 1.0";
      return "Test Service version 1.0";
  }}

  @Path("user/{userID}")
   @Path("user/{userID}")                        /repository/user/E12345   などで呼び出し
  @GET
   @GET
  @Produces("text/plain; charset=UTF-8")
   @Produces("text/plain; charset=UTF-8")
  public String getUserName(@PathParam("userID") String id) {{
   public String getUserName(@PathParam("userID") String id)
     return UserRepository.getUserName(id);
      return UserRepository.getUserName(id);
  }}


                                                                                 20
IBM Software Group


JSF 2.0
  Facelets                                                  Annotations support
  AJAX support                                              Widget library (extension)
  Skins                                                     Bean Validation
<h:panelGrid columns="2">
 <h:panelGrid columns="2">
 #{cc.attrs.namePrompt}
  #{cc.attrs.namePrompt}
 <h:panelGroup>
  <h:panelGroup>
  <h:inputText id="name" value="#{cc.attrs.managedBean.name}"
   <h:inputText id="name" value="#{cc.attrs.managedBean.name}"
     valueChangeListener="#{cc.attrs.managedBean.validateName}">
      valueChangeListener="#{cc.attrs.managedBean.validateName}">
   <f:ajax event="blur" render="nameError"/>
    f:ajax
    <f:ajax event="blur" render="nameError"/>
     f:ajax
  </h:inputText>
   </h:inputText>
  <h:outputText id="nameError"
   <h:outputText id="nameError"
      value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style: italic;"/>
       value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style: italic;"/>
 </h:panelGroup>
  </h:panelGroup>
 ...
  ...
</h:panelGrid>
 </h:panelGrid>




                                                                                            21
IBM Software Group



永続化の機能強化
永続化の
JPA 2.0
– クエリー言語であるJPQL(Java Persistence Query Language)が強化
– アノテーションを使用した入力値の検証が可能なBean Validationの追加
– 悲観的ロックのサポート
                                       EntityManager
– レベル2キャッシュの仕様追加
                                                                               @Entity
                                                                               Employee

                                                                                @Id
                               getEmp_Id()emp_Id=111111 setEmp_Id()    getEmp_Id() emp_Id setEmp_Id()
                                getName() name=Nakajima setName()       getName() name setName()
                                         phone=1804-1111 setPhone()
                                getPhone()                              getPhone() phone setPhone()




                                                                         EMPLOYEE表
                                                                      EMP_ID      NAME          PHONE

                                                                      111111      Nakajima      1084-1111

                                                                      222222      Hirabayashi   1804-2222

                                                                      333333      Yamaguchi     1803-3333




                                                                                                            22
IBM Software Group


Bean Validation 1.0
 JPAやJSF,JCAで使用できるValidatation機能
 – Beanに対する制約を統一的に扱うことができる
 @Min/@Max/@Size/@NotNull/@Pattern等のアノテーションで制約をかける
 – ユーザー定義の制約も実装できる

       @entity
        @entity
       public class Customer {
        public class Customer {
          @Id
           @Id
          private int id;
           private int id;
          private String name;
           private String name;
          @Pattern(regexp="((¥d¥d¥d¥-)?¥d¥d¥d¥-d¥d¥d¥d)?")
           @Pattern(regexp="((¥d¥d¥d¥-)?¥d¥d¥d¥-d¥d¥d¥d)?")
          private String phoneNumber;
           private String phoneNumber;
          ……
           ……
       }}

                                                              23
IBM Software Group



まとめ
Java EEはより簡単に,よりスリムになっていきます


Java EE 5が,「今までと同じ事がより簡単にできる」更新だったのに対し
Java EE 6は,「今まで出来なかったことができる」という更新です


Servlet/JSP/JSFといった,変化が少なかったAPIにも大幅な機能追加が


RESTfullアプリケーション,Ajaxアプリケーションなど技術に対応




                                            24
IBM Software Group



最後に
最後に
Java EE 6対応となるWebSphere Application Server V8.0
Alphaバージョンが公開中です
https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wsasoa/index.shtml




                                                                                       25

Mais conteúdo relacionado

Mais procurados

Java8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみたJava8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみた夕人 江熊
 
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...Takakiyo Tanaka
 
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうかWebアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうかChihiro Ito
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21Takakiyo Tanaka
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキングShinichi Kozake
 
JJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめようJJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめようNorito Agetsuma
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Masatoshi Tada
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)さくらインターネット株式会社
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」Hiroaki NAKADA
 
Java on Microsoft Azure
Java on Microsoft AzureJava on Microsoft Azure
Java on Microsoft AzureYoshio Terada
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionYoshio Terada
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編なべ
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Bootなべ
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsYoshimasa Tanabe
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
Java EEの話(仮)
Java EEの話(仮)Java EEの話(仮)
Java EEの話(仮)Satoshi Kubo
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷JavaToshiaki Maki
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみたFujishiro Takuya
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 

Mais procurados (20)

Java8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみたJava8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみた
 
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...
JJUG CCC 2015 Spring: Liberty Profile Technical Deepdive:IBMの新しいアプリケーションサーバーの...
 
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうかWebアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキング
 
Servlet3.0 overview
Servlet3.0 overviewServlet3.0 overview
Servlet3.0 overview
 
JJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめようJJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめよう
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
 
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
 
Java on Microsoft Azure
Java on Microsoft AzureJava on Microsoft Azure
Java on Microsoft Azure
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 Introduction
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Boot
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
Java EEの話(仮)
Java EEの話(仮)Java EEの話(仮)
Java EEの話(仮)
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
MaxScaleを触ってみた
MaxScaleを触ってみたMaxScaleを触ってみた
MaxScaleを触ってみた
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 

Destaque

はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPAkawaba
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。Tomohiko Himura
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyToshiaki Maki
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?kwatch
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門minazou67
 

Destaque (6)

はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPA
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
 
Slick入門
Slick入門Slick入門
Slick入門
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 

Semelhante a Java EE 6で復活するエンタープライズJavaの世界

ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427Nobuhiro Sue
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2nekop
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3nekop
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7nekop
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpToshiaki Maki
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSatoshi Kisanuki
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web IntegrationKazuchika Sekiya
 
福井イベント
福井イベント福井イベント
福井イベントYoshio Terada
 
JavaOne2012報告会 Java ME
JavaOne2012報告会 Java MEJavaOne2012報告会 Java ME
JavaOne2012報告会 Java MEHiroki Ooyama
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2Y Watanabe
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Yusuke Suzuki
 

Semelhante a Java EE 6で復活するエンタープライズJavaの世界 (20)

ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjp
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration
 
福井イベント
福井イベント福井イベント
福井イベント
 
Springの向かう先
Springの向かう先Springの向かう先
Springの向かう先
 
JavaOne2012報告会 Java ME
JavaOne2012報告会 Java MEJavaOne2012報告会 Java ME
JavaOne2012報告会 Java ME
 
Springの今
Springの今Springの今
Springの今
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 

Mais de Takakiyo Tanaka

MicroProfile Starterで簡単スタート Open Liberty
MicroProfile Starterで簡単スタート Open LibertyMicroProfile Starterで簡単スタート Open Liberty
MicroProfile Starterで簡単スタート Open LibertyTakakiyo Tanaka
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM JavaについてTakakiyo Tanaka
 
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築Takakiyo Tanaka
 
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?Takakiyo Tanaka
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Takakiyo Tanaka
 
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-Takakiyo Tanaka
 
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4Takakiyo Tanaka
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 Takakiyo Tanaka
 
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57Takakiyo Tanaka
 

Mais de Takakiyo Tanaka (10)

OutOfMemoryErrorとは
OutOfMemoryErrorとは OutOfMemoryErrorとは
OutOfMemoryErrorとは
 
MicroProfile Starterで簡単スタート Open Liberty
MicroProfile Starterで簡単スタート Open LibertyMicroProfile Starterで簡単スタート Open Liberty
MicroProfile Starterで簡単スタート Open Liberty
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
 
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築
自分のDocker/Kubernetes環境を手に入れる ICP Community Editionで簡単構築
 
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
 
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
 
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
 

Java EE 6で復活するエンタープライズJavaの世界

  • 1. ® Java EE 6で復活する エンタープライズJavaの世界 2010/5/18 日本IBM株式会社 ソフトウェア事業 WebSphereクライアント・テクニカル・プロフェッショナルズ 田中 孝清 © 2010 IBM Corporation
  • 2. IBM Software Group Enterprise Javaの歴史 の Seasar 2009/12 Spring SCA Hibernate SDO Ajax 2006/3 Portlets Java EE 6 • Profile BPEL 2003/11 Web Profile Java EE 5 • EJB 3.1 • EJB 3 / JPA Interceptors Struts POJO • JPA 2.0 2001/9 JPQLの拡張 • Servlet 2.5 J2EE 1.4 • JSP 2.1 • Web Beans 1.0 1999/12 • EJB 2.1 Unified EL • Bean Validation 1.0 タイマー • JSF 1.2 • Common Annotation J2EE 1.3 EJB-QL拡張 • JSTL 1.2 • Servlet 3.0 • EJB 2.0 • Servlet 2.4 • Webサービス • JSP 2.2 / EL 2.2 ローカルEJB • JSP 2.0 JAX-WS • JSF 2.0 abs. CMP • Webサービス POJO • JSTL 1.2 J2EE 1.2 MDB JAX-RPC JAXB • Webサービス • EJB 1.1 • Servlet 2.3 • JMX Mgmt StAX JAX-RS • Servlet 2.2 EJB 1.0 イベント • J2EE Deployment MTOM • JSP 1.1 Servlet 2.1 フィルター • JACC • アノテーション • JMS 軽量化 • JavaMail • JSP 1.2 IoC(制御の反転) XML • JAXP 拡張性 開発容易性 • Connectors • JAAS 開発容易性 2
  • 3. IBM Software Group ついに2009年12月に承認 Java EE 6 ついに 年 月 ・・・難産でした http://jcp.org/en/jsr/results?id=5025 3
  • 4. IBM Software Group ついに2009年12月に承認 Java EE 6 ついに 年 月 ・・・難産でした Intel Corp. voted Abstain Intel Corp. voted Abstain We were not satisfied with some of the information We were not satisfied with some of the information accompanying this ballot and have informed the Spec accompanying this ballot and have informed the Spec Lead. No technical issues. It's a good spec. Lead. No technical issues. It's a good spec. IBM voted Yes IBM voted Yes IBM's vote is based on the technical merits of this JSR and is not a vote on IBM's vote is based on the technical merits of this JSR and is not a vote on the licensing terms. IBM supports licensing models that create an open the licensing terms. IBM supports licensing models that create an open and level playing field by allowing third parties to create independent and level playing field by allowing third parties to create independent implementations of Java Specifications and that do not allow individuals or implementations of Java Specifications and that do not allow individuals or companies to exercise unnecessary control for proprietary advantage. We companies to exercise unnecessary control for proprietary advantage. We support open source as a licensing model for contributions in the JCP, and support open source as a licensing model for contributions in the JCP, and would hope others will support this direction. would hope others will support this direction. http://jcp.org/en/jsr/results?id=5025 4
  • 5. IBM Software Group 他にもいろいろありました POJOをベースとした新しいServlet APIの提出と揺り戻し 「JSR 299 Web Beans」に対抗して Google/Springから出された「JSR 330 Dependency Injection for Java」 「Java EE終了のお知らせ」(2009-05-09) 「Java EE終了のお知らせ」(2009-05-09) ひがやすお氏 ひがやすお氏 しかし,様々な困難を乗り越え,新しいJava EEは承認されました 苦労の甲斐あって,いい仕様です 5
  • 6. IBM Software Group 仕様の Java EE 6仕様の全体像 仕様 6
  • 7. IBM Software Group 主要な Java EE 6 の主要なゴール 軽量化:Right Sizing – 柔軟なテクノロジースタック/Webプロファイル – "Pruning dead wood" 拡張性 さらなる開発容易性:Ease of Development – EJBにつづきServletもアノテーションベースに – CDI (Contexts and Dependency Injection) 機能の大幅な 機能の大幅な強化 プレゼンテーション層の強化 –Web 2.0への対応 / Servlet 3.0,JSF 2.0,JAX-RS 永続化の機能強化 –JPA 2.0,Bean Validation 7
  • 8. IBM Software Group 柔軟なテクノロジースタック 柔軟な Java EE 「Profile」の導入 – Java EEのサブセットをProfileとして定義 Web • Java EEの仕様群の全部もしくは一部だけをふくむ – Java EEコンテナを提供するプロバイダーは, 特定のプロファイルを選択して実装することが可能 • Java EEの全ての仕様を実装しなくてもJava EE認定が受けられる – ユーザーは,必要な機能だけを実装したコンテナを選択することが可能 Java EE 6の策定時点で定義されているプロファイル – Java EE Profile • 定義されている,ほぼ全ての仕様を実装 – Web Profile • Webアプリケーションの実行に必要な仕様だけを実装 8
  • 9. IBM Software Group プロファイル登場の背景 プロファイル登場の 登場 肥大化したJava EE仕様 Java EE 6 Java SE EJB 3.1 JACC 1.3 Servlet 3.0 JASPIC 1.0 Java IDL JSP 2.2 JSP Debugging 1.0 JDBC EL 1.2 JSTL 1.2 RMI-IIOP JMS 1.1 Web Services Metadata 2.0 JNDI JTA 1.1 JSF 2.0 JAXP JavaMail 1.4 Common Annotations 1.1 StAX 1.0 Connector 1.6 Java Persistence 2.0 JAAS Web Services 1.3 Bean Validation 1.0 JMX JAX-RPC 1.1 Managed Beans 1.0 JAX-WS 2.2 JAX-RS 1.1 Interceptors 1.1 JAXB 2.2 JAXR 1.0 DI(JSR-299) 1.0 JAF Java EE Management 1.1 CDI(JSR-330) 1.0 SAAJ 1.3 Java EE Deployment 1.2c Common Annotations 1.1 9
  • 10. IBM Software Group に まれる仕様 Web Profileに含まれる仕様 Java EE Profile Web Profile Web Application Technologies Web Services Technologies JSR 315: Java Servlet 3.0 JSR 311: JAX-RS: The Java API JSR 314: JavaServer Faces (JSF) 2.0 for RESTful Web Services 1.1 JSR 245: JavaServer Pages 2.2 JSR 109: Implementing Enterprise Web Services 1.3 and Expression Language (EL) 1.2 JSR 224: Java API for XML-Based サーブレット/JSP基本機能だけでなく JSR 52: A Standard Tag Library for JavaServer Pages 1.2 Web Services (JAX-WS) 2.2 JSR-45: Debugging Support for Other Languages 1.0 ・トランザクション・サービス JSR 222: Java Architecture ・(リモート呼び出しのない)EJB for XML Binding (JAXB) 2.2 Enterprise Application Technologies JSR 181: Web Services Metadata ・DBへの永続化を行うJPA仕様 for the Java Platform JSR 299: Contexts and Dependency Injection for the Java EE Platform 1.0 JSR 101: Java APIs for XML based RPC 1.1 も含まれている JSR 67: Java APIs for XML Messaging 1.3 JSR 330: Dependency Injection for Java JSR 318: Enterprise JavaBeans 3.1 (EJB Lite) JSR 93: Java API for JSR 317: Java Persistence API 2.0 XML Registries 1.0 (JAXR) 1.0 JSR 250: Common Annotations for the Java Platform 1.1 JSR 907: Java Transaction API (JTA) 1.1 Management and Security Technologies JSR 303: Bean Validation 1.0 JSR 196: Java Authentication Service Provider Interface for Containers 1.0 JSR 318: Enterprise JavaBeans 3.1 JSR 115: Java Authorization JSR 322: Java EE Connector Architecture 1.6 Contract for Containers 1.3 JSR 914: Java Message Service (JMS) API 1.1 JSR 88: Java EE Application Deployment 1.2 JSR 919: JavaMail 1.4 JSR 77: J2EE Management 1.1 10
  • 11. IBM Software Group "Pruning dead wood" 古い仕様を将来のバージョンで 削除することを予告 – Deprecate EJB Entity beans – Deprecate JAX-RPC – Deprecate JSR-88 J2EE Deployment – Deprecate JAX-R 追加・追加で肥大化してきた仕様を より適切なサイズに 11
  • 12. IBM Software Group さらなるEase of Development さらなる EJBに続きServletもアノテーションに WebServlet(name=”MyServlet”, urlPatterns={"/foo", "/bar"}) @@WebServlet(name=”MyServlet”, urlPatterns={"/foo", "/bar"}) public class SampleUsingAnnotationAttributes extends HttpServlet{ public class SampleUsingAnnotationAttributes extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) {{ public void doGet(HttpServletRequest req, HttpServletResponse res) – web.xml (構成ファイル)はオプション Dependency Injectionのためのアノテーション仕様も標準化 – JSR 299: Contexts and Dependency Injection for the Java EE Platform 1.0 – JSR 330: Dependency Injection for Java 二つの大きな流れ • 設定情報はデプロイメントディスクリプタではなくJavaソースに • Javaコード中に初期化コードはかかない 12
  • 13. IBM Software Group Dependency Injection private DataSource ds; private DataSource ds; InitialContext ic == new InitialContext(); InitialContext ic new InitialContext(); ds == (DataSource)ic.lookup("java:comp/env/jdbc/MyDS"); ds (DataSource)ic.lookup("java:comp/env/jdbc/MyDS"); Connection con == ds.getConnection(); Connection con ds.getConnection(); 「初期化コード」から「DI」へ Resource(name == "jdbc/MyDS") @@Resource Resource Resource(name "jdbc/MyDS") private DataSource ds; private DataSource ds; オープンソース・フレームワークである Spring FrameworkやSeasar2が 切り開いた分野 13
  • 14. IBM Software Group Injection) CDI (Contexts and Dependency Injection) ServletでのDI ServletでのDI での CDI DIの仕様を 統合 EJBでのDI EJBでのDI での Context and WebサービスでのDI WebサービスでのDI サービスでの Dependency Injection ユーザー定義の ユーザー定義のDI 定義 DIの機能をコンテナから分離 → Java SEでも使用可能 ビジネスロジック層とプレゼンテーション層の連携が容易に 14
  • 15. IBM Software Group CDIの使用例 の import org.example.HelloService; import org.example.HelloService; WebServlet(name == "HelloWorld", urlPatterns == {{ "/HelloWorld" }) @@WebServlet WebServlet WebServlet(name "HelloWorld", urlPatterns "/HelloWorld" }) public class HelloWorld extends HttpServlet {{ public class HelloWorld extends HttpServlet @Inject HelloService helloService; @Inject HelloService helloService; package org.example; package org.example; import javax.inject.Named; import javax.inject.Named; @Named @Named public class HelloService {{ public class HelloService public void sayHello() {{ public void sayHello() System.out.println("Hello!"); System.out.println("Hello!"); }} }} 15
  • 16. IBM Software Group 強化された 強化されたServlet仕様 された 仕様 メジャー・バージョンアップ! (Version 2.5 → 3.0) 新機能も盛りだくさん – 構成のためのアノテーション大量追加 – 非同期処理のサポート – 複数構成ファイル(web-fragment.xml)の導入 – HTTPServletRequestにログインとログアウト処理を実現する機能 – Servletおよびフィルタを動的に追加するメソッド ServletContext#addFilter, ServletContext#addServlet登場 – multipart/form-data形式のリクエストに対応(Partクラスの追加) 16
  • 17. IBM Software Group Servletの非同期処理サポート の非同期処理サポート 従来のServlet Servlet 3.0の非同期処理 Serlvet実行スレッドを 早期に解放して Servlet Servlet 処理のスケーラビリティを 別スレッド 維持 doGet() doGet() startAsync() + start() 非同期処理を行う スレッドからも HttpServletRequstや HttpServletResponse 時間の などのオブジェクトに かかる 時間の アクセスが可能 処理 かかる 処理 様々な応用 – Commetアプリ – 長時間のDBアクセス – メッセージングの response response 結果を待つ アプリケーション 17
  • 18. IBM Software Group multipart/form-dataのサポート の FileUploadサーブレットも簡単に! サイズの制限も可能 @WebServlet("/upload") @WebServlet("/upload") @MultipartConfig(maxFileSize=1000000) @MultipartConfig(maxFileSize=1000000) public class MyUploadServlet extends HttpServlet {{ public class MyUploadServlet extends HttpServlet @Override @Override protected void doPost(HttpServletRequest request, protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {{ HttpServletResponse response) throws ServletException, IOException response.setContentType("text/plain; charset=UTF-8"); response.setContentType("text/plain; charset=UTF-8"); PrintWriter out == response.getWriter(); PrintWriter out response.getWriter(); for (Part pp :: request.getParts() {{ Part for (Part Part request.getParts()) () request.getParts() request.getParts()()) out.write("Part name: "" ++ p.getName()); out.write("Part name: p.getName()); out.write("Size: "" ++ p.getSize()); out.write("Size: p.getSize()); out.write("Content Type: "" ++ p.getContentType()); out.write("Content Type: p.getContentType()); }} 18
  • 19. IBM Software Group な サービス RESTfullなWebサービス リソースは一意なURIをもつ – 例:http://api.server.example.com/repository/user/E12345 リソースに対する操作をHTTPのメソッドで表現する –GET: 読み取り –PUT/POST:作成/更新 –DELETE: 削除 Statelessな呼び出しプロトコル 19
  • 20. IBM Software Group JAX-RS RESTfull Webサービスを実現するAPIの標準化(JAX-RS) – サーブレットを使わないWebアプリケーションも可能 @Path("repository") @Path("repository") public class TestRepositoryService {{ public class TestRepositoryService @Path("version") @Path("version") @GET /repository/version で呼び出し @GET @Produces("text/plain; charset=UTF-8") @Produces("text/plain; charset=UTF-8") public String getVersion() {{ public String getVersion() return "Test Service version 1.0"; return "Test Service version 1.0"; }} @Path("user/{userID}") @Path("user/{userID}") /repository/user/E12345 などで呼び出し @GET @GET @Produces("text/plain; charset=UTF-8") @Produces("text/plain; charset=UTF-8") public String getUserName(@PathParam("userID") String id) {{ public String getUserName(@PathParam("userID") String id) return UserRepository.getUserName(id); return UserRepository.getUserName(id); }} 20
  • 21. IBM Software Group JSF 2.0 Facelets Annotations support AJAX support Widget library (extension) Skins Bean Validation <h:panelGrid columns="2"> <h:panelGrid columns="2"> #{cc.attrs.namePrompt} #{cc.attrs.namePrompt} <h:panelGroup> <h:panelGroup> <h:inputText id="name" value="#{cc.attrs.managedBean.name}" <h:inputText id="name" value="#{cc.attrs.managedBean.name}" valueChangeListener="#{cc.attrs.managedBean.validateName}"> valueChangeListener="#{cc.attrs.managedBean.validateName}"> <f:ajax event="blur" render="nameError"/> f:ajax <f:ajax event="blur" render="nameError"/> f:ajax </h:inputText> </h:inputText> <h:outputText id="nameError" <h:outputText id="nameError" value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style: italic;"/> value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style: italic;"/> </h:panelGroup> </h:panelGroup> ... ... </h:panelGrid> </h:panelGrid> 21
  • 22. IBM Software Group 永続化の機能強化 永続化の JPA 2.0 – クエリー言語であるJPQL(Java Persistence Query Language)が強化 – アノテーションを使用した入力値の検証が可能なBean Validationの追加 – 悲観的ロックのサポート EntityManager – レベル2キャッシュの仕様追加 @Entity Employee @Id getEmp_Id()emp_Id=111111 setEmp_Id() getEmp_Id() emp_Id setEmp_Id() getName() name=Nakajima setName() getName() name setName() phone=1804-1111 setPhone() getPhone() getPhone() phone setPhone() EMPLOYEE表 EMP_ID NAME PHONE 111111 Nakajima 1084-1111 222222 Hirabayashi 1804-2222 333333 Yamaguchi 1803-3333 22
  • 23. IBM Software Group Bean Validation 1.0 JPAやJSF,JCAで使用できるValidatation機能 – Beanに対する制約を統一的に扱うことができる @Min/@Max/@Size/@NotNull/@Pattern等のアノテーションで制約をかける – ユーザー定義の制約も実装できる @entity @entity public class Customer { public class Customer { @Id @Id private int id; private int id; private String name; private String name; @Pattern(regexp="((¥d¥d¥d¥-)?¥d¥d¥d¥-d¥d¥d¥d)?") @Pattern(regexp="((¥d¥d¥d¥-)?¥d¥d¥d¥-d¥d¥d¥d)?") private String phoneNumber; private String phoneNumber; …… …… }} 23
  • 24. IBM Software Group まとめ Java EEはより簡単に,よりスリムになっていきます Java EE 5が,「今までと同じ事がより簡単にできる」更新だったのに対し Java EE 6は,「今まで出来なかったことができる」という更新です Servlet/JSP/JSFといった,変化が少なかったAPIにも大幅な機能追加が RESTfullアプリケーション,Ajaxアプリケーションなど技術に対応 24
  • 25. IBM Software Group 最後に 最後に Java EE 6対応となるWebSphere Application Server V8.0 Alphaバージョンが公開中です https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wsasoa/index.shtml 25