Advanced

Compiling Java for Real-Time Systems

Nilsson, Anders LU (2004)
Abstract
Our everyday appliances ranging from toys to vehicles, as well as the equipment used to manufacture them, contain an increasing number of embedded computers. Embedded software often implement functionality that is crucial for the operation of the device, resulting in a variety of timing requirements and resource utilization constraints to be fulfilled. Industrial competition and the ever increasing performance/cost ratio for embedded computers lead to an almost exponential growth of the software complexity, raising an increasing need for better programming languages and run-time platforms than is used today.

Key concepts, such as portability, scalability, and real-time performance, have been defined, which need to be fulfilled for... (More)
Our everyday appliances ranging from toys to vehicles, as well as the equipment used to manufacture them, contain an increasing number of embedded computers. Embedded software often implement functionality that is crucial for the operation of the device, resulting in a variety of timing requirements and resource utilization constraints to be fulfilled. Industrial competition and the ever increasing performance/cost ratio for embedded computers lead to an almost exponential growth of the software complexity, raising an increasing need for better programming languages and run-time platforms than is used today.

Key concepts, such as portability, scalability, and real-time performance, have been defined, which need to be fulfilled for Java to be a viable programming language for hard real-time systems. In order to fulfill these key concepts, natively compiling Java using a revised memory management technique is proposed. We have implemented a compiler and run-time system for Java, using and evaluating new object-oriented compiler construction research tools, which enables a new way of implementing optimizations and other code transformations as a set of transforms on an abstract syntax tree.

To our knowledge, this is the first implementation of natively compiled real-time Java, which handles hard real-time requirements. The new transparent garbage collector interface makes it possible to generate, or write, C code independently of garbage collector algorithm. There is also an implementation of the Java exception mechanism that can be used in conjunction with an incremental real-time garbage collector. Experiments show that we achieve good results on real-time performance, but that some work is needed to get general execution performance comparable to C++. Given our contributions and results, we do see compiled real-time Java, or a similar language such as C#, as industrially viable in a near future. (Less)
Please use this url to cite or link to this publication:
author
supervisor
organization
publishing date
type
Thesis
publication status
published
subject
keywords
embedded systems, Compiler construction, real-ttime Java
pages
107 pages
publisher
Department of Computer Science, Lund University
language
English
LU publication?
yes
id
477e6822-b272-4ea2-a204-3dc6c615c4dd (old id 630080)
date added to LUP
2007-11-27 13:39:01
date last changed
2016-09-19 08:44:56
@misc{477e6822-b272-4ea2-a204-3dc6c615c4dd,
  abstract     = {Our everyday appliances ranging from toys to vehicles, as well as the equipment used to manufacture them, contain an increasing number of embedded computers. Embedded software often implement functionality that is crucial for the operation of the device, resulting in a variety of timing requirements and resource utilization constraints to be fulfilled. Industrial competition and the ever increasing performance/cost ratio for embedded computers lead to an almost exponential growth of the software complexity, raising an increasing need for better programming languages and run-time platforms than is used today.<br/><br>
Key concepts, such as portability, scalability, and real-time performance, have been defined, which need to be fulfilled for Java to be a viable programming language for hard real-time systems. In order to fulfill these key concepts, natively compiling Java using a revised memory management technique is proposed. We have implemented a compiler and run-time system for Java, using and evaluating new object-oriented compiler construction research tools, which enables a new way of implementing optimizations and other code transformations as a set of transforms on an abstract syntax tree.<br/><br>
To our knowledge, this is the first implementation of natively compiled real-time Java, which handles hard real-time requirements. The new transparent garbage collector interface makes it possible to generate, or write, C code independently of garbage collector algorithm. There is also an implementation of the Java exception mechanism that can be used in conjunction with an incremental real-time garbage collector. Experiments show that we achieve good results on real-time performance, but that some work is needed to get general execution performance comparable to C++. Given our contributions and results, we do see compiled real-time Java, or a similar language such as C#, as industrially viable in a near future.},
  author       = {Nilsson, Anders},
  keyword      = {embedded systems,Compiler construction,real-ttime Java},
  language     = {eng},
  note         = {Licentiate Thesis},
  pages        = {107},
  publisher    = {Department of Computer Science, Lund University},
  title        = {Compiling Java for Real-Time Systems},
  year         = {2004},
}