Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / README
blobeba289c43015ee92821e9586374bc32aa1f7ae70
1 This document is also available at the following URL:
3 https://www.dre.vanderbilt.edu/~schmidt/ACE.html
5 All software and documentation is available via both anonymous ftp and
6 http.
8 THE ADAPTIVE COMMUNICATION ENVIRONMENT (ACE)
10 An Object-Oriented Network Programming Toolkit
12 ----------------------------------------
14 Overview of ACE
16 The ADAPTIVE Communication Environment (ACE) is an object-oriented
17 (OO) toolkit that implements fundamental design patterns for
18 communication software.  ACE provides a rich set of reusable C++
19 wrappers and frameworks that perform common communication software
20 tasks across a range of OS platforms, including Win32/Win64, most
21 versions of UNIX (e.g., SunOS, Linux, NetBSD, and FreeBSD),
22 real-time operating systems (e.g., VxWorks, Chorus, LynxOS, and QNX),
23 and MVS OpenEdition.  A single source tree is used for all
24 these platforms and porting ACE to other platforms is relatively easy.
26 The communication software components provided by ACE include event
27 demultiplexing and event handler dispatching, service initialization,
28 interprocess communication, shared memory management, message routing,
29 dynamic (re)configuration of distributed services, multi-threading,
30 and concurrency control.  There are both C++ and Java versions of ACE
31 available.
33 ACE is targeted for developers of high-performance and real-time
34 communication services and applications on UNIX, POSIX, and Win32
35 platforms.  ACE simplifies the development of OO network applications
36 and services that utilize interprocess communication, event
37 demultiplexing, explicit dynamic linking, and concurrency.  ACE
38 automates system configuration and reconfiguration by dynamically
39 linking services into applications at run-time and executing these
40 services in one or more processes or threads.
42 ACE is currently used in commercial projects and products by dozens of
43 companies including Ericsson, Bellcore, Siemens, Motorola, Kodak,
44 Boeing, Lucent, DEC, Lockheed Martin, and SAIC.  Commercial support
45 for ACE is available from several companies as listed at
46 https://github.com/DOCGroup/ACE_TAO/wiki/ACE-and-TAO-Commercial-support
48 ----------------------------------------
50 C++ Wrappers for OS Interfaces
52 The lower-level portions of ACE provide a set of portable and
53 type-secure C++ wrappers that encapsulate the following C language OS
54 interfaces:
56 . IPC mechanisms
57   -- e.g., Internet- and UNIX-domain sockets, TLI, Named
58       Pipes (for UNIX and Win32) and STREAM pipes;
60 . Event demultiplexing
61   -- e.g., select(), poll(), and Win32
62       WaitForMultipleObjects and I/O completion ports;
64 . Multi-threading and synchronization
65   -- e.g., POSIX Pthreads, and Win32 threads;
67 . Explicit dynamic linking
68   -- e.g., dlopen/dlsym on UNIX and LoadLibrary/GetProc
69       on Win32;
71 . Memory-mapped files and shared memory management
72   -- e.g., BSD mmap(), SYSV shared memory, and Win32
73       shared memory;
75 . System V IPC
76   -- e.g., shared memory, semaphores, message queues.
78 The OS Adaptation Layer shields the upper levels of ACE from platform
79 dependencies associated with the underlying OS interfaces.
81 ----------------------------------------
83 Frameworks and Class Categories
85 ACE also contains a higher-level network programming framework that
86 integrates and enhances the lower-level C++ wrappers.  This framework
87 supports the dynamic configuration of concurrent distributed services
88 into applications.  The framework portion of ACE contains the
89 following class categories:
91 . The Reactor
92   -- Supports both Reactive and Proactive I/O;
94 . The Service Configurator
95   -- Support dynamic (re)configuration of objects;
97 . The ADAPTIVE Service Executive
98   -- A user-level implementation of System V STREAMS,
99       that supports modular integration of
100       hierarchically-related communication services;
102 . Concurrency
103   -- Various types of higher-level concurrency
104       control and synchronization patterns (such as
105       Polymorphic Futures and Active Objects);
107 . Shared Malloc
108   -- Components for managing dynamically allocation
109       of shared and local memory;
111 ----------------------------------------
113 Distributed Services and Components
115 Finally, ACE provides a standard library of distributed services that
116 are packaged as components.  These service components play two roles
117 in ACE:
119 1. They provide reusable components for common distributed
120     system tasks such as logging, naming, locking, and time
121     synchronization.
123 2. They illustrate how to utilize ACE features such as the
124     Reactor, Service Configurator, Service Initialization,
125     Concurrency, and IPC components.
127 ----------------------------------------
129 Middleware Applications
131 ACE has been used in research and development projects at many
132 universities and companies.  For instance, it has been used to build
133 avionics systems at Boeing, telecommunication systems at Bellcore,
134 Ericsson, Motorola, and Lucent; medical imaging systems at Siemens and
135 Kodak; and many academic research projects.  Two example middleware
136 applications provided with the ACE release include:
138 1. The ACE ORB (TAO) -- TAO is a real-time implementation of
139     CORBA built using the framework components and patterns
140     provided by ACE.
142 2. JAWS -- JAWS is a high-performance, adaptive Web server
143     built using the components in ACE.
145 ----------------------------------------
147 OBTAINING ACE
149 ACE may be obtained electronically from
150 https://download.dre.vanderbilt.edu.  This release contains the source
151 code, test drivers, and example applications (including JAWS) for C++
152 wrapper libraries and the higher-level ACE network programming
153 framework developed as part of the ADAPTIVE project at the University
154 of California, Irvine, Washington University, St. Louis, and
155 Vanderbilt University.
157 You can get The ACE ORB (TAO) in a companion release at the same URL.
159 ----------------------------------------
161 ACE DOCUMENTATION AND TUTORIALS
163 Many of the C++ wrappers and higher-level components have been
164 described in issues of the C++ Report, as well as in proceedings of
165 many journals, conferences, and workshops.
167 A collection of white papers and tutorial handouts are included at
169 http://www.dre.vanderbilt.edu/~schmidt/ACE-papers.html
171 This page contains PDF versions of various papers that describe
172 different aspects of ACE.
174 This material is also available available via the WWW at URL:
176 http://www.dre.vanderbilt.edu/~schmidt/ACE.html
178 ----------------------------------------
180 ACE GITHUB ISSUES AND DISCUSSIONS
182 Github issues and discussions are available at
183 https://github.com/DOCGroup/ACE_TAO for
184 discussing bug fixes, enhancements, and porting issues regarding ACE.
186 ----------------------------------------
188 BUILDING AND INSTALLING ACE
190 Please refer to the $ACE_ROOT/ACE-INSTALL.html file for
191 information on how to build and test the ACE wrappers.  The
192 BIBLIOGRAPHY file contains information on where to obtain articles
193 that describe the ACE wrappers and the ADAPTIVE system in more detail.
195 The current release has been tested extensively, but if you find any
196 bugs, please open a issue or discussion at
197 https://github.com/DOCGroup/ACE_TAO using the
198 $ACE_ROOT/PROBLEM-REPORT-FORM.  Please use the same form to submit
199 questions, comments, etc.
201 ----------------------------------------
203 ACKNOWLEDGEMENTS
205 Please see the file `$ACE_ROOT/THANKS' for a list of the thousands of
206 people who've contributed to ACE and TAO over the years.