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のサポートを提供しています。