Abstract
Embedded systems use specialized hardware devices to interact with their environment, and since they have to be dependable, it is attractive to use a modern, type-safe programming language like Java to develop programs for them. Standard Java, as a platform-independent language, delegates access to devices, direct memory access, and interrupt handling to some underlying operating system or kernel, but in the embedded systems domain resources are scarce and a Java Virtual Machine (JVM) without an underlying middleware is an attractive architecture. The contribution of this article is a proposal for Java packages with hardware objects and interrupt handlers that interface to such a JVM. We provide implementations of the proposal directly in hardware, as extensions of standard interpreters, and finally with an operating system middleware. The latter solution is mainly seen as a migration path allowing Java programs to coexist with legacy system components. An important aspect of the proposal is that it is compatible with the Real-Time Specification for Java (RTSJ).
- aJile. 2000. aj-100 real-time low power Java processor. Preliminary data sheet.Google Scholar
- Armbruster, A., Baker, J., Cunei, A., Flack, C., Holmes, D., Pizlo, F., Pla, E., Prochazka, M., and Vitek, J. 2007. A real-time Java virtual machine with applications in avionics. Trans. Embed. Comput. Sys. 7, 1, 1--49. Google Scholar
Digital Library
- Bacon, D. F., Cheng, P., and Rajan, V. T. 2003. A real-time garbage collector with low overhead and consistent utilization. In Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’03). ACM Press, New York, 285--298. Google Scholar
Digital Library
- Bollella, G., Gosling, J., Brosgol, B., Dibble, P., Furr, S., and Turnbull, M. 2000. The Real-Time Specification for Java. Java Series. Addison-Wesley. Google Scholar
Digital Library
- Burns, A. and Wellings, A. J. 2001. Real-Time Systems and Programming Languages: ADA 95, Real-Time Java, and Real-Time POSIX 3rd Ed. Addison-Wesley Longman Publishing. Google Scholar
Digital Library
- Caska, J. accessed 2009. micro {μ} virtual-machine. http://muvium.com/.Google Scholar
- Chou, A., Yang, J., Chelf, B., Hallem, S., and Engler, D. 2001. An empirical study of operating systems errors. SIGOPS Oper. Syst. Rev. 35, 5, 73--88. Google Scholar
Digital Library
- Felser, M., Golm, M., Wawersich, C., and Kleinöder, J. 2002. The JX operating system. In Proceedings of the USENIX Annual Technical Conference. 45--58. Google Scholar
Digital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. M. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley Professional. Google Scholar
Digital Library
- Gay, D., Levis, P., von Behren, R., Welsh, M., Brewer, E., and Culler, D. 2003. The nesC language: A holistic approach to networked embedded systems. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’03). ACM Press, New York, 1--11. Google Scholar
Digital Library
- Gerum, P. 2004. Xenomai - Implementing a RTOS emulation framework on GNU/Linux. http://www.xenomai.org/documentation/branches/v2.4.x/pdf/xenomai.pdf.Google Scholar
- Group, T. C. 2008. Trusted computing. https://www.trustedcomputinggroup.org/.Google Scholar
- Hansen, P. B. 1977. The Architecture of Concurrent Programs. Prentice-Hall Series in Automatic Computing. Prentice-Hall. Google Scholar
Digital Library
- Hennessy, J. and Patterson, D. 2002. Computer Architecture: A Quantitative Approach 3rd Ed. Morgan Kaufmann Publishers, Palo Alto, CA. Google Scholar
Digital Library
- Henties, T., Hunt, J. J., Locke, D., Nilsen, K., Schoeberl, M., and Vitek, J. 2009. Java for safety-critical applications. In Proceedings of the 2nd International Workshop on the Certification of Safety-Critical Software Controlled Systems (SafeCert’09).Google Scholar
- Hill, J., Szewczyk, R., Woo, A., Hollar, S., Culler, D. E., and Pister, K. S. J. 2000. System architecture directions for networked sensors. In Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS IX). 93--104. Google Scholar
Digital Library
- Hunt, G., Larus, J. R., Abadi, M., Aiken, M., Barham, P., Fahndrich, M., Hawblitzel, C., Hodson, O., Levi, S., Murphy, N., Steensgaard, B., Tarditi, D., Wobber, T., and Zill, B. D. 2005. An overview of the singularity project. Tech. rep. MSR-TR-2005-135, Microsoft Research (MSR).Google Scholar
- Korsholm, S., Schoeberl, M., and Ravn, A. P. 2008. Interrupt handlers in Java. In Proceedings of the 11th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’08). IEEE Computer Society. Google Scholar
Digital Library
- Krall, A. and Grafl, R. 1997. CACAO -- A 64 bit JavaVM just-in-time compiler. In Proceedings of the Workshop on Java for Science and Engineering Computation (PPoPP’97), G. C. Fox and W. Li Eds. ACM.Google Scholar
- Kreuzinger, J., Brinkschulte, U., Pfeffer, M., Uhrig, S., and Ungerer, T. 2003. Real-Time event-handling and scheduling on a multithreaded Java microcontroller. Microprocess. Microsyst. 27, 1, 19--31.Google Scholar
Cross Ref
- Lindholm, T. and Yellin, F. 1999. The Java Virtual Machine Specification 2nd Ed. Addison-Wesley, Reading, MA. Google Scholar
Digital Library
- Lohmeier, S. 2005. Jini on the Jnode Java os. http://monochromata.de/jnodejini.html.Google Scholar
- Phipps, G. 1999. Comparing observed bug and productivity rates for Java and c++. Softw. Pract. Exper. 29, 4, 345--358. Google Scholar
Digital Library
- Ravn, A. P. 1980. Device monitors. IEEE Trans. Softw. Engin. 6, 1, 49--53. Google Scholar
Digital Library
- RTJ Computing. 2000. SimpleRTJ a small footprint Java VM for embedded and consumer devices. http://www.rtjcom.com/.Google Scholar
- Schoeberl, M. 2005. Jop: A Java optimized processor for embedded real-time systems. Ph.D. thesis, Vienna University of Technology.Google Scholar
- Schoeberl, M. 2006. Real-Time garbage collection for Java. In Proceedings of the 9th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC’06). IEEE, 424--432. Google Scholar
Digital Library
- Schoeberl, M. 2008. A Java processor architecture for embedded real-time systems. J. Syst. Archit. 54/1--2, 265--286. Google Scholar
Digital Library
- Schoeberl, M. and Vitek, J. 2007. Garbage collection for safety critical Java. In Proceedings of the 5th International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES’07). ACM Press, 85--93. Google Scholar
Digital Library
- Schoeberl, M. and Puffitsch, W. 2008. Non-Blocking object copy for real-time garbage collection. In Proceedings of the 6th International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES’08). ACM Press. Google Scholar
Digital Library
- Schoeberl, M., Korsholm, S., Thalinger, C., and Ravn, A. P. 2008. Hardware objects for Java. In Proceedings of the 11th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’08). IEEE Computer Society. Google Scholar
Digital Library
- Sha, L., Rajkumar, R., and Lehoczky, J. P. 1990. Priority inheritance protocols: An approach to real-time synchronization. IEEE Trans. Comput. 39, 9, 1175--1185. Google Scholar
Digital Library
- Siebert, F. 2002. Hard Realtime Garbage Collection in Modern Object Oriented Programming Languages. aicas Books.Google Scholar
- Simon, D., Cifuentes, C., Cleal, D., Daniels, J., and White, D. 2006. Java on the bare metal of wireless sensor devices: The squawk Java virtual machine. In Proceedings of the 2nd International Conference on Virtual Execution Environments (VEE’06). ACM Press, New York, 78--88. Google Scholar
Digital Library
- Wellings, A. and Schoeberl, M. 2009. Thread-local scope caching for real-time Java. In Proceedings of the 12th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC’09). IEEE Computer Society. Google Scholar
Digital Library
- Wilkinson, T. 1996. Kaffe -- A virtual machine to run Java code. http://www.kaffe.org.Google Scholar
- Wirth, N. 1977. Design and implementation of modula. Softw. Pract. Exper. 7, 3--84.Google Scholar
Cross Ref
- Wirth, N. 1982. Programming in Modula-2. Springer. Google Scholar
Digital Library
- Xenomai Developers. 2008. Xenomai: Real-Time framework for Linux. http://www.xenomai.org.Google Scholar
Index Terms
A Hardware Abstraction Layer in Java
Recommendations
Techniques for obtaining high performance in Java programs
This survey describes research directions in techniques to improve the performance of programs written in the Java programming language. The standard technique for Java execution is interpretation, which provides for extensive portability of programs. A ...
Evaluating the Java Native Interface JNI: Leveraging Existing Native Code, Libraries and Threads to a Running Java Virtual Machine
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. ...
Dynamic Bytecode Usage by Object Oriented Java Programs
TOOLS '99: Proceedings of the Technology of Object-Oriented Languages and SystemsJava is an object oriented language that has grown in popularity since its release in 1996 and is particularly interesting because it uses a bytecode intermediate language to represent programs, so that the same program can be run unchanged on machines ...






Comments