Section: Scientific Foundations
Programming with distributed objects and components
The paradigm of object-oriented programming, although not very recent, is clearly still not properly defined and implemented; for example notions like inheritance, sub-typing or overloading have as many definitions as there are different object languages. The introduction of concurrency and distribution into objects also increases the complexity. It appeared that standard Java constituents such as RMI (Remote Method Invocation) do not help building, in a transparent way, sequential, multi-threaded, or distributed applications. Indeed allowing, as RMI does, the execution of the same application to proceed on a shared-memory multiprocessors architecture as well as on a network of workstations (intranet, Internet), or on any hierarchical combination of both, is not sufficient for providing a convenient and reliable programming environment.
The question is thus: how to ease the construction (i.e. programming), deployment and evolution of distributed applications ?
One of the answers we suggest relies on the concept of active object, that act as a single entity, abstraction of a thread, a set of objects and a location. Active objects communicate by asynchronous method calls thanks to the use of futures. ProActive is a Java library that implements this notion of active objects. ProActive can also be seen as a middleware supporting deployment, runtime support, and efficient communication for large scale distributed applications.
Another answer we provide relies on component-oriented programming. In particular, we have defined parallel and hierarchical distributed components starting from the Fractal component model developed by INRIA and France-Telecom [43] . We have been involved in the design of the Grid Component Model (GCM) [4] [20] , which is one of the major results produced by the CoreGrid European Network of Excellence. The GCM is now officially intended to become a standard for Grid components, and most of our research on component models are related to it. GCM is now fully a standard for Grid components ( [48] for the last published standard), and most of our research on component models are related to it. On the practical side, ProActive/GCM is a prototype implementation of the GCM above the ProActive library. ProActive/GCM is intended to become the reference implementation of the GCM, that was the goal of the European project GridCOMP.
We have developed overtime competencies in both theoretical and applicative side fields, such as distribution, fault-tolerance, verification, etc., to provide a better programming and runtime environment for object and component applications,