Mick Jordan Sun JavaGuest ****** Many server-based commercial environments run application suites that are entirely implemented in Java, or in languages that compile to Java bytecode. The Java applications are executed by a Java virtual machine (JVM) that is hosted on a traditional operating system, typically some variant of Unix. While Unix implementations continue to evolve and improve, Unix was primarily designed to execute C applications and is not an ideal match for the requirements of the Java platform. While it possible in principle to modify the operating system, this is not easy, nor it is possible to exploit the potential offered by the safety properties of the Java language, which does not require the address-space protection needed by unsafe languages such as C. Until recently the effort involved in developing a new operating system more suited to hosting the Java platform was prohibitive. The advent of para-virtualized hypervisors, e.g. Xen [BDF+03] changes this situation by dramatically lowering the barrier to entry. Not only does the hypervisor provide a portable and idealized interface to the hardware, but also the ability to concurrently run standard operating systems allows some facilities to be off-loaded completely. While some of the benefits could be realized by porting an existing C-based JVM to the hypervisor API, [D06], [Ammons07] the full potential of a dynamically optimizing JVM environment can only be realized with an all- Java approach. Accordingly, the JavaGuest project [JavaGuest07] is based on Maxwell [Maxwell07], a new research JVM under development at Sun Labs, that is written entirely in Java and based on a meta-circular architecture. While there is already much less native code in Maxwell than a traditional JVM, the JavaGuest project has a particular goal of absolutely minimal C code, thus allowing the Java compiler to optimize code down to the hypervisor API layer. The initial JavaGuest prototype is currently based on an enhanced version of the MiniOS example guest OS that is provided in the Xen distribution. MiniOS is augmented by a small layer that interfaces with the Maxwell JVM. MiniOS has been modified for SMP support (multiple VCPUs) and we have also added two custom splitdevice drivers. The first driver provides just those I/O facilities required by the file system classes in the Java platform, thereby off-loading all file system access to a sibling guest OS. The second driver provides support for debugging the Maxwell JVM using the Maxwell Inspector, a powerful GUI-based tool that provides traditional assembly-level debugging in conjunction with convenient visual access to the JVM meta-data. At the time of writing, the system is capable of running simple programs and our goal is to scale up to running a standard application server. In contrast to file-system access, the network stack will be implemented in Java and not offloaded. In the future, we plan to progressively replace as much as possible of the MiniOS C code base with a Java implementation and exploit the optimization possibilities inherent in the single-language architecture.