Archive for 12月, 2010

今年1年を振り返って

今年1年、皆様の周りでは如何だったでしょうか?

今日が仕事納めの日ですので、今年1年を振り返ってみたいと思います。私にとって今年1年を一言で表すならば「激動の1年だった」と言えます。

忘れもしない、1月21日「 EU の Oracle による Sun 買収承認 」が無事 ?! あり、約 9年程勤めてきた Sun という会社が事実上無くなってしまった日でした。

こんな1年の始まりでしたが、オラクルの統合後、自分がどのようになるか全く想像もつかなかったため、日本の統合まで、できるだけ自分の持っている GlassFish の関連情報をブログに残しておこうと、粛々とブログを書いていたのがこの頃でした。また自分の将来について真剣に悩み始めたのもこの頃でした。

ただ、悩んでばかりはいられない、日本 Sun が無くなるのはもうすぐなんだ、Sun が無くなる前に、Sun として最後の「 Java Hot Topic セミナー」を開催したいと思い立ち企画し、ご賛同頂いた多くの皆様のご協力のおかげで「 Sun 最後の Java Hot Topic セミナー 」を開催する事ができました。ご協力頂きました、櫻庭さんを始めとし Sun の Java エバンジェリストの皆様本当にありがとうございました。
(この文章を書いていて、たった半年なのに、もう随分前の事のように思えて悲しくなりました。(T_T))

そして、ついに 5/31 ついに日本 Sun がなくなる日がやって来ました。Sun に憧れ Java が好きで入ってきたこの会社がまさか本当に無くなるとは夢にも思ってなかったです。あの時、今は無き用賀オフィスのSun ロゴの写真も撮っておいて良かったです。さよなら Sun のエントリ

そして、6/1 より日本オラクルの一員として活動を開始したのですが、半年のプリセールスグループの経験後、12/1 より現在のポジションで活動させて頂く事になりました。

入社から半年間、対外的にブログ等はあまり書いてませんでしたが、私個人的には、とても収穫のあった半年でした。WebLogic や周辺製品を触ったのもそうなのですが、何より WebLogic, JRockit, Coherence にとても詳しい優秀な方々と同グループで親しくさせて頂いたので、とても良い時間を過ごしたと思っています。人間関係はグループが変わっても変わる物ではないのでかけがえのない宝だと思っております。

12/1 からこの1ヶ月間も色々とありましたが、Java/UNIX が好きで入った Sun 、Sun が Oracle に変わっても Java は無くならないので、”Sun 魂” の心に持ったまま、Oracle のエンジニアとして、今後も Java に対する不安を払拭できるように頑張って行きたいと思います。

皆様、本年は誠にありがとうございました。
来年もどうぞ宜しくお願いします。

広告

2010年12月28日 at 1:39 AM

Java EE の向かう先

このエントリはJava Advent Calendar -ja 2010 の一環です。
Yamashiro0217さんに引き続き 12/24 の担当をさせて頂きます。

Duke

先日勉強会で GlassFish v3.1 の新機能をご紹介したばかりなので何を書こうかいろいろ悩んでいたのですが、やっぱり私は Java EE 関連のイメージが強いと思いますので、Java EE の最新情報についてお届けしようと思います。

ただし、「本日ご紹介する内容はまだ計画段階の内容を多く含みますので、今後大きく方針等が変更される可能性があります」のでその点だけご理解ください。Java EE 6 がリリースされて1年、本エントリではこれからの Java EE がどのような方向に進むのか概要を捉えて頂ければと思います。

さて、Java EE 6 は 以前のバージョン(Java EE 5)のリリースに比べて世界ではとても早いスピードで浸透してきています。我々は既に Java EE 6 対応のアプリケーションサーバ GlassFish v3 を提供していますし、また、多くのベンダーが Java EE 6 に対応したアプリケーションサーバの開発を進めておりリリース間近の製品もあります。


本日は Java EE 6 の後にリリースされる予定の 「Java EE 7」 について紹介します。
ずばり、Java EE 7 のメインテーマは「クラウド」対応です(PaaS)。

恐らく、この Java EE 7 の「クラウド」対応という言葉は、今年の JavaOne の報告等で目にされていらっしゃる方もいらっしゃるかと思います。それではどのあたりがクラウド対応なのか?という事について本エントリではすこし掘り下げて説明したいと思います。

まず、今まで提供してきた Java EE (Web コンテナ/EJB コンテナ) コンテナは、既存のエンタープライズ要件を十分に満たしてきたわけですが、今後 Java EE はクラウドに対応する必要があると考えています。

Java EE 6 までに提供してきたものは下記が上げられます、そしてこれらの内今すぐクラウド環境に適用できる物もあります。

  • コンテナ(Web/EJB)
  • サービス、インジェクト可能なサービス
  • リソース管理
  • 大規模クラスタ対応(Java EE インスタンスのスケール)
  • セキュリティモデル
    • 境界や規制が必要な環境への適用を可能とする。

しかし、クラウド環境に対応するためには上記では不十分で、追加で考慮しなければならない点があります。例えば下記のような点がクラウド対応に必要だと考えています。

  • リソースと状態管理の厳密化

今までは、アプリケーションサーバのインスタンス毎に状態を管理でき、アプリケーション毎に状態管理を行う事はできませんでしたが、アプリケーション中で使用するスレッドの使用ポリシーの定義ができるようになる他、アクセスするリソースに対する定義がアプリケーション単位でできるようになります。またアプリケーションサーバは定義された内容について監視ができるようになります。

  • アプリケーション間の独立性

特定のアプリケーションを起動する事によりスレッドやメモリが消費されますが、それが他のアプリケーションに対して影響を与えてしまうのは問題です。そこで、アプリケー ション間の独立性を確保し他への影響を及ぼさないようにする必要があります。このようにアプリケーションが他のサービスに影響しないように独立して稼働できるような定義ができる他、サービスの共有等も定義もできるようにしたいと考えています。

  • NRDBMS,キャッシュアクセスに関する標準APIの提供

クラウドを考える際 Amazone の S3 といったストレージサービスのように、ストレージやキャッシュに対してデータを保存する仕組みが必要です。現在は、Java EE でこのようなクラウド環境のストレージサービスに対してデータを保存する共通 API が提供されておらず、個別の実装が必要です。そこで Java EE の API でこれらのストレージサービスに対してアクセスできる API を提供する必要があると考えています。

  • 共通の管理、監視インタフェース

今までアプリケーションサーバのインスタンスの管理、監視用のAPI は提供されていましたが、クラウドのような環境ではアプリケーションレベルでの管理、監視用の API が必要と考えています。アプリケーションが起動された際に、その管理、監視用 API をコールする事で動的にアプリケーションの制御ができるようになります。

  • アプリケーションのバージョニング

アプリケーションのバージョニングにおいては、同一アプリケーションの複数バージョンを扱えるようにし、柔軟にアプリケーションのバージョンアップができるようにする必要があると考えています。(GlassFish v3.1は既に一部対応)アプリケーションの更新に伴い、RDBMS のスキーマ等が変わった場合に、その定義ファイル等をマイグレーションするのはとても困難でした。同一アプリケーションで複数のバージョンを持たせる事で、よりかんたんにアプリケーションのバージョンアップ/ロールバックが可能になります。

現在上記のような点を改善しクラウド環境で利用できるように考えています。「現在 Java EE 7 は仕様を検討し始めた段階、上記が全てではありません」。Java EE 7 のクラウド対応に関するコメント等を JCP/GlassFish コミュニティ等で受け付けています。ご意見、ご要望がある方は是非これらのコミュニティへフィードバックをお送りください。

また、クラウド対応以外の各種仕様に関するアップデートの一部も下記に記載します。この中で最も大きく変わりそうなのは JMS だと思われます、今までよりもかんたんに JMS の開発ができるような方向で改良が加えられる予定です。

  • JavaServer Faces 2.1  (マイナーアップグレードで JavaEE 7 前に利用可能予定)
    • UIData の瞬間的な状態保存
    • XML ビューのクリーンアップ
    • Facelet からのキャッシュAPI
  • JavaServer Faces 2.2
    • HTML 5 対応
    • HTML 5 タグへの対応
    • ブラウザ機能の検出
    • HTML 5 用コンポーネント
      • 音声/動画のサポート
    • 頻繁に利用される API の標準化
      • Apache MyFaces Trinidad PageRsolver
      • Oracle ADF ApplicationContextManager
    • JSR 276: Design-Time Metadata for JavaServerTM Faces Components サポート
    • 既存機能の拡張
      • モバイルレンダーキット
      • コンポジットコンポーネント
      • パフォーマンスの改善
  • JMS 2.0
    • API における曖昧さと、不確実性を解決
    • 既存 API の複雑性を解決
    • 不完全かつオプションの仕様のJava EEへの統合
    • 共通のベンダ拡張/新機能の標準化
    • 他言語や他の仕様の統合
  • WebTier
    • WebSocket プロトコルのサポート
    • JSON API のサポート
    • HTML 5 のサポート
    • NIO.2 ベースの Web コンテナ
  • JPA 2.1
    • ※ コミュニティからの改善要望を受付中 ※
    • JPA 2.0 に対する機能追加を予定
  • モジュール化

Java EE におけるモジュラリティについてですが、Java EE のモジュール対応は Java EE 8 で対応する予定です。ご存知の通り、Java SE の Project Jigsaw のモジュール機能が、Java SE 8 で実装されるため、Java EE 7 のリリース時点では対応が (Java EE 7 の方が Java SE 8 より早くリリースする可能性が高いため) 困難でJava EE 8 での対応を予定しています。

  • ロードマップ
    • JAX-RS 2.0 と JPA 2.1 は近々登録予定
    • JSF 2.2, Servlet 3.1, EJB 3.2, JMS 2.0は今後登録予定。
    • 2012 年にリリース予定

最後に、

今まで (Java EE 6 まで) は企業環境で十分耐えられる技術や API を提供してきました。これらは現時点でもすぐクラウド環境に適応する事が可能な物もあります。一方、Java EE 7 は一から新しく仕様を再作成するのではなく、既存の技術に対してクラウド環境へ適用しやすい機能を追加で提供していく予定です。

また、今後の Java について若干触れておきたいとおもいます。
Java SE/EE に関して明確なロードマップを示されており継続して Java SE/EE を提供していく予定です。Java SE 7 は来年リリース予定ですし、Java EE も上記で記載したように提供に向けて今まさに議論が始まった所です。

Java に対する不安の声等もありますが、現時点で Oracle は Java をなくそうとか、コミュニティをおろそかにするという考えは一切なく、開発者の皆様の声を聞き、コミュニティを大事にしていきたいと考えています。例えば実際に、US  Oracle では、GlassFish コミュニティも大事にしコミュニティ活動をおろそかにしてはいけない、それどころか逆にコミュニティを拡大するようにというメッセージもでているくらいです。また OpenJDK の開発に IBM 殿が参加された事も、OpenJDK のコミュニティ活動、成果物である JavaVM に対してとても良いニュースでした。

Oracle になった後、Oracle は Java を囲い込むのではないか?金儲けをしようとしているのではないか?という声も聞こえますが、Oracle の Java に対する開発・提供方針は Sun の頃から変えずにやっていこうと動いています。これだけ広く浸透した Java を Oracle が独占したりする事はありません(少なくとも現時点でそのようなメッセージは一切ないですし、例えば、OpenJDK を GPL v2 のライセンスでフォークして頂いてもいいです) ので今後も Java を安心してお使いください。

明日は、Java Advent Calendar -ja 2010Seacolor さんです。

2010年12月24日 at 6:25 PM 2件のコメント

GlassFish v3.1 の新機能概要

先日の JavaFX & GlassFish 合同勉強会で発表した資料とデモを公開します。

また、デモを行った際の手順も下記に記載します。

GlassFish v3.1の入手はコチラから

WebSocket サンプルアプリケーションの入手はコチラから


zip 版 GlassFish をインストールする為、unzip してください。

# unzip latest-web.zip


次にドメインを起動します。下記のコマンドを実行してください。

# asadmin start-domain

 


次にクラスタを作成します。下記のコマンドを実行してください。

# asadmin create-cluster cluster1

 


次に、SSH で操作ができるようログインパスワード(相手ノードのパスワード)
を “AS_ADMIN_SSHPASSWORD”に設定し、setup-ssh サブコマンドを実行してください。
※ setup-ssh サブコマンドは後に出てくるパスワードエイリアスが使用できないため、この時点では相手システムのパスワードを生のテキストファイルに記載し、設定完了後削除してください。

④ ノードへのログインパスワード設定

# echo “AS_ADMIN_SSHPASSWORD=password” > /tmp/password

 
⑤ SSH 公開鍵・秘密鍵の作成(ローカル)、authroized_keys の作成(リモート)

下記のコマンドを実行するとホームディレクトリの.sshディレクトリ配下にid_rsa、id_rsa.pubの2ファイルを作成します。また相手システムのホームディレクトリ .sshディレクトリ配下にauthroized_keysを無ければ作成し、公開鍵を追加します。これにより、SSH 経由で処理ができるようになります。

# asadmin –passwordfile=/tmp/password –interactive=false setup-ssh –sshuser root –generatekey=true glassfish-node1


下記のコマンドを実行すると、ドメイン管理サーバから相手システムに GlassFish のバイナリをインストールします。

# asadmin install-node –installdir /usr/local/glassfish3 –sshuser root –sshkeyfile ~/.ssh/id_rsa glassfish-node1

 

⑦ パスワード・エイリアスの作成
GlassFish v3.1 からパスワードのエイリアスを使用できるようになりました。管理パスワードの他、DB 設定においても生テキストのパスワードを入力する必要がなくパスワード・エイリアスを使用してセキュアな管理ができるようになります。

# asadmin create-password-alias ssh-password

 

⑧ パスワードファイルの作成 (bash の場合)

# echo “AS_ADMIN_SSHPASSWORD=${ALIAS=ssh-password}” > /tmp/p


パスワードエイリアスを設定後、パスワードエイリアスを指定したパスワードファイルを使用して GlassFish のノードを作成します。

# asadmin –passwordfile /tmp/p create-node-ssh –nodehost glassfish-node1 –sshuser root –sshkeyfile ~/.ssh/id_rsa –installdir /usr/local/glassfish3 node1


ノード作成後、クラスタ(cluster1)に含まれるインスタンスを作成します。

# asadmin create-instance –node node1 –cluster cluster1 instance1

 

⑩’ JDK のインストールパスを設定
システムに応じては JDK のインストールパスが異なるため 必要な場合 JDK のインストールパスを設定します。

# asadmin set “configs.config.cluster1-config.java-config.java-home=/usr/jdk/jdk1.6.0_23”


インスタンスを作成しましたので、インスタンスを起動します。

# asadmin start-instance instance1

 

⑫ GlassFish インスタンスの一覧表示
list-instances サブコマンドでインスタンスの一覧を表示する事ができます。

# asadmin list-instances

 

⑬ Cluster に対する WebSocket の有効化
GlassFish v3.1 から WebSocket を利用できるようになりました。GlassFish v3.1 で WebSocket を有効化するためには下記のコマンドを実行してください。

# asadmin set configs.config.cluster1-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

 

⑭ WebSocket サンプルアプリケーションの配備
冒頭で示した URL よりサンプルアプリケーションを入手しデプロイしてください。

# asadmin deploy –target cluster1 grizzly-websockets-chat-1.9.26.war

2010年12月21日 at 9:24 AM 1件のコメント

EJB 3.1 の Singleton はインスタンス単位で有効

皆様、本件につきまして皆様に誤解を与え大変申し訳ございませんでした。
過去、私が Java EE 6 の EJB 3.1 で Singleton クラスについて説明した際、Singleton クラスは異なるJavaVM(クラスタ環境)で1インスタンスを保証すると説明しておりました。このページで説明する資料の P30 など。しかしながら、EJB 3.1 の仕様を改めて確認した所、下記の記載がございました。

JSR 318: Enterprise JavaBeansTM,Version 3.1
4.8 Singleton Session Beans
A Singleton session bean is a session bean component that is instantiated once per application. In cases where the container is distributed over many virtual machines, each application will have one bean instance of the Singleton for each JVM.

当初、GlassFish v3.1 でクラスタを跨ぐ Singleton をサポートする計画で開発が進められていた事を知っていた事もあって上記解釈を間違えてしまいました。
上記の事実は GlassFish v3.1 の EJB の拡張部分について確認していた際、クラスタ環境での Singleton をサポートしないという下記の記載があり気付き、再度上記仕様を確認致しました。

EJB 3.1 Singleton support
No new work is needed to support the EJB 3.1 spec behavior of per-JVM singleton instance creation. We evaluated using the EJB Singleton component as the basis of a new per-cluster Singleton, but the programming model is not a good fit.

GlassFish Issue Tracker
上記 Issue Tracker にも Singleton はクラスタ単位で作成されるのではなくそれぞれのインスタンス(JVM)単位で作成される事が明記されております。
また、この情報は高可用性管理ガイド、アプリケーション開発ガイド、アプリケーション配備ガイドに記載する旨記載されておりました。

本件につきまして私の誤解から間違えた内容を伝えてしまった事を心よりお詫び申し上げます。

2010年12月15日 at 12:57 AM

Java SE 7, 8 関連の JSR が承認

Java SE 7, 8 に関連した下記 4 つの JSR(Java Sepcification Request)が
11 月 JCP(Java Community Process) に登録されておりましたが、
12 月 7日 下記の全てが Executive Committee によって承認されたようです。

  • JSR 334: 小さな言語仕様の拡張(Project Coin)
  • JSR 335: Lambda 表記 (Project Lambda)
  • JSR 336: Java SE 7 に含まれる新機能
  • JSR 337: Java SE 8 に含まれる新機能

 
Mark Reinhold のブログ記事に下記のコメントがアップデートされております。
Update 2010/12/7 00:06 — The Executive Committee approved all four JSRs after a one-week extension of the voting period. Onward!

2010年12月7日 at 5:55 PM 1件のコメント

Oracle は今後も Java に対して積極的に投資します

Duke

今日から日本 Oracle の Java エバンジェリストとして再活動します。どうぞ宜しくお願いします。Sun と Oracle の統合後、多くの皆様が Java に対して不安を抱かれていたかと思います。また実際、私にも「Oracle は Java をどのように扱うの? Java は終わったの ?! 」等のご意見を頂いた事もあります。これら皆様が抱える不安の声は社内でも問題となり、社内の様々な部門から Java に関する窓口設置の要望があがりました。
そして今回、私が Java エバンジェリストとして再度アサインされた事は、
日本 Oracle からの皆様に対するメッセージの一つと思っております。

「日本 Oracle は今後も Java に対して投資すると共に情報発信してまいります。ご安心ください。」

今後、Java エバンジェリストとして様々な事を行っていくかと思いますが、日本 Oracle として、そして Java エバンジェリストとして、まずは下記のような事を行って行きたいと思っております。

● 日本 Oracle における Java の窓口を用意する予定です。
● Java に対する継続的なメッセージアウトを行います。(ブログ、講演等で)
■ 上記を通じJava に対する皆様の不安を払拭していきます。
■ Java が今後も安心してお使いいただけるプラットフォームである
事を、ご理解頂けるよう努めてまいりたいと思います。
● 2012 年開催予定の JavaOne (Tokyo or Yokohama ?!) の成功に向けて
各種方面の調整等を行っています。

以上、今後ともどうぞ宜しくお願いします。
シニア Java エバンジェリスト:寺田

2010年12月1日 at 2:59 PM


Java Champion & Evangelist

ご注意

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

カレンダー

2010年12月
« 11月   1月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

Twitter

clustermap

ブログ統計情報

  • 1,013,624 hits

Feeds