The Habanero Java (HJ) language under development at Rice University builds on past work on X10 v1.5.  HJ is intended for use in teaching Computer Science at the undergraduate level (COMP 322), as well as to serve as a research testbed for new language, compiler, and runtime software technologies for extreme scale systems.  HJ proposes an execution model for multicore processors based on four orthogonal dimensions for portable parallelism:

  1. Lightweight dynamic task creation and termination using async, finish, future, forall, forasync, ateach constructs.
  2. Collective and point-to-point synchronization using phasers
  3. Mutual exclusion and isolation using isolated
  4. Locality control using hierarchical place trees

Since HJ is based on Java, the use of certain non-blocking primitives from the Java Concurrency Utilities is also permitted in HJ programs, most notably operations on Java Concurrent Collections such as java.util.concurrent.ConcurrentHashMap and on Java Atomic Variables.

A short summary of the HJ language is included below, and the following paper provides an overview of the language:

 Habanero-Java: the New Adventures of Old X10.  9th International Conference on the Principles and Practice of Programming in Java (PPPJ), August, 2011.

More details can be found in the papers in the Habanero publications web page. 

A download of the HJ implementation can be found here.


HJ Language Summary

(Following standard conventions for syntax specification, the [ ... ] square brackets below refer to optional clauses.)

async [at (place)] 

           [phased [(ph1<mode1>, ...)] ] 

           [seq (condition)]                              

           [await (ddf1, ...)] Stmt 

finish [ (accum1, ...) ] Stmt

final future<T> f = async<T> [at (place)] 

                      [phased [(ph1<mode1>, ...)] ]  Stmt-Block-with-Return

f.get()

point

for (point [i1, …] : [lo1:hi1, …]) Stmt

forall (point [i1, …] : [lo1:hi1, …]) Stmt

forasync (point [i1, …] : [lo1:hi1, …]) [phased [(ph1<mode1>, ...)] ] Stmt

new phaser(mode1)

next ;

next single Stmt

signal 

isolated Stmt

 

isolated [(obj1, ...)] Stmt

 

complex32, complex64

complex32 cf  = (1.0f, 2.0f); complex64 cd = (1.0, 2.0);

+,-,*,/, ==, !=, toString(), exp(), sin(), cos(), sqrt(), pow()

array views

T[.] declares a view on a 1-D Java array e.g.,

        double[.] view = new arrayView(baseArray, offset, [lo1:hi1, …])

   where

        baseArray = base 1-D Java array

        offset = starting offset in baseArray for view

        [lo1:hi1, …] = rectangular region for view

abstract performance metrics