Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
A practical comparison between Java and Ada in implementing a real-time embedded system
Potratz E.  Ada (Proceedings of the 2003 annual international conference, San Diego, CA, USA, Dec 7-11, 2003)71-83.2003.Type:Proceedings
Date Reviewed: Apr 2 2004

Undergraduate research on real-time control, using a model railway system at the University of Northern Iowa, is described in this paper. In lieu of the typical Ada implementation for such an embedded system, Java was used, with a scaled-down runtime known as SimpleRTJ, supporting Java Development Kit (JDK) 1.1.

Two main benefits of using Java were identified: Java supports direct execution of the machine code (as opposed to interpretation of the bytecode) when a native method is called, and Java has direct support for concurrency, although this is a weakness when using native methods.

The drawbacks of using Java were also identified in several areas. First, as opposed to Ada, Java does not support declaring entry conditions on synchronized methods, which makes producing entry barriers more complicated, by requiring the careful arrangement of algorithms coordinating the behaviors of the low-level Java thread methods wait, notify, and notifyall. Moreover, implementing multiple entry barriers based on these thread methods generally requires more threads to be awakened when an entry condition becomes true than are actually waiting on the condition. This situation imposes extra processing overhead due to context switching, especially when the system must manage a large number of threads. Second, Java does not support thread scheduling based on task priorities and does not address priority inversion, where resource utilization causes a lower priority thread to block a higher priority one. Third, for life-critical embedded systems where dynamic memory management is prohibited, Java is disqualified. Fourth, Java’s bit-shifting operations do not support conveniently mapping the components of a record (class) onto the bits of a byte or word that would be used to internally represent the record. Fifth, a particular Java runtime (such as SimpleRTJ) may not provide checks on necessary initializations to ensure that unintended results are not produced when circular package dependencies are present.

The paper certainly provides a valuable reference on how Java performs for implementing real-time systems. However, it would be more productive to refine the languages that are more typically used for real-time programming (such as C and Ada) in the first place, rather than making Java (fundamentally designed for different purposes) work better in real-time programming environments, which is the goal of some real-time Java working groups.

Reviewer:  Chenglie Hu Review #: CR129383 (0410-1187)
Bookmark and Share
 
Classes And Objects (D.3.3 ... )
 
 
Procedures, Functions, And Subroutines (D.3.3 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Classes And Objects": Date
AFC developer’s workshop
Young M., Microsoft Press, Redmond, WA, 1998. Type: Book (9781572316973)
Nov 1 1998
Intermediate MFC
Broquard V., Prentice Hall PTR, Upper Saddle River, NJ, 1998. Type: Book (9780138482763)
Sep 1 1998
Objects, components, and frameworks with UML
D’Souza D., Wills A., Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1999. Type: Book (9780201310122)
Mar 1 1999
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy