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

1 / 24
About This Presentation
Title:

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

Description:

Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January – PowerPoint PPT presentation

Number of Views:223
Avg rating:3.0/5.0
Slides: 25
Provided by: Sunn85
Category:

less

Transcript and Presenter's Notes

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


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
Code View of n-n
Tangled
Core Logic
  • 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)

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
Whats 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
Whats 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 IBMs
    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_at_uk.ibm.com
  • Sian January sjanuary_at_uk.ibm.com
Write a Comment
User Comments (0)
About PowerShow.com