失われた GlassFish の未来を求めて

この記事は GlassFish Advent Calendar 2014、2 日目です。前日は「GlassFish の 2014 年を振り返る」と題して、今年の GlassFish の動向についてお伝えしました。

本日のお題は、GlassFish ファミリーのうち日の目を見なかったものについて振り返ってみようというものです。GlassFish v3 以降は OSGi ベースのアーキテクチャーで再構築され、GlassFish v2 までとは似て非なる製品になっています。この変更は v2→v3 移行という悩みの種を植え付けてしまいましたが、一方で GlassFish (とその基盤である nucleus) を生かした新たな展開の可能性をもたらしました。

GlassFish v3 の新管理コンソール(案)

GlassFish v3 の開発中に、Ajax を多用した新しい管理コンソール (admingui) が提案されたことがありました(確か 3.0 build 50 前後だったと記憶しています)。筆者は当時の経緯について詳細を思い出せず、かつ証拠となる ML も消してしまったため、そういう事実があったということだけにとどめておきます。現在の管理コンソールは GlassFish v2 で採用されたものを修正しながら使い続けています。そのため JSF 2.x ではなく JSF 1.2 + Facelets で構築されているのです。

SailFin v3

SailFin は GlassFish をベースとした SIP サーバーです。SIP (Session Initiation Protocol) はTCP/IP ベースの音声電話・テレビ電話で使われる双方向通信プロトコルの 1 つで、最近は下火のようですが比較的大がかりな音声会議システムではまだ現役のものです。SailFin v1/v2 は GlassFish v2 に Ericsson から提供された SIP サーブレットをあらかじめ組み込んだ製品となります。SailFin はオープンソース製品で、商用版を Sun Java System Communication Application Server の名称で販売していました。

SailFin v1/v2 は GlassFish v2 ベースのサーバー製品でしたが、GlassFish v3 の開発が進むと、SIP サーブレットを GlassFish v3 に移植した次期バージョン SailFin v3 のプロジェクトが立ち上がります。GlassFish v3 は旧 Sun の技術陣が自信を持って世に送り出そうとしていた製品だけあって、Sailfin v3 にもそれなりの期待は寄せられていたと思われます。

しかし、Oracle による Sun 買収と、それに伴う Sun 製品の取り扱いの見直しにより、SailFin v3 の新規開発は中止に追い込まれました。同時期に他の旧 Sun 製品の多くも新規開発中止・現バージョンのサポートのみ Oracle のポリシー下で継続となりました。最終的には、GlassFish 自身の商用サポートも中止となってしまうのですが...

なお、サードパーティーによる GlassFish 4.x のサポートは海外のいくつかのコンサルティングファームが継続して行っています。一方、国内では GlassFish 4.x 単体のサポートは行われていません(主要ベンダーが GlassFish Community にコミットしていないため、Oracle がサポートを終了すればそれに合わせざるを得ないのです)。

PaaS コンソール

GlassFish 4.0 開発版に含まれていたクラウドサポートのための管理画面です。クラウド対応が Java EE 8 にスライドしたため、途中から GlassFish 4.0 には含まれなくなりました。さらには GlassFish 4.x 系以降の商用サポートが打ち切られ PaaS 機能は WebLogic Server に集約されたこと、クラウド機能自体 Java EE 8 からも外される可能性が否定できないことから、PaaS コンソールが日の目を見ることはないでしょう。

paas-login.png
Paas コンソール ログイン画面

paas-dashboard.png
PaaS コンソール ダッシュボード(最小構成)

PaaS コンソールの Look and Feel は WebLogic 11g/12c の管理画面によく似ています。WebLogic の管理画面のデザインを意識していたのかもしれません。なお、PaaS コンソールは初期状態では無効になっていて、必要に応じて GlassFish にデプロイする必要がありました。

なお、GlassFish 3.1 以降が搭載しているクラスタウェアは、ドメイン管理サーバー(DAS)から接続可能なコンピューターに対して DAS からの操作だけで GlassFish のノードを追加および削除できるもので、これをクラスターの負荷に応じて自動的に行えるようにしたものが、GlassFish 4/Java EE 7 が目指していたクラウドサポートの技術的基盤です。将来の Java EE でクラウドサポートが実現したとしても、GlassFish ほどスマートな対応ができるサーバー製品はおそらく現れることはないでしょう。

GlassFish 4.1 (当初ロードマップ版)

GlassFish 4.0 は 2013 年 6 月リリースを最優先したため、商用版として提供できるほどの品質を確保できませんでした。そのためリリース直後に以下のようなアップデート計画が公表されていました。

  1. 2013 年 Q4 を目処にコミュニティーで GlassFish 4.0.1 をリリースする。このバージョンでは GlassFish 4.0 の致命的なバグを中心としたバグフィックスに専念する。
  2. 2014 年に GlassFish 4.1 をリリースする。このバージョンではクラスター機能など商用版で求められる機能のテストを十分に行い、従来通りコミュニティー版と商用版の 2 本立てとする。また、この GlassFish 4.1 から Oracle による商用サポートを行う。

このロードマップは 2013年秋に Oracle によって反故にされ、Oracle の商用 Java EE サーバーは WebLogic に集約することとなりました。この件については大きな騒動となったため、まだ記憶に新しいことでしょう。

上記のロードマップを事実上破棄したにもかかわらず、コミュニティーからも Oracle からも新しいロードマップは発表されませんでした。しかし、2014 年 Q2 以降、GlassFish 4.0.1 とそのコンポーネントのアップデートが頻繁に実施されるようになり、Q3 に入るとアップデートが通常のバグフィックス以上のレベルに達したという理由から GlassFish 4.0.1 は GlassFish 4.1 とバージョンを変更しました。これにより当初ロードマップで提示された GlassFish 4.1 は名実共に消滅し、コミュニティー版の GlassFish 4.0.1 が今後の GlassFish のコードベースになることが確定しました。2014 年 9 月 の GlassFish 4.1 リリース後も開発は継続ししており、現在は GlassFish 4.2(仮称)が開発の trunk となっています(GlassFish 4.2 のスナップショット・リリースはまだ存在しません)。

まとめ

Sun では GlassFish を戦略的製品と位置づけていたようで、特に GlassFish v3 で導入されたモジュラー・アーキテクチャーがもたらす拡張容易性についてはこれを十分に生かそうとしていたようです。買収に伴い GlassFish の位置づけが変わってしまったことで、ポテンシャルを生かせなくなっただけにとどまらず、方々から偏見を持たれる製品になってしまったことは残念でなりません。

明日は「GlassFish Embedded Serverの注意点」についてお話しします。当該記事は昨年執筆したものの公開を忘れてそのままになっていたものに、最新の情報を補足します。