【Java】Struts + EJBについて整理してみる
背景
WEBエンジニアとして働き始め早4年。
現場で扱っている技術について、棚卸もかねて整理しようと思い立ちました。
目次
Strutsとは?
概要
- Apacheが開発した、JavaのWeb開発フレームワーク
- 一時期はJavaのWeb開発フレームワークのデファクトスタンダードとなるぐらい普及した
- でも脆弱性や開発効率などの欠点なども指摘されるようになり、サポートは既に終了している
ポイント
Strutsを触り始めた当初、下記サイトには大変お世話になりました。 www.javaroad.jp
EJBとは
概要
- Enterprise Java Beansの略であり、業務システムを意識した、コンテナ/コンポーネント技術。
- J2EEと密接に関係している(むしろJ2EEがないとできない)
- 周りの環境に左右されず、ビジネスロジックに専念できるようにするために考えられた。← !!重要!!
ポイント
一旦ここまで。
補足事項としては、初期のStrutsやEJBの仕様は、XMLベースでの設定であったため、保守のしにくさや複雑さ等がありました。
そこから改良を重ねて、アノテーションベースや、契約による設計を取り入れてきたようです。(自分は触ったことないですが)
気づき
- プログラミングする領域を、MVCモデルとして境界を意識させることで、(できるだけ) 神クラスが生まれないようにしようとした。
- ドメイン領域(ビジネスロジックの領域)については、クライアントやインフラ等の環境に左右されないように設計するという理念については、今も昔も変わっていない。
- アノテーションベースや契約による設計の目的は、他ファイルで設定値を定義することによる保守性の低さを解決するため。
(= アノテーションベースや契約による設計でむしろ保守性が下がる場合は、別の手段も検討すべき?そんな場面は滅多にないと思うけど、、、)
次は、StrutsやEJB、J2EEの関係を、もう少し具体的なイメージに落とし込んでみたいと思います。
用語説明
- MVCモデル:サーバー側の処理を、Model, View, Controllerの3つの役割に分けることで、プログラミングで意識する領域を限定させる、アプリケーション設計の1つ。
- 神クラス:1つのクラスに色んな機能が詰め込まれたクラス。代表的なものは、Utilクラス。「何か特定領域のUtilクラス」は個人的に許容できる範囲だと思うが、「何でも屋Utilクラス」が存在すると、神クラス化しやすい。