Java ACE is a collection of Java packages containing classes that have been converted from the C++ version of the ADAPTIVE Communication Environment (ACE).

The C++ version of ACE is a large object-oriented network programming toolkit which contains over 125,000 lines of C++ code and uses advanced C++ features like templates.

The goal of converting ACE from C++ to Java is to provide a portable programming toolkit with a similar interface and functionality to the original version of ACE. This allows new and current users of C++ ACE an easy transition to Java and also adds significant value to programming concurrent Java networking applications. Note that applications written using Java ACE can communicate seamlessly over sockets with applications written using C++ ACE.

The following diagram illustrates the architecture of the Java version of ACE:

The Java ACE architecture has fewer components than the diagram illustrating the architecture for the C++ version of ACE . This reduction in size occurs for two reasons. First, the Java Virtual Machine (JVM) handles many of the portability issues provided by C++ ACE. Therefore, the OS adaptation layer is unnecessary. Second, Java doesn't support certain OS features provided by Win32, UNIX, and other OS platforms that C++ ACE is ported to. For example, Java doesn't support shared memory and memory-mapped files and therefore the memory management wrappers (such as Mem_Map and Shared_Malloc) are omitted from Java ACE.

The process of converting ACE from C++ to Java provided us with an excellent source of insights on the strengths and weaknesses of using Java for industrial-strength software system frameworks. We've written a paper documenting our experiences converting the C++ version of ACE to Java.

Copyright Information for Java ACE

Java ACE is copyrighted by Douglas C. Schmidt and his research group at Washington University. You are free to do anything you like with the Java ACE source code such as including it in commercial software, as long as you include this copyright statement along with code built using Java ACE.

You are under no obligation to freely redistribute any of your source code that is built using Java ACE. Please note, however, that you may not do anything to the Java ACE code that will prevent it from being distributed freely (such as copyrighting it yourself). Naturally, I am not responsible for any problems caused by using Java ACE.

My goal is to see Java ACE continue to evolve and become a more comprehensive, robust, and well-documented Java toolkit that is freely available to researchers and developers. If you have any improvements, suggestions, and or comments, I'd like to hear about it.

Thanks,

Douglas C. Schmidt
schmidt@cs.wustl.edu