GlassFish

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 3.2

GlassFish 3.1のアップデート版としてGlassFish 4と並行して開発が進められていた。GlassFish 4までの橋渡しとしていくつかの新機能を実装するプラットフォームとなる予定だったが、GlassFish 4に注力するため開発は中止された。実装予定の新機能の多くはGlassFish 4で実現されたが、既に完成していた機能についてはバージョン3.1.2にバックポートされる形で取り込まれた。

GlassFish 4.0

GlassFish 4.0は2013年6月11日にリリースされたメジャーバージョンであり、Java EE 7の参照実装でもある。GlassFish 3.xのアーキテクチャをベースとしている。開発段階ではPaaS型のクラウドへの対応を予定しており、従来の管理コンソールに加え、PaaS環境の管理・監視を行うためのPaaSコンソールを有していた。この機能は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.0.1の開発は停滞し、当初予定していた2013年終わりにはリリースできなかった。その間にコンポーネント単位でのアップデートは急速に進み、最終的にはGlassFish 4.1とバージョンを変えて2014年9月9日にリリースされた。

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が採用されている（ただし、KnopflerfishやEquinoxなども利用可能である）。
GlassFish KernelはHK2と略される、JSR-277ベースのモジュールサブシステムである。HK2はOSGiランタイムだけでは補えないモジュール管理機能を担当している。OSGi対応前はすべての機能をHK2のモジュールとして作成していたため、今でもGlassFishのモジュール（OSGiバンドル）の実装にはHK2のAPIが使用される。
GlassFish上では任意のOSGiバンドルを利用可能なため、例えばSpring DMとJava EEを連携させるような運用も可能である。

IPS

IPS (Image Packaging System: pkg(5)) は、OpenSolarisプロジェクトで開発されたパッケージのインストール、アップグレード、削除などのソフトウェアのライフサイクル管理のために提供されるフレームワークである。 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リクエスト当たりのスレッド生成数を抑えることに成功している。GlassFish v3ではOSGiバンドルとして再実装されたGrizzly 1.9.18以降、v4ではさらに性能が向上したGrizzly 2.3.3以降が採用されている。
GlassFishでは、サーブレットコンテナとしてもGrizzlyが用いられているが、一部の処理にはTomcat 5.5に由来するコードが使用されている。

Java EE参照実装（サブプロジェクト）

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

Metro

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

Jersey

JAX-RSの参照実装である。
GlassFish v3ではREST Backendの基盤でありNucleusに含まれている。そのため他のJava EEサーバと異なり、GlassFish v3ではJAX-RS実装であるJerseyをサーバ本体から切り離すことができない。

多国語版

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

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

GlassFish自体はOracleによる商用サポートを外されたが、いくつかのベンダーやコンサルティングファームによるサードパーティー・サポートが継続されている。中でも初期からサポートを行っているC2B2社のPayaraは、GlassFishおよび同社によるGlassFishの派生版であるPayaraの双方のサポートを提供している。