AdaIC News Summer 1997

ADEPT – Building Distributed Systems in Ada 95

- MAJ Bernard J. Jansen, US Military Academy

| Ease of use for Annex E | Focus on the product |
| And Java, too! | Ada calling Java, Java calling Ada |

Ada 95 provides enhanced object-oriented features; the Annexes to the Language Reference Manual provide for extending Ada’s capabilities in a number of areas, including distributed applications. Many in the Ada community have recognized the need for building convenient and easy-to-use toolsets for composing distributed systems.

One such toolset is the Advanced Distributed Engineering and Programming Toolset (ADEPT) – developed by researchers of the Computer Science Department of Texas A&M University funded by Computer Sciences Corp. ADEPT is a toolset for distributing the execution of Ada programs in accordance with the Distributed Systems Annex (Annex E).

ADEPT is an example of the simple, graphical interface that one can build for the construction of distributed Ada programs. The aim of the ADEPT project is to enable users to readily construct distributed programs. Designed to work with the GNAT Ada 95 compiler, ADEPT is publicly available via the World Wide Web (

The primary goal of ADEPT is to provide an open, easily usable implementation of Annex E. Also, the ADEPT toolset is now being extended to allow Ada applications to work together in a distributed system with client applications written in the Java programming language.

Ease of use for Annex E

ADEPT is made up of two parts: a partition communication system (PCS), and a graphical user interface (GUI). The communication system is portable, reusable, and written entirely in Ada. It is connection oriented, providing reliable message delivery. The communication system can also be easily extended to support simultaneous use of multiple network protocols, by adding an appropriate protocol module.

The GUI permits the user to partition and configure a distributed program, and to build partitions into executable units. The user performs these operations entirely within an icon- and window-based interface. Additionally, the GUI allows for consistency checks, editing and compiling of source code, adjustments of compiling, linking, and run-time options, and an automatic startup code that executes a distributed program with a single command.

A performance-monitoring package provides remote-call timing information, affording the developer performance-monitoring capabilities on remote subprogram calls.

Focus on the product

To be effective, any toolset must be easy to use and permit the developer to focus on the distributed system being built, and not on the implementation details. ADEPT’s partition communication system permits the convenient construction of distributed programs while the GUI provides icon, windows, and drag-and-drop features.

And Java, too!

The ADEPT toolset is now being extended to provide interoperability with the Java Remote Call Interface (RMI). The emerging Java technology, coupled with the increasing use of networks, offers the opportunity to reduce the cost of building distributed applications. This cost reduction is due in part to the platform independence of Java applets and their seamless integration with existing environments.

However, Ada has many advantages over Java in applications that require high code integrity, long-term maintainability, real-time performance, and incorporation of legacy code. Distributed programs are an example of this type of application domain. Thus, one can expect future distributed environments to exploit the advantages of both Java and Ada. The extending of ADEPT provides a concept for achieving Java-Ada interoperability in a distributed system. It exploits the similarity in the remote object models provided by Annex E and Java’s RMI.

Ada calling Java, Java calling Ada

The ADEPT extension allows a Java application to call a subprogram within an Ada partition as if the subprogram were specified as a method of a Java remote object. Support for remote calls from Ada partitions to Java servers was deemed to be of lesser utility than remote calls originated by a Java client, and the capability for Ada partitions to invoke Java objects has not yet been implemented. However the general approach of ADEPT will easily permit Ada-to-Java remote calls.

The technical approach to achieve this interoperation is a Java Exchange Agent (JxAgent). A JxAgent transforms a remote method call from a Java class into a corresponding remote call to a subprogram executed by an Ada partition. Presently, ADEPT has a prototype translator that automatically creates the Java remote method interface and an implementing class from specifications of an Ada type.

The extended ADEPT approach provides the capability for building distributed, interoperable Ada and Java programs. While still a work in progress, concept validation has already been accomplished. The completed work suggests that this approach is viable and has considerable utility in the distributed environment.

By generalizing this approach, one could conveniently create distributed programs written in a variety of languages together with Ada. Then, Ada subprograms can be used for the components of distributed systems where they offer significant advantages without the need for distributed-system builders to completely switch to Ada. For further information

Details on ADEPT can be obtained from the Web site listed above, a link to which is maintained on the Ada Information Clearinghouse Web site ( Or contact:

Prof. Richard A. Volz,
e-mail: or
Mr. Ronald Theriault,

Previous Page Contents Next Page