Korsholm, Stephan E.4; Søndergaard, Hans5; Ravn, Anders Peter1
1 Distributed Systems and Semantics, The Faculty of Engineering and Science, Aalborg University, VBN2 Department of Computer Science, The Faculty of Engineering and Science, Aalborg University, VBN3 The Faculty of Engineering and Science, Aalborg University, VBN4 VIA University College5 VIA University College, Horsens
The Java programming language was originally developed for embedded systems, but the resource requirements of previous and current Java implementations – especially memory consumption – tend to exclude them from being used on a significant class of resource constrained embedded platforms. The contribution of this paper is an architecture and implementation of a Java execution stack for resource constrained embedded platforms with a few kB of RAM and flash memory. The resource requirements of the presented architecture has been reduced significantly through all the layers of the architecture by integrating the following: (1) a lean virtual machine without any external dependencies on POSIX-like libraries or other OS functionalities; (2) a hardware abstraction layer, implemented almost entirely in Java through the use of hardware objects, first level interrupt handlers, and native variables; and (3) an implementation of the Safety-Critical Java profile Level 0 and 1 for hard real-time applications. All Java components of a given application are minimized through program specialization, and because (2) and (3) are written in Java, the program specialization has a significant impact on the resulting program size. An evaluation of the presented solution shows that the miniCDj benchmark gets reduced to a size where it can run on resource constrained platforms.
Concurrency and Computation: Practice and Experience, 2014, Vol 26, Issue 14, p. 2407-2431