program       registration       lodging       call for contributions       organization       [aosd home]

overview       technical papers       practitioner reports       workshops       tutorials       demos       exhibits      
Go back to Tutorials Home

T4: Dynamic and Distributed Aspect-Oriented Programming with JAC

Renaud Pawlak, University of Lille
  - Lionel Seinturier, LIP6

Date: Monday, March 17, afternoon (half day)

Level: Intermediate

Attendees should have basic familiarity with aspect-oriented programming, UML, and Java.


Modern business systems run in open and distributed environments, often involve the Web, and are often based on industry-standard middleware such as CORBA and Java RMI. Distributed applications are critical to businesses and must deal with concerns such as data consistency, scalability, dynamic resource discovery, fault tolerance, run-time maintenance, and remote version updating. For all these issues, the need for dynamic and fast software reconfiguration is increasing. Aspect-oriented techniques can provide powerful ways to deal with such challenges: indeed, separating concerns not only makes applications easier to develop and maintain, but also offers means to add or remove concerns to applications in a dynamic fashion at run time.

This tutorial presents JAC (Java Aspect Component), a fully operational programming environment for developing aspect-oriented, dynamically reconfigurable, distributed, and Web-based software. JAC offers the programmer a set of concepts for creating, manipulating, and composing aspects at run time within distributed and changing environments.

In this tutorial we describe the entire process of developing and configuring aspect-oriented software with JAC. After introducing the basic concepts and features of the environment, we explain why it is suitable for developing distributed applications. We show how to design an application in JAC's UML-flavored IDE, and we configure that application to work with the Web and use specific application-level aspects to implement a fully running online store. We then demonstrate the clustering features of JAC by deploying the application atop JAC remote containers using a communication layer implemented on RMI or CORBA. We show how to include dynamic adaptation features that allow the application to react to changing environments. Finally, at the end of the tutorial, we demonstrate the rapid development of applications and reuse of aspect capabilities.

JAC is available from


Renaud Pawlak received his M.S. degree, specializing in computer science and distributed processing, from the University of Paris VI in 1999. Prior to that, he received his engineering degree from the Institut Superieur d'Electronique de Paris in 1997. Renaud is currently finishing his Ph.D. on AOP techniques and separation of concerns at the CEDRIC-CNAM laboratory, and is starting as a post-doctoral researcher at the LIFL laboratory in Lille, France. He is a primary programmer of the JAC framework.

Lionel Seinturier received his Ph.D. in computer science from the Conservatoire National des Arts et Métiers (Paris, France) in 1997. Subsequently, he worked in the France Telecom R&D center in Paris as a post-doctoral student on middleware architectures for high-speed ATM networks. Since 1999, Lionel has been as associate professor at the University of Paris VI. His research activities are centered around component models for distributed applications (EJB, CCM) and reflective and aspect-oriented programming.


For additional information, clarifications, questions, or special requirements, please contact the AOSD 2003 Tutorial Chair: Eric Eide (

 Send comments to: