Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

Tailoring native compilation of Java for real-time systems

Nilsson, Anders LU (2006)
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 systems 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. Java was chosen as an example of a safe, object-oriented programming language that could benefit embedded systems... (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 systems 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. Java was chosen as an example of a safe, object-oriented programming language that could benefit embedded systems development.



Defined key concepts, such as portability, scalability, and real-time performance, 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. A new transparent garbage collector interface makes it possible to generate, or write, C code independently of garbage collector algorithm.



Experiments show that we achieve good results on real-time performance. Given our contributions and results we do see compiled real-time Java, or a similar language such as C#, as industrially viable.



We also propose a technique for multi-level deployment of embedded applications, by taking advantage of the fact that Java source code has a well defined meaning.



The same compiler construction techniques and tools used for implementing our Java compiler also appears to be suitable on a higher abstraction level. This is exemplified with with a prototype of a compiler-compiler on the ontology level. (Less)
Abstract (Swedish)
Popular Abstract in Swedish

De vardagliga ting som omger oss, allt från leksaker till bilar, såväl som den utrustning som används i tillverkningen av dem innehåller ett växande antal inbyggda datorer. Inbyggda system är ofta ansvariga för

kritisk funktionalitet, vilket leder till att en mängd tids- och resurskrav måste uppfyllas. Industriell konkurrens och det ständigt växande förhållandet mellan prestanda och pris för inbyggda datorer leder till exponentiell komplexitetsökning i programvaran, vilket i sin tur leder till ett ökande behov av bättre programmeringsspråk än de idag existerande. Java har valts som ett exempel på ett säkert, objektorienterat programmeringsspråk som skulle kunna leda till effektivare... (More)
Popular Abstract in Swedish

De vardagliga ting som omger oss, allt från leksaker till bilar, såväl som den utrustning som används i tillverkningen av dem innehåller ett växande antal inbyggda datorer. Inbyggda system är ofta ansvariga för

kritisk funktionalitet, vilket leder till att en mängd tids- och resurskrav måste uppfyllas. Industriell konkurrens och det ständigt växande förhållandet mellan prestanda och pris för inbyggda datorer leder till exponentiell komplexitetsökning i programvaran, vilket i sin tur leder till ett ökande behov av bättre programmeringsspråk än de idag existerande. Java har valts som ett exempel på ett säkert, objektorienterat programmeringsspråk som skulle kunna leda till effektivare utveckling av programvara i inbyggda system.



Ett antal definierade begrepp, som portabilitet, skalbarhet och realtidsprestanda måste uppfyllas för att Java skall kunna användas som programmeringsspråk i hårda realtidssystem. För att dessa krav skall uppfyllas förordas binärkodskompilering av Java samt användning av anpassad automatisk minneshantering. Vi har implementerat en kompilator med runtime-system för Java, och då använt och utvärderat nya forskningsbaserade verktyg för kompilatorkonstruktion som medger ett nytt sätt att implementera optimeringar och andra kodtransformeringar som en mängd transformeringar på ett abstrakt syntaxträd.



Såvitt känt för oss är detta den första implementationen av binärkodskompilerad realtidsjava, som klarar hårda realtidskrav. Ett nytt transparent gränssnitt för minneshantering gör det möjligt att generera, eller skriva, C-kod oberoende av vilken specifik minneshanteringsalgoritm som skall användas. Genomförda experiment visar på goda realtidsprestanda. Givet våra bidrag och resultat ser vi kompilerad realtidsjava , eller liknande språk som C#, som ett industriellt acceptabelt alternativ.



Vi föreslår också en teknik för flerlagrad drifttagning av inbyggda applikationer, som bygger på det faktum att alla program skrivna i Java har en vädefinierad mening.



Samma kompilatorkonstruktionsverktyg och -tekniker som använts för implementation av vår javakompilator ser också ut att kunna underlätta utveckling på högre abstraktionsnivåer. Detta exemplifieras i en prototyp till en kompilatorkompilator på ontologinivå. (Less)
Please use this url to cite or link to this publication:
author
supervisor
opponent
  • Prof. Puschner, Peter, Institute of Computer Engineering, Vienna University of Technology
organization
publishing date
type
Thesis
publication status
published
subject
keywords
systems, numerical analysis, Java, embedded systems, real-time, aspect-oriented, object-oriented, Computer science, compiler construction, control, Datalogi, numerisk analys, system, kontroll
pages
183 pages
publisher
Computer Science, Lund University
defense location
Room E:1406, E-building, Ole Römers väg 3, Faculty of Engineering, Lund University
defense date
2006-06-14 13:30:00
ISBN
91-628-6830-6
language
English
LU publication?
yes
id
ffabc7ab-c0d9-444d-b459-138d27328ad6 (old id 25432)
date added to LUP
2016-04-01 15:31:10
date last changed
2018-11-21 20:34:52
@phdthesis{ffabc7ab-c0d9-444d-b459-138d27328ad6,
  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 systems 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. Java was chosen as an example of a safe, object-oriented programming language that could benefit embedded systems development.<br/><br>
<br/><br>
Defined key concepts, such as portability, scalability, and real-time performance, 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>
<br/><br>
To our knowledge, this is the first implementation of natively compiled real-time Java, which handles hard real-time requirements. A new transparent garbage collector interface makes it possible to generate, or write, C code independently of garbage collector algorithm.<br/><br>
<br/><br>
Experiments show that we achieve good results on real-time performance. Given our contributions and results we do see compiled real-time Java, or a similar language such as C#, as industrially viable.<br/><br>
<br/><br>
We also propose a technique for multi-level deployment of embedded applications, by taking advantage of the fact that Java source code has a well defined meaning.<br/><br>
<br/><br>
The same compiler construction techniques and tools used for implementing our Java compiler also appears to be suitable on a higher abstraction level. This is exemplified with with a prototype of a compiler-compiler on the ontology level.}},
  author       = {{Nilsson, Anders}},
  isbn         = {{91-628-6830-6}},
  keywords     = {{systems; numerical analysis; Java; embedded systems; real-time; aspect-oriented; object-oriented; Computer science; compiler construction; control; Datalogi; numerisk analys; system; kontroll}},
  language     = {{eng}},
  publisher    = {{Computer Science, Lund University}},
  school       = {{Lund University}},
  title        = {{Tailoring native compilation of Java for real-time systems}},
  year         = {{2006}},
}