Jaguar: enabling efficient communication and I/O in Java

Implementing efficient communication and I/O mechanisms in Java requires both fast access to lowlevel system resources (such as network and raw disk interfaces) and direct manipulation of memory regions external to the Java heap (such as communication and I/O buffers). Java native methods are too expensive to perform these operations and raise serious protection concerns. We present Jaguar, a new mechanism that provides Java applications with efficient access to system resources while retaining the protection of the Java environment. This is accomplished through compiletime translation of certain Java bytecodes to inlined machine code segments. We demonstrate the use of Jaguar through a Java interface to the VIA fast communications layer, which achieves nearly identical performance to that of C, and Pre-Serialized Objects, a mechanism which greatly reduces the cost of Java object serializa-

[1]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[2]  W. Vogels,et al.  A User-Level Network Interface for Parallel and Distributed Computing , 1995 .

[3]  David E. Culler,et al.  Virtual network transport protocols for Myrinet , 1998, IEEE Micro.

[4]  David E. Culler,et al.  An Implementation and Analysis of the Virtual Interface Architecture , 1998, Proceedings of the IEEE/ACM SC98 Conference.

[5]  Thorsten von Eicken,et al.  Interfacing Java to the virtual interface architecture , 1999, JAVA '99.

[6]  Vladimir Getov,et al.  High-Performance Parallel Programming in Java: Exploiting Native Libraries , 1998, Concurr. Pract. Exp..

[7]  Samuel P. Midkiff,et al.  From flop to megaflops: Java for technical computing , 1998, TOPL.

[8]  Greg J. Regnier,et al.  The Virtual Interface Architecture , 2002, IEEE Micro.

[9]  Thorsten von Eicken,et al.  Incorporating Memory Management into User-Level Network Interfaces , 1997 .

[10]  Thorsten von Eicken,et al.  U-Net: a user-level network interface for parallel and distributed computing , 1995, SOSP.

[11]  Craig Chambers,et al.  Whole-program optimization of object-oriented languages , 1996 .

[12]  Jason Maassen,et al.  An efficient implementation of Java's remote method invocation , 1999, PPoPP '99.

[13]  Satoshi Matsuoka,et al.  OpenJIT—A Reflective Java JIT Compiler , 2000 .

[14]  Michael Philippsen,et al.  A more efficient RMI for Java , 1999, JAVA '99.

[15]  Mitsuhisa Sato,et al.  Ninflet: a migratable parallel objects framework using Java , 1998, Concurr. Pract. Exp..

[16]  Dan Grossman,et al.  TALx86: A Realistic Typed Assembly Language∗ , 1999 .