I believe, JADE would have caught on by now, it has been around for
over a decade, but Java seems to be taking the leading role -- but, I
suppose it all depends on your needs. Here is an overview of the
language, including a comparison with Java:
Jade Parallel Programming Language
Key Features
Jade is high-level, machine-independent language for parallel programming.
Extension to a sequential programming language
Jade is an extension to C programming language and its used for
exploiting coarse-grain concurrency in sequential, imperative
programs. Because of Jade's sequential semantics, it is possible to
implement Jade as an extension to a sequential programming language
Higher-level access specification
The Jade access specifications introduced so far only allow the
programmer to declare that a task will read or write certain objects.
The programmer, however, may have higher-level knowledge about the way
tasks access objects. For example, the programmer may know that even
though two tasks update the same object, the updates can happen in
either order. The Jade programming model generalizes to include access
specifications that allow the programmer to express such higher-level
program knowledge.
Hierarchial Concurrency
Programmersmay create hierarchical forms of concurrency in a
Jade programby dynamically nestingwithonly-do constructs. The task
body of a withonly-do construct may execute any number of withonly-do
constructs, in a fully recursive manner. The access specification of a
task that hierarchically creates child tasks must declare both its own
accesses and the accesses performed by all of its child tasks.
Parallelism and synchonizing tasks
Jade provides constructs for implicitly expressing parallelism
and synchronizing tasks. Jade programmers only provide information
about how tasks access shared data, and tasks execute in parallel if
they have no conflicting accesses to data. The structure of
parallelism produced by the Jade program is a directed acyclic graph
of tasks, where the edges between tasks are the data dependence
constraints. Because the constructs for declaring data accesses are
executed dynamically, this task graph can be dynamic and can therefore
express data-dependent concurrency available only at run-time. The
Jade implementation parallelizes the computation by identifying parts
of the serial program that can execute concurrently without changing
the program s result.
Advantages
Portability: Jade has been implemented on shared-memory
multiprocessors, distributed memory multiprocessors, message-passing
machines, and heterogeneous networks of workstations. Jade programs
port without modification between all of these platforms.
Modular parallel programming.
Encapsulates concurrency management codes.
Supports several kinds of access specification.
Comparison Jade vs. Java
Differences:
Parameter passing between parallel objects in Jade is by copy (except
that parallel objects are passed by reference), whereas Java parameter
passing (which is retained in Jade for non-parallel objects) is by
copy for primitive types and by reference for objects.
Java supports dynamic loading of classes based on the CLASSPATH.
However, our compilation product is a single executable and dynamic
loading is not supported. It is possible to implement this capability
in C++, and if applications require it, we will add this feature to
Jade.
Multiple classes can be defined in one Jade source file, unlike Java
which has a very tight tying of classes to the naming structure to
simplify dynamic class loading.
Jade treats main differently from Java as described in Section 3.1.
Java bytecode is portable across heterogeneous systems, while Jade
code is compiled to a particular architecture. Java primitive types
are standard across all platforms, but Jade types depend on the
machine and C++ compiler used.
Restrictions:
Java names can be Unicode, whereas we support only ASCII. We do not
currently support the standard Java runtime and libraries, nor do we
support exceptions. We plan to implement non-preemptive threads in the
near future, as well as garbage collection
Time Developed
The initial version of the Jade language started to be developed
at 1991. More functionality was added in 1994.
Is it still in use?
Yes, the language is still in use.
Supported Applications
Jade finds extensive use in a wide variety of areas. The
following programs were developed using Jade:
Water application
This particular application evaluates forces and potentials in a
system of water molecules in liquid state. It was originally created
in Fortran, but later converted to Jade.
String application
It is a program that computes the velocity model of the geology
between two oil wells.
Search application
It is program that simulates the interaction of electronic beam with solids.
Volume Rendering application
It is a program that renders a three-dimensional volume data set
for graphic display.
Panel Cholesky application
It factors a sparse positive definite matrix.
Ocean application
It is a program that simulates the role of eddy and boundary
currents in influencing large-scale ocean movements.
References:
http://www.cag.lcs.mit.edu/~rinard/jade/
http://www.cag.lcs.mit.edu/~rinard/paper/computer92.pdf
http://suif.stanford.edu/papers/#jade
I hope this will help you decide which programming language to go with. |