SlideShare a Scribd company logo
1 of 68
Download to read offline
ぽんぽこバレー勉強会

Javaアプリケーションサーバー最新動向
/ハイブリッド・モバイル・アプリケーション


                        2012年 4月 27日
                 日本アイ・ビー・エム株式会社
             ソフトウェア事業 WebSphere事業部
                須江 信洋(nsue@jp.ibm.com)
自己紹介
    須江 信洋(すえ のぶひろ)
     –日本IBMにてミドルウェアのテクニカルセールスを担当
       • 2000年頃からJavaEE関連の仕事
       • 今年からモバイル関連製品も担当
     –Twitter: @nobusue
     –http://www.facebook.com/profile.php?id=732337788

    コミュニティ活動
     –Groovyコミュニティ(JGGUG)サポートスタッフ
       • 「プログラミングGROOVY」執筆チーム
       • 「Groovy イン・アクション」翻訳チーム
     –日本Javaユーザーグループ(JJUG)幹事
     –その他
       • SCM BootCamp
       • 「継続的デリバリー」読書会
2
Agenda
Javaアプリケーションサーバー最新動向
    –Java EE6でのアップデート
    –OSSと商用製品の使い分けのポイント

ハイブリッド・モバイル・アプリケーション
 –モバイルWeb
 –PhoneGap / Apache Cordova
 –IBM Worklight



3
Java APサーバー
       最新動向


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

5
Java EE 6仕様
                                                           New and Update Technology

                                                           Pruning Target



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

6
Java EE 6 の注目すべき機能
Rightsizing (Java EE仕様のボリュームの軽減)
   • 「Webプロファイル」

さらなるEase of Development(開発を簡単に)
   • EJBにつづきServletもアノテーションベースに
   • CDI (Contexts and Dependency Injection)

Web Container(プレゼンテーション層)の強化
   • Servlet 3.0,JSF 2.0
   • Commet/Web Messaging対応,Ajax対応
                                               Java EE
永続化の機能強化
   • JPA 2.0                                        Web
Servlet 3.0
     メジャー・バージョンアップ! (Version 2.5 → 3.0)
     新機能も盛りだくさん
     – 構成のためのアノテーション大量追加 (web.xmlはオプション)
     – 非同期処理のサポート
     – 複数構成ファイル(web-fragment.xml)の導入
      • サード・パーティーのフレームワークとweb.xml定義を分離可能
     – HTTPServletRequestにログインとログアウト処理を実現する機能の追加
     – Servletおよびフィルタを動的に追加するメソッドの登場
      • ServletContext#addFilter
      • ServletContext#addServlet
     – multipart/form-data形式のリクエストに対応(Partクラスの追加)

                  @WebServlet("/HelloServlet")
                  public class HelloServlet extends HttpServlet {
                     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                         throws ServletException, IOException {
                       resp.getWriter().println("Hello Servlet 3.0 !");
                  }}

8
Servlet 3.0 ~ログイン・ログアウト
 新しい認証方式
    – フォーム認証の実現
    – <form action=“j_security_check” method=“post”>の機能をServletで実現


 認証のための新しいメソッド
    – HttpServletRequest#authenticate(HttpServletResponse response)
    – HttpServletRequest#login(String username, String password)
    – HttpServletRequest#logout()


 アノテーションも追加
    – @ServletSecurity
    – 「R1」ロールをもったユーザーからGETアクセスを制限
    @ServletSecurity (value=@HttpConstraint(rolesAllowed="R1"),
    httpMethodConstraints=@HttpMethodConstraint("GET"))
    public class SecurityServlet extends HttpServlet{
      …(略)
    }

9
Servlet 3.0 ~非同期処理
 非同期リクエスト処理用のモデルを提供
 Servletの実行スレッドを早期解放
 非同期処理を行うスレッドはリクエストの情報を保有し、レスポンスを返す
           Servlet                      Servlet     別スレッド
     doGet()
                                   doGet() startAsync(req,resp)
                                             + start()


     時間の
     かかる             Servlet 3.0
                                                  時間の
     処理                                           かかる
                                                  処理



     response
                                              response


10
JAX-RS(Java API for RESTful Web Services)
  Java EE 6 新規追加仕様
     – WAS V7.0(Java EE 5)でも、Feature Packとして追加可能

  RESTful Webサービスを実現するAPIのJava EE 標準
     – サーブレットを使わないWebアプリケーションも可能
     @Path("repository")
     public class TestRepositoryService {
       @Path("version")
       @GET                                     /repository/version で呼び出し
       @Produces("text/plain; charset=UTF-8")
       public String getVersion() {
         return "Test Service version 1.0";
       }

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

11
JSF 2.0
      メジャー・バージョンアップ! (Version 1.2 → 2.0)
      Facelets
         – JSP+JSFタグからXHTML+JSF属性に、テンプレート化が容易
      Ajaxサポート
         – <f:ajax>タグによりJavaScriptを動的に生成
      アノテーション対応
         – Managed BeanがPOJO+アノテーションだけで作成可能
      Bean Validation
         – コンテナ全体で値検証を共通化

 <h:panelGrid columns="2">
  #{cc.attrs.namePrompt}
  <h:panelGroup>
   <h:inputText id="name" value="#{cc.attrs.managedBean.name}"
      valueChangeListener="#{cc.attrs.managedBean.validateName}">
    <f:ajax event="blur" render="nameError"/>
   </h:inputText>
   <h:outputText id="nameError"
      value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style:
 italic;"/>
  </h:panelGroup>
  ...
 </h:panelGrid>




12
12                                                                      WAS V7 最新動向WorkShop
JPA 2.0の新機能
  エンティティーの構造とテーブルのマッピングの柔軟性向上
     – derived(派生) ID
       • 主キー列として、外部キーや外部キーとの複合キーを簡単に定義可能に
     – リレーションにおけるMapオブジェクトのサポート強化
       • ユニークな属性だけでなく、属性の複合や組み込み型、エンティティーをMapのキーに指定可能
     – 組み込み(Embeddable)クラスのネストのサポート
     – コレクション・マッピングの強化
       • プリミティブ型と組み込みクラスのコレクションもフィールド指定可能

  ベンダー依存プロパティーに優先する標準プロパティーの追加
     – 悲観的ロックのサポート
     – キャッシュ仕様の追加
                                                       社員テーブル
  Criteria APIの追加                  ID: 126
                                    myoji: たなか
     – タイプ・セーフなJPQLクエリーを作成          namae: よしお   ID    myoji   namae
                                                 126   たなか     よしお
  Bean Validation(JSR-303)の統合                   743   すずき     はなこ
     – フィールド値の妥当性検査                 ID: 743
                                    myoji: すずき   301   さとう     たろう
     – 例: @NotNull、@Max, @Pattern   namae: はなこ



13
     JPA 2.0はJPA 1.0を拡張し、より柔軟なORマッピングが可能に
JPA 2.0 ~ペシミスティック・ロックのサポート
 オプティミスティック・ロック
     – 他からのアクセスがないことを前提
     – 更新対象が他のトランザクションによって書き換えら
       れていないかをJPAエンジンがチェック                  データ読み取り
                                                          データ読み取り
     – バージョン番号、最終更新時間によるチェック                              データ更新
                                               データ更新

                                         OptimisticLock
 ペシミスティック・ロック                           Exception!

     – 他からアクセスされる可能性を考慮したロック
     – 更新対象に排他ロックをかけ、更新が終わるまで他
       のトランザクションによる更新を禁止                                    Lock!
     – JPA2.0から正式にサポート                     データ読み取り        データ読み取り
     – lockメソッドの実行時に引数として指定                   データ更新
      • LockModeType.PESSIMISTIC_WRITE                    データ読み取り
                                                          データ更新



       entityManager.lock(person,
         LockModeType.PESSIMISTIC_WRITE);
14
EJB 3.1 ~EJB Liteとパッケージの簡略化
                                          EJB完全版
 EJB Lite
     – Web Profileで利用                       EJB Lite
     – 簡略化されたEJB                             Local Session Beans         Message Driven Beans
                                             Annotations / ejb-jar.xml   EJB Component Web
                                                                            Service Endpoints
                                             CMT / BMT
                                                                         RMI-IIOP Interoperability
                                             Declarative Security
 パッケージの簡略化                                  Interceptors
                                                                         2.x/3.x Remote View
                                                                         2.x Local View
     – Webモジュールのみ。Jarは不要                     JPA 2.0                     Timer Service
     – インターフェイスも不要                           JTA 1.1                     CMP / BMP

     – JavaEE 5同様のパッケージングも可能


     EJB 3.0
                                                             EJB 3.1
       EJBSample_web.war
                                                               EJBSample.war
       WEB-INF/web.xml
       WEB-INF/classes/
         com/ise/EJBSampleServlet.class                        WEB-INF/classes/
                                            EJB 3.1            com/ise/EJBSampleServlet.class
       EJBSample_ejb.jar                                       com/ise/EJBSampleBean.class

        com/ise/EJBSampleBean.class
        com/ise/EJBSample.class

15
EJB 3.1 ~組み込み可能なEJBコンテナー
 EJBはEJBコンテナーが必要なため、単体テストは困難だった
 EJB 3.1からはJavaSEにEJBコンテナーを組み込んで使用可能
      – JUnitなどを用いて単体テストが可能
      – 開発向けの機能


     public void testSayHello() {
       Map map = new HashMap();
       map.put(“EJBContainer.PROVIDER”,
                       ”com.ibm.websphere.ejbcontainerEmbeddableContainerProvider”);
       EJBContainer container = EJBContainer.createEJBContainer(map);
       try{
              Hello hello = (Hello)container.getContext().lookup(“java:global/hello/HelloBean”);
              System.out.println(hello.sayHello());
       catch(Exception e){
              e.printStackTrace();
       }
                                                    EJBContainerクラスのContextよりEJBをlookup
     }




16
CDI (Contexts and Dependency Injection)

       ServletでのDI
                     DIの仕様を

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


      DIの機能を個別APIから分離
       → コンポーネント横断的なDIが利用可能
      ビジネスロジック層とプレゼンテーション層の連携が容易に
17
CDIの使用例
 import org.example.HelloService;

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




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

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


18
@SessionScoped
                                                            セッション内でデータ共有

CDI 1.0 ~スコープ                                        @SessionScoped
                                                     public class Counter implements
 スコープもアノテーションで表現                                    Serializable {
     –@RequestScoped                                    private int count = 0;
     –@SessionScoped
     –@ApplicationScoped                               @PostConstruct
                                                       private void init(){
@WebServlet(name="CounterServlet",                        System.out.println(“Init");
                  urlPatterns={"/CounterServlet"})     }
public class CounterServlet extends HttpServlet {      @PreDestroy
                                                       private void destroy(){
     @Inject                                              System.out.println(“Destroy");
     private test.cdi.Counter c;      Inject !         }

     @Override                                        public int getCount(){
     protected void doGet(HttpServletRequest request,   return ++count;
        HttpServletResponse response)                 }
        throws ServletException, IOException {     }
        …
         out.println("<p>" + c.getCount() + "人目のアクセス</p>");
19
Bean Validation 1.0
~アノテーションで実現するバリデーション
      アノテーションを利用してバリデーションを実現
       –Hiberbate Validatorなどが実現していた機能
       –Bean、フィールド、プロパティに制限
       –nullチェック、数値の範囲のチェックなどが容易に実現可能


      javax.validation.constraintsに定義されたアノテーション
       –@AssertFalse、@AssertTrue
       –@DecimalMax、@DecimalMin、@Max、@Min
       –@Digits
       –@Future、@Past (Date、Calenderクラスで示される時間のチェック)
       –@Null、@NotNull
       –@Pattern (正規表現によるチェック)
       –@Size (文字列の長さや配列の数)

20
JavaEEのカバレッジとアプリケーション移植性



       User Application                User Application



                                追加
      Spring Framework等                      CDI 1.0
       MVC                              MVC
                         EJB3                           EJB3.1
       (JSP)                    標準    (JSF2.0)




                                                                 標準
               O/R Map                           O/R Map
                (JPA)                            (JPA2.0)
     JavaEE 5 準拠                     JavaEE 6 準拠
     APサーバー                          APサーバー




21
Java EE 6採用のメリット
 業界標準仕様であるためポータビリティが高い
     – Java EE 6準拠のAPサーバーであれば稼働可能
       • WAS V8.0 / WebLogic11c / GlassFish3.0 / JBoss7.0 / TomEE1.0など選択可
     – 将来のバージョンアップに対する互換性
 Java EE 5で不足していた機能の大幅拡充
     – 従来Spring Framework等で補っていた機能のかなりの部分が標準機能として
       取り込まれている
       • CDI(Context and Dependency Injection)など
     – APIの大幅強化
       • JSF2.0 / JPA2.0 / Bean Validationなど

 開発生産性向上
     – 組み込みEJBコンテナによる単体テスト
     – EJB3.1Lite(EJBをwarに含められる)
 モジュール化への対応の容易さ
     – アノテーションベース開発
     – Webフラグメントなど

22
http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html


Java EE 6対応 APサーバー (2012/4/27)
     Full Profile                                                            Web Profile




23
TomEEとは
 http://openejb.apache.org/index.html
 Java EE 6 Web Profile をTomcatベースで実装
     –CDI: Apache OpenWebBeans
     –EJB: Apache OpenEJB
     –JPA: Apache OpenJPA
     –JSF: Apache MyFaces
     –JTA: Apache Geronimo Transaction
     –Bean Validation: Apache Bean Validation

 上位エディションとして TomEE+ もあり
     –JAX-RS: Apache CXF
     –JAX-WS: Apache CXF
     –JMS: Apache ActiveMQ
     –Connector: Apache Geronimo Connector

24
Java EE (Java Enterprise Edition)とは?
       エンタープライズ・システムをJavaで構築するために必要となる一
        連の機能を規定した仕様
       – アプリケーション・サーバーの標準機能セットを定義する業界標準
       – 最低限の基準(API)を規定することで、複数のAPサーバ間でのアプリ
         ケーションの互換性や、スキルの共通化を実現するのが目的

       Java EE = Java SE + エンタープライズ向け機能
       – コンポーネント仕様(アプリケーション)
         • Servlet/JSP: 画面
         • EJB: ビジネスロジック
         • Adapter: レガシー/パッケージ連携
       – コンテナ・サービス(インフラ)
         •   JNDI: リソース管理
         •   JDBC: データベース接続
         •   JMS: 非同期メッセージング       Web+DBのシステムではあ
         •   JTA: トランザクション管理       まり使われていない
         •   セキュリティ


25
25
次のようなケースは要注意
 非同期処理
     –オンラインで処理を受け付けておいて、バックグラウンドで処理を実行する
      場合など
     –特に不揮発メッセージ(永続メッセージ)を扱う場合は注意

 2フェーズコミット(XAトランザクション)
     –2つ以上のDBにまたがってトランザクション処理を行う
     –DBとメッセージングシステム(MQなど)にまたがってトランザクション処理を
      行う

 非機能要件が厳しい
     –高負荷下での無停止運用
     –アプリケーションが大容量ヒープメモリを要求
     –障害発生時の厳密な原因究明


26
[WAS] パフォーマンス・モニタリングと問題判別機能
 パフォーマンス状況を詳細にモニター可能
 –パフォーマンス・ビューワー
   • パフォーマンスの結果を管理コンソールに表示
   • 必要なコンポーネントに対し、12段階で取得レベル設定可能。
   • グラフ表示や表形式での表示、ロギングも可能
 –パフォーマンス・アドバイザー
   • パフォーマンス状況をモニターした結果、リソースの構成についてアドバイスしてくれる機能
   • 管理コンソール上に推奨設定を表示
   • スレッドプールやコネクションプールサイズの値をアドバイス
 –要求メトリック
   • Webサーバー、Webコンテナー、EJBコンテナーの各コンポーネントでの処理時間を記録し、ボトルネックを判断する

 問題判別のための機能強化
 –様々なログ・トレース機能
   • JVMログ、プロセスログ、Thread Dump、Heap Dump、HTTPトランスポートログ、JDBCトレース、プラグインログ etc
 –ハング・スレッドの検出機能
 –メモリー・リークの検出機能
 –クラスローダー・ビュワー
 –問題判別に便利なツールの無償提供


                                      リクエスト     Web    Web        EJB
                                               サーバー   コンテナー     コンテナー        データベース
                                       IPやURLによる
 詳細なログやトレース、様々なツールの提供に                 フィルタリング

 より、早期の問題解決をサポート
                                              各コンポーネントにおける経過時間を把握可能
[WAS] High Performance Extensible Logging(HPEL)

問題判別のためのトレース取得負荷を大幅に軽減
  –V7.0にくらべログ記録機能が6倍高速化
  –V7.0にくらべトレース記録機能が3.8倍高速化

柔軟なログ・トレースデータの取り扱い
  –コマンドラインのフィルター・整形ツールを提供
  –管理コンソールのGUI画面からフィルター・整形が可能
  –プログラムからアクセスするAPIを提供

既存のログ機能と共存する形で利用可能

                    例:
                    アプリケーションに対する警告レベル以上のメッセージを抽出:
                    # logViewer,sh -minLevel warning -includeLoggers “com.acme.app1.*”
                    2010/07/11以降で0x0000000cスレッドでSEC文字列から始まるメッセージを抽出:
                    # logViewer,sh –startDate 2010/07/11 –message “SEC*” –thread 0c
ハイ・パフォーマンスな64bit JavaVM(J9)の提供
 64bit JavaVM: 巨大なヒープが確保できるが、64bit化オーバーヘッドが大
  – 同じアプリケーションを32bit JavaVMで稼働させた場合に比べ、ヒープ利用量が数十%増加
  – それに伴い、GCのオーバーヘッドが増加し、スループットに悪影響
 IBM® SDK for Java 6 の64bit版では、オブジェクトのポインターを圧縮して
  ヒープ利用量を削減する技術を投入
  – ヒープ利用量とGCオーバヘッドを削減し、32bit JavaVMと遜色ないパフォーマンスを実現
 ヒープサイズが約25GB程度まで適用可能
  – 注)IBM JavaVMの固有機能であるため、Solaris/HP-UX版のWASでは未対応



        64bit JavaVMのヒープ利用量削減率
                (IBM Java5との比較)
                                         64bit JavaVMのスループット改善率
                                                (IBM Java5との比較)




                                                                  29
無償提供


IBM Health Center
JavaVMのリアルタイム・モニタリングと可視化を実現

 オーバーヘッドが少なく、本番環境でも利用可能なJavaモニタリ
  ング・ツール
 – WAS V6.1(IBM Java 5 SR8以上)とWAS V7.0/V8.0(IBM Java 6 SR1以上)で利用可能
 – ISAから起動可能
   • http://www.ibm.com/developerworks/jp/java/library/j-ibmtools5/


 機能
 – パフォーマンス
   • メソッド・プロファイル
   • ロック分析
   • GC状況の可視化と推奨オプション
 – メモリー
   • メモリーリーク検出
   • ヒープサイズのガイド
 – 環境
   • システム・プロパティ-
   • 環境変数
 – クラスロード情報
   • いつロードされたか
   • キャッシュされたかどうか
AP仮想化ソリューション:WebSphere Virtual Enterprise
AP仮想化によるリソース有効活用と業務の優先度に応じたサービスレベル管理
               サービスポリシーに       ヘルスポリシーによ          ルーティングポリシーに
                                                                           Java VMリソースの動的配置
                よる優先制御         る自動回復処理            よる条件ルーティング


 優先度高
        購入処理
                                                                               AppEdition1
                           オンデマンド・ルーター

                                                                     WebSphere Application Server
                                          流量多
                       キュー                                           他社Java EEサーバー
                                                                     Apache,PHP
        買い物中                              流量少


                            リクエスト   キュー     優先度    目標平均
                                                   応答時間                        AppEdition2
        商品閲覧
 優先度低                               L1      最高     1秒
           クライアント                   L2      高      3秒

                                    L3      低      5秒


  リクエストの       設定されたサービスポリシーに                   アプリケーション        アプリケーションの複数のバージョンを
                従ってリクエストを優先付け                                    サーバー上で同時実行
 Queuingによる    アクセス集中時にも
                                                 エディション         テストユーザーのみを新バージョンに割振り
  過負荷防止         重要な処理を確実に実行                      コントロール         本番環境でのテストも可能に
               ヘルスモニタリング機能が                      仮想化による         動的アプリケーション配置により
  回復処理の         応答時間やCPU,メモリを監視
               異常発生時に自動的に
                                                サーバー資源の          負荷に応じてJava VM数を動的に変更
   自動化                                                          サーバーの剰余能力を最適利用
                切り離し・再起動などを実行                     有効利用
WAS V8.5 Liberty Profile
 「手軽に使える」ことを目指した新しいWAS
  – 開発環境でもプロダクション環境でも利用可能
  – Mac OS X対応
 インストールが簡単
  – zipファイルを展開するだけ
  – アプリケーションのデプロイも,ファイルをコピーするだけ
 スモール・フットプリント
  – 必要ディスク容量: 50MB程度
  – 必要メモリ容量: 数十MB程度
  – 高速起動: わずか数秒で起動
 コンフィグレーションが簡単
  – コンフィグレーションファイル(server.xml)で
    必要なフィーチャー(Servlet,JPA,JSF等)を指定するだけ
  – 内部的には必要なOSGiバンドルのみを組み合わせて実行
   最新情報は http://wasdev.net から発信中!!
とにかく起動が早いです。ぜひお試しを!




 詳細はInformation Center(beta)をご参照ください
  – http://www14.software.ibm.com/webapp/wsbroker/redirect?version=p
    hil&product=was-nd-dist&topic=cw4d_about
  – http://www14.software.ibm.com/webapp/wsbroker/redirect?version=p
    hil&product=was-nd-dist&topic=tw4d_setup
ハイブリッド・モバイル・
      アプリケーション


34
急成長するモバイル市場
                                                                                モバイルは新しいITの波
   インターネットに接続するデバイスの増加
  1200
                      WW タブレット
                      WW ノートPC
                      WW PC
                      WW スマートフォン
台数 (百万)




      600




          0
               2010        2011        2012        2013        2014   2015


              Source: Wells Fargo Securities, January 23, 2012
              “Fostering the People: The Shift to Engagement Apps”           インターネットによってWebやeビジネス
                                                                             の波が押し寄せたように、現在、モバイ
          2020年までには、世界で100億台                                                 ルによる新しい波が起きている
          のモバイル機器が使用される                                                      →全業種においてビジネス・チャンスに
     35
モバイル・アプリケーションの特徴と課題
                                                  課題                  ソリューション
            特徴
                                               開発生産性
       様々な機種が混在                           • OSごとに異なる開発言語が必要
                                          • デバイス固有機能に対するスキル
                                          • デバイス毎にテストする負荷が高い
スマートフォンやタブレット等多様なデバイス                                                モバイル・エンタープラ
- 異なる画面サイズ
- デバイス固有機能の提供                              アプリケーション管理                イズ・アプリケーション・
                                                                       プラットフォーム
                                          • アプリケーションが最新かどうか              (MEAP)
       様々なOSが混在                           • リモートからアプリケーションを無効化できるか

iOS, Android, Blackberry, Windows Phone
等の複数プラットフォームが存在
                                           企業システムとの連携
                                          • エンタープライズ・システムとの統合
                                          • マルチチャネル対応アプリケーションの構築

                                                                      モバイル端末管理
                                               セキュリティ                    (MDM)
                                          • 暗号化や認証の仕組み
                                          • デバイスの紛失や盗難への対応


                                                端末管理
                                          • デバイスの監視、管理
  36                                      • デバイス上のソフトウェア更新、データ配布
モバイルとHTML5
 PC(特に業務系)ではまだ採用の敷居が高い
     –IEを標準ブラウザとしている企業が多数
     –IE8以前では、HTML5のほとんどの機能に未対応


 モバイルでは主要プラットフォームがHTML5 Ready
     –iPhone/iPad
     –Android
     –(Windows8)


 ただし、モバイル特有の事情を考慮する必要あり
     –対応している仕様の偏り
     –Video/Audioの非互換など


37
http://mobilehtml5.org/

多くの端末がサポートしているHTML5仕様
Application Cache
Web Storage
Geolocation
Canvas
Viewport definition
XMLHttpRequest 2.0
38
http://dev.w3.org/html5/spec/offline.html

Application Cache
 Webアプリをオフラインで利用するために、リソースをクライアント
  側でキャッシュするためのしくみ
      –HTML,CSS,JavaScript,イメージなどURL指定できる全リソースが対象
      –フォールバックやイベント処理が可能

 キャッシュ対象リソースはマニフェストファイルで指定
      –更新チェックはマニフェストファイルのみを確認
                                                                [clock.html]
[clock.manifest]              <!DOCTYPE HTML>
                              <html manifest="clock.manifest">
     CACHE MANIFEST           <head>
                               <title>Clock</title>
     # This is comment line    <script src="clock.js"></script>
                               <link rel="stylesheet" href="clock.css">
     clock.html
                              </head>
     clock.css                <body>
     clock.js                  <p>The time is: <output id="clock"></output></p>
                              </body>
39                            </html>
http://dev.w3.org/html5/webstorage/

Web Storage
 クライアント側でデータを永続化しておくためのストレージ
     –シンプルなKey-Valueストレージ
     –手軽に利用できる
     –複雑・大量データを扱うのには不向き

 Cookieとの違い
     –JavaScriptオブジェクトがそのまま格納できる
     –自動的にサーバーに送信されない
     –(仕様上は)サイズ制限がない
     –有効期限という概念がない

 用途によって2種類を使い分ける
     –localStorage
       • Webサイトのオリジンごとに分離
       • 永続期間は無制限
     –sessionStorage
       • window(ブラウジングコンテキスト)と同じスコープを持ち、オリジンごとに分離
       • windowが閉じられると削除される
40
http://dev.w3.org/geo/api/spec-source.html

Geolocation API
 デバイスの位置情報を取得するためのAPI
     –緯度、経度、標高およびその精度
     –デバイスの進行方向/進行速度
     –位置情報取得時刻

 シンプルなAPI
     –現在位置を一度だけ取得
      • getCurrentPosition(successCallback, errorCallback, options)
     –位置情報を継続して監視
      • watchPosition(successCallback, errorCallback, options)
      • clearWatch(watchId)
     –具体的な取得方法などは隠蔽されている(高レベルAPI)
     function showMap(position) {
       // (position.coords.latitude, position.coords.longitude)を中心にMap表示
     }

     // One-shot position request.
     navigator.geolocation.getCurrentPosition(showMap);
41
http://dev.w3.org/html5/spec/the-canvas-element.html

Canvas
 ブラウザ上でグラフィックスを自由に描画できる領域
     –四角形、直線、円弧、ベジェ曲線
     –画像
     –グラデーション、影付け、重ね合わせ
     –テキスト
     –グラフィックス変形
     –ピクセル操作による描画

 描画コンテキストの保存/復元
 画像データをURLとして取得
     –toDataURL()によりbase64文字列に変換可能




42
Canvasサンプル
     <!DOCTYPE html>
     <html>
     <head>
     <meta charset="utf-8"/>
     <title>Hello Canvas</title>
     <script>//<![CDATA[
     function draw() {
      var canvas = document.getElementById("canvas");
      var ctx = canvas.getContext('2d');
      ctx.beginPath();
      ctx.fillRect(20, 20, 80, 40); // 四角(塗りつぶしあり)
      ctx.strokeRect(120, 20, 80, 40); // 四角(塗りつぶしなし)
      ctx.arc(70, 150, 60, 0, Math.PI*2, false); // 円

      var message = '文字も書けます';
      ctx.font = "bold 18px 'MS P Gothic'";
      var textWidth = ctx.measureText(message).width;
      ctx.fillStyle = "black";
      ctx.textBaseline = "top";
      ctx.fillText(message, 0, 220);
      ctx.stroke();
     }
     //]]></script>
     </head>
     <body onload="draw()">
     <canvas id="canvas" width="300" height="300"></canvas>
     </body>
     </html>
43
Canvas: 参考情報
 HTML5 Canvasのサンプル
     –http://sites.google.com/site/gorogoronyan/Home/html5-iroiro/javascript
     –実用的な使い方のヒントとして

 Ball Pool
     –http://mrdoob.com/projects/chromeexperiments/ball_pool/
     –モバイルでも動作するインタラクティブな使い方のサンプルとして




44
http://dev.w3.org/csswg/css-device-adapt/#viewport-meta-element

Viewport definition
 ブラウザの表示サイズを制御
     –コンテンツの横幅/縦幅
     –初期倍率/最少倍率/最大倍率
     –拡大縮小の可否

 <meta name=“viewport” …>で指定
     –コンテンツ内容に合わせてviewportを最適化
       • http://www.mdn.co.jp/di/articles/2434/?page=8

 viewport以外のiOS系固有のチューニングについてはこちら
     –iPhone 3G DevWiki -画面表示関係
       • http://wiki.sohaya.com/index.php/%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A
         4%BA%E9%96%A2%E4%BF%82




45
http://dev.w3.org/csswg/css-device-adapt/#viewport-meta-element

XMLHttpRequest 2.0
 クロスオリジンのリクエスト送信が可能に
     –送信先サーバーの許可が必要
        • Cross-Origin Resource Sharingに準拠
        • http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html

 文字列以外も送信可能に
     –Blob / Document / FormData

 進捗状況がモニター可能に
     –uploadプロパティが追加された
     –ダウンロード・アップロードの両方で進捗状況に応じたイベントが捕捉可能
        • 進捗があるたびにonpregressイベントハンドラがコールバックされる
     var xhrObj = new XMLHttpRequest();
     xhrObj.upload.addEventListener("progress", progressFunction, false);

     function progressFunction(evt){
           var percentageDiv = document.getElementById("percentageCalc");
           percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
     }
46
リモート・デバッグ: Weinre
 モバイルWeb開発(特に実機デバッグ)を効率的に行うためのツール
 リモートから、FirebugやGoogle Dev Toolのような操作が可能
     – DOM/CSSインスペクタとオンザフライ編集
     – JavaScriptコンソール
     – ブレークポイント設定とステップ実行

 PhoneGap(改めApache Cordova)のサブプロジェクト
     – ドキュメントとバイナリ
       • http://people.apache.org/~pmuellr/weinre/
     – ソース
       • https://github.com/apache/incubator-cordova-weinre

 使い方など
     – スマホの開発が超絶楽に! weinreでスマートフォンをPCでリモートデバッグ!
       • http://css-eblog.com/tools/weinre.html
     – スマートフォンサイト構築のためのリモートデバッグ環境その1 – weinre
       • http://blog.alt-scape.com/archives/423

47
Weinre実行例: コンソール




48
Weinre実行例: デバッグ




49
モバイル・アプリケーションのトレンド
        Web                         ネイティブ・
     アプリケーション                      アプリケーション
 オープンな技術(HTML5,                    デバイス固有の機能を活
 CSS, JavaScript)を使用。              用できるが、開発・テストの
 開発生産性やポータビリ                       負荷が高い。
 ティは高いが、デバイス特
 有の機能は使えない。



                         ハイブリッド・
                        アプリケーション
           コードの大部分を再利用可能なWeb技術を使って開発。
           デバイス依存の機能はネイティブ・コードで補完。

     クロス・プラットフォーム       開発コスト      ユーザビリティ

50                        セキュリティ
ハイブリッド・アプリケーションとは
                                                         Webアプリケーションと
                                                         ネイティブ・アプリケー
     Application                     File System         ションの組み合わせ
       Stores                        (on mobile
                                        device)          基本的にはHTML5、CSS、
                                   Native Container      JavaScriptを使用するが、
                                                         デバイスの機能にもア
                                 HTML, CSS, JavaScript
                                                         クセス可能
App StoreやAndroid Marketなどから
アプリケーションをダウンロードし、モバイ
ル・デバイス上にアプリケーションを保管            Mobile Operating System
する。




51
PhoneGap (Apache Cordova)
 ハイブリッド・アプリケーションのプラットフォーム
     –http://phonegap.com/
     –http://incubator.apache.org/cordova/

 Webブラウザ+プラグイン
     –Webコード(HTML/CSS/JS)はWebブラウザコンポーネント上で実行
       • トランスコードソリューションではなく、実行時もWebコードのまま
     –WebコードからJavaScript経由でネィティブコードを実行可能(プラグイン)
     –標準プラグインが豊富に存在し、独自拡張も可能

 歴史的経緯
     –PhoneGapを開発していたNitobiがAdobeに買収される
     –PhoneGapのコアをApache Callbackプロジェクトに移管
     –Apache CallbackプロジェクトがApache Cordovaプロジェクトに改名
       • Apache CordovaにはAdobe以外にもIBM/RIM/Microsoftなどが協力
       • PhoneGapはApache Cordovaの1ディストリビューションという位置づけに
       • http://phonegap.com/2012/03/19/phonegap-cordova-and-what%E2%80%99s-in-a-
52
         name/
PhoneGap: 幅広いプラットフォームに対応




53
PhoneGap: プラグインの利用例
 ネットワークの回線種別を判定




54   http://docs.phonegap.com/en/1.6.1/cordova_connection_connection.md.html#Connection
IBM Worklight : モバイル・アプリケーション・プラットフォーム
                       Build once. Run anywhere.
     HTML5、ハイブリッド、ネ    – Android, iOS, Blackberry, Microsoft
                       – スマートフォンとタブレット
     イティブ・アプリケーション
     のための、オープンかつ       標準ベース、エンタープライズ対応
                       –   PhoneGap, Java
     先進的なモバイル・アプ       –
                       –
                           アプリケーション配布
                           エンタープライズとの統合
     リケーション・プラット       –
                       –
                           セキュリティー
                           スケーラビリティ
     フォーム              –   管理

                       Build it today. Change it tomorrow.
                       – アプリケーション・ライフサイクル管理
                       – 保守とアップデート




55
Worklight のコンポーネント
         Worklight Studio  Eclipse ベース
         コード再利用の最大化とデバイス毎の最適化を実現する包
         括的で拡張性に優れた開発環境


         Worklight ServerTomcat or WAS 上で稼働
         統合通知、ランタイム・スキニング、バージョン管理、セキュ
         リティー、統合、配布


         Worklight Runtime Components
         ネイティブのデバイス機能と連携可能な豊富なライブラリー
     ←
         とクライアントAPI


         Worklight Console
         リアルタイム分析、および、モバイル・アプリケーションとイン
         フラ管理のためのWebベースのコンソール

56
サポートする環境(Environment)
  様々なタイプのプラットフォームに
   対応
  モバイル
     – iPhone
     – iPad
     – Android
     – BlackBerry
     – Windows Phone
     – Mobile web app
  デスクトップ
     – Windows 7 and Vista(ガジェット)
     – Adobe AIR
     – Mac OS Dashboard
  Web アプリケーション
     – Facebook
     – iGoogle
     – Embedded web page

57
Build and Deploy


                                     基本部分は
                                     commonに、
                                     差分を個別
                                     環境のフォル
                                     ダへ




 すべてのコードをビルドしてデプロイ
 ネィティブSDK用のプロジェクトを生成
 アプリケーション(Webコード)をWorklight Serverへデプロイ
58
Worklightのアプリケーション・タイプ
         Webアプリ                      ハイブリッド(Web)                   ハイブリッド(Mixed)             ネィティブアプリ

     HTML5, JavaScript ,            ソースコードはWebと                    ユーザー固有のニー                プラットフォーム固有。
     CSS3で記述。高速か                    Worklightのライブラリ                ズを実現するネィティ               固有のスキルを必要
     つローコストで開発可                     を含み、ネィティブの                     ブコードでWebを拡張              とし、開発にはコストと
     能だが、機能性はネィ                     シェル内で実行される。                    し、ユーザーエクスペ               時間がかかる。高いレ
     ティブよりも劣る。                                                     リエンスを最大化。                ベルのユーザーエク
                                                                                            スペリエンスを実現で
                                                                                            きる。




         Mobile Browser               Worklight Runtime              Worklight Runtime              Native
                                                                                                 Application
                                                                                              1001010101011101001010
                                        Web Code                               Web            0100101011101001001101
                                                                                              0101010100100100101111
           Web Code                     <!DOCTYPE html                      Native
                                                                       <!DOCTY   1001010      0010011001010101001010
                                        PUBLIC                         PE html    1010111     1010100101010101010101
          <!DOCTYPE html                <html>                                    0100101
                                                                       PUBLIC                 0101011111100000101010
          PUBLIC                        <! - - created 2003-12-1                  0101010
                                                                       created
          <html>                        <head><title>XYZ</title                   1010010     1010101001001010101010
                                                                       2003-12
          <! - - created 2003-12-       </head>                                   0100101     1010001111010100011110
                                                                       </p>
          12 - -                                                                  1110010
                                        </body>                        </body>                1010011101010111110010
          <head><title>XYZ</title       </html>                                   0110010
          >
                                                                       </html>                1101111010001011001110
          </head>
          <body>
          </p>
          </body>
          </html>



                                       Device APIs                    Device APIs              Device APIs




59
ハイブリッド(Mixed)の利用イメージ
     ハイブリッド(Mixed)
                              Webとネィティブの
     ユーザー固有のニー                                           ネィティ
                                 画面混在       Web
                                                           ブ
                                                                             Web
     ズを実現するネィティ                             画面                               画面
     ブコードでWebを拡張                                          画面
     し、ユーザーエクスペ
     リエンスを最大化。
                                               共通のユーザーセッションとデータ

                                                  Worklight Client Runtime


       Worklight Runtime

               Web
              Native
         <!DOCTY   1001010
         PE html    1010111
         PUBLIC
         created
                    0100101
                    0101010                                Web
                              プラグイン(ドライバ)
         2003-12    1010010
         </p>
         </body>
                    0100101
                    1110010
                    0110010
                                                           画面
                                による拡張
         </html>




                                                                             ネィティブ機能の
                                                  Worklight Client Runtime      呼出し
        Device APIs
                                            Worklight                  ユーザー
                                             標準                         独自
                                            プラグイン                      プラグイン

60
主要なライブラリ/ツールとの統合
     Worklightは主要なHTML5ライブラリ/ツールと統合可能:




61
Worklightのランタイム・アーキテクチャ




         Worklight Server                                        Device Runtime




                                                                                            Application Code
         Server-side                            Client-side
       Application Code                       App Resources
                                                              • Cross Platform Technology
                          Stats Aggregation




       JSON Translation                       Direct Update

                                                Mobile        • Security and
        Authentication                         Web Apps         Authentication
                                                              • Back-end Data
                                                                Integration
                                              Unified Push    • Post-deployment control
        Adapter Library
                                              Notifications     and Diagnostics



62
サーバーサイド・アダプター
     • Worklight Platformはアダプターを利
       用して様々なバックエンド・システム
       への接続を実現                        Query      Response
                                                                    Update
                                        2             3              data


     • アダプターの用途                               SQL           WS        HTTP
      • 情報の取得                                             Worklight
      • アクション(ロジック)実行
                                      1     Invoke               Data/Result
                                           adapter
                                          procedure               as JSON      4

     • 標準提供アダプター
      • SQL Adapter
      • HTTP Adapter (RESTとSOAPに対応)

63
柔軟なプッシュ通知のフレームワーク
     iOSとAndroidに共通のAPI



     1つのアプリケーションで、複数のデバイスに
     対応



     イベント・ソースとアプリケーション間での
     Many-to-many リレーションシップ



     同じバックエンドからの複数イベント・ソース




     同じアプケーションへの複数ユーザーログイン

64
モバイル・アプリケーションのセキュリティ
               デバイス上のデータの保護                              強制セキュリティ・アップデート

                                        起動時の
                                          Secure
                                                          リモート              直接
     暗号化され
      Encrypted        オフライン
                        Offline          セキュア
                                        challenge-
                                                          無効化             アップデート
     たオフライン
     offline cache       認証
                     authentication   チャレンジ-レス
                                       response on
      キャッシュ
                                          ポンス
                                         startup

                                                      企業のセキュリティ・プロセスの効率化
              アプリケー
                 App         Jailbreak and
                             Jailbreakおよ
             ションの真正
             authenticity    びマルウェア
                                malware
               性テスト
               testing           の検出
                               detection                         組織のサン
                                                                 ドボックスと
                                                                 してのシェル



                     堅固な認証・認可                            アプリケーション・セキュリティ

      認証統合                                           実証済みの
                       データ保護           デバイスidを                   SSLによる
     フレームワー                                            プラット                  コードの
        ク
                        レルム              併用                      サーバーの
                                                     フォーム・セ                  難読化
                                                                   検証
                                                      キュリティ




65
Direct Update: Worklight Serverから更新
版を直接配布
                                                       1.初期のオフライン実行を可能
                                                         にするため、Webリソースがア
                                   Worklight Runtime
                                                         プリケーション内にパッケージ
                 1       ダウンロード                          ングされている
                                      パッケージされ
                                       たリソース
                                                       2.Webリソースはアプリケーショ
     App Store
                                                         ンのキャッシュストレージに転
                                  2 転送                   送される

                     3   更新を確認                         3.アプリケーションは更新を確認
                                                         する
                                      キャッシュされ            • 起動時
     Worklight             Web         たリソース             • フォアグラウンドになった時
      Server              リソース
                                                       4.必要であればWebリソースを
                 4 Webリソー                                ダウンロードして更新する
                   スを更新




66
PhoneGap(Cordova)とIBM Worklightの比較
                     PhoneGap              Worklight
                                           PhoneGapプラグイン
     ネィティブ連携         PhoneGapプラグイン
                                           +Worklightプラグイン
                                           通常は不要
     PhoneGapスキル     必要
                                           プラグイン開発時のみ必要
                     プラットフォーム毎にソースを        アプリ単位で複数プラットフォーム
     クロスプラットフォーム対応
                     管理                    のソース管理を共通化
                                           改ざん・覗き見防止
     セキュリティ機能        なし                    暗号化ストレージ
                                           認証フレームワーク
                     XMLHttpRequestなどを利用
     バックエンド連携                              アダプター
                     して独自に開発
                                           Direct Update
     アプリケーション更新      再インストール
                                           (Webコードの部分のみ更新)

     監視・分析           なし                    管理コンソール

     商用サポート          なし                    あり
67
まとめ
Javaアプリケーションサーバー最新動向
     –Java EE 6は実用フェーズに
     –APサーバー選択はケースバイケースで
      • そろそろTomcat以外も見ておいた方がよいです

ハイブリッド・モバイル・アプリケーション
     –モバイル・デバイスは急成長中のプラットフォーム
     –HTML5の活用はモバイルWebから
     –モバイル・アプリケーションの課題解決にはハイブリッ
      ド・アプリケーションによるアプローチが有効


68

More Related Content

Viewers also liked

Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_introNobuhiro Sue
 
20140329_kyon_kao_wedding_LT_Groovy
20140329_kyon_kao_wedding_LT_Groovy20140329_kyon_kao_wedding_LT_Groovy
20140329_kyon_kao_wedding_LT_GroovyNobuhiro Sue
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDCNobuhiro Sue
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockNobuhiro Sue
 
Jjug 20140430 gradle_intro
Jjug 20140430 gradle_introJjug 20140430 gradle_intro
Jjug 20140430 gradle_introNobuhiro Sue
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservicesNobuhiro Sue
 
JSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocpJSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocpNobuhiro Sue
 

Viewers also liked (7)

Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_intro
 
20140329_kyon_kao_wedding_LT_Groovy
20140329_kyon_kao_wedding_LT_Groovy20140329_kyon_kao_wedding_LT_Groovy
20140329_kyon_kao_wedding_LT_Groovy
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
 
Jjug 20140430 gradle_intro
Jjug 20140430 gradle_introJjug 20140430 gradle_intro
Jjug 20140430 gradle_intro
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservices
 
JSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocpJSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocp
 

Similar to ぽんぽこバレー勉強会 20120427

Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Takakiyo Tanaka
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionYoshio Terada
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2nekop
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門minazou67
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3nekop
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7nekop
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
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
 
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
 
Open Liberty / WebSphere Liberty
Open Liberty / WebSphere LibertyOpen Liberty / WebSphere Liberty
Open Liberty / WebSphere LibertyTakakiyo Tanaka
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Yusuke Suzuki
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpToshiaki Maki
 
福井イベント
福井イベント福井イベント
福井イベントYoshio Terada
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29Yukihiro Kikuchi
 

Similar to ぽんぽこバレー勉強会 20120427 (16)

Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界Java EE 6で復活するエンタープライズJavaの世界
Java EE 6で復活するエンタープライズJavaの世界
 
WebLogic 10.3.4 Introduction
WebLogic 10.3.4 IntroductionWebLogic 10.3.4 Introduction
WebLogic 10.3.4 Introduction
 
Servlet3.0 overview
Servlet3.0 overviewServlet3.0 overview
Servlet3.0 overview
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
 
JBoss AS7
JBoss AS7JBoss AS7
JBoss AS7
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
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更新
 
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
 
Open Liberty / WebSphere Liberty
Open Liberty / WebSphere LibertyOpen Liberty / WebSphere Liberty
Open Liberty / WebSphere Liberty
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjp
 
福井イベント
福井イベント福井イベント
福井イベント
 
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29『どうする?どうやる?  データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
『どうする?どうやる? データセンター間ネット ワーク』 - 802.1aq(SPB)/TRILL@JANOG29
 

More from Nobuhiro Sue

Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on GuideNobuhiro Sue
 
Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on GuideNobuhiro Sue
 
Knative CloudEvents
Knative CloudEventsKnative CloudEvents
Knative CloudEventsNobuhiro Sue
 
JTF2018_B30_k8s_operator_nobusue
JTF2018_B30_k8s_operator_nobusueJTF2018_B30_k8s_operator_nobusue
JTF2018_B30_k8s_operator_nobusueNobuhiro Sue
 
DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711Nobuhiro Sue
 
Gws 20131018 vertx_handson(updated)
Gws 20131018 vertx_handson(updated)Gws 20131018 vertx_handson(updated)
Gws 20131018 vertx_handson(updated)Nobuhiro Sue
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handsonNobuhiro Sue
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
クラウド研究会 20120712 BaaS
クラウド研究会 20120712 BaaSクラウド研究会 20120712 BaaS
クラウド研究会 20120712 BaaSNobuhiro Sue
 
Letsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous DeliveryLetsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous DeliveryNobuhiro Sue
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528Nobuhiro Sue
 
DevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyDevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyNobuhiro Sue
 
G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0Nobuhiro Sue
 
DevLOVE 20100823 EnterpriseOSGi
DevLOVE 20100823 EnterpriseOSGiDevLOVE 20100823 EnterpriseOSGi
DevLOVE 20100823 EnterpriseOSGiNobuhiro Sue
 
Gws sokai 20100724_nsue
Gws sokai 20100724_nsueGws sokai 20100724_nsue
Gws sokai 20100724_nsueNobuhiro Sue
 
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)Nobuhiro Sue
 

More from Nobuhiro Sue (19)

Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on Guide
 
Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on Guide
 
Knative CloudEvents
Knative CloudEventsKnative CloudEvents
Knative CloudEvents
 
JTF2018_B30_k8s_operator_nobusue
JTF2018_B30_k8s_operator_nobusueJTF2018_B30_k8s_operator_nobusue
JTF2018_B30_k8s_operator_nobusue
 
DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711
 
Gws 20140117 lt
Gws 20140117 ltGws 20140117 lt
Gws 20140117 lt
 
Gws 20131018 vertx_handson(updated)
Gws 20131018 vertx_handson(updated)Gws 20131018 vertx_handson(updated)
Gws 20131018 vertx_handson(updated)
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
クラウド研究会 20120712 BaaS
クラウド研究会 20120712 BaaSクラウド研究会 20120712 BaaS
クラウド研究会 20120712 BaaS
 
Letsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous DeliveryLetsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous Delivery
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528
 
DevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyDevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: Groovy
 
G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0
 
DevLOVE 20100823 EnterpriseOSGi
DevLOVE 20100823 EnterpriseOSGiDevLOVE 20100823 EnterpriseOSGi
DevLOVE 20100823 EnterpriseOSGi
 
Gws sokai 20100724_nsue
Gws sokai 20100724_nsueGws sokai 20100724_nsue
Gws sokai 20100724_nsue
 
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

ぽんぽこバレー勉強会 20120427

  • 1. ぽんぽこバレー勉強会 Javaアプリケーションサーバー最新動向 /ハイブリッド・モバイル・アプリケーション 2012年 4月 27日 日本アイ・ビー・エム株式会社 ソフトウェア事業 WebSphere事業部 須江 信洋(nsue@jp.ibm.com)
  • 2. 自己紹介 須江 信洋(すえ のぶひろ) –日本IBMにてミドルウェアのテクニカルセールスを担当 • 2000年頃からJavaEE関連の仕事 • 今年からモバイル関連製品も担当 –Twitter: @nobusue –http://www.facebook.com/profile.php?id=732337788 コミュニティ活動 –Groovyコミュニティ(JGGUG)サポートスタッフ • 「プログラミングGROOVY」執筆チーム • 「Groovy イン・アクション」翻訳チーム –日本Javaユーザーグループ(JJUG)幹事 –その他 • SCM BootCamp • 「継続的デリバリー」読書会 2
  • 3. Agenda Javaアプリケーションサーバー最新動向 –Java EE6でのアップデート –OSSと商用製品の使い分けのポイント ハイブリッド・モバイル・アプリケーション –モバイルWeb –PhoneGap / Apache Cordova –IBM Worklight 3
  • 4. Java APサーバー 最新動向 4
  • 5. Enterprise Javaの歴史 2009/12 Seasar2 Spring SCA Hibernate SDO Ajax 2006/3 Portlets Java EE 6 • Profile BPEL Web Profile 2003/11 • EJB 3.1 Java EE 5 Interceptors • EJB 3 / JPA • JPA 2.0 Struts POJO 2001/9 JPQLの拡張 • Servlet 2.5 • Web Beans 1.0 • JSP 2.1 J2EE 1.4 • Bean Validation 1.0 • EJB 2.1 Unified EL 1999/12 • Common Annotation タイマー • JSF 1.2 • Servlet 3.0 • JSTL 1.2 EJB-QL拡張 • JSP 2.2 / EL 2.2 J2EE 1.3 • Servlet 2.4 • Webサービス • EJB 2.0 • JSF 2.0 • JSP 2.0 JAX-WS ローカルEJB • JSTL 1.2 • Webサービス POJO abs. CMP • Webサービス JAX-RPC JAXB J2EE 1.2 MDB JAX-RS • JMX Mgmt StAX • EJB 1.1 • Servlet 2.3 • J2EE Deployment MTOM • Servlet 2.2 イベント • JACC • アノテーション EJB 1.0 • JSP 1.1 フィルター IoC(制御の反転) Servlet 2.1 • JMS • JSP 1.2 • JavaMail 軽量化 XML • JAXP • Connectors 拡張性 • JAAS 開発容易性 開発容易性 5
  • 6. Java EE 6仕様 New and Update Technology Pruning Target Java EE 6  Java EE Management 1.1 Java SE  EJB 3.1  Java EE Deployment 1.2  Servlet 3.0  JACC 1.3  Java IDL  JSP 2.2  JASPIC 1.0  JDBC 4.0  EL 2.2  JSP Debugging 1.0  RMI-IIOP  JMS 1.1  JSTL 1.2  JNDI  JTA 1.1  Web Services Metadata 2.0  JAXP 1.3  JavaMail 1.4  JSF 2.0  StAX 1.0  Connector 1.6  Common Annotations 1.1  JAAS  Web Services 1.3  Java Persistence 2.0  JMX 2.0  JAX-RPC 1.1  Bean Validation 1.0  JAF 1.1  JAX-RS 1.1  Managed Beans 1.0  SAAJ 1.3  JAXR 1.0  Interceptors 1.1  Common Annotations 1.1  JAX-WS 2.2  DI(JSR-330) 1.0  JAXB 2.2  CDI(JSR-299) 1.0 6
  • 7. Java EE 6 の注目すべき機能 Rightsizing (Java EE仕様のボリュームの軽減) • 「Webプロファイル」 さらなるEase of Development(開発を簡単に) • EJBにつづきServletもアノテーションベースに • CDI (Contexts and Dependency Injection) Web Container(プレゼンテーション層)の強化 • Servlet 3.0,JSF 2.0 • Commet/Web Messaging対応,Ajax対応 Java EE 永続化の機能強化 • JPA 2.0 Web
  • 8. Servlet 3.0  メジャー・バージョンアップ! (Version 2.5 → 3.0)  新機能も盛りだくさん – 構成のためのアノテーション大量追加 (web.xmlはオプション) – 非同期処理のサポート – 複数構成ファイル(web-fragment.xml)の導入 • サード・パーティーのフレームワークとweb.xml定義を分離可能 – HTTPServletRequestにログインとログアウト処理を実現する機能の追加 – Servletおよびフィルタを動的に追加するメソッドの登場 • ServletContext#addFilter • ServletContext#addServlet – multipart/form-data形式のリクエストに対応(Partクラスの追加) @WebServlet("/HelloServlet") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().println("Hello Servlet 3.0 !"); }} 8
  • 9. Servlet 3.0 ~ログイン・ログアウト  新しい認証方式 – フォーム認証の実現 – <form action=“j_security_check” method=“post”>の機能をServletで実現  認証のための新しいメソッド – HttpServletRequest#authenticate(HttpServletResponse response) – HttpServletRequest#login(String username, String password) – HttpServletRequest#logout()  アノテーションも追加 – @ServletSecurity – 「R1」ロールをもったユーザーからGETアクセスを制限 @ServletSecurity (value=@HttpConstraint(rolesAllowed="R1"), httpMethodConstraints=@HttpMethodConstraint("GET")) public class SecurityServlet extends HttpServlet{ …(略) } 9
  • 10. Servlet 3.0 ~非同期処理  非同期リクエスト処理用のモデルを提供  Servletの実行スレッドを早期解放  非同期処理を行うスレッドはリクエストの情報を保有し、レスポンスを返す Servlet Servlet 別スレッド doGet() doGet() startAsync(req,resp) + start() 時間の かかる Servlet 3.0 時間の 処理 かかる 処理 response response 10
  • 11. JAX-RS(Java API for RESTful Web Services)  Java EE 6 新規追加仕様 – WAS V7.0(Java EE 5)でも、Feature Packとして追加可能  RESTful Webサービスを実現するAPIのJava EE 標準 – サーブレットを使わないWebアプリケーションも可能 @Path("repository") public class TestRepositoryService { @Path("version") @GET /repository/version で呼び出し @Produces("text/plain; charset=UTF-8") public String getVersion() { return "Test Service version 1.0"; } @Path("user/{userID}") /repository/user/E12345 などで呼び出し @GET @Produces("text/plain; charset=UTF-8") public String getUserName(@PathParam("userID") String id) { return UserRepository.getUserName(id); } 11
  • 12. JSF 2.0  メジャー・バージョンアップ! (Version 1.2 → 2.0)  Facelets – JSP+JSFタグからXHTML+JSF属性に、テンプレート化が容易  Ajaxサポート – <f:ajax>タグによりJavaScriptを動的に生成  アノテーション対応 – Managed BeanがPOJO+アノテーションだけで作成可能  Bean Validation – コンテナ全体で値検証を共通化 <h:panelGrid columns="2"> #{cc.attrs.namePrompt} <h:panelGroup> <h:inputText id="name" value="#{cc.attrs.managedBean.name}" valueChangeListener="#{cc.attrs.managedBean.validateName}"> <f:ajax event="blur" render="nameError"/> </h:inputText> <h:outputText id="nameError" value="#{cc.attrs.managedBean.nameError}" style="color: red;font-style: italic;"/> </h:panelGroup> ... </h:panelGrid> 12 12 WAS V7 最新動向WorkShop
  • 13. JPA 2.0の新機能  エンティティーの構造とテーブルのマッピングの柔軟性向上 – derived(派生) ID • 主キー列として、外部キーや外部キーとの複合キーを簡単に定義可能に – リレーションにおけるMapオブジェクトのサポート強化 • ユニークな属性だけでなく、属性の複合や組み込み型、エンティティーをMapのキーに指定可能 – 組み込み(Embeddable)クラスのネストのサポート – コレクション・マッピングの強化 • プリミティブ型と組み込みクラスのコレクションもフィールド指定可能  ベンダー依存プロパティーに優先する標準プロパティーの追加 – 悲観的ロックのサポート – キャッシュ仕様の追加 社員テーブル  Criteria APIの追加 ID: 126 myoji: たなか – タイプ・セーフなJPQLクエリーを作成 namae: よしお ID myoji namae 126 たなか よしお  Bean Validation(JSR-303)の統合 743 すずき はなこ – フィールド値の妥当性検査 ID: 743 myoji: すずき 301 さとう たろう – 例: @NotNull、@Max, @Pattern namae: はなこ 13 JPA 2.0はJPA 1.0を拡張し、より柔軟なORマッピングが可能に
  • 14. JPA 2.0 ~ペシミスティック・ロックのサポート  オプティミスティック・ロック – 他からのアクセスがないことを前提 – 更新対象が他のトランザクションによって書き換えら れていないかをJPAエンジンがチェック データ読み取り データ読み取り – バージョン番号、最終更新時間によるチェック データ更新 データ更新 OptimisticLock  ペシミスティック・ロック Exception! – 他からアクセスされる可能性を考慮したロック – 更新対象に排他ロックをかけ、更新が終わるまで他 のトランザクションによる更新を禁止 Lock! – JPA2.0から正式にサポート データ読み取り データ読み取り – lockメソッドの実行時に引数として指定 データ更新 • LockModeType.PESSIMISTIC_WRITE データ読み取り データ更新 entityManager.lock(person, LockModeType.PESSIMISTIC_WRITE); 14
  • 15. EJB 3.1 ~EJB Liteとパッケージの簡略化 EJB完全版  EJB Lite – Web Profileで利用 EJB Lite – 簡略化されたEJB Local Session Beans Message Driven Beans Annotations / ejb-jar.xml EJB Component Web Service Endpoints CMT / BMT RMI-IIOP Interoperability Declarative Security  パッケージの簡略化 Interceptors 2.x/3.x Remote View 2.x Local View – Webモジュールのみ。Jarは不要 JPA 2.0 Timer Service – インターフェイスも不要 JTA 1.1 CMP / BMP – JavaEE 5同様のパッケージングも可能 EJB 3.0 EJB 3.1 EJBSample_web.war EJBSample.war WEB-INF/web.xml WEB-INF/classes/ com/ise/EJBSampleServlet.class WEB-INF/classes/ EJB 3.1 com/ise/EJBSampleServlet.class EJBSample_ejb.jar com/ise/EJBSampleBean.class com/ise/EJBSampleBean.class com/ise/EJBSample.class 15
  • 16. EJB 3.1 ~組み込み可能なEJBコンテナー  EJBはEJBコンテナーが必要なため、単体テストは困難だった  EJB 3.1からはJavaSEにEJBコンテナーを組み込んで使用可能 – JUnitなどを用いて単体テストが可能 – 開発向けの機能 public void testSayHello() { Map map = new HashMap(); map.put(“EJBContainer.PROVIDER”, ”com.ibm.websphere.ejbcontainerEmbeddableContainerProvider”); EJBContainer container = EJBContainer.createEJBContainer(map); try{ Hello hello = (Hello)container.getContext().lookup(“java:global/hello/HelloBean”); System.out.println(hello.sayHello()); catch(Exception e){ e.printStackTrace(); } EJBContainerクラスのContextよりEJBをlookup } 16
  • 17. CDI (Contexts and Dependency Injection) ServletでのDI DIの仕様を EJBでのDI 統合 CDI Context and WebサービスでのDI Dependency Injection ユーザー定義のDI  DIの機能を個別APIから分離 → コンポーネント横断的なDIが利用可能  ビジネスロジック層とプレゼンテーション層の連携が容易に 17
  • 18. CDIの使用例 import org.example.HelloService; @WebServlet(name = "HelloWorld", urlPatterns = { "/HelloWorld" }) public class HelloWorld extends HttpServlet { @Inject HelloService helloService; package org.example; import javax.inject.Named; @Named public class HelloService { public void sayHello() { System.out.println("Hello!"); } } 18
  • 19. @SessionScoped セッション内でデータ共有 CDI 1.0 ~スコープ @SessionScoped public class Counter implements  スコープもアノテーションで表現 Serializable { –@RequestScoped private int count = 0; –@SessionScoped –@ApplicationScoped @PostConstruct private void init(){ @WebServlet(name="CounterServlet", System.out.println(“Init"); urlPatterns={"/CounterServlet"}) } public class CounterServlet extends HttpServlet { @PreDestroy private void destroy(){ @Inject System.out.println(“Destroy"); private test.cdi.Counter c; Inject ! } @Override public int getCount(){ protected void doGet(HttpServletRequest request, return ++count; HttpServletResponse response) } throws ServletException, IOException { } … out.println("<p>" + c.getCount() + "人目のアクセス</p>"); 19
  • 20. Bean Validation 1.0 ~アノテーションで実現するバリデーション  アノテーションを利用してバリデーションを実現 –Hiberbate Validatorなどが実現していた機能 –Bean、フィールド、プロパティに制限 –nullチェック、数値の範囲のチェックなどが容易に実現可能  javax.validation.constraintsに定義されたアノテーション –@AssertFalse、@AssertTrue –@DecimalMax、@DecimalMin、@Max、@Min –@Digits –@Future、@Past (Date、Calenderクラスで示される時間のチェック) –@Null、@NotNull –@Pattern (正規表現によるチェック) –@Size (文字列の長さや配列の数) 20
  • 21. JavaEEのカバレッジとアプリケーション移植性 User Application User Application 追加 Spring Framework等 CDI 1.0 MVC MVC EJB3 EJB3.1 (JSP) 標準 (JSF2.0) 標準 O/R Map O/R Map (JPA) (JPA2.0) JavaEE 5 準拠 JavaEE 6 準拠 APサーバー APサーバー 21
  • 22. Java EE 6採用のメリット  業界標準仕様であるためポータビリティが高い – Java EE 6準拠のAPサーバーであれば稼働可能 • WAS V8.0 / WebLogic11c / GlassFish3.0 / JBoss7.0 / TomEE1.0など選択可 – 将来のバージョンアップに対する互換性  Java EE 5で不足していた機能の大幅拡充 – 従来Spring Framework等で補っていた機能のかなりの部分が標準機能として 取り込まれている • CDI(Context and Dependency Injection)など – APIの大幅強化 • JSF2.0 / JPA2.0 / Bean Validationなど  開発生産性向上 – 組み込みEJBコンテナによる単体テスト – EJB3.1Lite(EJBをwarに含められる)  モジュール化への対応の容易さ – アノテーションベース開発 – Webフラグメントなど 22
  • 24. TomEEとは  http://openejb.apache.org/index.html  Java EE 6 Web Profile をTomcatベースで実装 –CDI: Apache OpenWebBeans –EJB: Apache OpenEJB –JPA: Apache OpenJPA –JSF: Apache MyFaces –JTA: Apache Geronimo Transaction –Bean Validation: Apache Bean Validation  上位エディションとして TomEE+ もあり –JAX-RS: Apache CXF –JAX-WS: Apache CXF –JMS: Apache ActiveMQ –Connector: Apache Geronimo Connector 24
  • 25. Java EE (Java Enterprise Edition)とは?  エンタープライズ・システムをJavaで構築するために必要となる一 連の機能を規定した仕様 – アプリケーション・サーバーの標準機能セットを定義する業界標準 – 最低限の基準(API)を規定することで、複数のAPサーバ間でのアプリ ケーションの互換性や、スキルの共通化を実現するのが目的  Java EE = Java SE + エンタープライズ向け機能 – コンポーネント仕様(アプリケーション) • Servlet/JSP: 画面 • EJB: ビジネスロジック • Adapter: レガシー/パッケージ連携 – コンテナ・サービス(インフラ) • JNDI: リソース管理 • JDBC: データベース接続 • JMS: 非同期メッセージング Web+DBのシステムではあ • JTA: トランザクション管理 まり使われていない • セキュリティ 25 25
  • 26. 次のようなケースは要注意  非同期処理 –オンラインで処理を受け付けておいて、バックグラウンドで処理を実行する 場合など –特に不揮発メッセージ(永続メッセージ)を扱う場合は注意  2フェーズコミット(XAトランザクション) –2つ以上のDBにまたがってトランザクション処理を行う –DBとメッセージングシステム(MQなど)にまたがってトランザクション処理を 行う  非機能要件が厳しい –高負荷下での無停止運用 –アプリケーションが大容量ヒープメモリを要求 –障害発生時の厳密な原因究明 26
  • 27. [WAS] パフォーマンス・モニタリングと問題判別機能  パフォーマンス状況を詳細にモニター可能 –パフォーマンス・ビューワー • パフォーマンスの結果を管理コンソールに表示 • 必要なコンポーネントに対し、12段階で取得レベル設定可能。 • グラフ表示や表形式での表示、ロギングも可能 –パフォーマンス・アドバイザー • パフォーマンス状況をモニターした結果、リソースの構成についてアドバイスしてくれる機能 • 管理コンソール上に推奨設定を表示 • スレッドプールやコネクションプールサイズの値をアドバイス –要求メトリック • Webサーバー、Webコンテナー、EJBコンテナーの各コンポーネントでの処理時間を記録し、ボトルネックを判断する  問題判別のための機能強化 –様々なログ・トレース機能 • JVMログ、プロセスログ、Thread Dump、Heap Dump、HTTPトランスポートログ、JDBCトレース、プラグインログ etc –ハング・スレッドの検出機能 –メモリー・リークの検出機能 –クラスローダー・ビュワー –問題判別に便利なツールの無償提供 リクエスト Web Web EJB サーバー コンテナー コンテナー データベース IPやURLによる 詳細なログやトレース、様々なツールの提供に フィルタリング より、早期の問題解決をサポート 各コンポーネントにおける経過時間を把握可能
  • 28. [WAS] High Performance Extensible Logging(HPEL) 問題判別のためのトレース取得負荷を大幅に軽減 –V7.0にくらべログ記録機能が6倍高速化 –V7.0にくらべトレース記録機能が3.8倍高速化 柔軟なログ・トレースデータの取り扱い –コマンドラインのフィルター・整形ツールを提供 –管理コンソールのGUI画面からフィルター・整形が可能 –プログラムからアクセスするAPIを提供 既存のログ機能と共存する形で利用可能 例: アプリケーションに対する警告レベル以上のメッセージを抽出: # logViewer,sh -minLevel warning -includeLoggers “com.acme.app1.*” 2010/07/11以降で0x0000000cスレッドでSEC文字列から始まるメッセージを抽出: # logViewer,sh –startDate 2010/07/11 –message “SEC*” –thread 0c
  • 29. ハイ・パフォーマンスな64bit JavaVM(J9)の提供  64bit JavaVM: 巨大なヒープが確保できるが、64bit化オーバーヘッドが大 – 同じアプリケーションを32bit JavaVMで稼働させた場合に比べ、ヒープ利用量が数十%増加 – それに伴い、GCのオーバーヘッドが増加し、スループットに悪影響  IBM® SDK for Java 6 の64bit版では、オブジェクトのポインターを圧縮して ヒープ利用量を削減する技術を投入 – ヒープ利用量とGCオーバヘッドを削減し、32bit JavaVMと遜色ないパフォーマンスを実現  ヒープサイズが約25GB程度まで適用可能 – 注)IBM JavaVMの固有機能であるため、Solaris/HP-UX版のWASでは未対応 64bit JavaVMのヒープ利用量削減率 (IBM Java5との比較) 64bit JavaVMのスループット改善率 (IBM Java5との比較) 29
  • 30. 無償提供 IBM Health Center JavaVMのリアルタイム・モニタリングと可視化を実現  オーバーヘッドが少なく、本番環境でも利用可能なJavaモニタリ ング・ツール – WAS V6.1(IBM Java 5 SR8以上)とWAS V7.0/V8.0(IBM Java 6 SR1以上)で利用可能 – ISAから起動可能 • http://www.ibm.com/developerworks/jp/java/library/j-ibmtools5/  機能 – パフォーマンス • メソッド・プロファイル • ロック分析 • GC状況の可視化と推奨オプション – メモリー • メモリーリーク検出 • ヒープサイズのガイド – 環境 • システム・プロパティ- • 環境変数 – クラスロード情報 • いつロードされたか • キャッシュされたかどうか
  • 31. AP仮想化ソリューション:WebSphere Virtual Enterprise AP仮想化によるリソース有効活用と業務の優先度に応じたサービスレベル管理 サービスポリシーに ヘルスポリシーによ ルーティングポリシーに Java VMリソースの動的配置 よる優先制御 る自動回復処理 よる条件ルーティング 優先度高 購入処理 AppEdition1 オンデマンド・ルーター WebSphere Application Server 流量多 キュー 他社Java EEサーバー Apache,PHP 買い物中 流量少 リクエスト キュー 優先度 目標平均 応答時間 AppEdition2 商品閲覧 優先度低 L1 最高 1秒 クライアント L2 高 3秒 L3 低 5秒 リクエストの 設定されたサービスポリシーに アプリケーション アプリケーションの複数のバージョンを 従ってリクエストを優先付け サーバー上で同時実行 Queuingによる アクセス集中時にも エディション テストユーザーのみを新バージョンに割振り 過負荷防止 重要な処理を確実に実行 コントロール 本番環境でのテストも可能に ヘルスモニタリング機能が 仮想化による 動的アプリケーション配置により 回復処理の 応答時間やCPU,メモリを監視 異常発生時に自動的に サーバー資源の 負荷に応じてJava VM数を動的に変更 自動化 サーバーの剰余能力を最適利用 切り離し・再起動などを実行 有効利用
  • 32. WAS V8.5 Liberty Profile  「手軽に使える」ことを目指した新しいWAS – 開発環境でもプロダクション環境でも利用可能 – Mac OS X対応  インストールが簡単 – zipファイルを展開するだけ – アプリケーションのデプロイも,ファイルをコピーするだけ  スモール・フットプリント – 必要ディスク容量: 50MB程度 – 必要メモリ容量: 数十MB程度 – 高速起動: わずか数秒で起動  コンフィグレーションが簡単 – コンフィグレーションファイル(server.xml)で 必要なフィーチャー(Servlet,JPA,JSF等)を指定するだけ – 内部的には必要なOSGiバンドルのみを組み合わせて実行 最新情報は http://wasdev.net から発信中!!
  • 33. とにかく起動が早いです。ぜひお試しを!  詳細はInformation Center(beta)をご参照ください – http://www14.software.ibm.com/webapp/wsbroker/redirect?version=p hil&product=was-nd-dist&topic=cw4d_about – http://www14.software.ibm.com/webapp/wsbroker/redirect?version=p hil&product=was-nd-dist&topic=tw4d_setup
  • 34. ハイブリッド・モバイル・ アプリケーション 34
  • 35. 急成長するモバイル市場 モバイルは新しいITの波 インターネットに接続するデバイスの増加 1200 WW タブレット WW ノートPC WW PC WW スマートフォン 台数 (百万) 600 0 2010 2011 2012 2013 2014 2015 Source: Wells Fargo Securities, January 23, 2012 “Fostering the People: The Shift to Engagement Apps” インターネットによってWebやeビジネス の波が押し寄せたように、現在、モバイ 2020年までには、世界で100億台 ルによる新しい波が起きている のモバイル機器が使用される →全業種においてビジネス・チャンスに 35
  • 36. モバイル・アプリケーションの特徴と課題 課題 ソリューション 特徴 開発生産性 様々な機種が混在 • OSごとに異なる開発言語が必要 • デバイス固有機能に対するスキル • デバイス毎にテストする負荷が高い スマートフォンやタブレット等多様なデバイス モバイル・エンタープラ - 異なる画面サイズ - デバイス固有機能の提供 アプリケーション管理 イズ・アプリケーション・ プラットフォーム • アプリケーションが最新かどうか (MEAP) 様々なOSが混在 • リモートからアプリケーションを無効化できるか iOS, Android, Blackberry, Windows Phone 等の複数プラットフォームが存在 企業システムとの連携 • エンタープライズ・システムとの統合 • マルチチャネル対応アプリケーションの構築 モバイル端末管理 セキュリティ (MDM) • 暗号化や認証の仕組み • デバイスの紛失や盗難への対応 端末管理 • デバイスの監視、管理 36 • デバイス上のソフトウェア更新、データ配布
  • 37. モバイルとHTML5  PC(特に業務系)ではまだ採用の敷居が高い –IEを標準ブラウザとしている企業が多数 –IE8以前では、HTML5のほとんどの機能に未対応  モバイルでは主要プラットフォームがHTML5 Ready –iPhone/iPad –Android –(Windows8)  ただし、モバイル特有の事情を考慮する必要あり –対応している仕様の偏り –Video/Audioの非互換など 37
  • 39. http://dev.w3.org/html5/spec/offline.html Application Cache  Webアプリをオフラインで利用するために、リソースをクライアント 側でキャッシュするためのしくみ –HTML,CSS,JavaScript,イメージなどURL指定できる全リソースが対象 –フォールバックやイベント処理が可能  キャッシュ対象リソースはマニフェストファイルで指定 –更新チェックはマニフェストファイルのみを確認 [clock.html] [clock.manifest] <!DOCTYPE HTML> <html manifest="clock.manifest"> CACHE MANIFEST <head> <title>Clock</title> # This is comment line <script src="clock.js"></script> <link rel="stylesheet" href="clock.css"> clock.html </head> clock.css <body> clock.js <p>The time is: <output id="clock"></output></p> </body> 39 </html>
  • 40. http://dev.w3.org/html5/webstorage/ Web Storage  クライアント側でデータを永続化しておくためのストレージ –シンプルなKey-Valueストレージ –手軽に利用できる –複雑・大量データを扱うのには不向き  Cookieとの違い –JavaScriptオブジェクトがそのまま格納できる –自動的にサーバーに送信されない –(仕様上は)サイズ制限がない –有効期限という概念がない  用途によって2種類を使い分ける –localStorage • Webサイトのオリジンごとに分離 • 永続期間は無制限 –sessionStorage • window(ブラウジングコンテキスト)と同じスコープを持ち、オリジンごとに分離 • windowが閉じられると削除される 40
  • 41. http://dev.w3.org/geo/api/spec-source.html Geolocation API  デバイスの位置情報を取得するためのAPI –緯度、経度、標高およびその精度 –デバイスの進行方向/進行速度 –位置情報取得時刻  シンプルなAPI –現在位置を一度だけ取得 • getCurrentPosition(successCallback, errorCallback, options) –位置情報を継続して監視 • watchPosition(successCallback, errorCallback, options) • clearWatch(watchId) –具体的な取得方法などは隠蔽されている(高レベルAPI) function showMap(position) { // (position.coords.latitude, position.coords.longitude)を中心にMap表示 } // One-shot position request. navigator.geolocation.getCurrentPosition(showMap); 41
  • 42. http://dev.w3.org/html5/spec/the-canvas-element.html Canvas  ブラウザ上でグラフィックスを自由に描画できる領域 –四角形、直線、円弧、ベジェ曲線 –画像 –グラデーション、影付け、重ね合わせ –テキスト –グラフィックス変形 –ピクセル操作による描画  描画コンテキストの保存/復元  画像データをURLとして取得 –toDataURL()によりbase64文字列に変換可能 42
  • 43. Canvasサンプル <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Hello Canvas</title> <script>//<![CDATA[ function draw() { var canvas = document.getElementById("canvas"); var ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.fillRect(20, 20, 80, 40); // 四角(塗りつぶしあり) ctx.strokeRect(120, 20, 80, 40); // 四角(塗りつぶしなし) ctx.arc(70, 150, 60, 0, Math.PI*2, false); // 円 var message = '文字も書けます'; ctx.font = "bold 18px 'MS P Gothic'"; var textWidth = ctx.measureText(message).width; ctx.fillStyle = "black"; ctx.textBaseline = "top"; ctx.fillText(message, 0, 220); ctx.stroke(); } //]]></script> </head> <body onload="draw()"> <canvas id="canvas" width="300" height="300"></canvas> </body> </html> 43
  • 44. Canvas: 参考情報  HTML5 Canvasのサンプル –http://sites.google.com/site/gorogoronyan/Home/html5-iroiro/javascript –実用的な使い方のヒントとして  Ball Pool –http://mrdoob.com/projects/chromeexperiments/ball_pool/ –モバイルでも動作するインタラクティブな使い方のサンプルとして 44
  • 45. http://dev.w3.org/csswg/css-device-adapt/#viewport-meta-element Viewport definition  ブラウザの表示サイズを制御 –コンテンツの横幅/縦幅 –初期倍率/最少倍率/最大倍率 –拡大縮小の可否  <meta name=“viewport” …>で指定 –コンテンツ内容に合わせてviewportを最適化 • http://www.mdn.co.jp/di/articles/2434/?page=8  viewport以外のiOS系固有のチューニングについてはこちら –iPhone 3G DevWiki -画面表示関係 • http://wiki.sohaya.com/index.php/%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A 4%BA%E9%96%A2%E4%BF%82 45
  • 46. http://dev.w3.org/csswg/css-device-adapt/#viewport-meta-element XMLHttpRequest 2.0  クロスオリジンのリクエスト送信が可能に –送信先サーバーの許可が必要 • Cross-Origin Resource Sharingに準拠 • http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html  文字列以外も送信可能に –Blob / Document / FormData  進捗状況がモニター可能に –uploadプロパティが追加された –ダウンロード・アップロードの両方で進捗状況に応じたイベントが捕捉可能 • 進捗があるたびにonpregressイベントハンドラがコールバックされる var xhrObj = new XMLHttpRequest(); xhrObj.upload.addEventListener("progress", progressFunction, false); function progressFunction(evt){ var percentageDiv = document.getElementById("percentageCalc"); percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%"; } 46
  • 47. リモート・デバッグ: Weinre  モバイルWeb開発(特に実機デバッグ)を効率的に行うためのツール  リモートから、FirebugやGoogle Dev Toolのような操作が可能 – DOM/CSSインスペクタとオンザフライ編集 – JavaScriptコンソール – ブレークポイント設定とステップ実行  PhoneGap(改めApache Cordova)のサブプロジェクト – ドキュメントとバイナリ • http://people.apache.org/~pmuellr/weinre/ – ソース • https://github.com/apache/incubator-cordova-weinre  使い方など – スマホの開発が超絶楽に! weinreでスマートフォンをPCでリモートデバッグ! • http://css-eblog.com/tools/weinre.html – スマートフォンサイト構築のためのリモートデバッグ環境その1 – weinre • http://blog.alt-scape.com/archives/423 47
  • 50. モバイル・アプリケーションのトレンド Web ネイティブ・ アプリケーション アプリケーション オープンな技術(HTML5, デバイス固有の機能を活 CSS, JavaScript)を使用。 用できるが、開発・テストの 開発生産性やポータビリ 負荷が高い。 ティは高いが、デバイス特 有の機能は使えない。 ハイブリッド・ アプリケーション コードの大部分を再利用可能なWeb技術を使って開発。 デバイス依存の機能はネイティブ・コードで補完。 クロス・プラットフォーム 開発コスト ユーザビリティ 50 セキュリティ
  • 51. ハイブリッド・アプリケーションとは Webアプリケーションと ネイティブ・アプリケー Application File System ションの組み合わせ Stores (on mobile device) 基本的にはHTML5、CSS、 Native Container JavaScriptを使用するが、 デバイスの機能にもア HTML, CSS, JavaScript クセス可能 App StoreやAndroid Marketなどから アプリケーションをダウンロードし、モバイ ル・デバイス上にアプリケーションを保管 Mobile Operating System する。 51
  • 52. PhoneGap (Apache Cordova)  ハイブリッド・アプリケーションのプラットフォーム –http://phonegap.com/ –http://incubator.apache.org/cordova/  Webブラウザ+プラグイン –Webコード(HTML/CSS/JS)はWebブラウザコンポーネント上で実行 • トランスコードソリューションではなく、実行時もWebコードのまま –WebコードからJavaScript経由でネィティブコードを実行可能(プラグイン) –標準プラグインが豊富に存在し、独自拡張も可能  歴史的経緯 –PhoneGapを開発していたNitobiがAdobeに買収される –PhoneGapのコアをApache Callbackプロジェクトに移管 –Apache CallbackプロジェクトがApache Cordovaプロジェクトに改名 • Apache CordovaにはAdobe以外にもIBM/RIM/Microsoftなどが協力 • PhoneGapはApache Cordovaの1ディストリビューションという位置づけに • http://phonegap.com/2012/03/19/phonegap-cordova-and-what%E2%80%99s-in-a- 52 name/
  • 54. PhoneGap: プラグインの利用例  ネットワークの回線種別を判定 54 http://docs.phonegap.com/en/1.6.1/cordova_connection_connection.md.html#Connection
  • 55. IBM Worklight : モバイル・アプリケーション・プラットフォーム  Build once. Run anywhere. HTML5、ハイブリッド、ネ – Android, iOS, Blackberry, Microsoft – スマートフォンとタブレット イティブ・アプリケーション のための、オープンかつ  標準ベース、エンタープライズ対応 – PhoneGap, Java 先進的なモバイル・アプ – – アプリケーション配布 エンタープライズとの統合 リケーション・プラット – – セキュリティー スケーラビリティ フォーム – 管理  Build it today. Change it tomorrow. – アプリケーション・ライフサイクル管理 – 保守とアップデート 55
  • 56. Worklight のコンポーネント Worklight Studio Eclipse ベース コード再利用の最大化とデバイス毎の最適化を実現する包 括的で拡張性に優れた開発環境 Worklight ServerTomcat or WAS 上で稼働 統合通知、ランタイム・スキニング、バージョン管理、セキュ リティー、統合、配布 Worklight Runtime Components ネイティブのデバイス機能と連携可能な豊富なライブラリー ← とクライアントAPI Worklight Console リアルタイム分析、および、モバイル・アプリケーションとイン フラ管理のためのWebベースのコンソール 56
  • 57. サポートする環境(Environment)  様々なタイプのプラットフォームに 対応  モバイル – iPhone – iPad – Android – BlackBerry – Windows Phone – Mobile web app  デスクトップ – Windows 7 and Vista(ガジェット) – Adobe AIR – Mac OS Dashboard  Web アプリケーション – Facebook – iGoogle – Embedded web page 57
  • 58. Build and Deploy 基本部分は commonに、 差分を個別 環境のフォル ダへ  すべてのコードをビルドしてデプロイ  ネィティブSDK用のプロジェクトを生成  アプリケーション(Webコード)をWorklight Serverへデプロイ 58
  • 59. Worklightのアプリケーション・タイプ Webアプリ ハイブリッド(Web) ハイブリッド(Mixed) ネィティブアプリ HTML5, JavaScript , ソースコードはWebと ユーザー固有のニー プラットフォーム固有。 CSS3で記述。高速か Worklightのライブラリ ズを実現するネィティ 固有のスキルを必要 つローコストで開発可 を含み、ネィティブの ブコードでWebを拡張 とし、開発にはコストと 能だが、機能性はネィ シェル内で実行される。 し、ユーザーエクスペ 時間がかかる。高いレ ティブよりも劣る。 リエンスを最大化。 ベルのユーザーエク スペリエンスを実現で きる。 Mobile Browser Worklight Runtime Worklight Runtime Native Application 1001010101011101001010 Web Code Web 0100101011101001001101 0101010100100100101111 Web Code <!DOCTYPE html Native <!DOCTY 1001010 0010011001010101001010 PUBLIC PE html 1010111 1010100101010101010101 <!DOCTYPE html <html> 0100101 PUBLIC 0101011111100000101010 PUBLIC <! - - created 2003-12-1 0101010 created <html> <head><title>XYZ</title 1010010 1010101001001010101010 2003-12 <! - - created 2003-12- </head> 0100101 1010001111010100011110 </p> 12 - - 1110010 </body> </body> 1010011101010111110010 <head><title>XYZ</title </html> 0110010 > </html> 1101111010001011001110 </head> <body> </p> </body> </html> Device APIs Device APIs Device APIs 59
  • 60. ハイブリッド(Mixed)の利用イメージ ハイブリッド(Mixed) Webとネィティブの ユーザー固有のニー ネィティ 画面混在 Web ブ Web ズを実現するネィティ 画面 画面 ブコードでWebを拡張 画面 し、ユーザーエクスペ リエンスを最大化。 共通のユーザーセッションとデータ Worklight Client Runtime Worklight Runtime Web Native <!DOCTY 1001010 PE html 1010111 PUBLIC created 0100101 0101010 Web プラグイン(ドライバ) 2003-12 1010010 </p> </body> 0100101 1110010 0110010 画面 による拡張 </html> ネィティブ機能の Worklight Client Runtime 呼出し Device APIs Worklight ユーザー 標準 独自 プラグイン プラグイン 60
  • 61. 主要なライブラリ/ツールとの統合 Worklightは主要なHTML5ライブラリ/ツールと統合可能: 61
  • 62. Worklightのランタイム・アーキテクチャ Worklight Server Device Runtime Application Code Server-side Client-side Application Code App Resources • Cross Platform Technology Stats Aggregation JSON Translation Direct Update Mobile • Security and Authentication Web Apps Authentication • Back-end Data Integration Unified Push • Post-deployment control Adapter Library Notifications and Diagnostics 62
  • 63. サーバーサイド・アダプター • Worklight Platformはアダプターを利 用して様々なバックエンド・システム への接続を実現 Query Response Update 2 3 data • アダプターの用途 SQL WS HTTP • 情報の取得 Worklight • アクション(ロジック)実行 1 Invoke Data/Result adapter procedure as JSON 4 • 標準提供アダプター • SQL Adapter • HTTP Adapter (RESTとSOAPに対応) 63
  • 64. 柔軟なプッシュ通知のフレームワーク iOSとAndroidに共通のAPI 1つのアプリケーションで、複数のデバイスに 対応 イベント・ソースとアプリケーション間での Many-to-many リレーションシップ 同じバックエンドからの複数イベント・ソース 同じアプケーションへの複数ユーザーログイン 64
  • 65. モバイル・アプリケーションのセキュリティ デバイス上のデータの保護 強制セキュリティ・アップデート 起動時の Secure リモート 直接 暗号化され Encrypted オフライン Offline セキュア challenge- 無効化 アップデート たオフライン offline cache 認証 authentication チャレンジ-レス response on キャッシュ ポンス startup 企業のセキュリティ・プロセスの効率化 アプリケー App Jailbreak and Jailbreakおよ ションの真正 authenticity びマルウェア malware 性テスト testing の検出 detection 組織のサン ドボックスと してのシェル 堅固な認証・認可 アプリケーション・セキュリティ 認証統合 実証済みの データ保護 デバイスidを SSLによる フレームワー プラット コードの ク レルム 併用 サーバーの フォーム・セ 難読化 検証 キュリティ 65
  • 66. Direct Update: Worklight Serverから更新 版を直接配布 1.初期のオフライン実行を可能 にするため、Webリソースがア Worklight Runtime プリケーション内にパッケージ 1 ダウンロード ングされている パッケージされ たリソース 2.Webリソースはアプリケーショ App Store ンのキャッシュストレージに転 2 転送 送される 3 更新を確認 3.アプリケーションは更新を確認 する キャッシュされ • 起動時 Worklight Web たリソース • フォアグラウンドになった時 Server リソース 4.必要であればWebリソースを 4 Webリソー ダウンロードして更新する スを更新 66
  • 67. PhoneGap(Cordova)とIBM Worklightの比較 PhoneGap Worklight PhoneGapプラグイン ネィティブ連携 PhoneGapプラグイン +Worklightプラグイン 通常は不要 PhoneGapスキル 必要 プラグイン開発時のみ必要 プラットフォーム毎にソースを アプリ単位で複数プラットフォーム クロスプラットフォーム対応 管理 のソース管理を共通化 改ざん・覗き見防止 セキュリティ機能 なし 暗号化ストレージ 認証フレームワーク XMLHttpRequestなどを利用 バックエンド連携 アダプター して独自に開発 Direct Update アプリケーション更新 再インストール (Webコードの部分のみ更新) 監視・分析 なし 管理コンソール 商用サポート なし あり 67
  • 68. まとめ Javaアプリケーションサーバー最新動向 –Java EE 6は実用フェーズに –APサーバー選択はケースバイケースで • そろそろTomcat以外も見ておいた方がよいです ハイブリッド・モバイル・アプリケーション –モバイル・デバイスは急成長中のプラットフォーム –HTML5の活用はモバイルWebから –モバイル・アプリケーションの課題解決にはハイブリッ ド・アプリケーションによるアプローチが有効 68