About EASy.VM

See the following sections for an overview about EASy:

To download the technical documentation of EASy.VM, please refer to the Downloads Area.

[ Back to Homepage ]

Introduction

The Java virtual machine specification was introduced in 1992 by SUN Microsystems. It has originally been designed as a runtime system for consumer devices, which would be able to execute machine independent code with the goal to connect these devices to a network and to distribute programs very easy to them.

In the meantime a couple of implementations of virtual machines for several workstation platforms have been created, since software companies got the idea to create a system which could replace classic operating systems in the future.

But this moved the evaluation of Java into a direction where interpreter and the class libraries got bigger and bigger with the result to be unable to fit into small consumer devices. EASy as a portable clean-room-implementation is able to execute bytecodes according to the SUN Java-standard written by any Java Development Kit. It provides selected standard classes which are useful for interacting with microcontroller platforms.

Special gimmicks are technologies like microkernel architecture, file systems, device driver model, memory management with garbage collection at runtime, remote kernel debugger, and dynamically loadable code modules, most of them more rarely seen on small controller platforms.

Since Java is a platform independent technology it is possible to execute programs which have been written under any development kit as long as runtime interpreter and development kit go by the Java specification and the used library classes are available for the target system. To enhance this target system independency, EASy is designed to be portable to nearly every platform. Certain hardware dependent features (such as different filesystems, drivers etc.) can be ported within days.

[ Back to Overview ]


Portability

EASy.VM is written in 100% ANSI-C programming language to ensure maximum portability to platforms with a C compiler available. C-runtime libraries are not required for compilation. The architecture allows running on environments with or without underlying operating system. Current implementations run under:
[ Back to Overview ]

Code sizes

EASy.VM was designed to run on 16bit-platforms and is therefore very compact in code. The VM scales between 30kB and 100kB, dependent on the built-in features. The class library is configurable (dependent on the features needed by the Java application to be run). Its typical size is 30kB.

[ Back to Overview ]


Hardware/OS abstraction layer "HELIOS"

To ensure minimum effort when porting to new platforms and operating systems, EASy.VM uses the platform independent API of HELIOS, a hardware abstraction layer developend by Jakom. HELIOS encapsulates all hardware dependent functions. This component needs to be implemented whenever a portation to another target platform is initiated.

[ Back to Overview ]


Device Driver Architecture of HELIOS

The architecture of HELIOS enables developers to write portable device drivers in native code. They can easily be embedded into the system to act as interface to nearly any underlying hardware.

[ Back to Overview ]


Java source level debugging support via JDWP and EDI

Functionality was added to the EASy.VM runtime to support the JDWP and EDI debugging protocols. This enables analysis and debugging of Java classes directly running on the target platform using current state of the art Java development kits.

[ Back to Overview ]


File System Support

Native and non-native (bytecode) classes, which contain the application and common functionality, can be loaded over pluggable file system drivers (which are part of the HELIOS layer) by the interpreter. Currently, the following drivers are available: Furthermore, ROM- and FLASH- file systems are supported.

With the support of compression techniques inside JAR and ZIP file archives, the space required for class files on embedded targets and workstations can be reduced. Additionally, EASy.VM provides support for optimized and compressed NZF file archives, offering a breakthrough improvement of space usage on embedded systems and workstation platforms. In comparison to JAR, NZF file archives occupy significantly less filesystem space. See the following table for a comparison on an example set of files:

File type Compressed Optimized Size comparison* ROMable
NZF file X
-
-
X
X
-
27.799 Bytes
48.052 Bytes
98.399 Bytes
no
yes
yes
JAR file X
-
n/a
n/a
61.068 Bytes
104.458 Bytes
no
yes
ZIP file X
-
n/a
n/a
62.222 Bytes
106.711 Bytes
no
yes
*aquired over a randomly selected set of 75 files of the standard class library

As shown above (and proved by benchmarks), the NZF class package format leads to a decrease of space occupied by class files by at least 50percent. For embedded platforms, where RAM is an issue, NZF archives can be stored in an uncompressed, but optimized format, which also brings a decrease in usage of ROM space compared to the uncompressed JAR and ZIP file formats.

[ Back to Overview ]


Dynamic resizeable, segmented stack architecture

EASy.VM takes advantage of a dynamic resizable operand stack which is - different to C-code - non-contiguous but allocated in segments. This can lead to a markable decrease of space required to run applications, as the stack segments can be dynamically allocated and deallocated, dependent on the requirements of your application. To increase the allocation speed, deallocated stack segments are not immediately freed, but collected in a "bucket" and "recycled" in further allocations.

Additionally, the stack usage is optimized in a manner that only accessed objects will be created in memory.

[ Back to Overview ]


3-level-garbage-collection

EASy.VM provides a 3-level, speed optimized garbage collector which is tightly conneted to the memory management. It runs either transparent to the programmer or can be invoked by a system call.

[ Back to Overview ]


Preemptive multithreading with priority control on bytecode level

EASy.VM can handle threads according to the Java specification, even on non-multitasking platforms/operating systems. This means, EASy.VM runs as a single task and handles Java threads itself.

[ Back to Overview ]


[ Back to Homepage ]