GlassFish

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索
GlassFish
開発元 オラクルサン・マイクロシステムズ
最新版 v3.1.1(2011年7月28日
対応OS クロスプラットフォーム
種別 アプリケーションサーバ
ライセンス Common Development and Distribution License & GNU General Public License
公式サイト http://glassfish.java.net/
テンプレートを表示

GlassFishは、サンを中心としたオープンソース・コミュニティと、同コミュニティで開発されたJava EE準拠のアプリケーションサーバの名称である。現在はサンを買収したオラクルによってコミュニティが継続されている。本項では以降、特別な断りのない限りアプリケーションサーバのことを指すものとし、コミュニティについてはGlassFishコミュニティと呼称する。

GlassFishは設計・開発・テストのすべてをオープンソース・コミュニティ上で行っている。また、オラクル(サン)による商用サポートも同時に行われている(商用版にはロードバランサなどオープンソースではないコンポーネントが追加されている)。GlassFishはCommon Development and Distribution License(CDDL)と、クラスパス例外を含むGNU General Public License(GPL)の二重ライセンスである。

目次

[編集] 歴史

[編集] GlassFish v1

GlassFishは、Sun Java System Application Server 8.xの後継製品であり、サン最初のオープンソース・アプリケーションサーバとして開発が開始された。GlassFishプロジェクトは2005年6月6日に発足し、2006年5月4日に最初のバージョン(GlassFish v1)をリリースした。GlassFish v1の概要は下記の通りである。

  • Java EE 5準拠(参照実装)である。
  • オープンソースである(ライセンスはCDDLGPL)。
  • 他のグループから多数の優れたコンポーネントを採用している。例えばMetro(JAX-WS)やJAXBなど。この中にはオラクルから提供を受けたTopLink Essentialsも含まれる。
  • 年間330万ダウンロード以上を目標とする。
  • Sun Java System Application Server 9.0として、サンによる商用サポートを提供する。

GlassFish v1は1回のアップデートリリース(無償)と5回のパッチリリース(サンの有償サポートによる)がリリースされた[1]

[編集] GlassFish v2

GlassFish v1はJava EE 5の参照実装としての色合いが強く、単一インスタンスに特化していた。2つめのメジャーリリース(GlassFish v2)ではその点を大幅に改善したものとなった。GlassFish v2の新機能は以下の通りである[2]

  • クラスタリングおよびHADBの提供。JXTAベースのインメモリ・レプリケーション・メカニズムが含まれる。
  • 商用レベルの管理・監視機能の提供。これには管理コンソール(Webベース)、ドキュメント、CLIの監視機能が含まれる。
  • オールインワン。SJS AS 8.xには複数のエディションがあったが、GlassFish v2ではそれらが統合された。
  • Metro Webサービスフレームワークとマイクロソフト製品(.NET Framework 3.0)との相互接続性の保証。
  • パフォーマンスの向上。オープンソース・アプリケーションサーバで唯一SPECjAppServer 2004ベンチマークを実施し、BEA WebLogicとIBM WebSphereを凌ぐ結果を出した。

GlassFish v2の最初のリリースは2007年9月17日に行われた。このバージョンのサンにおける名称はSun Java System Application Server 9.1である。 GlassFish v2は2011年1月時点で4回のアップデートリリース(無償)と21回のパッチリリース(サン/オラクルの有償サポートによる)がリリースされており、今後もパッチリリースが予定されている。 [3] なお、GlassFish v2.1において、サンにおける名称がSun GlassFish Enterprise Server 2.1に変更され、以降バージョン番号がコミュニティ版と商用版で統一された。

[編集] SailFin

サンとエリクソンによる「Communication Application Server」を構築するプロジェクトで、2007年5月8日にGlassFishのサブプロジェクトSailFinとしてJava Oneで発表された。SailFinは、エリクソンから提供されたSIP Servlet [4]をGlassFish v2.1へ統合したものである。SailFin 1.0はGlassFish v2.1と同時の2009年1月26日にリリースされた。サンによる商用版はSun Java System Communication Application Serverである。

[編集] GlassFish v3

もっとも新しいメジャーリリースとなるGlassFish v3は、Java EE 6の参照実装であると同時に、アーキテクチャを抜本的に見直し、OSGiモジュールサブシステムに対応した。機能を使われるときに初期化することで非常に高速な起動を実現し、また再起動の待ち時間を大幅に減少させることに成功している。この新しいアーキテクチャはGlassFish v3 Preludeとして先行してリリースされている。また、GlassFish v3ではJava EE以外のスクリプト言語にも本格的に対応しており、GlassFish上で動作するスクリプト言語実装も増加している。

[編集] GlassFish v3 Prelude

2008年11月6日にリリースされた最初のv3系がGlassFish v3 Preludeである。この製品はJava EE 5のサブセットを提供し、一部Java EE 6の機能を取り込んだものであった。Java EEには準拠していないが、サンによる商用サポートが提供されていた。

[編集] GlassFish v3

2009年12月10日、GlassFish v3がリリースされた。これはJava EE 6に準拠した最初のアプリケーションサーバである。当初予定していたクラスタ機能がGlassFish v3.1へ先送りとなったが、サンによる商用サポートは引き続き提供された。GlassFish v3の主な機能は以下の通りである。

  • Java EE 6の参照実装の提供。
  • OSGiモジュール化サブシステムに対応(Apache Felixを採用)[5]
  • Metro Webサービスフレームワークとマイクロソフト製品(.NET Framework 3.5)との相互接続性の保証。
  • 非同期I/O(Comet)に対応
  • 従来からの管理コンソール、CLIの管理ツールに加え、RESTful管理チャネルが追加された。これにより、JAX-RSアプリケーションからサーバの管理・監視ができるようになった。
  • インストーラ版に加え、ZIPアーカイブ版による配布が開始された。ZIPアーカイブ版はあらかじめデフォルト値でサーバが構成された状態で配布されるため、アーカイブを展開してすぐに利用可能である。

2010年1月27日にオラクルによるサンの買収が完了すると、GlassFishのサポートはオラクルに引き継がれた。2010年6月18日、GlassFishバージョン3.0.1がリリースされた。このリリースでは100のバグの修正と多言語化が実施されると同時に、ブランドがサンからオラクルに移行したのに伴い、オープンソース版がGlassFish Server Open Source Edition、オラクル製品版がOracle GlassFish Serverへと名称変更となった。またこのリリースからOracle JRockitが正式サポートされるようになった。2010年10月8日には製品版のパッチリリースが行われた。

[編集] GlassFish v3.1

GlassFish v3リリースで先送りされたクラスタなどの高可用性機能を実装したものがGlassFish v3.1である。このバージョンにより前メジャーバージョンで提供されていた機能が一通り揃うことになった。GlassFish v3.1は2011年2月28日にリリースされた。 GlassFish v3.1の主な機能は以下の通りである。

  • クラスタ対応。方式としてGlassFish v2に存在していたNode Agentを廃止し、新たにSSHプロビジョニングを採用する。SSHプロビジョニング方式では、クラスタノード側でSSHのサーバプロセス(デーモン)を起動しておくだけで、ドメイン管理サーバがシステムの初期化とドメイン管理サーバへの登録を行う。ノード側ではGlassFishをインストールする必要もなく、ドメイン管理サーバが自らのインスタンスをアーカイブしてノードに転送しリモートインストールを実行する。
  • アプリケーションのバージョニング対応。サーバ上に同じアプリケーションの複数のバージョン(例えば開発版、リリース候補版、製品版など)を同時に配備しておき、その中から1つのバージョンを選んで稼働させることができる。配備できるアプリケーション数とバージョン数は事実上無制限である。
  • ドメイン管理サーバの高可用性
  • HTML5 WebSocket対応
  • 管理・監視機能の強化。DTraceによるモニタリングが正式サポートされる。
  • WebLogicとの互換性の提供(WebLogicのデプロイメント記述子をサポートする)。

2011年7月28日にはv3.1.1がリリースされた。主な変更点はバグフィックスとAIXサポートの追加である。

[編集] 技術

[編集] モジュールサブシステム(GlassFish v3)

GlassFish v3はGlassFish OSGiランタイムとGlassFish Kernel(HK2: Hundred-Kilobyte Kernel)の2つのモジュールサブシステムによりサーバ全体をモジュール化している。GlassFish OSGiランタイムはOSGi Release 4に準拠したランタイムを利用可能で、組み込みのランタイムとしてApache Felixが採用されている(ただし、KnopflerfishEquinoxなども利用可能である)。
GlassFish KernelはHK2と略される、JSR-277ベースのモジュールサブシステムである。[6] HK2はOSGiランタイムだけでは補えないモジュール管理機能を担当している。OSGi対応前はすべての機能をHK2のモジュールとして作成していたため、今でもGlassFishのモジュール(OSGiバンドル)の実装にはHK2のAPIが使用される。
GlassFish上では任意のOSGiバンドルを利用可能なため、例えばSpring DMとJava EEを連携させるようなことも可能である。

[編集] IPS

IPS(Image Packaging System: pkg(5))は、OpenSolarisプロジェクトで開発されたパッケージのインストール、アップグレード、削除などのソフトウェアのライフサイクル管理のために提供されるフレームワークである。[7] IPSはOpenMQをGlassFish 2.1.1に統合する際にGlassFish v2に追加され、GlassFish v3以降は標準の更新ツールとして採用されている。GlassFish v3のオープンソース版と商用版のライセンス切り替えに伴う実装の変更は、IPSのコマンドにより比較的容易に実施できる。

[編集] Grizzly

GlassFishで採用されているハイパフォーマンスなリクエストディスパッチャがGrizzlyである。GrizzlyはGlassFishのHTTPサーバ実装プロジェクトとして2004年から開発が始められ、現在ではマルチプロトコル対応のネットワークサーバエンジンとなっている。Grizzlyは当初、サンのアプリケーションサーバで使用していたApache TomcatのCoyoteエンジンではGlassFishの要求性能を満たせなかったことから、Java NIOを用いて試験的に実装されたものであった。その後、TCP/UDP/SSLなどのマルチプロトコルに対応できる汎用性が注目され、GlassFish v2.1向け実装(Gryzzly 1.0.x)からアーキテクチャを大幅に変更し、SailFinのSIPにも容易に対応している。
GrizzlyはJava NIOによる非ブロッキングI/Oを活用することで、1リクエスト当たりのスレッド生成数を抑えることに成功している。[8] GlassFish v3ではOSGiバンドルとして再実装されたGrizzly 1.9.18以降が採用されている。
GlassFishでは、サーブレットコンテナとしてGrizzlyが用いられている。ただし、HTMLの解釈など一部の処理にはTomcatに由来するコードが使用されている。[9]

[編集] Metro

JAX-WSの実装であり、Apache Axis2より90%高速である。[10] SOAP通信において、Microsoft .NET Framework 3.0および3.5との相互接続性が保証されている。

[編集] 多国語版

GlassFish v2より英語の他、日本語、簡体字中国語、繁体字中国語、ハングル、スペイン語、フランス語、ドイツ語を含む多国語版リリースが行われている。[11]

[編集] 今後

オラクルは今後もGlassFishへの投資は継続されると表明している。今後のロードマップとしてv3.1.2とv4が計画されている。当初予定されていたv3.2は中止されている。Java 7への対応は3.1.1で実施された。2012年1月に3.1.2のコード凍結が実施され、RC版のリリースが予定されている。v4では3.2で予定されていた仮想化サポートやGlassFish PaaS機能の実装が予定されている。

[編集] 脚注

  1. ^ http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_0_gf1
  2. ^ http://blogs.sun.com/pelegri/entry/overview_of_glassfish_v2
  3. ^ http://blogs.sun.com/GlassFishForBusiness/entry/overview_of_sjs_as_9
  4. ^ http://jcp.org/en/jsr/detail?id=289、当初はhttp://jcp.org/en/jsr/detail?id=116
  5. ^ これに伴い、ディレクトリ構造がGlassFish v2から大幅に変更されている。
  6. ^ 当初、JSR-277はJava SE 7へ組まれる予定だったため、Java SE 7対応としてHK2を実装したものの、Java SE 7でJSR-277は不採用となった。
  7. ^ http://dlc.sun.com/osol/g11n/content/2009.06/IMGPACKAGESYS/ja/
  8. ^ Grizzlyの開発者の1人であるJean-Francoisによると、Grizzlyはわずか30スレッドで10,000接続を処理することができるとしている。
  9. ^ 大幅な改修が加えられているものの、コピーライトやクラス構成にその名残がある。なお、JSPエンジンはTomcatのJasperを拡張したものである。
  10. ^ http://blogs.sun.com/theaquarium_ja/entry/metro_90_better_performing_than
  11. ^ GlassFish v3のリリース当初は他言語版の配布がなく更新ツールによる対応であった。

[編集] 関連項目

[編集] 外部リンク

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語