ゆるくエンジニア日記

職業はシステムエンジニア。日々の学びや感じたことをゆるく記録していきます。

【Java】Struts + EJBについて整理してみる

背景

WEBエンジニアとして働き始め早4年。
現場で扱っている技術について、棚卸もかねて整理しようと思い立ちました。

目次

Strutsとは?

概要
ポイント
  • MVCモデル
  • Servlet / JSP
  • 様々なタグライブラリ
  • 下記のクラスやファイル達
    • ActionServlet
    • struts-config.xml
    • validator-rules.xml
    • Acion
    • ActionForm

Strutsを触り始めた当初、下記サイトには大変お世話になりました。 www.javaroad.jp

EJBとは

概要
  • Enterprise Java Beansの略であり、業務システムを意識した、コンテナ/コンポーネント技術。
  • J2EEと密接に関係している(むしろJ2EEがないとできない)
  • 周りの環境に左右されず、ビジネスロジックに専念できるようにするために考えられた。← !!重要!!
ポイント
  • J2EE
  • 分散オブジェクト技術
  • CORBA
  • JNDI
  • RMI

一旦ここまで。
補足事項としては、初期のStrutsEJBの仕様は、XMLベースでの設定であったため、保守のしにくさや複雑さ等がありました。
そこから改良を重ねて、アノテーションベースや、契約による設計を取り入れてきたようです。(自分は触ったことないですが)

気づき
  • プログラミングする領域を、MVCモデルとして境界を意識させることで、(できるだけ) 神クラスが生まれないようにしようとした。
  • ドメイン領域(ビジネスロジックの領域)については、クライアントやインフラ等の環境に左右されないように設計するという理念については、今も昔も変わっていない。
  • アノテーションベースや契約による設計の目的は、他ファイルで設定値を定義することによる保守性の低さを解決するため。
    (= アノテーションベースや契約による設計でむしろ保守性が下がる場合は、別の手段も検討すべき?そんな場面は滅多にないと思うけど、、、)

次は、StrutsEJBJ2EEの関係を、もう少し具体的なイメージに落とし込んでみたいと思います。

用語説明
  • MVCモデル:サーバー側の処理を、Model, View, Controllerの3つの役割に分けることで、プログラミングで意識する領域を限定させる、アプリケーション設計の1つ。
  • 神クラス:1つのクラスに色んな機能が詰め込まれたクラス。代表的なものは、Utilクラス。「何か特定領域のUtilクラス」は個人的に許容できる範囲だと思うが、「何でも屋Utilクラス」が存在すると、神クラス化しやすい。