summaryrefslogtreecommitdiff
path: root/java/JACE/package.html
blob: 72d43449ea7db5ce59ee9c942b4284f41d493cdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!-- $Id$ -->
<HTML>
<BODY>

<H3>Overview of Java ACE</H3>
<P>Java ACE is a collection of Java packages containing classes that have been converted from the C++ version of
the <A HREF="http://www.cs.wustl.edu/~schmidt/ACE.html">ADAPTIVE Communication Environment</A> (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.</P>
<P>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.</P>
<P>The following diagram illustrates the architecture of the Java version of ACE:</P>
<CENTER>
<IMG SRC="java-ace.gif" ALIGN="BOTTOM" BORDER="0"></CENTER>
<P>
The Java ACE architecture has fewer components than the diagram illustrating the architecture for the <A HREF="http://www.cs.wustl.edu/~schmidt/ACE-overview.html">C++
version of ACE </A>. 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 <CODE>Mem_Map</CODE> and <CODE>Shared_Malloc</CODE>) are omitted from Java ACE.</P>

<P>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 <A HREF="http://www.cs.wustl.edu/~schmidt/C++2java.html">experiences</A> converting the C++ version of ACE
to Java.

</BODY>
</HTML>