Springフレームワークは必要だろうか?

JavaのWebフレームワークの世界では、現在はSpringフレームワークが支配的である。
JavaのWebフレームワークは過去にも色々と出ては消えていった。
EJB、Struts、Saesar、等々。

そもそもJavaEEの規格であるJSPとServletこそが旧Sunが用意したWebフレームワークだった。
弊社の製品であるInfoMessenger(以下MSG)はJSPとServletのみで開発している。
多くのフレームワークは、Servletの上にさらに階層を重ねたものだ。

Springも内部ではServletを使用している。
Servletは処理レイヤーが低レベルなので使い難いがゆえにフレームワークが必要、というのが一般的に言われているフレームワークの必要性だ。
実際の所どうなのだろうか?

私がMSGを開発した経験から言えば、Servletをそのまま使っても何も問題なかった。
他に言われるのはweb.xmlに全てのServletを設定しなければならない為に、複数人の同時開発がうまく機能しない、という説だ。
これも極端な例だ。作成予定のSrevletのスケルトンを先に作成しておけば問題ない。
そもそも分散開発をして後でweb.xmlをマージするのでもいい。

私にはJavaのWebフレームワークが乱立するのは、単に顧客を自社のフレームワークにロックインしたいだけの理由に見える。

その証拠に大手SI企業は独自のJavaのフレームワークを持っているところが多い。
Springは特定のSI企業にロックインされることはなくなるが、多くの問題がある。

Springフレームワークの問題点は以下の点だ。

1.Servletよりもかなり複雑

そもそもフレームワークとは開発生産性と保守性を向上させるためのものだ。
複雑さはその両方を棄損してしまう。
それだけの犠牲を払うに見合うメリットが見当たらない。

2.XML設定地獄

相変わらずXML設定ファイルを手書きしている。
web.xmlの設定よりもかなり複雑だ。
XMLファイルの設定を失くしてシンプルにするならば分かる。
実際、最新のServletではweb.xmlは不要になっている。
なぜ逆方向に進化するのか?

3.アノテーション地獄

独自アノテーションによる記法を強制される。
アノテーションは開発者にとって完全にブラックボックスだ。
挙動を確認するのにマニュアルを暗記する必要がある。
単純なアノテーション以外は使うべきではないというのが私の考えた。
しかるにSrpingのアノテーションはかなり複雑だ。

なぜSpringが隆盛しているのかは謎だが、EJBの時の隆盛と同じように、SI業界による作られた流行である可能性があると思っている。
もしSpringを学習しなければならない、理解しなければならないとしたら、学習コストはかなりのものだろう。
以前のEJBも同様だった。そして、EJBが廃れた今それらの知識は全て無駄になった。
SpirngもEJBと同じ道を辿るような気がしてならない。