start | find | index | login or register | edit
2003-10-21
by earl, 5809 days ago
AOP experiences part 0 and 1 - in german language, sorry, english-speaking esa-readers. aufgrund der nachfrage ein kleiner AOP w/ Java erfahrungsbericht. heute: teil0, eine kurze einfuehrung und teil1, die auswahl eines AOP frameworks :)

die problemstellung war denkbar einfach und wird wohl frueher oder spaeter zum AOP lehrbuch beispiel avancieren: aus "normalen" javabean properties sog bound properties machen.

davon, dass aop in diesem fall ein legitimes mittel ist, gehe ich aus - dh ich diskutiere das nicht :) nachdem fuer die impl dieser sache die ueblichen zeitlichen grenzen gesetzt waren (a'la am besten vorgestern schon fertig) blieb nur maessig zeit in die untiefen von aop abzutauchen, ein pragmatische loesungssuche war angesagt.

eine kurze suche brachte folgende AOP impls zu tage: AspectJ, AspectWerkz, Nanning, JAC, JBoss AOP und ein nie releastes Framework von Rickard Öberg. JAC und JBoss AOP hat eine kurze vorauswahl als unpassend erkoren, blieben AspectJ, AspectWerkz und Nanning.

in unserem fall sollten die attribute der business objects zu bound properties werden, ebendiese objects werden durch Hibernate persistiert. ein requirement war also gleich gegeben: wie auch immer das tatsaechliche aspect-weaving geschieht, die "aspected" business objects muessen weiterhin mit hibernate (das selbst mit bytecode enhancer zu werke schreitet) funktionieren.

an diesem requirement scheint nanning nach meiner einschaetzung zu scheitern. aus der (meiner meinung nach) spaerliche dokumentation konnte ich nicht darauf schliessen, dass irgendeine form von offline bytecode transformation oder ein alternativer class loader verfuegbar sind.

desweiteren war der wunsch zu minimalen infrastrukturellen aenderungen naheliegend, fuer die "kleine" verbesserung die durch den einsatz von AOP erhofft wurde, wuerden massive infrastrukturelle umstellungen jegliche proportion sprengen. dieses requirement killte AspectJ, der erste eindruck war nicht durch den geschmack eines pragmatisch, schlichten ansatzes charakterisiert.

bleibt AspectWerkz, dass summa summarum einen durchaus positiven eindruck hinterliess. AspectWerkz bietet die moeglichkeit zur offline (i.e. nicht zur runtime) bytecode transformation, in unserem fall eine sehr willkommene moeglichkeit. alternativ sind auch mehrere moeglichkeiten des online (runtime) aspect weavings verfuegbar. eine ant-task der gegenbenenfalls eine offline bytecode transformation der business object classfiles durchfuehrt genuegt der anforderung nach minimalen infrastrukturellen aenderungen. und sowohl offline als auch online bytecode transformation arbeiten problemlos mit hibernate zusammen.

mehr ueber die erfahrungen mit aspectwerkz dann irgendwann in teil2 dieses kleinen berichtes. wie eingangs erwaehnt, diese erfahrungen beruhen auf einer zeitlich sehr beschraenkten auseinandersetzung mit den angefuehrten konzepten und systemen, anmerkungen, fragen und korrekturen sind daher aeusserst erwuenscht :)
powered by vanilla
echo earlZstrainYat|tr ZY @.
earl.strain.at • esa3 • online for 6769 days • c'est un vanilla site