Ghost Machine

    A Distributed Virtual Machine Architecture for Mobile Platforms

    Best if viewed in 800 x 600 pixels


    What's New

    (1.26.00) This project is officially inactive.

    (9.16.98) Sorry for any confusion! I had to move the web site. Haven't done much work on Ghost lately, I'm still adjusting to graduate school. Still, if you need any help, feel free mail the ghost list and I will be happy to reply.


    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.  


    This is a very preliminary (0.1.3) release! These are tar and gunzip files, WinZip will understand them, but you must always save them to file instead of opening them directly (weird WinZip bug). Make sure you save with a .tar.gz or _tar.gz extension for proper recognition by WinZip. 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. This distribution contains a server so new applications can be installed.
  • Ghost Server and Source [windows | unix] - 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 license is GPL. The only difference between the unix and windows distributions is the end-of-line termination. Users on platforms that do not except backslashes, like unix, will have to do some modifications to the javasrc/makefile due to a bug in Javac. The change is clearly documented in the makefile. I have not tested the build under a unix platform, so I am hoping someone else will test it.
  • 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).


    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 tar and gnuzip. WinZip will understand this format. 

    Mailing List

    Subscribe by sending mail to

    with this line
    subscribe ghost (email address)
    subscribe ghost-digest (email address)
    In the BODY of the message.  Add the email address if you are subscribing
    from a different account.
    ALL POSTING should be sent to



    The following list is meant to kept people informed of new events. When Ghost news happens, they will be inserted here and a note will go out on the mailing list.
  • 7.20.98 Release 0.1.3 made, the release adds pre-built server classes to the binary distribution, I think this is a better release strategy in the long run even though it creates a larger download. The source release has also been modified to work better with Linux, though this still has not been completely tested. 
  • 7.15.98 Release 0.1.2 made, this is a fix for the source only, should build ok under linux.
  • 7.14.98 Release 0.1.1 made, fixed an exit bug and added a GPL liscense to distribution!
  • 7.13.98 Documentation overhauled to be less confusing sight and a release (0.1)! Old documentation still available.

  • Copyright © 1998 by Sean McDirmid (
    *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.