A Comparison of the Concurrency Features of Ada 95 and Java Benjamin M. Brosgol Aonix 200 Wheeler Road Burlington, MA 01803 USA +1.781.221.7317 (Phone) +1.781.270.6882 (FAX)
[email protected] 1. ABSTRACT 2. INTRODUCTION Ada [1] and Java [2] [3] are unusual in providing direct Both Ada and Java support concurrent pro- language support for concurrency: the task in Ada and the gramming, but through quite different thread in Java. Although they offer roughly equivalent functionality – the ability to define units of concurrent approaches. Ada has built-in tasking features execution and to control mutual exclusion, synchron- with concurrency semantics, independent of ization, communication, and timing – the two languages have some major differences. This paper compares and the language’s OOP model, whereas Java’s contrasts the concurrency-related facilities in Ada and Java, thread support is based on special execution focusing on their expressive power, support for sound software engineering, and performance. properties of methods in several predefined A brief comparison of concurrency support in Ada and Java classes. Ada achieves mutual exclusion may be found in [4]; this paper extends those results. A through protected objects with encapsulated comprehensive discussion of Ada tasking appears in [5]; components; Java relies on the classical references targeting Java concurrency include [6] and [7]. The term “concurrent” is used here to mean “potentially “monitor” construct with “synchronized” parallel.” Issues related to multiprocessor environments or methods. Ada models condition-based distributed systems are beyond the scope of this paper. synchronization and communication through Section 3 summarizes the Java language and technology.