Jaguar Publisher's description
from Matt Welsh
Jaguar is an extension of the Java runtime environment which enables direct Java access to operating system and hardware resources, such as fast network interfaces, memory-mapped and programmed I/O, and specialized machine instruction sets.
Jaguar is an extension of the Java runtime environment which enables direct Java access to operating system and hardware resources, such as fast network interfaces, memory-mapped and programmed I/O, and specialized machine instruction sets. Jaguar can be thought of as a replacement for the Java Native Interface. Unlike the JNI, however, Jaguar does not require copying of data between the JVM and C code, nor expensive traversals between the Java and native code contexts. Rather, Jaguar relies upon a flexible bytecode translation technique which directly inlines specialized "driver" code to access low-level system resources from Java while maintaining type safety. This translation can be performed by a JIT compiler, a static ("ahead of time") compiler, or by a front-end which translates Java bytecode to machine-independent "Jaguar bytecode".
We have implemented a Jaguar interface to Berkeley Linux VIA communication architecture, which is implemented over the Myrinet system-area network. This system, JaguarVIA, provides direct, zero-copy Java access to the Myrinet with a round-trip time of 73 microseconds for small messages, and a peak bandwidth of over 488 mbits/second. This is nearly identical (within 1%) to the performance of Berkeley Linux VIA as accessed from C code.
Another use of Jaguar is Pre-Serialized Objects, a mechanism which greatly reduces the cost of Java object serialization. This is accomplished by rewriting Java object field accesses to store data in memory in a "pre-serialized" form, ready for communication or I/O. Our analysis shows that using Pre-Serialized Objects can save a factor of 80 in performance over standard Java serialization for communicating over JaguarVIA.
On top of Jaguar, we have implemented Tigris, a cluster-based I/O system and programming model which allows resources to be automatically balanced across the cluster; this is a Java reimplementation of the River system. Tigris shields applications from asymmetries in CPU, I/O, and networking performance, through the use of a dataflow programming model and a distributed queue which allows data to adaptively flow from producers to consumers. By using Jaguar for communication and I/O, Tigris is able to obtain performance rivaling that of similar systems implemented in C++.
What's New in This Release:Jaguar support has been added to OpenJIT, an open source JIT compiler which is itself implemented in Java. The use of OpenJIT allows Java applications running on standard JVMs to make use of Jaguar.
System Requirements:No special requirements.
Program Release Status:
Program Install Support: Install and Uninstall