VIA-Java 0.1 Released

VIA-Java is a Java language binding for the Virtual Interface Architecture (VIA). VIA provides protected user-level zero-copy data transfer, enabling low latency and high bandwidth communication among servers in a server area network (SAN). Cluster-ready servers leveraging VIA include DB/2, Oracle, and Microsoft SQL Server (each supports Giganet cLAN VIA adapters).

VIA-Java bridges the gap between VIA and Java-based application servers, enabling Java server developers to code their high performance networking implementations (whether shared memory, queueing, or remote method calls) using VIA hardware, without having to write or debug platform DLLs, or learn the nuances of VIA C programming.

What is VIA?

"Virtual Interface Architecture (VIA) is an industry standard, high-performance communication interface for system area networks (SANs). VIA provides protected user-level zero-copy data transfer, enabling low latency and high bandwidth. The communication model includes both cooperative communication (send/recv) and remote memory access (get/put)."

"The design of VIA was strongly influenced by the academic on low-overhead communication research (e.g. U-Net, Active Messages, Fast Messages) as well as experience with MPPs. VIA can be accelerated by relatively inexpensive VIA-aware hardware, and such hardware will more naturally support VIA than competing communication software interfaces. Examples of VIA-aware hardware include Giganet, Synfinity, and ServerNet-II. Myrinet, because of its programmable processor and other features, can also be made VIA-aware."

"The VIA API consists of a library of routines called the VI Provider Library (VIPL) and a descriptor format for descriptors that are shared by the user application and VIA-aware hardware. VIA communication routines are normally implemented entirely at user level, while other functionality (e.g. connection management and memory registration) are implemented in the operating system kernel."

    - Berkeley M-VIA Project

Who is VIA-Java For?

Java-based server developers implementing clustering have a requirement to move data between servers. The requirement exists in particular for the following types of projects:

- Web app server session state replication
- EJB server stateful session bean state replication, and entity bean cache replication
- Shared memory implementations (e.g. JavaSpaces)
- Message passing (MPI) or queueing (JMS)
- Remote method calls (CORBA GIOP transport plug-ins)

What developers soon discover is that moving lots of data, or moving a small amount of data frequently, has a high cost when using kernel-based protocols such as TCP or UDP/IP. VIA-Java helps developers leverage VIA enabled NICs (such as Giganet cLAN adapters), enabling their clustering implementation to benefit from the low-latency high-throughput VI architecture.

Why was VIA-Java Created?

VIA-Java was created as a technology internal to GoodServer's AGMS clustered mail server. It allows a server farm of IMAP4 and POP3 protocol servers to communicate with the AGMS mail store via CORBA GIOP messages. A transport plug-in was created for ORBacus called VIIOP to do the job. When the Giganet sample applications "ns" and "simple" were ported to VIA-Java for testing purposes, it became apparent that VIA-Java represented a significant improvement in VIA's usability, from a programmer's point of view. It resulted in improvements in the clarity of produced source codes, and simplified VIA by way of an object oriented class library.

For a Java server programmer, VIA-Java represents an easy way to get started with high performance networking, when the need arises to exceed the performance levels of standard protocols and standard physical link layers. For developers working with existing applications, supporting VIA provides an opportunity to significantly improve I/O performance, while reducing CPU load by 20% or more, where Java TCP/IP techniques can be replaced with VIA, improving both scalability and performance.


The VIA-Java class library uses a native library written in C that hides the dirty work of VIA programming behind a set of Java classes. For this reason, VIA-Java doesn't run everywhere, since it far from being pure Java. Current supported platforms & adapters include:

    - Windows NT/2000 (Giganet cLAN1000)

For More Information

For more information, or to participate in the VIA-Java evaluation, visit the GoodServer website at: