1 / 24

Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January

Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January. Outline. The need for Aspect-Oriented Programming (AOP) An introduction to AspectJ AspectJ Demos Adopting AOP Further information. The 1-to-1 idea: Good modularity.

verena
Télécharger la présentation

Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aspect-Oriented Programming in Eclipsewith AspectJDr Helen Hawkins and Sian January

  2. Outline • The need for Aspect-Oriented Programming (AOP) • An introduction to AspectJ • AspectJ Demos • Adopting AOP • Further information

  3. The 1-to-1 idea: Good modularity • One requirement in your design maps to one module in your implementation • For example – Chess Piece, Chess Board, Player • Clear, simple, direct mapping • Modules are • easy to add • easy to remove • easy to maintain

  4. The 1-to-1 idea: Good modularity • Socket Creation in Apache Tomcat • Red shows the relevant lines of code • Nicely fits into one package – 3 classes

  5. When things go wrong… • Logging in Tomcat • Scattered and tangled throughout all the packages • Bad Modularity – 1-to-n mapping

  6. The trouble with 1-to-n • Redundant code • Same fragment of code in many places • e.g. trace.entry(); trace.exit(); • Difficult to understand • Mapping from the requirement is unclear • Structure is not explicit • Difficult to change • Have to find all the code involved • And be sure to change it consistently • And be sure not to break it by accident

  7. n-to-1 and n-to-n • A consequence of the 1-to-n problem • Modules are no longer well defined

  8. try { if (!removed) entityBean.ejbPassivate(); setState( POOLED ); } catch (RemoteException ex ) { FFDCEngine.processException( ex,”EBean.passivate()”,”237”, this); destroy(); throw ex; } finally { if (!removed && statisticsCollector != null) { statisticsCollector. recordPassivation(); } removed = false; beanPool.put( this ); if (Logger.isEnabled) { Logger.exit(tc,”passivate”); } } Code View of n-n Tangled Core Logic try { if (!removed) entityBean.ejbPassivate(); setState( POOLED ); } catch (RemoteException ex ) { destroy(); throw ex; } finally { removed = false; beanPool.put( this ); } Example: Code to handle EJB Entity bean passivation

  9. Aspect-Oriented Software Development … • Recognises crosscutting concerns: • Are inherent in any complex system • Have a clear purpose • Have a natural structure • Captures crosscutting concerns explicitly: • In a modular way • With linguistic and tool support

  10. AspectJ • An aspect oriented programming (AOP) language • Java language extension • Divides system into • core concerns (classes) • crosscutting concerns (aspects) • Broad IDE support • Eclipse, Emacs, JBuilder, NetBeans, …

  11. AOP Concepts • Join points • Pointcuts • Advice • Aspects

  12. Join Points • Events in the execution of a program • Types of Join Points: • Method & Constructor call • Method & Constructor execution • advice execution • Field get & set • Exception handler execution • Static & dynamic initialization

  13. What’s a Pointcut? • Pointcut • Picks out join points in a particular system • e.g. call of method ‘foo()’, set of field ‘x’, constructor for object ‘Fred’ • Can also expose context from the matched join point

  14. Types of Pointcuts • Event based - well defined execution points, e.g. • method calls, executions • field gets / sets • exception handling • object and class initialisation • Scoping - only select join points within a certain scope, e.g. • within a set of packages, • within the implementation of a method, • in the control flow of some event (e.g. downstream of an unsecured call) • Context matching - expose context at the join point, e.g. • identity of the caller or target object • exception being handled • value being put into a field

  15. What’s Advice? • Java code to execute when conditions of a pointcut are met. • Can be parameterized to process context exposed by the pointcut

  16. Types of Advice • before() • Executes before the join point • after() throwing/returning • Executes after the join point, execution can be made conditional on how join point exits (i.e. with/without exception) • around() • Executes ‘instead of’ the join point – has a choice about whether to invoke the original logic

  17. What is an Aspect? • Aspects are... • At the design level … concerns that crosscut • At the implementation level … a programming construct Aspect = pointcut + advice

  18. Demos – AJDT • AspectJ Development Tools (AJDT) for Eclipse • Open Source • Developed in Hursley • Partnership with AspectJ team • http://www.eclipse.org/ajdt

  19. Demos • Demo 1: A Simple Figure Editor • Demo 2: Web Services Invocation Framework

  20. Web Services Invocation Framework (WSIF) • Middleware component • Simple Java API for invoking web services, no matter how or where they are provided • Released to Apache • But IBM wants a version tightly coupled to IBM’s normal ‘qualities of service’ • IBM tracing/monitoring/management • How do we manage this?

  21. Exploring Re-Use: The WSIF Story WSIF for Open Source Community org.apache.wsif + WebSphere RAS Composition WebSphere FFDC WSIF for WebSphere WebSphere PMI

  22. Applications of AOP • Problem determination • Logging, FFDC, performance monitoring • Architectural rule enforcement • Contracts, encapsulation, separation (no “up calls”) • Other concerns • Security, transactions, persistence, caching/pooling, locking • Open source integration

  23. Adopting AOP reward AO Analysis,AO Design, AO Strategy auxiliary / infrastructure core / business explorationenforcement time & confidence

  24. Further information • AspectJ home page: http://www.eclipse.org/aspectj • AJDT home page: http://www.eclipse.org/ajdt • Pick up a book … • Email us: • Helen Hawkins: hawkinsh@uk.ibm.com • Sian January: sjanuary@uk.ibm.com

More Related