GlassFish

GlassFishは、サン・マイクロシステムズ(サン)が中心となって開発したオープンソースのJava EE(現Jakarta EE)準拠アプリケーションサーバーです。その後、サンを買収したオラクルによってコミュニティが継続され、2017年にはJava EEの策定がEclipse Foundationに移管されたことに伴い、GlassFishも同組織に寄贈されました。

本稿では、特に断りのない限り、アプリケーションサーバーとしてのGlassFishを指し、コミュニティについては「GlassFishコミュニティ」と明記します。

GlassFishは、設計、開発、テストのすべてをオープンソースコミュニティで行っています。かつてはオラクル(旧サン)が商用サポートを提供していましたが、GlassFish 4.0以降は廃止され、開発者向けのJava EE参照実装としての役割に重点が置かれています。ライセンスは、Eclipse Public License (EPL)とクラスパス例外を含むGNU General Public License (GPL)の二重ライセンスです。

歴史



GlassFish v1


GlassFishは、Sun Java System Application Server 8.xの後継として、サン初のオープンソースアプリケーションサーバーとして開発されました。2005年6月6日にプロジェクトが発足し、2006年5月4日に最初のバージョンであるGlassFish v1がリリースされました。v1の主な特徴は以下の通りです。

Java EE 5準拠(参照実装)
オープンソース(ライセンスはCDDLとGPL)
Metro (JAX-WS)やJAXBなど、他のプロジェクトの優れたコンポーネントを採用
年間330万ダウンロード以上を目標
Sun Java System Application Server 9.0として、サンが商用サポートを提供

GlassFish v1は、1回のアップデートリリース(無償)と5回のパッチリリース(サンの有償サポート)が行われました。

GlassFish v2


GlassFish v1はJava EE 5の参照実装としての側面が強く、単一インスタンスに特化していました。2番目のメジャーリリースであるGlassFish v2では、その点が大幅に改善され、以下の新機能が追加されました。

クラスタリングとHADBの提供
商用レベルの管理・監視機能(Webベースの管理コンソール、ドキュメント、CLI)
オールインワンパッケージ(SJS AS 8.xの複数のエディションを統合)
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回のパッチリリース(サン/オラクルの有償サポート)が行われ、今後もパッチリリースが予定されていました。なお、GlassFish v2.1において、サンにおける名称がSun GlassFish Enterprise Server 2.1に変更され、以降、バージョン番号がコミュニティ版と商用版で統一されました。

SailFin


サンとエリクソンによる「Communication Application Server」を構築するプロジェクトで、2007年5月8日にGlassFishのサブプロジェクトSailFinとしてJava Oneで発表されました。SailFinは、エリクソンから提供されたSIP Servlet を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を採用)
Metro Webサービスフレームワークとマイクロソフト製品(.NET Framework 3.5)との相互接続性
非同期I/O (Comet) に対応
従来の管理コンソール、CLIに加え、RESTful管理チャネルを追加
インストーラ版に加え、ZIPアーカイブ版による配布を開始

2010年1月27日にオラクルによるサンの買収が完了すると、GlassFishのサポートはオラクルに引き継がれました。2010年6月18日、GlassFishバージョン3.0.1がリリースされ、ブランドがサンからオラクルに移行しました。オープンソース版がGlassFish Server Open Source Edition、オラクル製品版がOracle GlassFish Serverへと名称変更されました。また、このリリースからOracle JRockitが正式サポートされるようになりました。

GlassFish v3.1


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

クラスタ対応(SSHプロビジョニングを採用)
アプリケーションのバージョニング対応
ドメイン管理サーバの高可用性
HTML5 WebSocket対応
管理・監視機能の強化(DTraceによるモニタリング)
WebLogicとの互換性(WebLogicのデプロイメント記述子をサポート)

2011年7月28日にはバージョン3.1.1がリリースされました。主な変更点はJDK7対応、AIXサポートの追加、およびバグフィックスです。2012年2月にリリースされたバージョン3.1.2では、バグフィックスに加え、開発中止となったバージョン3.2の一部機能(DCOMプロビジョニングによるクラスタ構成など)が追加されています。バージョン3.1.x系列の最新版は2012年7月15日にリリースされた3.1.2.2です。

GlassFish 3.2


GlassFish 3.1のアップデート版としてGlassFish 4と並行して開発が進められていましたが、GlassFish 4に注力するため開発は中止されました。実装予定の新機能の多くはGlassFish 4で実現されました。

GlassFish 4.0


GlassFish 4.0は2013年6月11日にリリースされたメジャーバージョンで、Java EE 7の参照実装です。GlassFish 3.xのアーキテクチャをベースとしています。開発段階ではPaaS型のクラウドへの対応を予定していましたが、この機能はJava EE 8へ延期となったためリリースから除外されています。このバージョンはJava EE 7の参照実装であり、Oracleによる商用サポート対象からは除外されています。

GlassFish 4.1


GlassFish 4.x系列のアップデートは、当初コミュニティ向けのGlassFish 4.0.1と商用サポートを含むGlassFish 4.1の二本立てで計画されていましたが、OracleによるGlassFish 4.x系列の商用サポート打ち切りが発表されました。GlassFishの開発は継続されるものの、再び開発者向けのJava EEの参照実装であると位置づけられました。Oracleは商用サポートが必要な場合は、同社の別のアプリケーションサーバーであるWebLogicへの移行を推奨しています。GlassFish 4.1はキャンセルされ、GlassFish 4.0.1のみ開発が継続されました。

GlassFish 4.1.1


2015年9月24日にリリースされたGlassFish 4.x系列の2番目のアップデートです。当初はGlassFish 4.2と呼称されていましたが、開発途中でGlassFish 4.1.1に変更されました。主な変更点はコンポーネントのアップデートです。このバージョンのリリースをもって、GlassFishの開発TrunkはGlassFish 5系列に移行しました。

GlassFish 4.1.2


2017年3月31日にリリースされました。

GlassFish 5.0


2017年9月21日にJava EE 8の参照実装としてリリースされました。

GlassFish 5.1


2019年1月29日にリリースされました。Eclipse Foundation寄贈後の最初のリリースです。

技術



モジュールサブシステム (GlassFish v3)


GlassFish v3は、GlassFish OSGiランタイムとGlassFish Kernel (HK2: Hundred-Kilobyte Kernel)の2つのモジュールサブシステムによってサーバー全体がモジュール化されています。GlassFish OSGiランタイムはOSGi Release 4に準拠したランタイムを利用可能で、組み込みのランタイムとしてApache Felixが採用されています。GlassFish KernelであるHK2は、OSGiランタイムだけでは補えないモジュール管理機能を提供します。OSGi対応前はすべての機能をHK2のモジュールとして作成していたため、現在でもGlassFishのモジュール(OSGiバンドル)の実装にはHK2のAPIが使用されています。

Nucleus


GlassFish v3のカーネルと主要部分はNucleusと呼ばれています。構成は以下の通りです。

Config Framework - 設定情報ファイル (domain.xml) とそれを管理するフレームワーク
CLI Framework - コマンドライン・インタフェース
Grizzly - リクエスト・ディスパッチャ
Monitoring Framework - 監視フレームワーク
Security Service - SSL等のサポート
REST Backend - REST管理チャネル
* IPS

IPS


IPS (Image Packaging System) は、Open[[Solaris]]プロジェクトで開発されたパッケージ管理フレームワークです。ソフトウェアのインストール、アップグレード、削除などのライフサイクル管理を担います。GlassFish v3以降は標準の更新ツールとして採用されています。

Grizzly


Grizzlyは、GlassFishで採用されている高性能なリクエストディスパッチャです。Java NIOを用いて非ブロッキングI/Oを活用することで、1リクエスト当たりのスレッド生成数を抑えることに成功しています。GlassFish v3ではOSGiバンドルとして再実装され、v4ではさらに性能が向上しています。

CLI Framework


Monitoring Framework


REST Backend


高可用性


Java EE参照実装(サブプロジェクト)


Java EE参照実装は、サブプロジェクトであるMetro (JAX-WS)、Jersey (JAX-RS)、Mojarra (JSF)、OpenMQ (JMS)、Tyrus (WebSocket API)、 Processingでそれぞれ開発されています。また、Weld (CDI)、Hibernate Validator (Bean Validation)、EclipseLink (JPA)、JBatchなど外部の有力な参照実装も採用しています。

Metro


JAX-WSの参照実装であり、Apache Axis2より高速です。SOAP通信において、Microsoft .NET Frameworkとの相互接続性が保証されています。

Jersey


JAX-RSの参照実装であり、GlassFish v3ではREST Backendの基盤としてNucleusに含まれています。

Mojarra


OpenMQ


Tyrus


Processing


多国語版


GlassFish v2より、日本語、中国語(簡体字・繁体字)、韓国語、スペイン語、フランス語、ドイツ語を含む多国語版がリリースされていましたが、GlassFish 4.1以降、再び他言語版の配布はなくなり更新ツールによる対応に戻されました。

サードパーティーによる商用サポート


GlassFish自体はOracleによる商用サポートが終了しましたが、いくつかのベンダーやコンサルティングファームがサードパーティーサポートを継続しています。Payaraは、GlassFishの派生版であるPayara Serverのサポートを提供しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。