1. ProActive before SCALE
ProActive (Proactive Parallel Suite) is a Java library (Source code under AGPL license) for parallel, distributed, and concurrent computing, also featuring mobility and security in a uniform framework. With a reduced set of simple primitives, ProActive provides a comprehensive API to simplify the programming of applications that are distributed on a Local Area Network (LAN), on cluster of workstations, Clouds, or on Internet Grids.
The library is based on an Active Object pattern that is a uniform way to encapsulate:
- a remotely accessible object,
- a thread,
- a server of incoming requests,
- a mobile and potentially secure agent.
ProActive is only made of standard Java classes, and requires no changes to the Java Virtual Machine, no preprocessing or compiler modification; programmers write standard Java code. Based on a simple Meta- Object Protocol, the library is itself extensible, making the system open for adaptations and optimisations. ProActive currently uses the RMI Java standard library as default portable transport layer, but others such as ssh, Globus, or HTTP can be used instead, in an adaptive way. ProActive supports for JMX and OSGi capabilities, web service object exposition, an SCA personality
ProActive management, distribution, support, and commercialisation is now ensured by the start-up company ActiveEon (http://www.activeeon.com). A professionally maintained version of the ProActive library can be found there.
2. ProActive for Multi-scale autonomic computing
The Scale team continues the development of an active-object middleware based on ProActive, we are particularly involved in two important extensions of the ProActive library:
- Component composition of distributed applications:
GCM/ProActive is a component middleware based on ProActive
implementing the GCM component model with a particular focus on
the support of the development and deployment of adaptative and
autonomic component-based applications. Features supported:
- componentized membranes with interceptor components
- MAPE component framework
- Multi-active objects: Multi-active
objects (MAO) extend active objects with local multi-threading.
We rely on declarative annotations for expressing potential
concurrency between requests, allowing easy and high-level
expression of concurrency. MAO reduce the number of deadlocks in
active objects and make them adapted to multicore architectures.
Features supported:
- Annotation-based declaration of parallelizable services and local multi-threading.
- Thread limit declaration and annotation-based priority declaration.
A repository containing the research branch of the ProActive middleware can be found there.