Java EE and GlassFish Server Roadmap Updateについて

本日、The AquariumJava EE と GlassFishの今後のロードマップが発表されました。

この中で GlassFish は Java EE 5 より Java EE の参照実装として提供されており、今年の Java EE 7 のローンチ・イベントにおきましても GlassFish v4.0 を Java EE 7 の参照実装として提供した事を報告しています。また、次期 Java EE につきましても検討を始めた所です。GlassFish はこの Java EE の参照実装という位置づけにおいて今後も開発を進めてまいります。

一方で、GlassFish v4 以降の商用サポートを終了する発表もなされました。ここでご注意頂きたいのは、GlassFish という製品自身や OSS のプロジェクトがなくなるわけでは決してありません。
 (※ また、GlassFish v3.1.x 系のサポートは Extended Support まで含めると 2019/03 まで継続提供されます。)
 (補足:GlassFish v4.0 用は OSS 版のみが提供されており商用サポート製品 Oracle GlassFish Server は提供されていませんでした。)

GlassFish は今後も Java EE の参照実装 OSSプロダクトとして残りますし、定期的に 修正:必要に応じて バグ FIXなどのアップデートも提供予定です。実際 GlassFish v4.1を来年リリースする予定で動いております。
また、今後も Java EE の参照実装として提供されるのは GlassFish で、Java EE の最新機能をいち早くお試しいただけるのも GlassFish です。

商用サポートの観点で、GlassFishは今後商用サポートの提供は行われず、WebLogic 側で提供します。サポートの観点で、契約を結んでいただいたお客様に対して提供していた製品個別のお問い合わせや、パッチの提供は GlassFish v4.0 移行 以降 行いませんが、OSSとしてバグ登録パッチ提供等は今後もできます。

またテクニカルの面ではJava EE準拠アプリケーションの場合、WebLogicとGlassFishは配備記述子レベルで互換性を持たせるよう実装していますので、WebLogicへの移行は容易です。GlassFishで開発、テストを実施しWebLogicへ配備といった事も可能になります。

つまり、無償で利用可能な OSS Tomcat の代わりに OSS版 GlassFish を使用していた方には殆ど影響は無いと想定しますし、今後も Tomcat に対し Java EE の参照実装として優位点、機能的優位点は代わりません。

OSS版GlassFishを商用サポートがあるから、将来に備え無償でご利用されてきた方は、開発時、テスト時は GlassFishをご利用いただき、商用サポートが必要になった時点で WebLogic などをご検討いただければ誠に幸いです。

既存のお客様でライセンス契約を締結いただき、大規模に展開していただいているお客様におかれましては、弊社営業より個別にご訪問、ご説明をさせていただく事になるかと想定します。その際、ライセンス・マイグレーションなどもご説明させていただく事になるかと想定します。

最後に、少なくとも私は今後も、Java EE 関連のセミナーにおいて、デモの実行環境として、もしくはJava EE の機能説明に参照実装としての GlassFishを使用しますし、それを止めなさいとはオラクル本社から一切言われておりませんし、その位置づけは変わっておりません。Java EEの参照実装であり、OSS製品としての GlassFish は今後も啓蒙活動で使用してまいります。

Java EEの参照実装としての GlassFish を今後もどうぞ宜しくお願いします。

2013年11月5日 at 1:45 午後

Java EE 7 HoL on JJUG CCC

2013 年 11 月 9 日に JJUG CCC 2013 Fallベルサール西新宿で開催されますが、13:15 – 15:05 まで「R5-1 Java EEハンズオン」を実施します。今日はそのハンズオンで実施する内容についてご紹介します。

2013年11月 11日追記:JJUG CCC で実施したハンズオンの資料を下記に公開しました。また、本プロジェクトの全ソースコードは下記より参照できます。
https://github.com/yoshioterada/JavaEE7-HoL/
HoL の資料は Step by Step で記載したためページ数が多いですが、実装コード量はとても少ないです。

本 HoL では Java EE 7 に含まれる技術だけを使ってリアルタイムの情報配信をするアプリケーションを作成します。WebSocket のサンプルというとチャットのようなアプリケーションは数多くありますが、WebSocket はアイディア次第でとてもおもしろい物を作れるだけでなく、実際にビジネスで即使えるような物も作れます。

ただ、WebSocket を本番環境で大規模に扱うためには負荷も考慮しなければなりません。基本的には Java EE 7 に準拠したアプリケーション・サーバ1台で WebSocket アプリケーションを動作させた場合、そのサーバに接続するクライアントにのみしか状況発信、共有などができないため、おのずと接続数に限界が生じます。実際には接続数ではなく、情報配信の部分がボトルネックとなり接続数を制限せざるおえない状況になるでしょう。

それでは、単純に台数を増やしてクラスタ構成を組めば良いと考えるかもしれませんがそんなに簡単にはいきません。なぜならば JSR-356 の WebSocket ではサーバ・エンドポイントに接続するクライアントの管理は自身でする事になっており、インスタンスをまたいで接続しているクライアントの情報を管理するのはとても大変だからです。
例えば、Collection に WebSocket のクライアント・エンドポイントの情報(全クライアント情報)を入れたとして、その情報をインスタンス間で交換するのはデータ量も多くナンセンスです。また、ある一つのインスタンスで受信したメッセージを他の全インスタンスに共有させるのも、インスタンスの増加の度にコードを修正しなければならなくなるので現実的ではありません。

そこでこうした WebSocket のクラスタリングを実現するために、外部のメッセージ・プロバイダ(MQ 関連製品)を使用します。メッセージ・プロバイダにメッセージをキューイングし、アプリケーション・サーバの各インスタンスがキューを監視していれば、キューにデータが入ってきた時点でそのメッセージを取り出し処理をする事ができます。

実際には、内部的には JMS の Publish-Subscriber を利用しています。Web アプリケーションで1人が JMS のトピックに対して配信したメッセージを、各インスタンス上で稼働する MDB が同一トピックをサブスクライブしており、メッセージが入ってきた事を検知した後、全 WebSocket クライアント・エンドポイントに対してメッセージを配信を行います。



また、Web アプリケーションと WebSocket 側の実装パッケージをを分ける事によって、上記の概念図に示すように、よりセキュアに情報発信側と受信側を分けて運用する事もできるようになります。だれでもが WebSocket サーバに接続する全クライアントに情報配信ができようなシステムは危険ですよね。

そこで、今回は上記のような概念図を念頭に、簡単なアプリケーションを構築し、GlassFish のクラスタリング構成を作成します。実際にクラスタ環境で WebSocket を動かしている動画を下記に示します。
※ 今回は Load Balancer や Firewall の部分は対象範囲外とします。

最後に、
今回のハンズオンは少し応用するだけで、スポーツ・ニュースの配信サイトで行われているようなリアルタイムの試合経過速報等をとても簡単にさらに効率良く提供する事ができるようになります。またそれ以外にもお客様にリアルタイムの情報をいち早くお届けしたいニーズがあればすぐにご利用いただけるでしょう。
今回このようなアプリケーションを作成する HoL を実施しますので楽しみにしておいてください。
また HoL を元に大規模 WebSocket リアルタイム情報配信を是非ご検討ください。

HoL で必要なのは事前準備としては JDK 7 u45 以降のインストールと NetBeans 7.4 (GlassFish バンドル版)以降のインストールをしていただくだけです。それ以外は一切必要ございません。
それぞれ、下記より御入手ください。
※ Java SE 8 の HoL も両方参加される方は JDK 7,8 共にインストールが必要ですが、本 HoL では JDK 7 を使用して行います。

● http://www.oracle.com/technetwork/java/javase/downloads/index.html
● https://netbeans.org/downloads/index.html 
 (Java EE : 203 MB版 もしくは、すべて : 220 MB 版)

※ さて、これから説明、配布用の資料を作成しよう。(^_^;)

2013年11月 11日追記:JJUG CCC で実施したハンズオンの資料を下記に公開しました。

2013年10月23日 at 3:53 午後 1件のコメント

JavaOne 2013 Report & Java EE 7 & Avatar & Java Puzzlers

2013年 10 月 15 日(火) にJava Festa in 札幌 2013 が開催されました。今日は、JavaFesta で発表した3つのセッションの資料を下記に公開します。


JavaOne 2013 のレポート


世界が注目する Java EE 7 の最新動向(Project Avatarの情報も含む)


Java Puzzlers with 櫻庭さん

PS.
JavaFesta は今年で10回目となるそうですが、今年を持って JavaFesta という名前のイベントは終了するとの事でした。元 Sun のメンバーとして、Sun の頃から非常に多くの先輩や同僚がこの札幌の地で発表されてきて、私もこの場に2度程立たせていただきましたが、それをとても光栄に思っております。Java という名前のつくイベントが一つ無くなってしまう事を少し寂しくも思いますが、事務局の皆様のご意向を伺いとても納得できるものでした。札幌 IT の今後のさらなる繁栄、そして札幌の地から日本全国、世界に対して情報発信をしていきたいという思いから Java だけではなくそれをとりまく IT 技術全般のノウハウが必要で、そうした取り組みをしていきたいという事、そして名前を変えて新たなステージに立ちたいという思想はとても素晴らしい事だと思います。
JavaFesta 事務局の皆様、最後の JavaFesta に朝から夕方まで Java のセッションをご用意して頂きまして誠にありがとうございました。

そして、10年間本当にお疲れ様でした。

2013年10月17日 at 3:44 午後 2件のコメント

はじめての Project Avatar


https://avatar.java.net/

JavaOne 2013 San Francisco で Project Avatar のオープン・ソース化が発表されました。そこで、本エントリでは Avatar にご興味を持って頂いた方が、どこから Avatar に触ればよいのかを分かりやすくするために、Avatar プログラムの実行方法、Avatar プログラムの作成方法をご紹介します。

※ 昨年、Project Avatar について、下記のプレゼンでアーキテクチャ等をご紹介していますが基本的なコンセプトは変わっていません。しかしこの1年で実装方法が大きく修正されています。昨年の時点では、View の実装部分で Avatar 専用のタグライブラリを使用しなければなりませんでしたが、今回 OSS 化された Avatar の実装を確認すると、標準の HTML 5 + JavaScript + EL 構文で実装できるようになっています。昨年の JavaOne 2012 の BoF で開発者から頂いたフィードバックを受けて、今回の実装方法に修正された事と想定します。

それでは、実際に OSS 化された Avatar の実行方法、プログラムの作成方法を下記にご紹介します。

1. まずはじめに、JDK 8 をダウンロードしてインストールしてください。
 (※Avatar の動作のためには、JDK 8 の build 103 以降が必要です。)
   Open JDK 8 Early Access のダウンロード

2. 次に Avatar の実行環境をバンドルした GlassFish v4 を入手してインストールしてください。
  入手はこちらから

3. 次に AVATAR_HOME (GlassFish のインストールした場所) の環境変数と GlassFish の bin へのパスを設定してください。

  csh 系の場合:
  setenv AVATAR_HOME /Applications/NetBeans/avatar-gf-1.0-ea
  set path=($path;/Applications/NetBeans/avatar-gf-1.0-ea/glassfish4/bin)

4. Avatar プロジェクトの作成
  3. でパスを通しておくと、avatar コマンドが実行できるようになってます。
  avatar コマンドで Avatar プロジェクトを作成してください。
  Avatar プロジェクトを作成するとデフォルトで下記のディレクトリが作成
  されます。
  # avatar new [project-name]
  # ls -F project-name/ 

  WEB-INF ディレクトリ配下には readme.txt が作成されています。
  view ディレクトリ配下に src ディレクトリが存在し、hello.html ファイルが
  作成されます。

hello.html ファイルの内容

<!DOCTYPE html>
<html>
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello</title>
    </head>
    <body>
        Hello
    </body>
</html>

5. GlassFish v4 の起動
  GlassFish を起動します。
   # asadmin start-domain

6. Avatar プロジェクトのデプロイ
  GlassFish に Avatar プロジェクトをデプロイします。
   # asadmin deploy project-name

7. デプロイした Avatar プロジェクトの動作確認
  ブラウザで http://localhost:8080/project-name へアクセスしてください。
  Hello のみがブラウザ上に表示されます。

8. Avatar アプリケーションの作成の準備
  まず、Avatar の基本概念を簡単にご紹介すると、Avatar は View
  (クライアント側の実装) と Service(サーバ側の実装)をそれぞれ実装します。
  また、Avatar はクライアントとサーバの通信に、RESTful, Server-Sent
  Event, WebSocket を利用可能です。

  今回は、まず最も簡単なアプリケーションを作成するために、
  RESTful 対応のアプリケーションを作成します。
  4. で Avatar プロジェクトを下記のコマンドを実行し作成しましたが、
   # avatar new project-name

  上記コマンドを実行した際には、下記のように view のディレクトリしか
  作成されていません。
   # ls -F project-name/

  サーバ側の実装も行うためには、service ディレクトリとそのディレクトリ
  配下にsrc ディレクトリを作成する必要があります。下記のコマンドを
  実行して service ディレクトリを作成してください。

  # mkdir service
  # mkdir service/src
  # ls -F

  # ls -F service
   src/

  今回作成する RESTful 対応のサンプル・アプリケーションは、ブラウザ
  からボタンを押下すると GET リクエストを送信し、サーバ側の時間を
  取得してクライアントに表示させるアプリケーションを作成します。

9. Avatar RESTful 対応のサーバ側 (Service) の実装
  まず、サーバ側の実装を行うために、service ディレクトリの下の
  src ディレクトリに移動し、main.js ファイルを作成します。
  ここでは、下記のコードを実装してください。

  # cd service/src
  # vi main.js

var avatar = require("org/glassfish/avatar");

var getTime = function(){
    var current = new Date();
    return{
        h: current.getHours(),
        m: current.getMinutes(),
        s: current.getSeconds()
    };
};

avatar.registerRestService({ url:"data/message"},
    function(){
        this.$onGet = function(request, response){
            response.$send(getTime());
        };
    }    
);

  備考:
  Service 側の API は下記 URL に記載されておりますが、REST, Server-Sent
  Event(SSE), WebScoket それぞれの実装ができるようになっています。
  https://avatar.java.net/jsdoc/service/avatar.html

  例:
  RESTful : registerRestService(metadata, restService)
  SSE : registerPushService(metadata, pushService)
  WebSocket : registerSocketService(metadata, socketService)

10. Avatar RESTful 対応のクライアント側(View)の実装
  View は下記の内容を実装してください。

<!DOCTYPE html>
<html>
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello</title>
    </head>
    <body>
        <script data-model="rest">
            var Message = function(){
                this.msg = this.h = this.m = this.s ='';
            };
        </script>
        <script data-type="Message" data-instance="message" data-url="data/message"></script>
        <output class="time">#{message.h}:#{message.m}:#{message.s}</output>
        

        <button onclick="#{message.$get()}">Update</button>
    </body>
</html>

  今回、REST のモデルを使用しますので、<script data-model=”rest”>を
  定義しています。
  REST モデルで利用可能な API は下記の通りです。
  https://avatar.java.net/jsdoc/view/module-RestModelBase.html

  今回はボタンを押下した際に GET リクエストでサーバにリクエストを
  送信し、サーバ側の時間を表示しますが、Avatar ではモデル・データの
  バインディングに Java EE に含まれる Expression Language(EL) 構文
  を使用します。
  具体的には、#{message.h} , #{message.m} , #{message.s} と記載している
  部分が EL 式になります。

11. Avatar プロジェクトのコンパイル
  View と Service をそれぞれ実装完了した後、プロジェクトをコンパイル
  してください。
  # avatar compile project-name

  コンパイル後、このアプリケーションを動作させるために必要なファイルが
  自動的に追加されます。

12. Avatar プロジェクトを GlassFish にデプロイ
  コンパイルが完了すると、アプリケーション・サーバにデプロイします。
  # asadmin deploy project-name

13. RESTful アプリケーションの動作確認
  ブラウザより http://localhost:8080/project-name にアクセスしてください。
  ボタンを押下するとサーバ側の時刻が表示され、ボタンを押す事に
  サーバの時刻が更新されるようになります。

14. RESTful アプリケーションから SSE アプリケーションへ移行
  RESTful の場合、ボタンを押下しなければサーバ側のデータが取得
  できません。
  そこで、RESTful から SSE にアプリケーションを変更し、サーバ側から
  自動的に時刻を通知するように変更します。
  それぞれ、View と Service の実装を下記のように修正してください。

  View 側の修正

<!DOCTYPE html>
<html>
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello</title>
    </head>
    <body>
        <script data-model="push">
            var Time = function(){
                this.msg = this.h = this.m = this.s ='';
            };
        </script>
        <script data-type="Time" data-instance="time" data-url="data/time"></script>
        <output class="time">#{time.msg}#{time.h}:#{time.m}:#{time.s}</output>

</body>
</html>

  Service 側の修正

var avatar = require("org/glassfish/avatar");

var message = 'The Server Time is ';

var getTime = function(){
    var current = new Date();
    return{
        msg: message,
        h: current.getHours(),
        m: current.getMinutes(),
        s: current.getSeconds()
    };
};

avatar.registerPushService({ url:"data/time"},
    function(){
        this.$onOpen = this.$onTimeout = function(context){
            context.$setTimeout(1000);
            return context.$sendMessage(getTime());
        };
    }    
);

15. SSE アプリケーションのコンパイル
  ソースコードを修正したら、再度コンパイルします。
   # avatar compile project-name

16. SSE アプリケーションの動作確認
  ブラウザより、http://localhost:8080/project-name にアクセスしてください。
  ブラウザでアクセスすると自動的にサーバの時刻が表示されるように
  なります。

最後に
  今回は、Avatar で簡単な RESTful, SSE のアプリケーションを作成
  しましたが、WebSocket なども扱う事ができます。
  色々と試してみたい場合、バンドルされている、exapmples をご参考頂く
  ことがとても有用です。
  example をデプロイして色々なサンプルコードをご覧いただき試して
  頂ければ幸いです。また試していただいた後、Avatar プロジェクトでは
  フィードバックを求めています。是非、色々なフィードバックを頂ければ
  誠に幸いです。

Avatar サンプル・アプリケーションのデプロイ方法
  インストールした GlassFish v4 のインストール・ディレクトリ
  直下にサンプル・アプリケーションが用意されています。
  サンプル・アプリケーションをデプロイして確認してください。
  # asadmin deploy avatar-gf-1.0-ea/examples/examples.ear

サンプル・アプリケーションの動作確認
  ブラウザより http://localhost:8080/examples にアクセスしてください。
  豊富なサンプルが用意されていますので、こちらをご参照頂き
  Avatar でどのような事ができるかをご覧ください。

2013年10月10日 at 9:20 午後

JavaOne ストラテジー・キーノートのまとめ


まとめ:
今年の、JavaOne のテーマは昨年に引き続き、「MAKE THE FUTURE JAVA」でしたが、今年の JavaOne のもう一つのテーマは「Internet Of Things」ではないかと思います。昨今 Java というと、エンタープライズでの適用が多いかと想定しますが、Java はエンタープライズ用途だけではなく、幅広くインターネットに接続する全てのデバイスに Java を適用できる、そのような時代がやってくるのではないかと思わせるような基調講演でした。Java EE 7 は今年の 6 月に正式リリースし次の Java EE 8 のリリースに向けて準備をまさに始めた所です。そして、来年の春にリリース予定の Java SE 8 についても機能 FIX し、興味のある開発者はいますぐ、お試し版を利用できるようになっています。しかし、Java SE や Java EE のようなプラットフォームだけではなく、今組み込みデバイス用の Java にも大きな変化が生まれようとしています。今年の JavaOne では、Internet Of Things (組み込みのデバイス) に向けての Java の取り組みを大きく紹介した内容となっていました。今まで組み込みというと、同じ Java の開発者でも敷居が高そうと思われた方もいらっしゃるかと思いますが、来年登場する Java SE 8 以降は、Java SE 8 のノウハウを使い、Raspberry PI や Lego Mindstorm なども制御できるようになります。こうした取り組みは大学・研究機関で色々な研究用途で使用して頂きたいですし、さらに製造業などでも是非実用化を目指していただきたいと思っております。

今年で JavaOne は Sun の頃から数え通算 18 回目の開催となります。また、4年ぶりに JavaOne がモスコーン・センターに帰ってきました。今年の JavaOne は Oracle の Java プロダクト・マネージメントのバイス・プレジデントPeter Utzschneiderが取りまとめました。

Peter は冒頭で、今年は、昨年の JavaOne よりもイベント規模を大きくし、そして昨年よりも良いイベントにしたいと考えていると語りました。実際、今年の JavaOne には世界 92 カ国から参加頂いています。JavaOne は開発者による、開発者のためのイベントで 5 日間で 400 以上のテクニカルセッションが提供されます。このプログラムを決定するにあたって、コンテンツの選定委員は量や質を十分に検討し、選定は非常に難航した事もつげました。

また、今年は単にセッションを行うだけではなく、より多くのコミュニティの活動を行います。例えば、展示会場で開催される、Codegarten に参加してください、そこではご自身の Java のコードの改善方法についてエキスパートが教えてくれます。また、スケジュールを確認し都合が合えば Raspberry Pi チャレンジにも参加してみてくださいと語りました。

まず、Peter は昨年と同様、Java に関する進捗のアップデートを行いました。コミュニティにおいては、OpenJDK コミュニティの参加者が1年間で10%増加し、また、Java の開発者によって新しい Java ユーザグループも作成され Java のコミュニティが世界中で広がってきました。テクノロジーの分野では、今年 Java EE 7 を正式にリリースする事ができました。オラクルの運営(Stewardship)においては、Java のエバンジェリストチームや、OTN の活動によって各種イベントや参加メンバーが増えてきています。また、コミュニティ・メンバーの協力やチームの活躍によって Java Magazine の発行も継続して行っています。
これらを通じ、今年は Java にとって良い1年だったと言えます。

* 9 Million Java Developers Worldwide
* #1 Choice for Developers
* #1 Development Platform
* 3 Billion Mobile Phones Run Java
* 100 Percent of Blu-ray Disc Players Ship with Java
* 97 Percent of Enterprise Desktops Run Java
* 5 Billion Java Cards in Use
* 7 Billion Java Cards Sold
* 89% of desktops run java
* 125 million TV devices run java
* 5 of top 5 OEMs ship java

我々にとって重要な事は未だ、世界の中で Java は No.1 の開発プラットフォームである事です。Java は巨大なコミュニティを形成しており、Java をベースとして持つ開発者も多数います。そして、巨大なインフラストラクチャや、インターネット・デバイスもまた Java で稼働しています。

今日のキーノートで皆様に提供する内容は、将来を築きあげていくための信じられないほど多くの基礎知識を提供します。今年の JavaOne のテーマは昨年と同様、将来の Java を築き(Make The Future Java)上げる事ですが、それらの内容を今日ここでご覧頂くことができます。

我々は、Make The Future Java について今一度考えなければなりません。昨年を振り返ってみると、我々はやり残した作業があり、それらに対応していく必要があります。今、IT 業界は、非常に多くの技術革命や、非常に大きな変革を迎えています。そしてそれらは多くの課題が存在し、それらを解決する事が今後大きな機会を得る事になります。それを、皆様と一緒に解決していきたいと考えています。

我々自身は、Java をより良く、さらに強く、より堅牢に、そして今後 10 年間の使われ続けるプラットフォームとして適切に築きあげる事です。

インターネットにおいて、毎月、毎週、毎日、毎時間、1 分間でモバイルとソーシャルを組み合わせると、信じられないほど大量のデータが作成されています。人々はそれを共有したり作ったり、そのための新しいサービスや新しいアプリケーションを作成しています。これらを実現するためには大量のインフラが必要になりますが、多くが Java プラットフォーム上で稼働しています。そして、多くの人々は今これらのインフラを電気や水のような通常インフラと同様に扱っています。また、皆様は日々、信じられないほどのデータ取り扱っています。
過去データを扱うためには、リアルタイム性、フィルタリング、ファイルの大小などを検討し取り扱っていましたが、今全く新しいパラダイムが利用できるようになっています。例えば BigData や FastData なども利用できます。また、BI(Business Intelligence)や解析を通じて全てをバックアップできます。
また、データの配置場所、データ自身の寿命等も考えなければなりません。
データ自身が生命の源となり、開発者はそれらのデータを活用して革新的な新しいアプリケーションを構築できるようになります。

また、これらにモバイルやソーシャルを組み合わせて操作すると新たな事も発生します。
見積もりは色々とありますが、デバイスが今後数年間で、インターネットに接続するデバイス数は、100億〜500億と見積もられています。10 億としてもとても巨大な数です。そしてこれらのデバイスの多くは組み込み分野に存在し、ムーアの法則に従い、より安価になりますが、一方でパワフルになってきます、そして最も重要な事はインターネットに接続できる事です。これが IoT(Internet Of Things)なのです。
今まさに、業界全体が大きな変革が行われおり、Java の開発者にとって大きな変化がおき、大きなコミュニティが形成されようとしています。

我々が現在使用する全てのモバイルデバイスは、相互に接続する事ができリモートから制御もできます。ます。そして将来的には、我々が住む物理的な世界(家電製品や様々な物理的な物)をインターラクティブに制御できるようになるでしょう。

また、クラウドベースでの開発へ本格的にシフトし始めました。
数年前はどのクラウド環境で動作させるのかを議論していました。要求・要望に対する選択、インフラを気にせずに簡単にプロビジョニングできるか否か、アプリケーション開発に集中できるか否かを検討すると当然の事に思えます。また、クラウドベースへ移行する際に、セキュリティや、どのようにしてコンテナ・ベースから、サービス・ベースに移行できるか、それぞれ再度考えなければなりません。また、移植性も考えなければなりません。どのようにしてアプリケーションを物理的なサーバからクラウド環境へ移行するのか。また異なるクラウド環境への移植が可能かどうかも検討しなければなりません。

まとめると、今、IT 業界は信じられないほどの大きな変革が必要になってきます。2013 年の JavaOne では我々の業界を取り巻く変革についてご紹介します。
3年前のオラクルの Stewardship において、Java SE 7/EE 7 に関するメジャーなアップデートの発表を行いました。そして、Java を前進させる事(Moving Java Forward)を発表しました。この中で、IT 業界をとりまく世界では、dizzying(めまいがするような)変化がおきています。我々オラクルは Java の開発者が将来にわたって適用できる技術を身につけるために必要な事を提供しますと強調した。この作業に関して、どうぞご一緒に参加してください。

ここで、今年の JavaOne の最初のデモをご紹介します。皆様は恐らく気付いていないと思いますが、皆様ご自身がこのデモに参加しています。


ここに表示される図は、この会場にお集り頂いている皆様で、パートナー企業の一社である日立コンサルティング・ユーロテック(Hitachi Consulting and Eurotech)が作成したデモですが、モスコーンの会場入り口のドアにセンサーがつけてあり、通過する人を記録しています。そして参加者皆様の来場状況を示すデモです。このデモは、人間か犬かを判別し、入場か退場かも判別します。そして、これはゲートウェイ上で稼働する Java SE ベースのアプリケーションで作成されています。

計算が完了した後、そのデータはクラウド上でアップロードされ、分析と BI(Business Intelligence)アプリケーションを起動し、集計結果を Java ベースのアプリケーションで表示しています。このデモの重要なポイントはいくつかありますが、既存の Java の構成部品を利用し、洗練されたデモを作成する事ができ、また異なる技術を組み合わせ、全ての小型のデバイスからクラウドベースにオープンスタンダードの技術だけを利用してできるという事です。
このデモは、ほんの数週間で実装され、まさに Java の素晴らしさを証明するデモになりました。

ここで、Peter から Nandini Ramani, Vice President of Engineering, Java Client
and Embedded Platforms を壇上に迎え入れました。Nandini はまず、世界における Java 適用状況を歴史を振り返り紹介しました。Java は様々な範囲のデバイスで動作します。以前はそれぞれのデバイス用に特化し、カスタマイズした Java VM の実装を行ってきました。そして、Java はそれぞれの分野において成功してきました。しかし、それぞれの実装は分岐していき年を重ねる毎にどんどん独立して動作するようになっていきました。我々はプラットフォームの視点で考えると、統一されたプラットフォームがとても重要と考えています。

統一プラットフォームは、API と言語仕様の視点で考えなければなりません。Java SE 7 を見てみると3つの実装(CLDC, CDC, Java SE)が存在します。それらは、Java 構文の観点では共通事項がありますが、多くの部分で様々な違いが存在します。CDC、CLDC の存在はプラットフォームとしてはは正しいと考えています。また、言語の視点では、CLDC は今なお Java 1.3 の言語仕様で、CDC は Java 1.4.2 をベースにしています。つまり Java ME は Java SE がバージョン 5, 6, 7 で得てきたような進化や革命に追随できていませんでした。そこで、将来我々は、Java ME と Java SE の統一したプラットフォームを提供する予定で考えています。実際に統一プラットフォームを構築するためには、非常に多くの事を実施しなければなりません。そこで、まず我々は Java SE 8 で CDC の置き換えとなるコンパクト・プロファイルを提供します。

また、API の観点では、Java ME 8 で、NIO, 新しいコレクションのようなライブラリを利用できるようにします。言語の観点では Java ME 8 から、皆様になじみのある構文(アノテーション、ジェネリクス、string in switchのような構文)を使用できるようにします。
つまり、Java MEと Java SE を API と言語の視点で共通部分を増やしていき、複雑な実装の部分を抽象化し、簡単に開発ができる点にフォーカスします。これによって開発者は、ご自身のスキルセットをJava ME, Java SE といったプラットフォームによる区別をなくし、1人の Java 開発者が組み込みからデスクトップまで同じノウハウで共有できるようになります。

組み込み分野における上位レイヤについて紹介します。現在、ARM, freescale, QUALCOMM, Rasbery PI, gemalto, ST など、チップセット提供企業と共にに作業をしています。組み込み分野では、現在開発は断片的です。なぜなら非常に多くのベンダーが存在し、非常に多くのチップセットが存在し、またそれらは、それぞれ別の OS やデバイス・ドライバを使用しています。つまり全てのデバイスを同じように稼働させる事は困難である事を皆知っています。だからそれぞれに特化し開発が必要で断片的になります。一方で、それらのベンダーの多くは、Internet Of Thing を実現する為には、オープン・スタンダードな標準のプラットフォームが必要と考えています。そこで、市場に投入するために Java が合理的な選択肢になっているのです。ARM, freescale, QUALCOMM 等は今年の JavaOne でスポンサー企業として名を連ねていますが、freescale に関しては最終日のコミュニティ・キーノートの基調講演で発表してくれます。そこで何故 Java がそれらの IoT デバイスにとって意味があるのかが語られるでしょう。また、皆様は、デモ・展示会場に是非お越しください。そこで彼らが何をしているのかを是非尋ねてみてください。その時に何故、こうした事に意味があるのかが理解できるでしょう。今年の、Java ME 3.2.0 のリリース以降、ME プラットフォームのポーティングが行われています。Java SE Embedded 同様 Java ME も Rasbery PI のような大きなプラットフォームで利用できます。また、いくつかのパートナーで SDK をリリースして、とても簡単に入手、利用ができるようになっています。これには全ての Java Development Kit が含まれます。

ここで、Nandini は gemalto のワイヤレス・モジュールを観客に見せ、gemalto は Java ME を大々的にサポートしている事を紹介しました。我々は、様々なチップセット用、様々なプラットフォーム用に、積極的に Java ME のリリースを行っています。また、それを実現するために、今年の 8月に Oracle Java Platform Integrator Program を正式リリースしました。このプログラムでは基本的に2つの内容をパートナーに対して提供します。一つ目は、現在まだ、サポートをしていないプラットフォームに対して、簡単に Java SE Embedded をポーティングをできるようにする事です。2つ目は、ご自身のライブラリを使って、例えば、ヘルスケアや、製造、スマートフォン、ファクトリ・オートメーションなど市場のニーズに応えるために、プラットフォームを拡張できる機会を与える事です。
エコシステムを包容(Embrace)し、パートナーにとって必要な機能を、パートナー自身で実装できるような仕組みを提供します。これは大きな一歩です。

コミュニティからのフィードバックは如何ですか?我々は、Java エバンジェリスト・チームを通じてたくさんのコミュニティに対する支援活動を行っており、彼らを通じてたくさんの、積極的なフィードバックを得ています。

ここで、Nandini はサンディエゴで開催されたQualcomm Uplinq conference の Uplinq ハッカソンで最優秀賞を受賞した APX ラボの Andrew Sugaya 氏を壇上に招き入れました。通常、JavaOne の基調講演に招く方は何ヶ月もかけて調整をしますが、Andrew とは数日間をかけて登壇して頂く事を調整しました。それほど Andrew が実装した内容は素晴らしいものでした。

APX ラボではヘッドフォンやワイヤレス・デバイスを作成しています。Qualcomm の Uplinq conferenceでは朝 10:00に開場に集まって朝食をとりイベントを開始します。このハッカソンには4つのカテゴリが存在していて、私は、”Connected to Home experience” のカテゴリに参加しました。それは、まさに Internet of Things を表すカテゴリでした。最初に黒い箱を手に入れました。それは開発プラットフォームとして全ての機能が含まれるものでしたが、その黒い箱はとても強力で、その使い方について最初は理解ができませんでした。幸運にも、私は実装において Java ME を選択し約 7 時間で実装することができました。最初に、部屋の温度データを取得し、そのデータをクラウド上のサーバ側に送信します、サーバ側でデータの解析をし、家の電球の色を変更しるような物を作成しました。彼は言いました。今回は電球を使用しましたが、今や何でもできます、トースターでも、ビールのジョッキ、今座っている椅子でさえ将来的にはつながるのです。

彼は、それまで Java での開発を経験した事はありましたが、 Java ME を使用した経験はありませんでした。しかしJava ME を使うととても簡単に実装できることを理解し、Java ME を選択しました。

ご参考:
 http://www.apx-labs.com/company/press/andrew-wins-hackathon/

我々は、プラットフォームの統合、エコシステム、Andrew の経験などについて語ってきました。我々は重要な事を伝えなければなりません、来年の春には Java SE 8 がリリースされますが、Java SE 8 にはたくさんの機能が含まれています。重要な機能には、Lambda 式の対応やJavaScript エンジンの Nashornが重要です。Nashorn は、JSR 292: Supporting Dynamically Typed Languages on the JavaTM Platform を利用した物ですが、これらの詳細は、テクノロジー・キーノートでも紹介されるでしょう。そして、Java SE 8 の先の将来については、Java 9 で Project Jigsaw を導入し、モジュール化が可能なプラットフォームを提供する予定です。また、Java SE 9 以降になるかと思いますが、Java で GPU を制御する Project Sumatra 等も今 OpenJDK の元で開発をはじめています。これらにご興味がある場合、是非、OpenJDK にアクセスして、チェックアウトしてください。

最後にまとめますと、これからの Java は下記のようなロードマップで提供予定です。Java SE 8 のリリース時には Java ME 8 も同時にリリースをする予定です。テストプレビューがダウンロードできるようになっていますので、入手して試していただきフィードバックをください。

最後に、モスコーン・センターに帰ってきた事をとても喜んでいますと語って Nandini は壇上を去りました。

次に、Peter は Cameron Purdy, VP of Cloud Application for Oracle を壇上に招き入れました。Cameron にとって今年は、とてもお忙しい年だと思いますが、Java EE 7 の正式リリース大変おめでとうございます。2年前の JavaOne で私たちは Java EE 7 で何を含めるかを話しました。そして昨年は、Java EE 7 で含まれる機能について紹介しました。そして、今年ついに Java EE 7 をリリースできました。これも、パートナー、業界団体、コミュニティ、そして我々の開発チームの成果です、皆様に大変感謝しています。


ここで、Java EE 7 のメジャーなテーマについて今一度振り返って説明をしてください。最初に、私たちは Java EE 7 では Java の中でもエンタープライズの側面にフォーカスしています。今回、エンタープライズ・ニーズへの対応としてバッチ処理を含めています。また開発生産性の向上も実現しています。Java EE 7 ではとても開発がかんたんになる仕組みを取り入れています。例えば、CDI (Context Dependency Injection)ですが、Java EE 6 につづいて全ての Java EE のプラットフォームで利用できるように改善しています。これによって開発生産性の向上が多いに見込まれます。

また、Java EE 7 の中でもっとも重要なテーマとして HTML 5 のサポートがあげられます。実際とても素晴らしい技術が含まれています。WebSocket,RESTful のサポートなどがあげられます。これらは、通常の Web ベースのアプリケーション開発が可能です。

それでは、Java EE のアプリケーションが、現在のクラウド・ベースのアプリケーション開発への適用については如何でしょうか?
2年前の時点で Java EE 7 のメインテーマとしてクラウドを取り上げておりクラウド環境におけるアプリケーション開発に関する部分を盛り込む予定でした。タイミング的な問題から、Java EE 7 のテーマは HTML 5 対応に変更したわけですが、現在の Java EE 7 でも非常に多くの機能がクラウド環境で利用可能です。

まず、新しいセキュリティ・ロールがあげられますが、クラウドにおけるセキュリティを提供します。また DB などのデータソースの設定も簡単にできるようデフォルトのリソースが利用可能になっています。また標準で DB スキーマを生成する仕組みなども提供され、テーブル作成と同時に事前にデータを取り込む事もできます。

また、一つのアプリケーションから他のアプリケーションに対して RESTful Web サービスを通じて簡単に利用する事もできます。また、JSF では表面的なアプリケーションの開発が可能で、マルチテナントに対応したアプリケーションの開発も容易にできるようになっています。

既にあなた達は、将来的に含める機能について検討していると思いますが、その一部を共有していただけないでしょうか。

Java EE は Java EE 5 以降、Java EE 6, Java EE 7 とエンタープライズアプリケーションにおける簡単開発にフォーカスしてきました。そして、これらの技術間の関連性は今後も継続します。今実際に我々が検討している技術をいくつかあげるとするならば、JCache,JSON-Binding等があげられますが、EE 業界や、コミュニティ、パートナーから、素晴らしいサポートを頂いて、Java EE 業界が何をしているか関連性をたしかめながら検討していきます。

Java EE 7 のローンチの際は、非常に多くの方がイベントに参加し、動画を参照し、実際にダウンロードをしてくださいました。Java EE 7 のお披露目は成功をおさめることができました。

Java EE 7 の開発に並行して実施されていたと想定しますが、2年前の JavaOne で Cameron はもう一つのプロジェクトを紹介しましたが、その進捗について教えてください。2年前に Project Avatar というプロジェクトを発表しました。その時は、とても多くの情報が掲載されましたが、Avatar はいつ出てくるのか
質問をされる事もありました。Avatar の概要は次の通りです。

まず、単純な、HTML 5 対応の Java EE のアプリケーションを作成します。例えば Java EE 7 のWebSocketなどのプログラミングモデルです。次に、従来は、DB に対してリクエスト、レスポンス型の問い合わせを行っていました、もちろんそれも利用できますが、新たに、NoSQL データベースをサポートし、データベース側からライブ情報や変更通知等をアプリケーションに送るような実装もできるようになります。つまり、今までのリクエスト・レスポンス型のアプリケーションではなくイベントによる通知、検知などが行えるようになります。また、Avatar は Java SE 8 上で動作する JavaScript エンジンの Nashorn とも共同動作できるようになっています。Avatar 自身は Java EE コンテナ上で稼働し、既存のJava EE のアプリケーションに対して、Node.js の開発スタイル等を取り込んで、既存の Java EE アプリケーションを拡張できるようになっています。つまり Node.js のアプリケーションがアプリケーション・サーバ上で動作する事になるのです。

今年、ここでご紹介している内容は、プレ・アナウンスメントではなく、正式な公開情報です。本日、ただいまより、Project Avatar をオープン・ソース化し皆様に提供します。これは全く新しいオープンソースプロジェクトです。

Project Avatar のオープンソース化の発表後、Cameron は壇上を去りました。

Peter は最後に下記のようにまとめました。皆様は、いつも Java に関するテクノロジーの情報を探していらっしゃるかと思いますが、OTN の Java の Web サイトから情報を入手してください。また、それ以外にも Twitter, FaceBook などからも情報を入手できます。ぜひ、これらのサイトにアクセスして情報を得たり、またそれらに参加をしてください。

今日、Nandini や Cameron Purdy が話しをした内容をみた時、この業界に大きな変化がおこっている事がご理解いただけるでしょう。今日参加して頂いた事を心より感謝します。ファンタスタティックな週をお迎えください。

2013年10月3日 at 8:11 午後

JavaOne 2013 コミュニティー・キーノートのまとめ

今年の Java コミュニティ・キーノートは、エンタープライズ環境で利用が多い現在の Java において、Java エコシステムは、エンタープライズの利用にとどまらず、幅広い分野で Java が利用されている事、利用できる事を学ぶ機会を開発者に与えました。

冒頭で、Senior Director, Product Management, Java Platform Groupの Donald Smith から過去の振り返りを行いました。2 年前の JavaOne では Moving forward Javaがテーマでした。その後、Java SE 7 が正式リリースし、我々は Java のエコシステムを再構築してきました。2012 年のテーマはイノベーションで、Java をコアな場所で採用する、例えば、クラウドや、BigData, IoT に対応させていく事でした。そこで鍵となるのがオープン・コミュニティでした。

今年は、過去の2回とは趣向を変え、さらにテーマを拡大させていきます。Java は過去ご紹介してきたような ISV(独立系ソフトウェア企業)の要望だけでなく、エンドユーザやアプリケーション開発者のニーズをかなえていきます。Java エコシステムにおいて、現在、様々な方が色々な分野で Java を適用しています。今年はそれら世界中の開発者が Java で実施している内容についてご紹介します。これによって、現在の Java エコスシステムを理解できます。

その前に、若干今年の JavaOne を振り返ります。ここでSenior Java Developer Community Manager (Twitter ID : @java) のTori Weldtが壇上に招かれました。Tori はOTN (Oracle Technology Network)を取りまとめていますが、OTN としてJavaOne に参加した事を誇りに思い、世界中にいらっしゃる、Java の開発者コミュニティを支援することを誇りに思っていますと語りました。また、Tori は今年の JavaOne で、テクニカル・セッション以外に実施されたイベントについていくつか紹介しました。

Toriはまず、始めにRaspberry Pi チャレンジについて紹介しました。これはRaspberry PI のハッキングを行うイベントで、参加した開発者はテクニカル・セッションの受講を欠席してまで参加された方々でしたが、参加した開発者は皆、参加した事に大変満足していたと報告しました。参加者はRaspberry PI について深い知識を持たなくても参加でき、エキスパートと共に協力してプロジェクトを作成していきました。期間中には7個のプロジェクトが完了しましたが、中にはとてもすばらしい物がいくつか作成されました。例えば、Google Glass のアプリケーションとして作成したアプリケーションは、Raspberry PI と心拍計と連動し、心拍計をつけた人の心拍数をリアルタイムでモニタリングし、Google Glass 上に表示するといった内容でした。


[Heart of Glass の動画]

また、モンスター・トラックの車に Raspberry PI を搭載したプロジェクトも、基調講演のまさに直前に完成したとの事でした。Raspberry PI を搭載したトラックは、クラウド上に情報を持たせる物で、完成品を MTaaS (Monster Truck As a Service)と命名しました。これは、直接トラックを操作するのではなく、iPhone の加速時計を利用し操作し、データを Amazon クラウドのデータ・サービスに保持されるという物でした。

このRaspberry PIチャレンジには、日本人技術者 (Twitter ID : @tomo_taka01 さん)も参加され、その内容がこちらのブログで公開されています。

Raspberry PI チャレンジの内容をご紹介した後、Donald Smithから3つの新しい発表を行いました。

● Raspberry PI OEM 契約の締結
オラクルは、Raspberry PI の OEM 契約の同意書にサインしました。これにより、Java SE が含まれるRaspberry PIのイメージを http://raspberrypi.org から入手可能となりました。今回の契約締結は世界中の何百万もの Raspberry PI の開発者にとってとても有益で、簡単に Raspberry PI上で Java が扱えるようになっています。

● ブラウザ上の Java バージョンのモニタリング・サービスの提供開始
この jcountdown.com で提供されるサービスは、Javaチャンピオンと、JUG リーダ、Adopt OpenJDK プログラムのジョイントプロジェクトで、ブラウザ上で利用されている Java のバージョン情報をトラッキングし最新バージョンへのアップグレードを支援するサービスです。エンドユーザがいつも常に最新の Java と、Javaテクノロジーを利用できるようにするためのサービスです。上記サイトには Java SE 7 へアップグレードするための 64 個の理由を記載したプレゼンテーション・コンテンツのリンクも記載されています。

OpenJDK コミュニティにモバイル決済企業が新しく参加
サンフランシスコに本社を構えるモバイル決済企業の Square 社が OpenJDK コミュニティに参加する事を発表しました。Square 社は、コミュニティと共に、Java 言語、JavaVMやコアライブラリの拡張に貢献する事を発表しました。低電力はとても重要ですが、特にSquare 社のCTO Bob Lee は、低電力で利用可能な暗号化技術の分野で貢献すると報告しました。

その他、OTN ラウンジで実施した Codegartenオープンソース・プロジェクトの内容も発表しました。これは既存のJava API に対して、参加したエンジニアが集まりその場で改善を施す内容です。例えば、JSR 354 の JodaタイムやMoney に対する改善、GEB を Arquillian に統合、JSON-B ライブラリのリリースの準備等をおこないました。

また、JavaOne の開催前に、JavaコミュニティによるJava コミュニティのテーマを決めるコンテストを実施しましたが、その優勝者とその内容も発表されました。コンテストの趣旨としてマニアックで面白いJava のスローガンを募集した内容で、Daniel Ellmerer さんが優勝し、JavaOne のフリー・パスをゲットしました。このコンテストは、ブラジルの SouJava, ロンドン LJC、iJUG によるオーガナイズで実施されました。

2013 Javaコミュニティのトップ5テーマ

  • Java is the Community
  • One Java to Rule Them All
  • The World runs on Java Technology
  • Java Collecting New Garbage since 1995
  • Java: from the First Cup to the Last line of Code

これらの発表後、昔のJavaOne を彷彿させる Tシャツ投げのイベントがDonald より提案され、世界中の Java のキーマンや、Java Champion, James Gosling などが会場前方に集まりTシャツ投げを実施しました。そして何と私も急遽Tシャツ投げイベントに、投げる側の人間として加わらせて頂きました。(^_^;)

次に、Donald に代わってJava Platform グループ、Product management ,Vice President の Henrik Stahl が壇上に上がり、コミュニティ・キーノートを続けました。Henrik は壇上に上がるまではスーツでしたが、「Java はビジネスの場じゃないからスーツを脱がなければね!!」と観客に伝え、壇上でTシャツ姿となりキーノートを始めました。このHenrik の立ち振る舞いに、Java開発者は彼に大喝采を浴びせました。

Java エコシステムは、様々な分野で適用できますが、Henrikは大きく 5 つのセグメント領域(教育、安全、環境、宇宙、海洋)にわけ、Javaの利用事例紹介をはじめました。


まずJava の教育について、Henrik はBeJUG, Devoxx(4kids), Parleys, playpass.be の創設者でJava Champion でもある Stephan Janssen を壇上に招きました。ここで、Stephan Janssen は Devoxx における子供用の1日セミナーの開催をビデオを使って報告しました。セミナーを開催した理由は、彼の 11 歳の子供が、「父さん僕プログラミングをやりたいんだよ」と尋ねてきたのがきっかけでした。子供の願いをかなえようと自身の母国語で書かれたプログラミング言語の書籍を探しましたが見つからなかったため、無いのであれば、自分がイベントを開催し教える事が一番良いのではないかと考えました。この子供用のイベントは当初は参加者も少なかったようですが、現在では多くの子供達が参加しています。

「世界中に存在する JUG でこのような子供向けのイベントに興味がある方はどうか、私に連絡を取って欲しい、コンテンツも、教え方も、場合によってはハードウェアも提供したいと考えています。是非、ご自身の国でもこのような子供向けのイベントを開催してください。」と語り締めくくりました。

次に、Henrik はOracle Academy Vice President, Alison Derbrenwick Millerを壇上に招きました。オラクル・アカデミーは3つの軸を柱にコンピュータ・サイエンスの教育をグローバルに展開しています。

  • オラクル・ボランティア
  • オラクル・ギビング
  • オラクル・アカデミー


オラクルは、大学生など若い学生に接触するのはとても重要な事だと考えています。一方で、オラクル・アカデミーの部門にいる社員数は世界中の子供達の数に比べ圧倒的に少ないためDevoxx 4 KIDS のように世界中の JUG の協力が必要と考えています。Java だけではありませんが、オラクルはこのような支援をしてくれるコミュニティに対して年間2700 億円の支援を行っています。このような内容に興味を持っていただく場合、Twitter,FaceBookもしくはオフィシャル・サイトにアクセスしてメールをしてくださいと語りました。

● https://twitter.com/OracleAcademy
● https://www.facebook.com/oracleacademy
● http://academy.oracle.com

次に、Henrik はJavaOne開催至上、最年少の登壇者Aditya Guptaを壇上に招き入れました。彼は、まだほんのわずか10 歳の少年で、父は Java EE のエバンジェリストとして世界的にも有名な Arun Gupta でした。Henrik は今回彼を Minecraft のハッカーとして壇上に招き入れました。

「Henrik はどんな事をしているの?」と尋ねた所、彼は冒頭、「昨年の冬、僕のゲームが壊れたんだけど、どうやったら jar ファイルを直せるの?」と父に尋ねました、なぜなら、そのゲームはJavaで作られていて jar ファイルが壊れてしまったためでした。その直し方を父に教えてもらった後、プログラミングに興味を持ち、Minecraft のコードをデコンパイルしたり、ゲームのパラメータを修正したり、ゲームの振る舞いを変更(メソッドの記載内容を修正して)するような事をしています。基調講演では実際に、Eclipse を使い 400以上の自身が書いたコードの内、ゲーム振る舞いを変更するための内容を参加者に分かりやすく紹介しました。彼の素晴らしい発表にJavaOne の参加者はスタンディング・オベーションで拍手を送りました。

その他、基調講演では様々な分野で適用される Java エコシステムについて紹介しました。

安全

環境

  • 電気消費量の減少のため、家庭の電気消費量の監視・通知システム by Opower : Drew Hylbert,(Vice President, Technology and Infrastructure)ご参照(http://opower.com/)

適用範囲・宇宙

  • NASA MMS ミッション(地上からの衛生管理システム)by AI Solutions : Sean Philips (Sr. Software Engineer)
  • ゴールドマン・サックスにおける Java コミュニティへの貢献 by Goldman Sachs : Mike Marzo (Technology Fellow)

海洋

  • Liquid Robotics の海洋センサーの制御 by Liquid Robotics : James Gosling (Chief Software Architect)

最後に、今年のJava のコミュニティ・キーノートでは、世界中のエンジニアが親として子供に母国語でプログラミング言語を教えている内容や、ほんのわずか10歳の子供が Java プログラミングを実施しゲームを改造している内容など日本の一エンジニアとしてはとても刺激を受けました。こうした子供向け、学生向けの教育は非常に重要で日本でも業界の垣根を超えて実施すべきではないかと思います。

また、Java の適用範囲は単なるエンタープライズ分野にとどまらず、ゲーム、ロボット、電気消費量計測、自動車制御などあらゆる場面で利用ができる事が紹介されました。これらの発表を受けて Java エコシステム全体像を把握でき、Java はまだまだ楽しい事がいっぱいできると感じられる内容でした。組み込み分野に精通していない開発者も、Java さえ理解していれば、Raspberry PIや Lego Mindstorms 等、組み込み・ロボット制御等で利用できるようになる他、こういったデバイスがJavaと共にインターネットに接続される、IoT (Internet of Things) 時代が到来していると感じられる基調講演でした。

2013年10月1日 at 6:37 午後

GlassFish コミュニティセッション&楽天株式会社の事例

9/22(日) AM 9:15 – 11:15 にGlassFish Community: The Foundation for Opportunityが開催されました。

このセッションは、GlassFish の利用者にが今後の方向性について理解したり世界における GlassFish の利用事例を把握するためにセッションです。このセッションをとりまとめたのは Arun Gupta と共に、US Oracle で Java EE や GlassFish のエバンジェリストを勤める Reza Rahman と Sun の頃から GlassFish のプロダクト・マネージャを勤めているJohn Clingan でした。

まず、冒頭で John Clingan よりJava EE の歴史を過去から現在にわたって説明しました。2013年6月に正式リリースされた Java EE 7 について詳しく触れ、改めて Java EE 7 の3つのテーマである「開発生産性の向上」、「HTML 5 対応」、「エンタープライズニーズへの対応」を説明しました。説明中では、Java EE 7 に含まれる各テクノロジーについてそれぞれ下記のような概要を示しました。

JAX-RS ではクライアント用の API や非同期用の API が追加された他、標準の JSON ライブラリも追加されました、これは現在 20 以上ある Java 用の JSONライブラリに対し、
標準の JSON ライブラリを提供した物でストレーミングAPI,オブジェクトモデルを提供しています。また開発生産性の向上として、アノテーション・ベースで POJO(Plain Old Java Object) による開発がよりすすみ、開発容易性も向上している他、Java でメッセージングを扱う JMS においてもメッセージ送信におけるコード記述量が大幅に削減される事が説明されました。
また、ビューの開発テクノロジーとして提供される JSF(JavaServer Faces)については、Java EE 6 で導入された CDI(context dependency injection)が、今後 Java EE にとってより重要になり、JSF のデータ・バインディングやイベント処理などでは CDI を使うべきだという事も強調されました。

Java EE 7 のローンチ・イベントを 2013年6月 にオンラインで開催しましたが、このローンチ・イベントの参加者数も発表されました。ローンチ・イベントのコンテンツは、イベント終了後も、オンラインで視聴できるようになっていますが、当日の参加者数とイベント終了後にコンテンツを参照した開発者数は、1ヶ月で延べ1万人以上にのぼることが発表されました。

また、世界ではローンチ後、既に Java EE 7 に関連した書籍は 14 冊も提供されている事を示しました。

また、Java EE のチュートリアルも Java EE 7 に対応した内容が提供されており、すでに、世界では Java EE 7 の情報が豊富にあり、いつでも Java の開発者は Java EE 7 の詳細な情報を得られる状況になっている事を報告しました。

また、Java EE 7 は正式リリース後3ヶ月を経過していますが、この間 Java EE のダウンロード数は、Java EE SDK, GlasFish、OpenMQ など関連製品も含め、総ダウンロード数は 150 万を超えている事も報告しました。

さらに、Java EE 7 に準拠したアプリケーション・サーバは GlassFish 以外にも既に登場している事も報告しました。過去、Java EE 6 に準拠したアプリケーション・サーバは、正式リリース以降、15 以上ありましたが、Java EE 7 では、リリース以降3ヶ月で、参照実装の GlassFish 以外に、TmaxSoft も対応し、Java EE 7 への対応は EE 6 に比べより進む事が期待されている点についても述べられました。

開発環境としては、NetBeans, Eclipse, Intellij 等がすでに Java EE 7 の開発に対応し、GlassFish v4 も利用できるようになっています。さらに Oracle Enterprise
Manager も GlassFish を管理できるようになっている事を報告しました。

Java EE の将来について、Java EE 7 以降、NoSQL, HTML 5 対応の拡張、PaaS, キャッシュなどを含める事を現在検討していますが、それ以外にも、JSON-B(JSONバインディング)、Web アプリケーションの配備により柔軟性を持たせるための新しい設定、また CDI の利用範囲をさらに広げる点、Adopt A JSR プログラムへの適用、透明性を持った開発をより進めるといった内容も報告されました。

ロードマップは、本番環境への適用が可能となる GlassFish v4.1は 2014 年中にリリースされる事を報告した。

最後に、
GlassFish v4.0 をご利用頂き、バグを見つけたり、機能拡張のご要望がある場合、Issue Tracker やメーリング・リストなどを通じてご報告ください。皆様のフィードバックがとても重要ですとして締めくくった。開場からは、早速 Java EE のテストの容易性・標準化についても要望があがった。

その後、Q&A に応えるためプロダクト・マネージメントの Vice President Mike Lehmann も加わり参加者からの生の質問に応えていきました。

これらの中でも、印象的だったのは、Java EE 7/GlassFish のローンチ以降の世界的な盛り上がりは Java EE 6 ローンチ時に比べ、素晴らしい勢いで増え Java の開発者の皆様に幅広く浸透していっている事を感じ、とても興味深く、幸せに感じるといった Mike Lehmannの言葉でした。また、Java EE/GlassFish はオラクルのビジネスにとっても、とても重要である点も強調されました。

これらの質疑・応答を終えた後、GlassFish の世界的な事例について報告がありました。

********************************************************************
橋山 牧人 – Rakuten Ichiba Development Department, Rakuten, Inc.
David Heffelfinger ー Ensode Technology LLC,
Jaromir Hamala – Consultant, C2B2 CONSULTING LIMITED
Kerry Wilson – Software Engineer, Vanderbilt Univ Medical Center
********************************************************************

合計 126 インスタンスで楽天市場を運用する楽天株式会社

この中でも特に特筆すべきは、楽天株式の事例です。楽天株式会社より、楽天におけるGlassFishの適用事例について橋山 牧人氏から報告がありました。橋山氏は Web アプリケーションのエンジニアとして楽天に4年間勤め、現在楽天市場におけるお買い物カートのチェックアウトのシステムの開発に携わっています。現在、楽天市場では GlassFish v3.1.2.2 を3つのクラスタ構成を構築し運用されており、1つのクラスタあたり 42 インスタンス、つまりトータルで 126 インスタンスで運用している報告がありました。これは日本国内における大規模事例というだけでなく、世界的にみても最大級の事例といっても過言ではないでしょう。

橋山氏は、GlassFish を採用した理由を次のように語りました。
選択理由は2つあり、一つはGlassFish がJava EE の参照実装であることがポイントだったと語りました。2007 年の頃に JAX-WS の新機能を評価したのですが、その時標準でその新機能をサポートしていたのが GlassFish だけであった事からGlassFish を採用したと語っていました。またもう一つの理由として、GlassFish の管理のしやすさが挙げられると語りました。楽天では EC のサービスを提供するために24 時間 365日、巨大なクラスタを管理
しています。その際、GlassFish は巨大なクラスタを管理するために、強力な管理コンソールをを持っているため、管理コストが大幅に削減できたと語りました。

一方で、GlassFish コミュニテイの一員としても活躍している点を報告しました。過去 GlassFish v2 が持っていたバグに対して複数のパッチを提供してき GlassFish の品質改善にも寄与している点をあげました。具体的な一例として、GlassFish v2 の JSESSIONID に起因したバグのパッチを提供し、提供したパッチが次のバージョンに実際に含まれた点なども報告しました。

その後、実際にどのような所で GlassFish が使われているのか説明しました。楽天では GlassFish を楽天市場のチェックアウト部分の機能を動作させるための環境で使用しています。チェックアウト機能は SOA の サービス・バスのような振る舞いをし、15 以上の外部 API をマッシュアップして呼び出し、クライアントにサービスを提供しています。これはステートフルで管理されており、セッション情報をサーバ・サイドで保存しますが、パフォーマンスを向上するために、GlassFishと Oracle Coherence を組み合わせる事でパフォーマンス向上をはかっている点なども説明しました。

また、楽天市場における、巨大トラフィックへ対応するために、GlassFish の内部構造を正しく理解し、実際にパフォーマンス・ボトルネックがどこにあるのか、CPU が高負荷になった際に、どの部分に影響が発生しているのかを解析した経験もある事をあかしました。調査の結果、ワーカ・スレッドを少くする事で、パフォーマンスが大幅に改善した事なども報告しました。
こうした、日々の様々な努力を積み重ね、楽天セール時の巨大トラフィックをさばく環境を築き上げ、現在では、ピーク時12,000 トランザクション/分を達成し、負荷テスト時では 20,000 トランザクションが利用可能となっているという。

楽天において、Glassfish は信頼性と可用性があり大規模 EC サイトを構築できていると語りました。

※ 楽天市場のお買い物カートのチェックアウト・システムのように非常にミッション・クリティカルな環境で GlassFish が適用されている事は、本当に使えるのだろうか?と思われていた方にとって、とても貴重な情報だと思います。日本での発表に先駆けて、本場 JavaOne で世界のエンジニアに対して英語でご紹介いただいた楽天株式会社、そして橋山氏に心より感謝しています。橋山さん、ありがとうございました。
日本もすごい事をやっているんだという事を世界に対して示す事ができたのではないかと思います。

2013年9月24日 at 7:58 午前

You are the “Make the future Java”

本日、GlassFish ユーザ・グループ・ジャパンによる Java EE 7 リリース記念のナイトセミナーが開催されました。本日ご登壇いただいた、上妻さん、久保田さん、槇さん、蓮沼さんには大変感謝すると共に、ご参加頂いた皆様にも大変感謝いたしております。(下記の写真の通り会場は満員で、ご登録者数は 140 名、実際にご参加頂いた方も 88 名でした。)
Java EE 7 そして GlassFish の最新情報をコミュニティ・ドリブンでお届け頂ける、このような機会はとても貴重だと感じております。GlassFish ユーザ・グループ・ジャパン副会長のの蓮沼さん、そして参加者の皆様ありがとうございます。

GlassFish は元々、日本では元 Sun の3人のメンバーが日本での啓蒙活動を開始しましたが、今や GlassFish はこの3人の手を離れ、Java EE の参照実装として、コミュニティ・ドリブンで情報提供がなされ、さらには多くのユーザが GlassFish の良さに気付きご賛同頂きはじめた事を、日本で活動を始めた3人の内の1人として大変嬉しく思っております。

Java EE 7 は、WebSocket, JOSN, jBatch, Concurrency Utilities for EE といった新機能が含まれ、特に WebSocket, JSON あたりの技術は特に開発者が注目する技術だと思います。また本日、上妻さんに発表して頂いた、jBatch に関しても非常に詳しい内容をご紹介頂いたため、今後多くの開発者にとってとても有用な情報だったのではないかと思います。

その一方でツイート上を除くと「Java EE 7 が流行ればいいな」といった、(言葉が若干悪いかもしれませんがお許しください)他人まかせなご意見も見受けられました。これに対して私が皆様にご期待する内容として、本ブログのタイトルにもございますように、「将来の Java を創っていくのは皆様です!!」

もし、Java EE 7 もしくは GlassFish に関して、ご興味を頂いた方、もしくは試して見ようと思われ方がいらっしゃったら、どんな些細な事でも結構です。実際に試して頂いた内容を、体裁問わず、ブログや Wiki、その他何でも結構です、試された内容を是非公に公開してください。それらの情報が他の開発者にとっても有用な情報になり、それが流行(トレンド)になっていく物と心より信じております。

例えば、今このエントリで Java EE 7 のどの技術にご興味があるかアンケートを実施しています。結果をみると、圧倒的に Java EE 7 のご興味のある技術は WebSocket になっていますが、全ての開発者が WebSocket に興味を持っているわけではなく、JAX-RS 2.0, JSF 2.2, JSON, Concurrency , CDI 等の技術にご興味を持って頂いている方も多く見受けられます。実際、jBatch に関しては現在7番目の人気となっておりますが、本日、上妻さんにご登壇頂いた内容は多くの開発者にとってとても有用だったと思います。

ここで申し上げたい事は、皆様、それぞれ異なる興味分野を持っていらっしゃると思います。1人が全てを一度に試す(把握する)事は困難ですが、自分の興味分野、試した内容を公開する事でかならず、他の Java 開発者の為にもなります。

もちろん、私も今後も継続して情報発信してまいりますが、1人でできる事はとても限られています。スケールも致しません。それを支えていただけるのは皆様です。仮に、試してダメだと思った所は、正直この機能のここがダメだとフィードバックをください。それが将来の Java を創っていく事だと思います。
「将来の Java を創っていくのは皆様」なのです。

是非、お試しいただいた内容を、どのような形でも結構です。是非情報をご共有頂ければ大変嬉しく思います。
最後にくどいようですが、繰り返します「将来の Java を創っていくのは皆様です!!」

2013年6月15日 at 2:14 午前

Java EE 7 トレーニング・コースについて

Oracle University では、現在 Java EE 7 のトレーニング・コース(Java EE 7: New Features Coming Soon (¥145,530) )を全世界への提供に向けて準備しています。

これは、Java EE 7 に含まれる新機能を2日間で紹介し、加えてラボで実際に手を動かしながら演習を行うこともできるトレーニング・コースになっています。これによりいち早く Java EE 7 の全体像とプログラミング方法を習得できます(このトレーニング・コースに関してはレビューの要望が私の元にも入ってきたため、一部私もレビューをし改善を加えた部分もあります)。

本トレーニング・コースでは Batch, JSON, WebSocket, JAX-RS, EL 3.0, JMS 2.0 , EJB, JPA, CDI, Bean Validation 等 Java EE 7 に含まれるの技術をとりあげ、既存のアプリケーションを Java EE 7 に対応させるために必要な情報も提供してくれます。

本トレーニング・コースについて日本の担当者と話をした所、本コースは世界で正式公開された後も、現時点では英語でのみ提供予定のようです。ただし、日本の Oracle University に対して、日本語での開催リクエストを行い、かつご希望者が多い場合、日本人講師による日本語でのサービス提供も可能との事でした。

Java EE 7 のトレーニング・コースを日本語で受講されたい方は、今から本トレーニング・コースに対する日本語開催リクエストを出されてみては如何でしょうか。

トレーニングの紹介ページにアクセスした後、「コース開催日のリクエスト」を押下するとリクエストを行う事ができます。途中の質問で「集合研修(Clasroom Training)」にチェックしてください。

どうぞ宜しくお願いします。

2013年6月14日 at 5:29 午後

Virtual Developer Day-Java 開催 (6/19 or 6/25)




Oracle Technology Network (通称:OTN) 主催で Virtual Developer Day : Java が開催されます。下記のスケジュールに詳細を記述していますが、Java SE/FX/Embedded/EE の各テクノロジーに関して、無償で、オンラインでご覧頂く事ができます。Java SE 8 に含まれる 52 の新機能、Lambda 式、JavaFX、Java EE 7、Raspberry Pi など各テクノロジーの最新情報をご確認いただけます。またライブ・チャットもご用意しておりますので、エキスパートに対して直接質問を投げかける事もできます。本イベントにご興味のある方はご登録の上受講してください。
(※ 日本の開発者の皆様は恐らく 6 月 25 日開催のヨーロッパ向けの方が受講しやすい時間帯かと思います。)

  • アメリカ    :6 月 19 日(日本時間夜中の1時〜5時)
  • ヨーロッパ:6 月 25 日(日本時間夕方5時〜9時)

詳しくは、コチラをご参照ください。

2013年6月14日 at 3:28 午後

Older Posts Newer Posts


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2026年2月
 1
2345678
9101112131415
16171819202122
232425262728  

カテゴリー

clustermap

ブログ統計情報

  • 1,314,012 hits

Feeds

アーカイブ