Java ACE was the result of an open-source research project at Washington University, St. Louis. It contains a collection of Java classes and packages whose design was inspired by the C++ version of the ADAPTIVE Communication Environment (ACE). ACE is a powerful object-oriented middleware toolkit containing hundreds of thousands of lines of C++ code that supports the needs of concurrent and network software.

The Java ACE project aimed to provide a middleware toolkit with similar structure and functionality relative to the original C++ version of ACE. The goal was to enable users of C++ ACE an easy transition to Java, as well as adding significant value to programming concurrent Java networking applications using the Java 1.2 language features and class libraries. 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 ACE:

The Java ACE architecture has fewer components than the diagram illustrating the architecture for the C++ version of ACE . This reduction occurs for two reasons:

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 middleware frameworks. We've written a paper documenting our experiences converting the C++ version of ACE to Java.

Source Code for Java ACE 1.5

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, Washington University, St. Louis and the developers of Java ACE are not responsible for any problems caused by using Java ACE.

Our 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.


Douglas C. Schmidt