Links

  • 1. Sogeti
  • 2. JBoss
  • 3. IBM
  • 4. Oracle
  • 5. SpringSource
  • 6. NL-JUG
  • 7. Java

Archives

Syndication  RSS 2.0

RSS 1.0
RSS 2.0

Bookmark this site

Add 'JCN Blog' site to delicious  Add 'JCN Blog' site to technorati  Add 'JCN Blog' site to digg  Add 'JCN Blog' site to dzone

Posted by jcn at 23:59 on Tuesday 13 December    Add 'Practical AOP' site to delicious  Add 'Practical AOP' site to technorati  Add 'Practical AOP' site to digg  Add 'Practical AOP' site to dzone

Ramnivas Laddad, een bekend gezicht binnen de AspectJ community en schrijver van het boek “AspectJ in Action: Practical aspect-oriented programming” geeft in zijn presentatie een overzicht van de mogelijkheden van AOP. Hij licht deze uitgebreid toe aan de hand van concrete voorbeelden in AspectJ.

De mogelijke toepassingen van AOP nog eens op een rijtje:
transaction management, thread safety, caching, resource pooling, profiling, policy enforcement, monitoring, testing, …

Voor diegenen die nog niet weten wat AOP inhoudt: kortgezegd is AOP een methodologie welke modularisatie van crosscutting concerns faciliteert op een manier die in een conventioneel model niet mogelijk is.
Dit is zinvol omdat in een conventioneel model crosscutting concerns nogal wat ongewenste nadelen hebben, zoals:
- code tangling (spaghetti code): unclear implementation, defocusing (vertroebeling), pool quality code (kleefcode), unintended prioritizing of concerns
- code scattering (niet-modulaire code): duplicate code, inconsistent implementation, difficult evolution

AOP is gebaseerd op het join point model, waarin advices (uit te voeren code) aan geselecteerde join points (identificeerbare aanhechtingspunten) gekoppeld worden, de pointcut genaamd. De combinatie advice/poincut wordt een aspect genoemd.
Het weaving model wordt gebruikt om de aspects daadwerkelijk in de code te integreren.

De syntax van het join point model is er in de volgende smaken:
- language extension (d.m.v. keywords; speciale compiler noodzakelijk)
- meta-data extension (d.m.v. annotation; compileerbaar met gewone compiler)
- xml-based definition

Het weaving model kent de volgende implementaties:
- compile-time
- binary weaving
- loadtime-weaving

Een interessante toepassing van AOP is er in combinatie met Hibernate: detached object management.
De probleemstelling: een close() op een Hibernate session creeert detached objects. Benaderen van deze detached objects in een nieuwe session is problematisch omdat uninitialized collections een exception veroorzaken.
De oplossing: gebruik een aspect om een reattach uit te forceren op de detached objects.

Een andere handige toepassing zijn virtual mocks, ofwel fault injection (testen foutsituaties).
Bijvoorbeeld: throw new Exception(), sleep(duration).

AOP kan ook gebruikt worden om crosscutting concerns te refactoren. Hierover zijn artikelen te lezen hier en hier.

Ramnivas Laddad verwacht de volgende adoption curve voor AOP, in oplopende volgorde: development aspects, refactoring aspects, infrstructure aspects, business logic, AO architecture. Google ook eens op AOP@Work.


© 2020 Java Competence Network. All Rights Reserved.