A Saga of Palm Java Development
A little while ago I mentioned that I was looking into development of some Palm applications. I've been torn between C/C++ development and Java, and digging into the tool set available led to some interesting findings.
Preliminary investigation into the Java realm left me feeling a bit underwhelmed. I kept getting the feeling that the commercial vendors were more interested in pushing a (poorly defined) agenda. For example, can I ship the JVM or do I have to require my users to download and install it independently? I got some rather fuzzy answers to that one, which left me feeling a bit confused. It just seemed that things weren't too mature.
And so,I thought I could find some better support on the C/C++ side of the fence. I took a deep sigh and tried to come to grips with losing many Java advantages... as I tried to prep myself, was I just getting ...soft? I tried to download the trial version of a popular Palm C/C++ IDE made by a company based in Norway, but got a strange error message from the server. Checking the home page, there was a note that the demo key server was down, and had been down...for over a week. A trip to the relevant newsgroup didn't feel me with a good vibe at all. So, I went to the other vendor, a rather famous name from my Mac OS days (which gave me a good feeling, especially when a lot of the criticism was that the IDE was too Mac-like). That vendor only had a link to an obsolete demo on their site, which didn't work either.
I was not getting a good feeling about C/C++ development.
I realized that the fates were trying to tell me that I was going to hand-craft my development environment anyway. Which meant that I might as well reexamine the Java tools.
Revisiting,I found the mobile Java stuff from Sun, a JVM called Waba, and an enhanced version of Waba called SuperWaba. I really liked Waba and SuperWaba - it felt a lot like a regular JVM, and in particular if you wrote to the Waba & SuperWaba specs, your code would work on both desktop, Palm, and PocketPC devices (which really is the whole point, right?).
But, I was slightly disappointed with the Waba & SuperWaba experience, especially on ordinary Palm OS devices (with 10MHz-20MHz or so processors). Both performed great on a 400MHz or so ARM-based system, but users had to install a JVM independently, and it was kind of slow. It wasn't at all clear that I could ship the JVM with my web app. I wanted to make sure that users could easily beam the application from one handheld to another, but beaming a Waba- or SuperWaba-based app was not very convienient.
This then led me to WabaJump. WabaJump takes your Java-and-Waba-based code and then converts it to Palm 68K ASM, which is then converted into a Palm PRC. I still get my desktop PC and PocketPC compatible Java class files if I want to deploy those, but I also get natively compiled Palm OS 68K apps. Some preliminary tests give me apps that look just like native Palm apps, launch fast, and work great.
The build process is actually pretty complicated - they don't seem to have converted to Ant yet, so it was all a mess of ugly batch files, but I was able to figure out what was going on and get them working on my system. From there, I was able to get everything working and up to speed with Eclipse (I am still finding myself occasionally using Eclipse, sometimes NetBeans).
It all took quite a bit more work than I was expecting, but in the end, I found myself with a very workable solution which lets me build apps that target Palm, PocketPC, and the desktop. Users for PocketPC and the desktop will still have to have a user-installed JVM, but all in all, not too shabby.
<>I'll let you know when I've got my apps ready for posting... ^_^