I decided to try some Palm OS programming. Although I have an entire book on the subject, the inconvenience of setting up a development environment has stymied me in the past. I’m not fan of Java—I despise its unecessary verboseness, its incomplete object orientation, and the ungainliness of Java applications on almost any platform—but SuperWaba, a miniature Java-compatible virtual machine aimed at handheld devices, seemed like it would do the trick.

I found a tutorial and downloaded the SuperWaba SDK

Installing the SDK was simply a matter of copying two files, SuperWaba.jar and SuperWabaTools.jar, and adding them to the Java classpath. It’s important to note that you must add the jar files themselves to the classpath; adding their parent directory won’t work.

Unfortunately, there are a couple of extra problems to address before you can actually compile and run even a simple Hello World application.

First, the version of Java used as standard in OS X—1.4.2—doesn’t work with Waba. But don’t panic! Version 1.3 is still available; you just have to find it. You can just type in the path to javac and java: they are found in ‘/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands’. But that’s rather too much effort. Instead, you can make a couple of symlinks. I have a ~/bin directory in my path; you can make the symlinks in /usr/local/bin if you prefer. I’ve elided some of the extravagantly long path, but you’ll have to type in the whole thing.

% ln -s (path)/1.3.1/Commands/java ~/bin/java13
% ln -s (path)/1.3.1/Commands/javac ~/bin/javac13

You can now use java13 and javac13 when compiling and executing Waba code.

The second wrinkle is that, even with the correct version, you still need to compile to the correct target: 1.1. The correct command line for compiling a Waba program is now:

% javac13 -target 1.1 Foo.java

Still a bit of a hassle, right? I thought, why not create a wabac to compile Waba programs? Here’s wabac (chmod it executable):

javac13 -target 1.1 $*

To run the compiled program on the local machine for testing, use waba:

java13 waba.applet.Applet $*

Finally, I made two more scripts in the same vein to give warp and exegen.

After having done all that, I was able to compile a SuperWaba Hello World program, run it on OS X, install it to my Palm (Tungsten T3) and run it there.


For some reason, my Palm wouldn’t run the same program ever again. Oh well, at least the development environment works.