NTT DATA

DATA INSIGHT

NTT DATAの「知見」と「先見」を社会へ届けるメディア

キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
background-image-careers
2014.5.22技術トレンド/展望

Apache Strutsこぼれ話(Java EEテクノロジーの普及・発展)

今回のイマ旬!では、脆弱性問題で話題になっている「Apache Struts(アパッチ・ストラッツ)」を取り上げます。Strutsとはどういうものなのか、そして過去の経緯を中心にお話します。

Apache Strutsとは?

Apache Struts(アパッチ・ストラッツ)はJavaをプログラミング言語に利用しているシステムで使われるソフトウエア部品の一種です。Strutsの初版はCraig McClanahan氏が作成し、その後Apacheソフトウエア財団に寄付しました。このためStrutsはオープンソースとしてApacheのWebサイトでソフトウエアや情報が発信されています。一般的にJava言語でWebシステムを開発する場合にはJava EEという機能を用いるのですが、比較的最近までJava EEが提供する機能範囲のみではソフトウエアの開発効率が悪い、あるいはJava EEだけでは機能が不足しがちであるなどの事情もあり、Java EEにStrutsを追加した形によるWebシステム開発形態が多く採用されてきました。このような経緯から、Strutsを用いたWebシステムは現在も多く稼働しています。また、Struts経験者は多く、ノウハウも充実しています。Strutsは企業のフレームワークに組み込まれている利用例も多く、例えばNTTデータのTERASOLUNAフレームワーク参考1にも組み込まれています。

Apache Strutsには新版と旧版がある?

実は、これまでの話題で紹介してきたのはStrutsの初版、すなわちバージョン1についてのことです。Strutsにはバージョン1とバージョン2の2系統があります。双方の互換性の事情、経験者の有無やノウハウの充実具合、そしてStrutsバージョン2にセキュリティ脅威に関する問題が発見されがちである、などのさまざまな事情により、Strutsのバージョン2ではなくバージョン1が今でも多く利用されています。Strutsを単純に置き換える形の1から2へのバージョンアップは実施しづらいという困った事情もあります。しかも追い打ちをかけるように、Strutsバージョン1は2013年4月にEOL(End Of Life:開発停止)を宣言してしまいました。もはやApacheソフトウエア財団はStrutsバージョン1の更新をおこなわないというのです参考2。ちなみに、この話題については、日本オラクル社のインタビュー記事参考3にてお話させていただいたことがあります。

NTTデータの取り組み

ちなみに、前述のNTTデータのTERASOLUNAフレームワークは、いま話題になっているStrutsバージョン1の脆弱性問題に対応したパッチをすでに提供しています参考4。深刻な脆弱性が話題になってから数日間での対応でした。OSSとしてのサポートがEOLで終息してしまっていますが、NTTデータとしては、TERASOLUNAが利用しているApache Struts 1.2.9については、TERASOLUNAとして今後も継続してサポートしていきます(Apache Struts 1単体のサポートではありません)。

今後のJava EEの普及・発展

それでは、今後のJavaによるWebシステム開発はどのようになっていくのでしょう。Strutsの初版を作ったCraig McClanahan氏は、サン・マイクロシステムズ(現在のオラクル社に相当)に移りStrutsを含む機能であるJava EEのJSF(JavaServer Faces)1.0を仕様策定しました。このことから、Strutsの正統な後継はJava EEに含まれるJSFとみることができます。JSFは登場当初は開発効率が悪く、機能も不足がちだったのですが、JSF 2/Faceletsへとバージョンアップしたころから機能が格段に充実して開発効率も劇的に向上し、そしてセキュリティ脅威に対する各種対策もほどこされています。JSF 2/FaceletsはJava EEに最初から含まれる機能であるためにソフトウエアの追加なども不要です。長い目でみると、StrutsはJava EEの純正品にあたるJSF 2/Faceletsに置き換えられていく可能性が高く、本流にあたるのでしょう。ただし、現時点ではFaceletsに関する日本語情報が非常に少ないという国内事情に要注意です。一方、Faceletsではなく別のソフトウエア追加によるStrutsの置き換え例についても現時点で徐々に出てきています。ただしStrutsが担当するような見栄えに関する箇所へ追加ソフトウエアを配置すると、将来Strutsバージョン1で発生した現状同様の問題を引き起こす可能性がある点に特に留意が必要です。

【図】

図:Javaマスコットキャラクター「Duke参考5

お問い合わせ