AspectOriented Programming with the Eclipse Aspect J plugin

  • Slides: 14
Download presentation
Aspect-Oriented Programming with the Eclipse Aspect. J plug-in David Gallardo

Aspect-Oriented Programming with the Eclipse Aspect. J plug-in David Gallardo

The problem • Object-oriented programming provides a solution for business logic, but other concerns

The problem • Object-oriented programming provides a solution for business logic, but other concerns complicate a clean OO design and implementation • Common services are often required: – – – Logging Authentication Persistence Instrumentation Etc. • These requirements lead to code unrelated to the business being scattered throughout the application and are called crosscutting concerns.

Crosscutting concerns

Crosscutting concerns

The solution: Aspect-Oriented Programming • Researchers at Xerox PARC start examining limitations of OOP

The solution: Aspect-Oriented Programming • Researchers at Xerox PARC start examining limitations of OOP in early 1990 s • Separation of concerns is identified as the key • Crosscutting concerns are implemented separately as Aspects. • Aspects are the fundamental unit in AOP and are equivalent to a class in OOP. • Aspects interact with an application at interesting and pre-defined points in its execution such as method calls and field assignments. These are called join points.

Programming in AOP • Decompose application into separate business and crosscutting concerns • Implement

Programming in AOP • Decompose application into separate business and crosscutting concerns • Implement concerns as classes and aspects • Recompose business and crosscutting logic using an AOP compiler. This process is called weaving and the compiler that performs this is called a weaver.

Aspect. J: The first AOP language • Xerox PARC researchers develop Aspect. J, the

Aspect. J: The first AOP language • Xerox PARC researchers develop Aspect. J, the first AOP language. • Aspect. J is a simple, well-integrated extension of Java • It was given to the Eclipse Consortium in early 2002 • Available on the Eclipse. org website

Installing the Eclipse Aspect. J plug-in • Available for 3. 1. from the update

Installing the Eclipse Aspect. J plug-in • Available for 3. 1. from the update site: http: //download. eclipse. org/technology/ajdt/31/dev/update • Works in conjunction with Eclipse’s Java development tools. • This provides a source-to-bytecode weaver, based on the Eclipse Java compiler. • Plus views and perspectives that support for AOP programming.

Creating an aspect • You create an aspect in Eclipse pretty much like you

Creating an aspect • You create an aspect in Eclipse pretty much like you do a class: – Create an Aspect. J project for it to live – Use the New wizard and select Aspect. • You’ll get something that looks like this: public aspect Example { } • If you named your aspect Example, it will be in a file named (by default) Example. aj

Identifying join points with a pointcut • A joint point or a set of

Identifying join points with a pointcut • A joint point or a set of joint points is identified with a pointcut expression. • A pointcut uses patterns and wildcards that match type, name and method parameters. • The following identifies calls to public methods of type void that begin with the letters “say”: pointcut talk() : call(public void say*(. . )); • The following identifies all public getter methods that return an int or a long: pointcut access() : call(int get*(. . )) || call(long get*(. . ));

Giving advice • Pointcuts only identify where an aspect should introduce behavior. They need

Giving advice • Pointcuts only identify where an aspect should introduce behavior. They need to be associated with advice—a code body—in order to do anything. • Advice can run before or after a join point. • Advice can also run around a join point. Advice of this type can affect the execution of the join point —executing it conditionally, or, in the case of a method call, modifying the parameters.

Examples of advice • Here are some examples of advice for the pointcut talk

Examples of advice • Here are some examples of advice for the pointcut talk from two slides ago: before() : talk() { System. out. println("Hello!"); } after() : talk() { System. out. println("Goodbye!"); };

Introductions • One more Aspect. J feature can be included in an aspect, an

Introductions • One more Aspect. J feature can be included in an aspect, an introduction, or inter-type declaration. • This allows the aspect to alter classes by adding fields or methods, altering class heirarchy, etc. • We won’t be using these here.

Eclipse Aspect. J support • Decorators in the editor view identify which methods and

Eclipse Aspect. J support • Decorators in the editor view identify which methods and fields in a class have advice associated with them. • Cross References view provides details about advice are associated with each method or field, or methods or fields associate with each advice. • Aspect Visualization perspectives shows graphically which class is affected by each aspect. • Debugging support is extended to advice.

Eclipse Aspect. J demo • • Demonstrate how to install using Update Create an

Eclipse Aspect. J demo • • Demonstrate how to install using Update Create an Aspect Project Create a class and an aspect and run Demonstrate editor support, outline, crossreference. • Demonstrate Aspect Visualization perspective with Eclipse-provided example