そのプログラム、Payara なら動きますよ (ja)

この記事は、Payara Advent Calendar 2016 初日の記事です。

私事で恐縮ですが、以前、Java 読書会 BOF の高橋さん (@boochnich) とお話しする機会がありまして、当時 Java 読書会で取り上げていた「Java EE 7 徹底入門」のサンプルが GlassFish 4.1 では動作せず、Payara ではなぜか動作したということを伺ったことがあります。著者側で動作確認を取ったはずのランタイムでサンプルプログラムが動作しないのはどうなのか、という話はさて置き、GlassFish 4.1 では動作しなかったプログラムが Payara では動作したという話は、日本 GlassFish ユーザー会の会長という立場上、よく耳にします。

お話し下さる皆様にはお伝えしていることですが、これらは十中八九 GlassFish 4.1 側のバグで、かつお使いの Payara では既に修正されていることに起因します。Payara の Issues はラベルによる分類が行われており、そのうち "upstream bug" が付けられた Issue については GlassFish 4.1 側のバグと断定されたものです。現時点で "upstream bug" は約 9 割が修正済みであり、これが GlassFish 4.1 で動かなかったプログラムが Payara では動く直接的な原因になっていると考えられます。なお、Payara Team では "upstream bug" について本家の GlassFish Community に報告はしているものの、最近は GlassFish のメンテナンスが停止しているため、修正されず放置されたままとなっています。

Payara は GlassFish 4.1 と共通のコードベースで開発されているため、サーバ固有の仕様に至るまでほぼ同じ振る舞いをします。また、四半期に 1 回の頻度で定期的にリリースされていることから、オリジナルの GlassFish 4.1 よりも良好なメンテナンス状態にあります。実は Java EE 7 の TCK を通していないという盲点はあるのですが、それに目をつぶれば「より良い GlassFish」として使用することができます。