Ghost Machine

A Distributed Virtual Machine Architecture for Mobile Platforms

Best if viewed in 800 x 600 pixels

[Introduction][Download][Specification][Installation][Status] 

What's New

Download now available! 

Introduction

The goals of the Ghost Machine project is to put an implementation of Java on small mobile devices such as the PalmPilot. In order to place a virtual machine onto these very constrained devices, the traditional monolithic virtual machine architectures must be abandoned. Off-loading virtual machine activity onto a server like machine allows Java byte code to run effectively on these devices. 

The Ghost Machine platform is designed to support a wide variety of clients and servers. The first clients being targeted are Palm Computing's Palm OS platform. In the future, support could be added to mobile devices based off of Microsoft's Windows CE platform and the now defunct Newton platform. The servers are meant to have modern computing resources, though do not have to be large workstations. They could be, for example, running on the future class of home server devices appearing on the market. 

Implementing a Java virtual machine for these devices provides a better way of developing and distributing software. An application developer can now use standard Java tools and program to standard Java APIs. The only issues they need to concern themselves with are the resource constraints and input/output desktop differences. It also provides a safe way of distributing third party software. Code verification and a built in security manager can eliminate the possibility of catching a virus.  

Download

This is a very preliminary (0.1) release! The following components are available for download: 
 
  • Palm OS Binaries - Contains the necessary prc and pdb files necessary to run the Ghost client. It also contains a few demo applications. These binaries need only be Hot Synched onto the Palm OS device. Click on the Ghost Icon, the demo applications will have high start times due to laying out the dynamic AWT in a static Palm OS UI. Notice that this component does not contain the server and therefore you cannot install applications.
  • Ghost Server and Source - These classes and configuration files contain the necessary files to install new Java applications onto your PalmPilot. Please note that support for most APIs is limited in this release. The only thing that has been polished is the AWT, and nothing is by any means complete. Only JDK 1.0.2 based applications can be installed on the client though the server does require JDK 1.1 (as per the requirements below). Extract it to its own directory (e.g. ghostmach). The liscense has not been finalized yet, so please do not redistribute it or use it for commercial purposes.
  • Requirements

    The Ghost Machine does not require many resources on the Palm OS device. However, in order to run this preliminary release of the Ghost Machine, the following constraints should be followed: 
    • Palm OS Device - The Ghost Machine client virtual machine has only be tested on the PalmPilot Professional. Other devices should work (Palm III, Personal, and maybe 5000), but this has not been tested yet. The IBM Workpad should work also.
    • Memory - About 256 kilobytes of memory should be available to play with this release. About 180 kilobytes is devoted to storing the virtual machine and the runtime, while the rest is devoted to runtime memory.
    • Server - The server device should be a desktop or laptop workstation with at least 16 megabytes of RAM. It should be running the latest JDK or JRE (1.1.5). The latest Microsoft JVM should be ok (I have tested this a little bit). The only server platform tested is Windows NT and 95. Other platforms should work, however, since the server is written in pure Java using standard APIs and no graphical user interface. 
    • Compilation - The Palm OS binary is built using the Palm OS Win32 GNU SDK. It uses make, gcc, prc-tools, PILRC, great tools but they do not install very well. Check the Palm GNU FAQ for more information. In order to install software or develop code, a copy of the JDK 1.0.2 is needed on server. This should not be the same JDK being used to "run" the server, JDK 1.0.2 is only needed for its class files. By the way, when setting the JDK102 path, only use forward slashes (NT will still recognize them).

    Installation

    To install the Palm OS runtime, merely install the pdb and prc files on your PalmPilot using Hot Synch. The instapp.exe tools distributed with the PalmPilot can be used. To install the server, a JDK/JRE 1.1 compatible runtime must be installed and in your path. Also, a JDK 1.0.2 runtime should also be installed and NOT in your path. An environment variable called JDK102 is used by the makefiles during builds, it should be set to the root of your JDK 1.0.2 installation. Developing applications is a little bit more tricky, you might want to look at the old documentation until I can get new documentation up. I know I need a lot more stuff here, but I simple don't have the time. All archives were zipped using WinZip. If you wish to install your own applications now, please look at the javasrc 

    Status

    • Documentation overhauled to be less confusing sight and a release! Old documentation still available.


    Copyright © 1998 by Sean McDirmid (mcdirmid@cs.washington.edu)
      *Palm Pilot and all other relevant trademarks belong to 3com,  Palm Computing and USRobotics. 
      *Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. 
      *WIndows CE trademarks belong to Microsoft.