Eclipse Foundationは、軽量オープンソースのアプリケーションサーバーであり、長年にわたりJavaEEおよびJakarta EEのリファレンス実装かつ互換実装として機能してきたEclipse GlassFishのバージョン8.0.0をリリースした。
本リリースでは、バグ修正や依存関係の更新に加え、新機能として仮想スレッドのサポート、アプリケーションセキュリティの強化、データアクセスの改善が含まれる。
OmniFish社のチームが主導した15回のマイルストーンリリースを経て、GlassFish 8.0.0は最小要件としてJDK 21を必要とし、JDK 25をサポートし、Jakarta EE 11の互換実装である。
仮想スレッドのサポートには、Jakarta Concurrency 3.1仕様に基づく管理エグゼキューターと、HTTPおよびIIOPリクエスト向けのGlassFish Grizzly 5.0の仮想スレッドプールが含まれる。これにより、GlassFishは最小限のオーバーヘッドで多数の同時リクエストを処理できる。
GlassFishはJakarta Data 1.0仕様をサポートし、Jakarta NoSQL仕様の互換実装であるEclipse JNoSQLとの初期統合をしている。Jakarta Dataで定義されるリポジトリパターンは、ボイラープレートの削減、ドメインモデルやユースケースに基づくリポジトリ整理、オフセットベースおよびカーソルベースのページネーションの両方のサポートなどにより、開発者体験を改善する。
GlassFishは、MicroProfile JWT Authentication 2.1およびJakarta Security 4.0仕様を統合することで、強化されたセキュリティを提供する。これにより、開発者はJWTベースの認証メカニズムを、安全なRESTエンドポイントやユーザーインターフェースページと組み合わせることができる。
OmniFishは、2022年4月の設立以来、David Matějček氏をプロジェクトリードとしてGlassFishを主導してきた。OmniFish社は、すべてのGlassFishリリースに対する直接サポートを提供し、すべての管理タスクの正確性とGlassFishの徹底したテストを保証している。共同創業者Arjan Tijms氏、Ondro Mihályi氏、Matějček氏に加え、WebエンジニアのBauke Scholtz氏は、GlassFish、Jakarta EE、Javaアプリケーション開発、Javaミドルウェアの本番サポートにおいて長年の経験を有する。
15回のマイルストーンリリースにわたるOmniFishの歩みとGlassFish 8.0.0の最終提供におけるハイライトと課題について尋ねられた際、Mihályi氏はInfoQに次のように語った。
すべての新しいメジャーリリースは、計画、実行、そして全体の整合性を保つ点で課題です。GlassFishは単一のモノリシックなプロジェクトではなく、多数の内部および外部モジュールで構成されています。最終的なGlassFish 8バージョンのために、すべてを同期し、すべてのモジュールを最終版としてリリースする必要がありました。同時に、Jakarta EE TCKチームから、テストスイートを実行できる早期マイルストーンを提供するよう圧力がありました。さらに突然、Jakarta EEは当初Java 21のみをサポートする計画であったにもかかわらず、Java 17もサポートすることを決定しました。Jakarta EE 11をリリースするには、少なくとも1つの認証済みサーバーが必要であり、その時点で現実的に認証可能だったのはGlassFishだけでした。そのため、Java 17向けのバージョンも提供する必要がありました。これらすべてがGlassFishチームと、その背後で支え、作業の大部分を担うOmniFishに大きなプレッシャーを与えました。
GlassFish 8.0のハイライトの一つは、新しいJakarta Data仕様への独自の対応です。GlassFishはNoSQLとPersistence(JPA)の両方のリポジトリをサポートします。我々は、NoSQLデータベース向けに再利用可能なData実装を持つEclipse JNoSQLプロジェクトと協力しました。OmniFishはJNoSQLにSQLデータベースのサポートを追加しました。両プロジェクトは恩恵を受けました。GlassFishはNoSQLとJPAエンティティの両方に対するDataリポジトリのサポートを得て、JNoSQLは再利用可能なJPAバックエンドのサポートを得ました。
もう一つのハイライトは仮想スレッドのサポートです。この取り組みには長い歴史があります。Java 21がリリースされた直後、OmniFishはHTTPリクエストを仮想スレッドで実行するGlassFish拡張を構築しました。しかし、GrizzlyモジュールがJava 21を必要とするコードを含む準備ができていなかったため、これを正式にGlassFishプロジェクトへ追加するのは課題でした。最終的に、Java 21を要件とするGrizzly 5とGlassFish 8に追加することに成功しました。管理エグゼキューターでの仮想スレッドサポートを実現するため、我々はPayara社と緊密に協力し、同社のサーバーでも使用されているGlassFish Concurroコンポーネントを共同で開発しました。
目立たないものの、言及すべき点は他にも多数あります。我々はGlassFish 8の立ち上げと同時にGlassFish 7の強化にも取り組んでいました。GlassFish 7.1での初期JPMSモジュール化を含む、多くの構造的および性能改善を導入し、それらをGlassFish 8に統合しました。総じて、GlassFish 8は新しいJakarta EEバージョンだけでなく、MicroProfile Health、最新Javaバージョンのサポート、いくつかのGlassFish固有の新機能、そして包括的なテストスイートとそれを維持するOmniFishチームによって保証された本番品質をもたらします。
GlassFishは30年に及ぶ豊かな歴史を持つ。1996年1月、JDK 1.0のリリースと同じ月にKiva Enterprise Serverとして初めて登場した。その後、1997年にNetscape社がKivaを買収した際のNetscape Application Server、1999年にSun社とNetscape社が提携して誕生したiPlanet、2002年のバージョン7リリース時のSun ONE Application Server、2004年のバージョン8リリース時のSun Java System Application Serverを経て、2005年にソースコードが寄贈され、GlassFishという新たなオープンソースプロジェクトとして再出発した。GlassFish 1.0は、2006年にJava EE 5の互換実装となった。
本リリースの詳細は、リリースノートで確認可能だ。