エンジニアの将来って?

現在7年目のCOBOL→Java→C#エンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

【Java】フレームワークSeasar2とは?概要を解説します

こんにちは。たいら(@tairaengineer2)です。
この記事でJavaフレームワークであるSeasar2についてざっくりとした概要を書いた記事です。

 

Seasar2の歴史

下がSeasar2公式サイトになります。

www.seasar.org

2003年8月公開された純国産Javaフレームワークです。
公開された当初は「Seasar」と呼ばれてました。
2004年3月に再公開され、今の「Seasar2」という名前になりました。
ちなみに「Seasar」って名前の由来ですが、中心となって開発した比嘉康雄さんが沖縄出身でした。
なので、沖縄の象徴である「シーサー」からとったものだそうです。

f:id:Tairax:20171007142829p:plain

シーサーは災いをもたらす悪霊を追い払う魔除けとして、沖縄で大切にされてるそうです。
なのでそういう願いをこめて名付けたかもしれませんね。

そんなSeasar2ですが、2016年9月26日 をもって EOL (End of Life) となりました。。。

EOL 【 End Of Life 】
EOLとは、「寿命の終わり」「(難病治療における)終末期」などの意味の英略語および英語表現。
IT業界では製品の生産終了や販売終了、ソフトウェア製品などのサポート終了、修正・更新プログラムの提供終了などの意味で用いられることが多い。

EOL(End Of Life)とは - IT用語辞典 e-Wordsから引用させて頂きました

比嘉さんのブログに開発停止の理由が書かれていますので是非ご覧ください。

d.hatena.ne.jp

Seasar2の特徴

Seasar2の特徴は2つあります。

  1. DI(Dependecy Injection:依存性の注入)
  2. AOP(Aspect-Oriented Programming:アスペクト指向プログラミング)

です。

DIとは

DI 【 Dependency Injection 】 依存性注入
DIとは、オブジェクト間で依存性のあるコードを実行時に注入するという設計思想。

DI(依存性注入)とは - IT用語辞典から引用させて頂きました

クラスには、定数だったり、メソッド、何かのインスタンスなどが必要です。
そのインスタンスがすでに出来上がっていないと、クラスが正しく動くどころかコンパイルできないような状態のことを依存していると言います。
そのクラスに必要な情報をクラス内で生成して持つのではなく、アノテーションやxmlファイルなどを使って外から設定することが注入と言います。
外部で設定しているので、柔軟に変更できるのが強みです。

AOPとは

AOP 【 Aspect Oriented Programming 】 アスペクト指向プログラミング
AOPとは、ソフトウェアの特定の振る舞いを「アスペクト」として分離し、モジュール化するプログラミング技法。オブジェクト指向プログラミングの問題点を補うために考え出された手法。

AOP(アスペクト指向プログラミング)とは - IT用語辞典から引用させて頂きました

そもそも「Aspect」とは様子、状況、〔ある方向に面した〕面という意味です。
なので、オブジェクト指向では考えないような面を考えましょう、ということです。
どういうことを考えていくかと言いますと、ログ出力などの共通処理です。
Javaは多重継承が許されていません。
共通できる処理でも個々のクラスに書かなければならない場合があります。
そのような場合に、共通メソッドアノテーションで注入していくのが、AOP(Aspect-Oriented Programming:アスペクト指向プログラミング)です。

まとめ

以上がJavaのフレームワークSeasar2のざっくりとした概要です。
少しでもご参考になれば幸いです。

参考にさせて頂いたサイト様

企業システムの常識をJBossで身につける(3):DI(依存性の注入)×AOP(アスペクト指向)の常識 (1/4) - @IT

Spring Frameworkで理解するDI(1):DI:依存性の注入とは何か? (1/3) - @IT

ざっくりとSpringで使うAOPの解釈をする - Qiita

今必要な人のための速習 Spring Framework - 第2回 柔軟性/保守性を高めるDI機能:ITpro

Seasar2の特徴とプロダクト構成 - 気軽に楽しくプログラムと遊ぶ

 

Seasar2で使用しているアノテーションをまとめました。
良ければ、ご参考ください。

JavaのフレームワークSeasar2のアクションフォームアノテーションをまとめました

Seasar2のエンティティアノテーションまとめ