Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

「Seasar2が終わる!」と慌てるべきではない理由。「Seasar2」という言葉をしっかり定義しよう

2016年9月26日、Seasar2のサポートが終了します。

Seasar2から卒業しよう - DJ HIGAYASUWO (元ひがやすを)

僕自身、大好きなフレームワークです。

EclipseプラグインDoltengなど、開発環境までそろったしっかりそろっているフレームワークって、今でもなかなか無いのではと思います。

仕事の方でも、「Struts 1もSeasar2も開発が終了してしまったので、Java EEやSpringに移行したいと考えています」とご相談いただくことが多いです。

しかし、まずは冷静になる必要があります。

Seasarプロジェクトのすべてが開発終了する訳ではない

Seasar2」という言葉は、DIコンテナ「S2Container」を指すこともあれば、「S2Container + S2JDBC + SAStruts」を指すこともあれば、Seasarプロジェクト全体(http://www.seasar.org/)を指すこともあります。

seasar.orgで紹介されているすべてのプロダクトが開発を終了する訳ではありません。

僕の記憶が確かならば、すでにDomaDBFluteは、コミッターの方が「今後も開発は続ける」(というよりだいぶ前にSeasarから独立している)と宣言されていたはずです。

他にも、そのようなプロダクトは多いのではないでしょうか。

必ず、ご利用しているプロダクトの公式サイトやコミッターの方のブログなどを確認して、今後も開発が続くものと、そうでないものを分けて考えてください。

ひがさんが明言されているのは、

2016/9/26にSeasar2S2JDBCSAStrutsのメンテナンスを現在のコミッタが終了するのは決定で、これは変わりません。 続Seasar2から卒業しよう - DJ HIGAYASUWO (元ひがやすを)

ということだけです。

(この文面における「Seasar2」とは、文脈からおそらく「S2Container」を指すと思われます)

2016/03/25追記

http://www.seasar.orgのトップページに、プロダクトに関する記述が追記されました。

EOLとなるのは以下を除いた全プロダクトです。

DBFlute

DBFlute.NET

Doma

Emecha

Mayaa

S2Container.NET

S2Dao.NET

S2Container + S2JDBC + SAStrutsが使えなくなる訳ではない

これらはオープンソースです。ソースコードGitHubに公開されており、Maven経由で利用も可能です。

2016年9月以降に、どのような形で公開されるかはまだ未定のようですが、公開自体は続くでしょう。

[Seasar-user:22108] Re: Seasar2メンテナンス終了

Mavenリポジトリ、ドキュメント、MLなどがどうなるのかは、現在話し合っている最中です。方向性としては、現在、Seasar2を利用している人々に、最も影響の少ない選択肢が選ばれるはずです。 続Seasar2から卒業しよう - DJ HIGAYASUWO (元ひがやすを)

オープンソースなので、何かあった(バグやセキュリティ脆弱性など)場合、自分で修正することができます。

特にJava SE 8対応関連や、Struts 1.xの脆弱性関連については、常に気を配っていたほうがよいでしょう。

メーリングリストの過去ログ(http://ml.seasar.org/archives/seasar-user/)から、関連しそうなものを下記にまとめましたので、ご確認ください。

Doltengでのプロジェクト作成がJava SE 8では出来ないものの、動作自体の問題は報告されていないようです(Javassistのバージョンを上げげる必要はあるようです)。

Java SE 8対応関連

[Seasar-user:22108] Re: Seasar2メンテナンス終了

[Seasar-user:22057] Re: Java8でのSAStrutsを使用する方法

[Seasar-user:21982] Re: SAStrutsの今後について

[Seasar-user:21953] Re: java8について

Struts 1.x脆弱性関連

[Seasar-user:22048] Re: Validator に入力値検査回避の脆弱性

[Seasar-user:21904] Re: Apache Struts 1脆弱性について

[Seasar-user:21902] StrutsのClassLoader脆弱性はSAStrutsに影響しません

[Seasar-user:21909] Re: JavaBeansに対するリフレクションとClassLoader脆弱

Java SE 9以降への対応

2017年にJava SE 9がリリースされます。

これが何を意味しているかというと、その1年後の2018年に、Oracle社によるJava SE 8の無償サポートが終了する可能性が高いことを意味します。

(2014年にJava SE 8がリリースされた時も、その1年後の2015年に、Java SE 7の無償サポートが終了しました)

これも基本的には、ご自分でメンテナンスする必要があります。

S2Container + S2JDBC + SAStrutsを使わないほうがよいケース

一言で言うと、自分でメンテナンスする工数が割けない場合です。

この場合は、素直にSpringなりJava EEなりに移行したほうが良いでしょう。

メンテナンスができない場合は、少なくとも新規開発でS2JDBC + SAStrutsの採用はやめた方がよいでしょう。

SAStruts + S2JDBCから移行するなら?

僕が知っている範囲では、単純に機能面だけ見れば、SAStruts + S2JDBCに近いのは「Spring MVC + Doma」だと思っています。

もしくは、Domaの代わりに@cero_tさんのBootiful SQL Templateを使うか。

Bootiful SQL Templateという名前にしてMavenリポジトリで公開しました。 - 谷本 心 in せろ部屋

Java EEは、SAStruts + S2JDBCとの機能的な近さだけで言えば、Springには劣ります。

Java EEは、アプリケーションサーバーのサポートや長期的な仕様の安定性が魅力なので、これらのメリットを享受したいならばJava EEもアリかと思います。

その場合、研修は私にお任せくd(ry

まとめ

  • 開発が終了するプロジェクトと、そうでないプロジェクトをしっかりと区別する必要があります。「Seasar2が終わってしまう」とひとくくりにして慌てる必要はありません。
  • S2Container、SAStrutsS2JDBCを使い続ける場合、ご自分でメンテナンスをする必要があります。
  • メンテナンスの工数が割けない場合は、S2Container、SAStrutsS2JDBCの利用はやめた方がいいです。

以上です。

最後に、ありがとう、Seasar2。今も大好きです。