The APGAS library supports the APGAS programming model for resilient, elastic, parallel, and distributed programming in Java 8. See this short paper for details.

Example

For instance, X10's HelloWorld program can be expressed in Java using APGAS as the following.

import static apgas.Constructs.*;
import apgas.Configuration;
import apgas.Place;

final class HelloWorld {
public static void main(String[] args) {
// Run with two places unless specified otherwise
if (System.getProperty(Configuration.APGAS_PLACES) == null) {
System.setProperty(Configuration.APGAS_PLACES, "2");
}

finish(() -> {
for (final Place place : places()) {
asyncAt(place, () -> System.out.println("Hello from " + here()));
}
});
System.out.println("Bye");
}
}

To compile:

$ javac -cp .:apgas.jar HelloWorld.java

To run with four places:

$ java -cp .:apgas.jar:hazelcast-3.4.jar -Dapgas.places=4 HelloWorld
Hello from place(0)
Hello from place(3)
Hello from place(1)
Hello from place(2)
Bye

Downloads

The simplest way to start out with APGAS is by downloading an archive of the update site and installing into Eclipse.

The pre-built APGAS library is also available as a standalone archive to be used with a command-line Java compiler.

The example codes and Javadoc for the APGAS library are included in both distributions.

Prerequisites

APGAS requires Java 8 and the APGAS Development Tools require Eclipse 4.2.2. These distributions are otherwise platform independent. These distributions include the hazelcast-3.4.jar from Hazelcast, which is required for running APGAS programs.

Source Code

The APGAS source code is available as part of the X10 Programming Language project on GitHub. The standalone APGAS distribution can be built as follows:

$ git clone https://github.com/x10-lang/x10.git
$ cd x10/apgas
$ ant