skip to main content
research-article

A real-time Java virtual machine with applications in avionics

Published:12 December 2007Publication History
Skip Abstract Section

Abstract

This paper reports on our experience with the implementation of the Real-time Specification for Java on the Ovm open source Java virtual machine. We describe the architecture and main design decisions involved in implementing real-time Java on Ovm. We present the first use of Real-time Java in avionics in the context of control software for a ScanEagle Unmanned Aerial Vehicle.

References

  1. AICAS. 2005. The Jamaica Virtual Machine homepage, http://www.aicas.com.Google ScholarGoogle Scholar
  2. Bacon, D., Konuru, R., Murthy, C., and Serrano, M. 1998. Thin locks: Featherweight synchronization for Java. In SIGPLAN Conference on Programming Language Design and Implementation (PLDI). 258--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bacon, D. F., Cheng, P., and Rajan, V. 2003. The metronome: A simpler approach to garbage collection in real-time systems. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 466--478.Google ScholarGoogle Scholar
  4. Beebee, W. S. Jr., and Rinard, M. 2001. An implementation of scoped memory for Real-Time Java. In Embedded Software Implementation Tools for Fully Programmable Application Specific Systems (EMSOFT). 289--305. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Benowitz, E. and Niessner, A. 2003a. Experiences in adopting Real-Time Java for flight-like software. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 490--496.Google ScholarGoogle Scholar
  6. Benowitz, E. G. and Niessner, A. 2003b. A patterns catalog for RTSJ software designs. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 497--507.Google ScholarGoogle Scholar
  7. Blackburn, S. M., Cheng, P., and McKinley, K. S. 2004. Oil and water? high performance garbage collection in Java with MMTk. In 26th International Conference on Software Engineering (ICSE'04). 137--146. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Bollella, G. and Reinholtz, K. 2002. Scoped memory. In Proceedings of the Fifth International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC02).Google ScholarGoogle Scholar
  9. Bollella, G., Gosling, J., Brosgol, B., Dibble, P., Furr, S., and Turnbull, M. 2000. The Real-Time Specification for Java. Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Bollella, G., Loh, K., McKendry, G., and Wozenilek, T. 2003. Experiences and benchmarking with JTime. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 534--549.Google ScholarGoogle Scholar
  11. Borg, A. and Wellings, A. J. 2003. Reference objects for RTSJ memory areas. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 397--410.Google ScholarGoogle Scholar
  12. Borger, M. and Rajkumar, R. 1989. Implementing priority inheritance algorithms in an Ada runtime system. Tech. Rep. CMU/SEI-89-TR-15, Software Engineering Institute, Carnegie Mellon University (April).Google ScholarGoogle Scholar
  13. Brosgol, B., Robbins, S., and Hassan II, R. 2002. Asynchronous transfer of control in the Real-Time Specification for Java. In International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC). 101--108. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Buytaert, D., Arickx, F., and Vos, J. 2002. A profiler and compiler for the Wonka Virtual Machine. In USENIX JVM'02 Work in Progress, San Francisco, CA. USENIX, Berkeley, CA.Google ScholarGoogle Scholar
  15. Child, J. 2003. Java proving itself worthy for defense apps. COTS Journal.Google ScholarGoogle Scholar
  16. Child, J. 2004. Real-time flavor completes the military Java puzzle. COTS Journal.Google ScholarGoogle Scholar
  17. Corsaro, A. and Cytron, R. 2003. Efficient memory-reference checks for real-time Java. In Proceedings of Languages, Compilers, and Tools for Embedded Systems (LCTES'03). Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Corsaro, A. and Schmidt, D. 2002a. The design and performace of the jRate Real-Time Java implementation. In The 4th International Symposium on Distributed Objects and Applications (DOA'02). Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Corsaro, A. and Schmidt, D. 2002b. Evaluating Real-Time Java features and performance for real-time embedded systems. In The 8th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Dvorak, D., Bollella, G., Canham, T., Carson, V., Champlin, V., Giovannoni, B., Indictor, M., Meyer, K., Murray, A., and Reinholtz, K. 2004. Project Golden Gate: Towards Real-Time Java in Space Missions. In Proceedings of the 7th IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2004), 12--14 May 2004, Vienna, Austria. IEEE Computer Society Press, Los Alamitos, CA. 15--22.Google ScholarGoogle ScholarCross RefCross Ref
  21. Flack, C., Hosking, T., and Vitek, J. 2003. Idioms in Ovm. Tech. Rep. CSD-TR-03-017, Purdue University Department of Computer Sciences.Google ScholarGoogle Scholar
  22. Fox, J. M. and Welc, A. 2003. Implementation of Real-Time Java scope access checks for JikesRVM. Tech. report, Purdue (May).Google ScholarGoogle Scholar
  23. FSF. 2005. Free Software Foundation Inc, GNU Classpath, www.gnu.org/software/classpath.Google ScholarGoogle Scholar
  24. Gleim, U. 2002. JaRTS: A portable implementation of real-time core extensions for Java. In Proceedings of the Java Virtual Machine Research and Technology Symposium (JVM '02): August 1--2, 2002, San Francisco, California, US. USENIX, Berkeley, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Goodenough, J. B. and Sha, L. 1988. The priority ceiling protocol: A method for minimizing the blocking of high-priority Ada tasks. ACM SIGADA Ada Letters 8, 7 (Fall). 20--31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Higuera-Toledano, T. and Issarny, V. 2002. Analyzing the performance of memory management in RTSJ. In Proceedings of the Fifth International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC'02). Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Higuera-Toledano, M. T., Issarny, V., Banâtre, M., Cabillic, G., Lesot, J.-P., and Parain, F. 2001. Region-based memory management for Real-time Java. In 4th International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2001). 387--394. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Kwon, J., Andy J. Wellings, and King, S. 2005. Ravenscar-Java: a high-integrity profile for real-time Java. Concurrency - Practice and Experience 17, 5--6, 681--713. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Kwon, J. and Wellings, A. 2004. Memory management based on method invocation in RTSJ. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 333--345.Google ScholarGoogle Scholar
  30. Locke, D., Sha, L., Rajkumar, R., Lehoczky, J., and Burns, G. 1988. Priority inversion and its control: An experimental investigation. ACM SIGADA Ada Letters 8, 7 (Fall). 39--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Niessner, A. and Benowitz, E. 2003. RTSJ memory areas and their affects on the performance of a flight-like attitude control system. In Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), OTM Workshops. 508--519.Google ScholarGoogle Scholar
  32. Nilsen, K. 1998. Adding real-time capabilities to Java. Communications of the ACM 41, 6 (June), 49--56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Palacz, K. and Vitek, J. 2003. Java subtype tests in real-time. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP 2003). Lecture Notes in Computer Science, vol. 2743. Springer, Darmstadt, Germany. 378--404.Google ScholarGoogle Scholar
  34. Palacz, K., Baker, J., Flack, C., Grothoff, C., Yamauchi, H., and Vitek, J. 2005. Engineering a common intermediate representation for the Ovm framework. The Science of Computer Programming 57, 3 (Sept.). 357--378. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Pizlo, F., Fox, J., Holmes, D., and Vitek, J. 2004. Real-time java scoped memory: design patterns and semantics. In Proceedings of the IEEE International Symposium on Object-oriented Real-Time Distributed Computing (ISORC'04). Vienna, Austria.Google ScholarGoogle Scholar
  36. Purdue University - S3 Lab. 2005. The Ovm Virtual Machine homepage, http://www.ovmj.org/.Google ScholarGoogle Scholar
  37. Roll, W. 2003. Towards model-based and ccm-based applications for real-time systems. In Proceedings of the 6th IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2003), 14--16 May 2003, Hakodate, Hokkaido, Japan. IEEE Computer Society Press, Los Alamitos, CA. 75--82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Schmidt, W. J. and Nilsen, K. D. 1994. Performance of a hardware-assisted real-time garbage collector. In Proceedings of the Sixth International Conference on Architectural Support for Programming Languages and Operating Systems. San Jose, CA. 76--85. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Sha, L., Rajkumar, R., and Lehoczky, J. P. 1990. Priority inheritance protocols: An approach to real-time synchronization. IEEE Trans. Comput. 39, 9 (Sept.), 1175--1185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Sharp, D. C. 2001. Real-time distributed object computing: Ready for mission-critical embedded system applications. In Proceeding of the 3rd International Symposium on Distributed Objects and Applications, DOA 2001, 17-20 September 2001, Rome, Italy. IEEE Computer Society Press, Los Alamitos, CA. 3--4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Sharp, D. C., Pla, E., Luecke, K. R., and II, R. J. H. 2003. Evaluating Real-Time Java for mission-critical large-scale embedded systems. In Proceedings of the 9th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS 2003), May 27--30, 2003, Toronto, Canada. IEEE Computer Society Press, Los Alamitos, CA. 30--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Siebert, F. 1999. Hard real-time garbage collection in the Jamaica Virtual Machine. In Proceedings of the 6th International Workshop on Real-Time Computing and Applications Symposium (RTCSA '99), 13--16 December 1999, Hong Kong, China. IEEE Computer Society Press, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Timesys Inc. 2003. The jTime Virtual Machine, http://www.timesys.com/.Google ScholarGoogle Scholar
  44. Tryggvesson, J., Mattsson, T., and Heeb, H. 1999. Jbed: Java for real-time systems. Dr. Dobb's Journal of Software Tools 24, 11 (Nov.), 78, 80, 82--84, 86.Google ScholarGoogle Scholar
  45. Wellings, A. and Puschner, P. 2003. Evaluating the expressive power of the Real-Time Specification for Java. Real-Time Systems 24, 3, 319--359. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Zhao, T., Palsberg, J., and Vitek, J. 2003. Lightweight confinement for featherweight java. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA). ACM Press, New York. 135--148. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A real-time Java virtual machine with applications in avionics

              Recommendations

              Reviews

              Wolfgang Schreiner

              The virtues of the Java language for writing reliable and portable code have also raised the desire to use it for the programming of embedded systems with real-time constraints. Such applications are supported by the Real-Time Specification for Java (RTSJ), for which various (mostly commercial) implementations have been developed. This paper discloses an implementation of RTSJ on top of the open-source Java Virtual Machine Ovm, which was created at Purdue University in order to run the control software PRiSMj of the unmanned aerial vehicle ScanEagle, developed by Boeing. The resulting software passed Boeing's qualification tests and was successfully applied in test flights; it received the Java 2005 Duke's Choice award. The authors give very interesting, clear, and detailed insight into the architecture of Ovm, the basic development strategy (based on the ahead-of-time translation of Java programs to C++ code and the management of threads in user space), as well as the challenges that had to be met with respect to thread scheduling, memory management, synchronization, and input/output (I/O). The most complex issue was the implementation of the RTSJ memory model, which involves "scoped areas" to overcome the unpredictability of garbage collection of the standard heap. Performance benchmarks demonstrate the efficiency of the system; finally, its deployment in ScanEagle and the lessons learned from the project are described. The paper is wholeheartedly recommended to anyone interested in learning about the current state of the art in Java technology for developing real-time software for large-scale embedded systems. Online Computing Reviews Service

              Michael Zastre

              A hoary falsehood about Java is that it is unsuitable for hard real-time applications, due to the need for garbage collection (GC). The Real-Time Specification for Java (RTSJ) that is now eight years old should have put this to rest, yet the falsehood still circulates in many circles. For this reason, the paper should be required reading for anyone who is interested in or involved in teaching real-time systems, especially to those interested in understanding RTSJ and what an implementation really looks like. This paper actually comprises two papers, one sandwiching the other. The outer portion consists of Sections 1, 2, 5, 6, and 7. It describes details of what appears to be the first use of an RTSJ implementation in an avionics application?the Boeing ScanEagle unmanned aerial vehicle. This accomplishment is very real and not just the result of simulated workloads; that is, it controlled an unmanned aerial vehicle in a capstone demonstration at White Sands in December 2004. The inner portion consists of a very large Section 3 and a smaller Section 4. Section 3 starts with a description of the out-of-order execution parallel virtual machine (OVM), an open-source framework for experimenting with Java VM implementations. Components needed for an RTSJ implementation were written for this framework and the design decisions, along with implications of those decisions, are described throughout. Subsections 3.6 to 3.9 are particularly valuable for those interested in what synchronization and memory management (where GC and non-GC memory areas are coresident) look like in real-time Java. Section 4 provides performance data on throughput, scheduling latency, and avionics benchmarks. There is much else of interest in the paper: the use of Java to implement a Java Virtual Machine, hardware for the ground and capstone tests, and the implementation of POSIX asynchronous input/output (I/O). It makes for a rewarding read. Online Computing Reviews Service

              Access critical reviews of Computing literature here

              Become a reviewer for Computing Reviews.

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!