[ Topページへ戻る ]
2002.4.8よりアクセス
アスペクト指向プログラミング(AOP:Aspect
Oriented Programming)をJavaに導入するAspectJについてのページです。オブジェクト指向の観点で整理されているパッケージ〜クラス階層のあちらこちらに同じようなコードを書く場合、アスペクトという観点でモジュール化(局所化)すると便利です。
AspectJ News
アスペクト指向の超簡略概念
まずは次の図をご覧下さい。
何のことやらって感じですが、オブジェクト指向によって既に構築されているクラスの随所にある共通の機能(例えばログ出力)を追加したいとします。今までなら、随所に似たようなコードを書いてげっそりとする所です。アスペクト指向では、このように随所に同じ機能を追加する場合、この「同じ機能」をアスペクトとして1回だけ記述し、あとは追加する随所がどこかを指定します。これをweaver(織りこむ)と呼びます。
アスペクト指向プログラミングは、オブジェクト指向プログラミングと対立する概念ではありません。オブジェクト指向では、プログラミングするテーマの知識(アプリケーションドメイン)にそってクラス階層を構築します。でも、アプリケーションドメインには属さない概念もたくさんあります。ロギングもそうですし、アサーションもそうですね。エラー処理も含まれます。「すべてのpublicメソッドの入り口と出口では必ずロギングすること」なんて規約があったとしたら、けっこうげっそりします。そんなときに、アスペクト指向はいかがでしょうか。
本コーナーのコンテンツ
- AspectJ開発環境
- AspectJ標準のGUI開発環境 AspectJ Browser
- AJDE:Emacs上のJava開発パッケージJDEEにAspectJ操作機能を追加
- AntでAspectJを扱う
- 各種統合環境への組み込み(JBuilder/Forte
for Java)
日本語で読めるとこ
- JRockit VMによるAOPのサポート(その1)」(BEA dev2dev日本語記事)
AspectWerkzの開発者によるAspect指向プログラミングの入門記事。AspectJ
5のサンプルが紹介されています。AspectWerkzはAspectJと統合することになり、AspectJ
5で実現されます。
- AOPを使いコントラクトを実施する(IBM developerWorks日本語記事)
http://www-6.ibm.com/jp/developerworks/java/040820/j_j-ceaop.html
Design by Contract(DBC)をAspectJと共にJavaソフトウェア開発に応用
- AOPが密結合の憂うつさを取り除く(IBM developerWorks日本語記事)
http://www-6.ibm.com/jp/developerworks/java/040409/j_j-aopsc.html
static crosscutting(静的な横断)の力で高度な分離システムを構築する
- AspectJおよび擬似オブジェクトによる柔軟なテスト(IBM developerWorks日本語記事)
http://www-6.ibm.com/jp/developerworks/java/020719/j_j-aspectj2.html
システムの状態に振る舞いが依存するクラスの単体テストを擬似オブジェクトとAspectJを使って行う。例えばEJBホームオブジェクトのlookupをAspectJで置き換えて擬似オブジェクトを返す。
- アスペクト指向プログラミングで、モジュール性を改善する(IBM developerWorks日本語記事)
http://www-6.ibm.com/jp/developerworks/java/020405/j_j-aspectj.html
Java言語の世界にAOPをもたらしたAspectJ
- 梅澤真史のOOPSLA'2000レポート
http://www.ogis-ri.co.jp/otc/hiroba/Report/oopsla/oopsla.html
Using AspectJのセッション受講記
- AspectJ Primer:AspectJ入門
http://dolphin.c.u-tokyo.ac.jp/~kazu0/aspectj-primer/
初学者の方へ、とAspectJ言語の文法等について、の章が完成している。アスペクト指向について日本語で解説を読むことができるサイト。
- AspectJ利用例
http://www.geocities.co.jp/Playtown/1245/java/aspectj.html
Java読書会MLで紹介いただいたAspectJの利用例2つ。
英語になっちゃうけど
- Aspect-Oriented Programming with AspectJ (ObjectiveView Issue #9 pp.29-38、2006.2)
http://www.ratio.co.uk/ov9pdf.pdf
オンラインのオブジェクト指向プログラミング技術誌ObjectiveViewの第9巻に掲載されている入門記事です。AspectJ 5のアノテーションについても若干記載あり。
- AOP@Work
IBM developerWorksのシリーズ記事。AOPの基本は習得したプログラマー向けのちょっと深い記事で構成されています。
- I want my AOP! Part 1
http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html
"Separate software concerns with aspect-oriented
programming"
- I want my AOP! Part 2
http://www.javaworld.com/javaworld/jw-03-2002/jw-0301-aspect2.html
"Learn AspectJ to better understand
aspect-oriented programming"
- I want my AOP! Part 3
http://www.javaworld.com/javaworld/jw-04-2002/jw-0412-aspect3.html
"Use AspectJ to modularize crosscutting
concerns in real-world problems"
AspectJのライバル達
- JAC: Java Aspect Components
http://jac.aopsys.com/
アスペクト指向プログラミング用フレームワーク。AspectJとの違いは、Javaのライブラリとして実現していること。AspectJとの優劣は人それぞれか。僕はAspectJのアプローチの方がすっきりしていて好み。
- GluonJ
http://www.csg.is.titech.ac.jp/projects/gluonj/
アノテーションベースでJavaの文法でアスペクトを記述する。使い方もAspectJより簡単かもしれない。
This page is written by Toru TAKAHASHI.(torutk@02.246.ne.jp)