POP-Java is a comprehensive object-oriented system for developing HPC applications in large distributed computing infrastructures such as Grid or P2P. It consists of a programming suite (language, compiler) and a run-time system for running POP-Java applications. The run-time system is provided by POP-C++.

POP-Java language is minimal an extension of Java that implements the parallel object model with the integration of resource requirements into distributed objects. We try to keep this extension as close as possible to Java so that programmers can easily learn POP-Java and that existing Java applications can be parallelized using POP-Java without too much effort.

POP-C++ run-time is an object-oriented open design which aim at integrating different Grid and distributed computing toolkits into an infrastructure for executing requirement-driven object-oriented applications. Our idea is to use objects to serve objects: the system provides basic services for executing remote objects. Again, each service is implemented as an object with an well-defined “virtual” interface which is customizable for different Grid toolkits by the object (service) inheritance. A new type of services called application scope service is introduced into the POP-C++ and POP-Java architecture which serves application related tasks. These services are instantiated inside each application and are accessible from other standard system-wide services to perform application-specific tasks. The result of this open design is the POP-C++ runtime system which can be used to glue today and tomorrow Grid toolkits to create a broader environment for executing high performance computing applications.

POP-Java and POP-C++ are fully compatible. This means that a POP-Java application can use parallel object written in POP-C++ and vice-versa.