Jaos Logo


Home
Overview
Results
Docs
Download
Links
Log and Tasks

Project Overview

Jaos (Java on Active Object System) is a Java Virtual Machine for the Bluebottle System and a case study in interoperability between the Oberon and Java Languages.

Bluebottle is an small and efficient native kernel built using active objects. It is one result of the Active Objects research project of the Programming Languages and Run-Time Systems Research Group of the Institute for Computer Systems at ETH. Bluebottle provides many services; garbage collected memory, active objects (concurrency, synchronization and protection), exception handling and dynamic loading are used to implement Jaos.

Jaos is deeply integrated in Bluebottle to take advantage of its services. This greatly simplifies the implementation, because  many complex components needed by the JVM are already available (i.e. garbage collection, memory management, support for types and method tables). Using standard services also greatly simplifies interoperation among software that relies on those services, in particular the Active Oberon Language and the Native Oberon OS.

Jaos uses the Gnu Classpath Java APIs. Changes to the API implementation were done for bootstrapping reasons, but as the implementation progresses, it should be possible to remove them and use Classpath out-of-the-box. The modified classes are Character and VMSystem.

Goals

The Jaos Project has the following goals:

  • implement a JVM for the Aos System
  • show that the Aos Kernel is generic enough to support more than one system
  • interoperability between the Active Oberon and Java languages
  • interoperability between the Oberon System and the Java APIs

One implication of these goals is quite interesting: Jaos can be easily turned into a native JVM, which runs directly on the machine without host OS.

Description

  • Built for the Bluebottle System, inherits the Bluebottle characteristics
  • Native implementation in Active Oberon Language
  • Internal JIT, no interpreter
  • APIs: Gnu Classpath

Contributions

  • Patrik Reali, compiler, linker, maintenance, project management
  • Rolf Laich, API/Classpath integration, interfaces, exception handling, compiler debugging (as its diploma thesis)
  • Gianni Banfi, class loader, debugging functions (as part of its diploma thesis)

External Contributions and Acknowledgements

State of Implementation

Jaos fully implements all features in the Java language, including garbage collection, interfaces, and exception handling.

Jaos can run Java applications that use textual IO (using System.out and System.in); file access is also supported.

Not supported are java/net and java/awt (thus no applet support either).


(c) Patrik Reali, Institute for Computer Systems, ETH Zurich
Last update: 03 Aug 2003
Send comments to Patrik Reali