I am reluctant to build my own virtual machine. Like other members, I am
more interested in taking apart a virtual machine to see what makes it "tick".

As a hobby, I might like to optimize a few vm-related components. I am
thinking of a virtual machine more and more as a kit. There is an OSKit to
build an OS. Why can't we develop a VMKit to build a virtual machine?

At first, a system is built from the bottom up. It is easier to generalize
once a virtual machine has been constructed. For now, we can use decaf as a
baseline. All other virtual machines will be measured against it. Faster
than decaf? Smaller than decaf? More flexible than decaf?

A few components of decaf can be re-worked to start a VMKit. Others are
decaf-specific. Here is another example.

The interface between the standard Java class library and a virtual machine
depends more on the standard Java class library than a virtual machine,
right? So why can't we abstract this interface? We can. We can define all
of the components and their methods a virtual machine must implement in
order to support the following versions of Java:

  Java 0
  Java 1
  Java 2

The baseline should be stub components. A stub component implements an
interface but does none of the real work. This is the basic idea behind
BCNI and Alt package proposal. It is possible for a virtual machine to plug
in a file system component, a network component, an AWT component. Each
virtual machine does not have to write a unique implementation of AWT. We
can work together. For example, some of the AWT for Linux has been written
by the classpath Project (http://www.classpath.org). If it were better
organized as a vm component, we could simply plug it into decaf in host mode.

My kernel/virtual machine is called "CjOS" partly because it emphasizes the
standard C library as its kernel interface. It uses a mix of C/C++ and
Jasmin. It depends upon bytecode resource and Pure Reflection in C++.


_______________________________________________
Kernel maillist  -  [EMAIL PROTECTED]
http://jos.org/mailman/listinfo/kernel

Reply via email to