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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<!-- $Id$ -->
<HTML>
<BODY>
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).
<P>
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>
<P ALIGN="CENTER">
<IMG SRC="images/java-ace.gif" WIDTH="735" HEIGHT="339" ALIGN="BOTTOM" BORDER="0">
</P>
<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.
</P>
<H3>Copyright Information for Java ACE</H3>
<P>
Java ACE is copyrighted by
<A HREF="http://www.cs.wustl.edu/~schmidt">Douglas C. Schmidt</A> and his
research group at
<A HREF="http://www.wustl.edu">Washington University</A>.
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.
</P>
<P>
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.
</P>
<P>
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.
</P>
<P>
Thanks,
</P>
<P>
Douglas C. Schmidt
<BR>
<A HREF="mailto@schmidt@cs.wustl.edu">schmidt@cs.wustl.edu</A>
</P>
</BODY>
</HTML>
|