PROSE (PROgrammable extenSions of sErvices)
Open Source Project
Adaptability to the dynamic nature of the
computing environments is one of the biggest challenges for software
engineering and has become an important feature in today’s modern
systems, mobile and pervasive computing. Applications which execute in
such environments need to adapt to
changing settings they encounter during their active life time. They
should be able to react and modify their behavior dynamically in
response to changes in their execution environments, without being
required to be preprogrammed with the software functionality needed for
typical adaptations.
Our research work addresses this challenge. PROSE is an
infrastructure that supports dynamic adaptation of applications by
extending their functionality with new code (extensions) used to
enhance, modify, or control the functionality already present in the
application. The system performs controlled,
systematic,
and efficient modification of
the code of running Java applications without requiring them to be shut
down. Changes are
composable, and may be reordered or selectively withdrawn at any time.
The modifications are expressed as Java classes, providing additional
development benefits.
Given the possibility to add and remove new
functionality at an arbitrary point in time, it is important to know at
any time what extensions are currently inserted into an application and
what execution points they denote. For this purpose, PROSE provides powerful tools that allow the users
to see how a given extension will affect the application behavior at runtime. Embedded into an Eclipse
plug-in, the PROSE
Development Tools for Eclipse allows runtime monitoring and
adaptation of applications from Eclipse. The tools allow to monitor and
modify
the code of local and remote applications at runtime.
PROSE can be used for a wide range of
purposes: program instrumentation and profiling, online debugging and
logging, hotfixes and security patches, evolution of critical legacy
applications, software adaptation in a number of applications including
web servers, J2EE containers, and mobile computing. Furthermore, PROSE
provides the infrastructure for a number of research projects exploring
the use of PROSE for assuring application performance, enterprise
applications, software evolution, and implementation of service
migration.
People
Contact information
For more information, please contact Dr. Angela Nicoara, the
leader of the PROSE project.
About the PROSE project
PROSE was one
of the first platforms that tackled the problem of dynamic AOP. As a
result, PROSE has evolved through a number of versions, each one of
them based on different forms of interception and weaving.
- The first
version of PROSE used the Java
Virtual Machine Debugger Interface
(JVMDI) event notification
mechanism to convert join-points into stop
points. Once the application had been stopped, the advice was executed
externally to the application although the advice had access to the
context where it was being executed (e.g., stack frames, calling
parameters for methods, etc.).
- The second
version of PROSE extended this model by giving the option of,
instead of using the debugger, using the baseline JIT compiler. The idea was
to weave hooks
into the application at native code locations
that correspond to all
potential join-points. When executed, the hooks determine whether an
advice needed to be invoked for that particular join-point and called
the advice.
- The new
version of PROSE uses (a) an advice
weaving strategy for method replacement join-points and (b) a stub weaving mechanism for
join-points involving external advices. It implements adaptation by a
novel
mechanism based on dynamic bytecode instrumentation
that supports method code replacement while
an application is running.
Modifications take the form of replacement method
bodies, and can use both type-based and regular expression patterns to
select code for replacement. New code can make use of replaced method
implementations cleanly, facilitating code evolution. Changes are
composable, and may be reordered or selectively withdrawn at any time.
Integrated into an Eclipse plug-in,
the PROSE
Development Tools for Eclipse is used to develop and run
applications inside Eclipse, as well as for standalone Java
applications. It provides tools for creating, runtime monitoring and
distributed visualization of remote extensions.
An important
characteristic of PROSE is that these different weaving mechanisms are
meant as alternatives. The idea is to mirror the flexibility offered by
middleware platforms in which designers can choose different approaches
depending on the type of application involved.
Publications
- Angela
Nicoara, Gustavo Alonso, Timothy
Roscoe: Controlled,
Systematic, and Efficient Code Replacement for Running Java Programs.
In: Proceedings of the ACM EuroSys
2008 Conference (EuroSys 2008),
Glasgow, Scotland, UK, April 2008.
- Angela
Nicoara: Controlled,
Systematic, and Efficient Code Replacement for Running Java Programs.
Dissertation ETH No. 17571,
Department of Computer Science, ETH
Zurich, Switzerland,
December 2007.
- Angela
Nicoara, Gustavo Alonso: Making
Applications Persistent at Run-time. In: Proceedings of the IEEE
23rd International Conference on Data Engineering (ICDE
2007),
Istanbul, Turkey, April 2007.
- Angela
Nicoara, Gustavo Alonso: Runtime
monitoring and adaptation of applications from Eclipse [slides].
In: EclipseCon 2007, Santa
Clara, California, USA, March 2007.
- Angela
Nicoara, Gustavo Alonso: Dynamic
AOP with PROSE. In: Proceedings
of the International
Workshop
on
Adaptive and Self-Managing Enterprise Applications (ASMEA 2005)
in
conjunction with the 17th International Conference on Advanced
Information Systems Engineering
(CAiSE 2005),
Porto, Portugal, June 2005.
- Angela
Nicoara, Gustavo Alonso: PROSE
- A middleware platform
for dynamic adaptation. Demo presented at the 4th
International Conference on Aspect-Oriented Software Development
(AOSD
2005), Chicago, USA, March
2005.
- Gustavo
Alonso: PROSE:
Automated Software Adaptation for Pervasive Computing. ERCIM News
No.58, July 2004.
- P.
Falcarin, G. Alonso: Software
Architecture Evolution through Dynamic AOP. In: First European Workshop on Software
Architecture (EWSA 2004), co-located with the International Conference
on Software Engineering (ICSE 2004), St Andrews, Scotland, May
2004.
- A. Frei, A.
Popovici, G. Alonso: Event
based systems as adaptive middleware platforms. In: Workshop of the 17th Europeean Conference
for Object-Oriented Programming, Darmstadt, Germany July 2003.
- A.
Popovici, G. Alonso, T. Gross: Be Aware:
Dynamic Aspect-Oriented Infrastructure. Book chapter for
the Book "Aspect-Oriented Software Development", eds T. Ellrad, M.
Aksit, R. Filman and S. Clarke.
- A. Popovici:
PROSE, a
study on Dynamic AOP. Dissertation
ETH No. 15176,
Department of Computer Science, ETH
Zurich, Switzerland, 2003.
- A.
Popovici, G. Alonso, T. Gross: Spontaneous
Container Services. In: Proceedings
of the 17th Europeean Conference for Object-Oriented Programming (ECOOP),
Darmstadt, Germany, July 2003.
- A.
Popovici, A. Frei, G. Alonso: A
proactive middleware platform for mobile computing. In: Proceedings of the 4th ACM/IFIP/USENIX
International Middleware Conference, Rio de Janeiro, Brazil,
June 2003.
- A.
Popovici, G. Alonso, T. Gross: Just
in Time
Aspects: Efficient Dynamic Weaving for Java. In: Proceedings of the 2nd International
Conference on Aspect-Oriented Software Development (AOSD),
Boston, USA, 2003.
- A.
Popovici, G. Alonso: Ad-hoc
Transactions for Mobile Services In: Proceedings of the 3rd VLDB Workshop on
Technologies for E-Services, Hong-Kong, August 2002.
- A.
Popovici, T. Gross, G. Alonso: Dynamic
Weaving for Aspect Oriented Programming. In: 1st International Conference on
Aspect-Oriented Software Development (AOSD), Enschede, The
Netherlands, April 2002.
- A.
Popovici, G. Alonso, T.Gross AOP
Support
for Mobile Systems. Presented in Advanced
Separation of Concerns in
Object-Oriented Systems (OOPSLA 2001 Workshop), Tampa, USA,
October 2001.
- A.
Popovici, T. Gross, G. Alonso Dynamic
Homogenous AOP with PROSE. Technical Report, Dept. of Computer
Science, March 2001.
Invited Talks and Presentations
- Angela Nicoara: Advanced
Modification of the Code of Running Java Services - invited talk
and demo. Presented at Samsung
Information Systems America, San Jose, California, USA, April
2009.
- Angela Nicoara: Advanced
Performance Instrumentation and Debugging for Online Application
Services - invited talk. Presented at Deutsche Telekom Inc.,
R&D Lab USA, Silicon Valley, California, USA, July 2008.
- Angela
Nicoara: Dynamic
Code Replacement for Java Applications - invited talk and demo.
Presented at the adhoc PES AG (adhoc
Performance Engineering Solutions AG), Basel, Switzerland,
January 2008.
- Angela
Nicoara, Gustavo Alonso: Making
Applications Persistent at Run-time - talk and poster
presentation. Presented at the NCCR
MICS 2007
Workshop, Neuchatel,
Switzerland, July 2007.
- Angela
Nicoara, Gustavo Alonso: PROSE: A
Software Infrastructure for Dynamic Adaptation - poster
presentation. Presented at the NCCR
MICS 2006 5th
Scientific
Conference, Zurich,
Switzerland, October 2006.
- Angela
Nicoara, Gustavo Alonso: Dynamic AOP
with PROSE - invited talk and poster presentation. Presented at the
NCCR MICS
2005
Scientific Conference, Loewenberg,
Switzerland, September 2005.
- Angela
Nicoara, Gustavo Alonso: PROSE -
A Platform for Dynamic AOP - demo and poster presentation of a
platform for dynamic aspect-oriented programming (d-AOP) based on Jikes
Research Virtual Machine (RVM). Presented at the NCCR MICS 2004
Workshop, Zurich,
Switzerland, July 2004.
Download
PROSE is an Open Source project and can be downloaded from SourceForge.
Documentation
- Documentation about PROSE: system
architecture, design, implementation, performance evaluation,
programming runtime extensions, tools, PROSE Development Tools for
Eclipse, and
applications of PROSE can be found here.
- Getting started with PROSE => PROSE
User Manual.
Note:
A new version of the User Manual will be available soon on the project
website.
Students that have contributed
- Markus Egli's thesis, Dynamic
adaptive caching strategies for
data-intensive web sites with PROSE and OSGi. His work was
supervised by Angela
Nicoara (assistant), Jan S. Rellermeyer
(assistant), and Gustavo Alonso
(professor).
- Gerald Linhofer's thesis, Dynamic
weaving based on advice weaving
implemented a dynamic advice weaver for PROSE based on SUN VM. His work
was supervised by Angela Nicoara
(assistant) and Gustavo Alonso
(professor).
- Johann Gyger's thesis, Bytecode-Level
Advice Weaving for Dynamic
Aspect-Oriented Programming implemented a dynamic advice weaver
for PROSE based on Jikes Research Virtual Machine (RVM). His work was
supervised by Angela Nicoara
(assistant) and Gustavo Alonso
(professor).
- Philippe Schoch's thesis, Monitorisierung
und Visualisierung von
Aspekten in PROSE created a GUI tool for inserting, withdrawing,
and visualizing aspects from arbitrary VM's. Supervisors: Andrei
Popovici (assistant) and Gustavo Alonso
(professor).
- Kaspar von Gunten's thesis, MACROBOT:
A Framework for adaptive Robots
with LEGO MINDSTORMS dealt with creating a prototype for
adaptive robots. That is, robots with a behavior that can be modified
through dynamic aspect-orientation. Supervisors: Andrei Popovici
(assistant) and Gustavo Alonso
(professor).
- Gerard Roos's thesis, Persistence
of Java Components in an
Adaptive Environment dealt with creating an object-relational
mapper and using dynamic AOP for orthogonal object persistence in Java.
Supervisors: Andrei Popovici
(assistant) and Gustavo Alonso
(professor).
- Marcel Mueller's thesis, Adaptive
Security for existing Jini
Services created MirrACL,
a software package, based on PROSE,
that adds access control and authentication to all Jini services
spontaneously joining a Jini community. Supervisors: Andrei
Popovici (assistant) and Gustavo Alonso
(professor).
- Gregor Wieser's thesis, Integrations
of Persistence, Security and
Transactions in existing Jini Services
layed down a concept for integrating dynamic AOP (PROSE), transactions
(Cheetah), orthogonal persistence (Tengwar, the result of Gerard's
thesis) and security (MirrACL, Marcel's contribution).
Supervisors: Andrei Popovici
(assistant) and Gustavo Alonso
(professor).
- Philipp Sieber's thesis, Configuration
of an Adaptive Service
Community focused on creating a virtual component container for
arbitrary services. Supervisors: Andrei Popovici.
(assistant) and Gustavo Alonso
(professor).
- Stephan Markwalder's thesis Entwicklung
einer Aspekt-Schnittstelle zur Java Virtual Machine focused on
creating an
aspect-oriented interface to a Java Virtual Machine (IBM's Jikes
Research Virtual Machine). Supervisors: Andrei
Popovici (assistant) and Gustavo Alonso
(professor).
Additional
work has been done by Stephan Heinzer, Marius Buerki and
Philipp Sieber. They worked on semester projects
for integrating Lego Mindstorms with Java, and monitorisation and
logging of
controlled devices (based on Lego).
|