投稿者アーカイブ

はじめての 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 PM

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 PM

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 PM

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 AM

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 AM

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 PM

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 PM

祝 Java EE 7 ローンチの日本における反応

日本時間の深夜から午後に掛けて、世界に渡る Java EE 7 ローンチ・イベントがおかげさまで無事終了致しました。日本から深夜、もしくは午後にご参加頂いたエンジニアもいらっしゃいますが、本イベントにご参加頂いた皆様には、Java EE 7 の3つテーマ(HTML 5 対応、開発生産性の向上、エンタープライズ・ニーズへの対応)をご理解頂けたのではないかと思います。
また主要な統合開発環境(Eclipse, NetBeans, Intellij)も Java EE 7 へ対応する事で、今後日本におけるエンタープライズ開発の標準も Java EE 7 へ移行していく物と思われます。今回リリースされた Java EE 7 には様々なテクノロジーが含まれますが、Java EE 7 に含まれる各種機能を試された方は、是非その試された内容をブログや Wiki 等で記載して頂ければ嬉しく思います。

Java EE 7 は EE 6 に対して開発生産性を向上したバージョンであるため、本来であれば Java EE 7 を直接試していただきたいのですが、仮に Java EE にはじめて触れられる方で Java EE の全体像が理解できない方、もしくは英語が大の苦手な方は、既存の Java EE 6 の日本語書籍(Amazon : Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava (Programmer’s SELECTION) [大型本]) をご参照頂き全体像をご理解頂いた上で、Java EE 6 と EE 7 の差分を抑えて頂く事も可能ですので、いずれかのやりやすい方法で Java EE 7 に触れていただければ幸いです。

最後に、Java EE 7 のローンチに関連して各種メディア、ブログ等に記載された内容を下記にご紹介します。今まで Java EE に実際に触れて来られた方も、この新しい Java EE 7 に期待している内容などが記載されていますので、是非下記の記事もご参照頂ければ幸いです。
(※ 私もブログ書いたよという方がいらっしゃいましたら是非ご連絡ください、下記に追加させて頂きます。)

オンラインメディア

個人ブログ

Java EE 7 対応関連書籍

2013年6月13日 at 6:42 PM

Java EE 7 ローンチ (US 時間: 06/12 午前9時)

US 時間で 2013 年 6 月 12 日 午前 9 時より Java EE 7 のローンチ・イベントが開始します (日本では 2 回目のローンチ・イベントで 6 月 13 日 午後 1 時から参加頂けます)。Java EE 7 は、 2009 年にリリースされた Java EE 6 をベースに、4 つの新機能 (WebSocket, JSON, Batch, Concurrency Utilities for EE) と、既存の機能に対する大幅な更新 (JSF 2.2, JAX-RS, EL 3.0, JMS 2.0)を加えた、最新のエンタープライズ向け Java 標準技術です。

Java EE 7 に含まれる各種技術に触れたい場合、Java EE 7 の参照実装である GlassFish v4 を入手した上で、Java EE 7 のチュートリアルをご参照いただきお試しください。また、GlassFish v4.0 をバンドルし、 Java EE 7 の開発に対応した NetBeans 7.3.1 を入手いただく事で余計な設定は不要でいち早く Java EE 7 の開発を体験していただく事ができます。

Java EE 7 の新機能

  • Web Socket API
  • JSON Processing
  • Batch
  • Concurrency Utilities for Java EE

今日は、Java EE 7 の正式リリースを記念して、私が今まで様々な所で紹介してきた Java EE 7 のプレゼン資料をまとめ、また過去に発表した内容の中で、正式リリース時点で変更してしまった部分等も改めて見直し、最新情報にアップデートした資料を下記に共有します。全部で P165 ありますので、必要に応じて SlideShare よりダウンロードしてご参照ください。




本ブログをご参照頂いた皆様へ:
もしよろしければ、下記のアンケートにご協力頂けないでしょうか。今後の情報提供の際に役立てたいと思います。(※ アンケートにお応え頂くと他の方の結果をご覧頂けます。)



下記に Java EE 7 の技術のうち新規追加された 4 つの機能について簡単にご紹介します。

* Java API for WebSocket 1.0 (JSR-356):


WebSocket は RFC 6455 で定義された HTTP をアップグレードした TCP ベースのプロトコルで、双方向・全二重の通信が可能なプロトコルです。最新バージョンのブラウザであれば IE 10 を含む、ほぼ全てのブラウザが WebSocket に対応しています。JSR-356 は Java EE に含まれる技術ですのでアプリケーション・サーバ上で動作する WebSocket を実装する事はもちろんできますが、Java SE の環境上でも WebSocket のプログラムを実装するための API を提供しています。サーバ、クライアント共にクラスに対してアノテーション(@ServerEndpoint, @ClientEndpoint) を付加、もしくは javax.websocket.Endpoint クラスを継承したクラスを定義し実装します。クラス内には WebSocket の各ライフサイクルで必要な実装をそれぞれ、OnOpen, OnClose, OnError, OnMessage 内で実装します。
WebSocket はクライアントとサーバ間の通信において、HTTP のように通信時に余分なデータ(HTTP ヘッダ)を互いに送り合う事はなく通信コストを大幅に削減し、リアルタイム通信が必要な環境などで大きな注目を浴びている技術です。今まで、Comet, Reverse Ajax 等の技術を使って実装していたリアルタイムの情報配信システムにとっては、大幅にパフォーマンス向上が可能なWebSocket が標準の Java EE に含まれる事で、エンタープライズ環境でも安心して使う事ができます。

参考資料:

● Java EE 7新機能の目玉「WebSocket対応」、「バッチ処理」をアルン・グプタが解説──Java Day Tokyo 2013レポート
● Java EE 7 チュートリアル : WebSocket API
● DZone : JSR 356, Java API for WebSocket
● java.net WebSocket Spec

* Java API for JSON Processing (JSR-342)


JSON-P は JSON の処理(パース、生成、クエリなど)を Java で実施するための API を提供します。実装は、ストリーミング API もしくは オブジェクト・モデル API の2種類の方法のいずれかを利用することができます。
ストリーミング API は、イベント・ベースのパーサを利用して、発生するイベントに応じて JSON の解析処理、生成処理などのプログラミングを行う事ができます。開発者はコールバックイベントではなく、次に発生するイベントの処理を実装していきます。ストリーミング API を利用するためには、javax.json.stream パッケージ内の JsonParser や JsonGenerator を利用します。

オブジェクト・モデル API はメモリ上に JSON のデータをオブジェクトのツリー構造として表現し、開発者はこのツリーに対して解析や修正を行います。この方法はとても簡単でさらに直感的に扱う事ができますが、その一方で Streaming モデルよりも若干遅く、またメモリもより消費します。オブジェクト・モデル API を利用するためには、javax.json パッケージ内の JsonReader, JSonWriter, ビルダー(JsonObjectBuilder, JsonArrayBuilder)等を利用します。

参考資料:

● Java EE 7 チュートリアル:JSON
● java.net : JSON
● Java EE エキスパートグループ・メンバー(Markus Eisele):Test driving Java API for Processing JSON with GlassFish 4.0
● InfoQ :
JSON用標準JavaAPI

* Batch Application for the Java Platform (JSR-352)


バッチは、ユーザとのインタラクティブな操作が不要な処理を実行します。jBatch ではバッチ・ジョブの定義、実装方法を提供します。ジョブ仕様言語を XML で定義し 、バッチ関連アノテーション、インタフェースから構成されるビジネスロジックを実装します。またバッチ・コンテナでバッチ・ジョブの実行を管理します。

バッチ・ジョブはチャンク形式とタスク(Batchlet)形式のステップを含んでいます。
チャンク形式のステップはデータ・ソースからデータを読み込み、各データに対してビジネスロジックを適用し結果を保存します。
チャンク形式は3つの要素(入力、操作、出力)から構成されます。まず、はじめにデータ入力の部分では、データ・ソースから一度に一つのデータを読み込みます。たとえばデータベースのエントリやファイル、ディレクトリ、ログファイルに含まれるエントリ等がこれに当てはまります。次にビジネス・ロジックの適用部分では、アプリケーションで定義されたビジネス・ロジックを使用して一度に一つのデータの操作を行います。例えばデータのフィルタリング処理、データのフォーマットなどがこれに当てはまります。最後の出力部分では処理が行われたデータの保存を行います。データの入力では、javax.batch.api.chunk.ItemReader インタフェースを実装したクラスを定義します。データの処理には、javax.batch.api.chunk.ItemProcessor インタフェースを実装したクラスを定義します。出力ではjavax.batch.api.chunk.ItemWriter インタフェースを実装したクラスを定義します。

タスク形式のステップは、データ・ソースからデータを取得して処理を行うのではなく、任意のタスクを実行します。例えば、ディレクトリの作成、削除、ファイルの変更、データベース・テーブルの作成・破棄、リソース設定等がこれに当てはまります。タスク・ステップはチャンク形式とは異なり通常短時間で終わる処理を実装します。タスク形式のステップでは、javax.batch.api.chunk.Batchlet インタフェースを実装したクラスを定義します。

参考資料:

● Java EE 7新機能の目玉「WebSocket対応」、「バッチ処理」をアルン・グプタが解説──Java Day Tokyo 2013レポート
● Introducing JSR-352 – Batch Applications for the Java Platform

* Concurrency Utilities for Java EE (JSR-236)


Concurrency Utilities for Java EE はエンタープライズ環境における並列処理タスクの実装方法を提供します。Java EE 6 まではWeb コンテナ(JSP/Servlet)、もしくは EJB コンテナ(EJB)上から新しいスレッドを生成する事は禁止されていました。これは、これらのコンテナ上からスレッドを生成した場合、生成されたスレッドがコンテナ外部で動作しコンテナから生成されたスレッドを管理する事ができなくなるためです。Concurrency Utilities for Java EE ではコンテナ上で安心して新しいスレッドを生成する方法を提供します。

最も簡単に並列タスクを EE 環境で利用するためには、javax.enterprise.concurrent.ManagedExecutorService を利用します。ManagedExecutorService は Java SE の Concurrency Utilities で提供されるjava.util.concurrent.ExecutorService インタフェースを継承していますが ManagedExecutorService は Java EE の実行環境(つまりアプリケーション・サーバ)で実装されています。サーバ側の ManagedExecutorService の実装への参照を、自身のプログラム上で JNDI ルックアップ、もしくは @Resource アノテーションを使用してインジェクトし利用できるようにします。リソースをインジェクトした後は、Runnable, Callable インタフェースを実装したタスクを execute(), submit(), invokeAll(), invokeAny() 等のメソッドを呼び出して実行します。

参考資料:

● JSR 236 スペックリード:Anthony Lai の説明資料 (PDF) : Concurrency Utilities for Java EE
● Concurrency Utilities for EE の説明(私のブログ)
● ZDNet builder : マルチコア時代のCPUリソースを有効活用–Java EE 7で進化した並列処理を理解する
● @IT : エンタープライズ環境におけるマルチスレッド/並列処理の過去・現在・未来
● DZone : Modern concurrency and Java EE



以上が Java EE 7 で提供される新機能です。Java EE 7 の参照実装である GlassFish v4 をダウンロードして頂き、Java EE 7 の新機能を是非お試しください。

※ 下記に JSF 2.2 と EL 3.0 に関して説明していますが、これらは Java EE 6 から更新された技術です。

JavaServer Faces 2.2(JSR-344)


JSF は Java EE 環境におけるデフォルトの Web 開発フレームワークで世界中で幅広く使用されています。Java EE 6 の正式リリース時には JSF 2.0 が標準で提供され、その後、JSF 2.1 がリリースされました。
JSF 2.1 では JSP ベースのページを .jspx ファイルとする事で、Facelets として扱う事ができるようなり、JSF 1.2 で実装されたコードをマイグレーションしやすいような方法を抵抗した他、プラグイン可能な Facelet のキャッシュ機能を実装しています。また ServletContainerInitializer が追加されデフォルトの設定で問題ない場合、web.xml での設定は不要となりました。
そして、Java EE 7 では JSF 2.2 としてさらに大きな変更が加わりました。

* HTML 5 への対応(Pass-througu の属性が追加)
* 画面遷移における新機能の追加
Faces Flow
* ステートレス・モードの追加
* リソース・ハンドリング機能の改善
(マルチ・テンプレート機能は次のバージョンへ持ち越されました)
/contracts, META-INF/contracts にテンプレートのリソースを配置
* その他

この中で、特筆すべき事は JSF にステートレス・モードが追加された事です。JSF は 1.x のリリース当初から JSF における View の全てのステート(状態の情報)を保持していました。これはメモリも大量に消費し、パフォーマンスも良くありませんでした。そこで JSF 2.0 からは、部分的に状態を保存する Partial State Saving の機能が追加され、JSF 1.x の頃に比べパフォーマンスを改善する事ができました。そして JSF 2.2 からはついに状態を持たないステートレス・モードが JSF 2.2 に追加されました。これは現在の流行にそう形ですが、パフォーマンスが大幅に改善しメモリの使用量も減ります。またクラスタ環境で任意のノードに対してリクエストを送信する事が可能になります。今まで JSF をパフォーマンスの観点から見送っていた方々も JSF 2.2 の stateless (<f:view transient=”true”>)モードをご使用ください。

* Expression Language 3.0 (JSR-341)


EL は Java Beans のプロパティやメソッドとのバインディングに使用する式言語で、通常、JSP, JSF のビューから CDI で実装されたバッキング・ビーンのプロパティやメソッド呼び出しなどを結びつけるために使用します。
EL 3.0 では新たな構文が追加されています。新たに Java のコレクションに対して LINQ式を記述できるようになった他、Lambda 式も EL 式内に記述できるようになりました。ただし、EL における LINQ 式はコレクションに対する操作のみが許可されているため、直接 DB を操作する事はできません。また、EL 内で記述する Lambda 式は Java SE 8 で提供される Lambda 式の文法と同一ですが、動作環境は Java SE の環境には依存しません。つまり Java SE 7 の環境上でも EL 式内においてのみ Lambda 式を記載できるようになっています。
また EL は今まで Java EE の環境でしか動作しませんでしたが、EL 3.0 では Java SE 環境上でも動作するようになりました。

最後に、本日正式リリースされた Java EE 7 は Java EE 6 をベースに、プラスαの要素をご理解いただく事で、簡単に Java EE 7 に移行する事ができます。

2013年6月12日 at 7:07 PM 2件のコメント

GlassFish v4.0 正式リリース

Java EE 7 のローンチ・イベントを直前 (日本時間:6/13 午後1時) に控え、オラクル(GlassFish コミュニティ)は本日 2013年6月10日(日本時間:6 月 11 日) Java EE 7 の参照実装で Java EE 7 の仕様に完全準拠した、アプリケーション・サーバ GlassFish v4.0 を、世界で最も早くリリースしました。

glassfish.java.net の Web サイト・デザインも一新され各種項目へのリンクがわかりやすくなっています。是非、glassfish.java.net をご覧いただき、最新の GlassFish を入手してください。

GlassFish v4.0 の管理ガイドはコチラ
GlassFish v4.0 アプリケーション開発ガイドはコチラ
The Java EE 7 Tutorial ドキュメント

1点、下記の点にご注意頂きたいのですが、今回リリースされた製品は開発者がいち早く Java EE 7 の新機能や更新された機能を試すために提供された物で、本番環境で動作させるために必要な下記の機能は、今回のリリース時では十分に動作しない可能性があります。機能としては含まれていますが、Java EE 7 で追加された新機能を利用した場合に正しく動作しない可能性がありますので、まずは、本バージョンをご利用頂き、開発環境で Java EE 7 の新機能を試してください。そして将来提供される本番環境用の製品リリースまで Java EE 7 & GlassFish の API や操作方法について慣れて準備してください。

  • クラスタ環境構築
  • 高可用性機能
  • アップグレード機能
  • 組み込みサーバ

追記:誤解が発生する可能性がございますので下記を追記しました。
本日、RIとしてリリースされたバージョンは Java EE 7 で提供される各 API (各 JSR)が正しく動作する事を主に提供されています。つまりクラスタリング・高可用性機能など本番環境で動作させる為に必要な管理機能に対する十分なテストがされていません。そこで本番環境でのご適用はお控え頂き、近い将来十分にテストされたバージョンがリリースされた後に本番環境にご適用ください。ここで申し上げた内容は OSS 版、製品版の違いはございません。OSS 版と製品版の違いは、製品に対するサポートの有無(パッチ提供等を含む)、製品版でのみ利用可能な追加機能の有無などになります。クラスタリング機能、インメモリによる高可用性機能などは OSS 版、製品版共に提供予定です。

リリースノートに記載されている注意事項の原文は下記

Note : The main thrust of the GlassFish Server Open Source Edition 4.0 release is to provide an application server for developers to explore and begin exploiting the new and update technologies in the Java EE 7 platform. Thus, the following features of GlassFish Server were not a focus on this release :

* Clusters and standalone instances
* High availability features
* Upgrade
* Embedded Server

These features are included in the release, but they may not function properly with some of the new features added in support of the Java EE 7 platform.

上記以外にもいくつか、既知の問題があります、詳細はリリース・ノートをご参照ください。

既知の問題の例:

  • ubuntu 環境でエラーを発生しインストールに失敗
  • 空白を含むパスを使用した場合に package-appclient スクリプトで失敗
  • OSGi のクラス・ローダの問題で JDK 8 を使用した場合、ロガー・リソースバンドルのルックアップに失敗
  •   

  • その他(詳しくはコチラ)

2013年6月11日 at 3:19 PM

過去の投稿 新しい投稿


Java Champion & Evangelist

Translate

ご注意

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

カレンダー

2020年8月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

カテゴリー

Twitter

  • RT @truckerfling: Calling all Asia tech students! At @MSFTImagine tech competition 2020, we had 2 Asia teams as global finalists. We can't… 13 hours ago
  • RT @mnriem: Another quick example, upload to files to static website on Azure Storage, see github.com/manorrock/azur… @Azure @JavaAtMicrosoft 1 day ago
  • RT @Logico_jp: Hi Java guys around the globe, #JJUG CCC 2020 Fall will be held as an online conference on November 7, 2020. Your CfP is wel… 2 days ago
  • RT @doragod: CloudNative Days Tokyo 2020 でプロポーザルが通りました! まだまだ、エンタープライズでは Java も根強い人気があると思いますので、Azure Kubernetes Service を利用した Java アプリケーション… 3 days ago
  • RT @brjavaman: This Friday we celebrate The International Day of the Developer Career! Come grow YOUR career with Kirk Pepperdine @kcpepp4 days ago

clustermap

ブログ統計情報

  • 1,187,028 hits

RSSフィード

アーカイブ