GlassFish
| 開発元 | オラクル(サン・マイクロシステムズ) |
|---|---|
| 最新版 | v3.1.2.2 / 2012年7月15日 |
| 対応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準拠(参照実装)である。
- オープンソースである(ライセンスはCDDLとGPL)。
- 他のグループから多数の優れたコンポーネントを採用している。例えば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をインストールする必要もなく、ドメイン管理サーバが自らのインスタンスをアーカイブしてノードに転送しリモートインストールを実行する。v3.1.2以降、Windowsプラットフォームに限りSSHの代替としてDCOMのRPCを使用することが可能となっている。
- アプリケーションのバージョニング対応。サーバ上に同じアプリケーションの複数のバージョン(例えば開発版、リリース候補版、製品版など)を同時に配備しておき、その中から1つのバージョンを選んで稼働させることができる。配備できるアプリケーション数とバージョン数は事実上無制限である。
- ドメイン管理サーバの高可用性
- HTML5 WebSocket対応
- 管理・監視機能の強化。DTraceによるモニタリングが正式サポートされる。
- WebLogicとの互換性の提供(WebLogicのデプロイメント記述子をサポートする)。
2011年7月28日にはバージョン3.1.1がリリースされた。主な変更点はJDK7対応、AIXサポートの追加およびバグフィックスである。2012年2月にリリースされたバージョン3.1.2ではバグフィックスに加え、開発中止となったバージョン3.2の一部機能(DCOMプロビジョニングによるクラスタ構成など)が追加されている。 バージョン3.1.x系列はバージョン4.0系列の開発と並行してメンテナンスが行われている。2012年8月現在の最新版は3.1.2.2である。
GlassFish 3.2[編集]
GlassFish 3.1のアップデート版であり、GlassFish 4と並行して開発が進められた。GlassFish 4までの橋渡しとしていくつかの新機能を実装するプラットフォームとなる予定だったが、リソースをGlassFish 4に集中するため開発は中止された。実装予定の新機能の多くはGlassFish 4で実現されることになるが、完成していた機能についてはバージョン3.1.2にバックポートされる形で取り込まれた。
GlassFish 4[編集]
GlassFish 4.0は現在開発が進められているバージョンであり、Java EE 7の参照実装でもある。GlassFish 3.xのアーキテクチャをベースとして、PaaS型のクラウドに対応したものとなる[6]。バージョン4.0では従来の管理コンソールに加え、PaaS環境の管理・監視を行うためのPaaSコンソールが新たに追加される。
技術[編集]
モジュールサブシステム(GlassFish v3)[編集]
GlassFish v3はGlassFish OSGiランタイムとGlassFish Kernel(HK2: Hundred-Kilobyte Kernel)の2つのモジュールサブシステムによりサーバ全体をモジュール化している。GlassFish OSGiランタイムはOSGi Release 4に準拠したランタイムを利用可能で、組み込みのランタイムとしてApache Felixが採用されている(ただし、KnopflerfishやEquinoxなども利用可能である)。
GlassFish KernelはHK2と略される、JSR-277ベースのモジュールサブシステムである。[7] HK2はOSGiランタイムだけでは補えないモジュール管理機能を担当している。OSGi対応前はすべての機能をHK2のモジュールとして作成していたため、今でもGlassFishのモジュール(OSGiバンドル)の実装にはHK2のAPIが使用される。
GlassFish上では任意のOSGiバンドルを利用可能なため、例えばSpring DMとJava EEを連携させるような運用も可能である。
IPS[編集]
IPS(Image Packaging System: pkg(5))は、OpenSolarisプロジェクトで開発されたパッケージのインストール、アップグレード、削除などのソフトウェアのライフサイクル管理のために提供されるフレームワークである。[8] 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リクエスト当たりのスレッド生成数を抑えることに成功している。[9] GlassFish v3ではOSGiバンドルとして再実装されたGrizzly 1.9.18以降が採用されている。
GlassFishでは、サーブレットコンテナとしてもGrizzlyが用いられているが、一部の処理にはTomcat 5.5に由来するコードが使用されている。[10]
Metro[編集]
JAX-WSの実装であり、Apache Axis2より90%高速である。[11] SOAP通信において、Microsoft .NET Framework 3.0および3.5との相互接続性が保証されている。
多国語版[編集]
GlassFish v2より英語の他、日本語、簡体字中国語、繁体字中国語、ハングル、スペイン語、フランス語、ドイツ語を含む多国語版リリースが行われている。[12]
脚注[編集]
- ^ http://blogs.sun.com/GlassFishForBusiness/entry/sjs_as_9_0_gf1
- ^ http://blogs.sun.com/pelegri/entry/overview_of_glassfish_v2
- ^ http://blogs.sun.com/GlassFishForBusiness/entry/overview_of_sjs_as_9
- ^ http://jcp.org/en/jsr/detail?id=289、当初はhttp://jcp.org/en/jsr/detail?id=116
- ^ これに伴い、ディレクトリ構造がGlassFish v2から大幅に変更されている。
- ^ http://glassfish.java.net/javaone2011/index.html
- ^ 当初、JSR-277はJava SE 7へ組まれる予定だったため、Java SE 7対応としてHK2を実装したものの、Java SE 7でJSR-277は不採用となった。
- ^ http://dlc.sun.com/osol/g11n/content/2009.06/IMGPACKAGESYS/ja/
- ^ Grizzlyの開発者の1人であるJean-Francoisによると、Grizzlyはわずか30スレッドで10,000接続を処理することができるとしている。
- ^ 大幅な改修が加えられているものの、コピーライトやクラス構成にその名残がある。なお、JSPエンジンはTomcatのJasperを拡張したものである。
- ^ http://blogs.sun.com/theaquarium_ja/entry/metro_90_better_performing_than
- ^ GlassFish v3のリリース当初は他言語版の配布がなく更新ツールによる対応であった。
関連項目[編集]
外部リンク[編集]
|
||||||||||||||