エンジニアの将来って?

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

JavaのフレームワークSeasar2とは?

こんにちは。たいらです。
現在、JavaのフレームワークSeasar2について勉強中です。
自分の勉強のアウトプットも含め、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) となりました。。。
比嘉さんのブログに開発停止の理由が書かれていますので是非ご覧ください。

d.hatena.ne.jp

Seasar2の特徴

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

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

です。

DIとは

IT用語辞典で調べてみましょう。

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

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

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

AOPとは

IT用語辞典で調べてみましょう。

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

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

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

さいごに

いかがでしたか?
少しでもご参考になれば幸いです。

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

企業システムの常識を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のBigDecimalを復習、double型とも比較してみる

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

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