By Sean Luke (Waba for Newton Virtual Machine)
And Steve Weyer (Waba Newton Class Loader)
Contributors: Paul Guyot, Harri Hohteri, and Victor Rehorst
Please send us feedback!
New in Beta 4
Beta 4 includes some bug-fixes to Beta 3. Only the VM has been updated -- all other files are the same. Bug fixes include: a serious memory leak in the VM which shows up notably in WaGo stealing heap space even after it's quit; and some minor Catalog fixes.
New in Beta 3
Be sure to update the VM as well as all the libraries. New in the beta includes: windows that go all the way to the screen edge, rotation fixes, graphics improvements, up/down key fixes, reading catalogs from PDF files, improvements to the NSWabaAPI.
What Is Waba?
Waba is a stripped-down implementation of the Java Virtual Machine. By 'stripped down', we mean that it does not support doubles, longs, exceptions, finalizers, threading, reflection, custom class loaders, security or class verification, and the entire Java class library. Waba comes with its own library of small but useful classes -- the only classes Waba has in common with Java's class suite are Object, String, and StringBuffer, and Waba's implementations have only the bare minimum of methods.
As long as you use Waba's class libraries, and stay away from exceptions, finalizers, doubles, and longs, then (here comes the nifty part) you can use any Java development environment to write a Waba application which will, with the help of a few minor conversion tools, automagically run on the Newton, Palm Pilot, Windows CE, Windows 98/2000/NT, or even in your web browser.
There are two places you should go for more Waba information in general. First, check out Wabasoft.com, the makers of Waba. Second, see WabaWorkbench.com, a developer's site.
What Does Waba for the Newton run on?
Any 2.0 or 2.1 NewtOS machine.
Does it really work on the Newton?
Yep. As a matter of fact, you can even run multiple Waba applications simultaneously. On the MP2K (the Newton with the smallest C++ heap space) we're able to open up to 4 Waba applications and have them running at the same time.
Waba also works in either grayscale or black-and-white. In grayscale, it uses widgets that resemble WindowsCE widgets. In black-and-white, it uses widgets that resemble Palm Pilot widgets. Newtons with grayscale support can display either mode. Don't want your newly-developed Waba app to use WinCE or PalmOS controls? The beta version of Waba also provides full access to the Newton toolbox and the NewtonScript interpreter.
What's the downside?
The downside is mostly drawing speed. The WabaVM is written in C++, but to access any Newton drawing commands, it has to request them of the NewtonScript interpreter. Thus you have one interpreter (Java running on the VM) making requests of a second interpreter (the NewtonScript Interpreter) just to draw a line. Still, on an MP2K, it's not bad at all. On an MP120, drawing is rather slow, but it still works!
Waba also doesn't expect text to be entered in the, um, unique way that the Newton provides. We've given the best work-arounds we can.
Why Port Waba? Why not the KVM?
Sun makes the KVM, which is also a stripped-down implementation of the Java Virtual Machine, a little more powerful than Waba. It's also much more popular than Waba is. But Sean chose to port Waba instead for two reasons. First, the KVM's philosophy is to be entirely implementation-dependent, that is, KVM programs on the Palm Pilot won't necessarily run elsewhere. In contrast, Waba makes a good-faith effort to be highly portable, so we can grab lots of apps made for the Palm or WinCE and run them immediately on the Newton. Second, the KVM is very difficult to grok. But Waba has an elegant suite for porting, that made porting to the Newton relatively painless. Okay, highly painful. But much less painful than the KVM would have been. Basically, Waba was the only way to get the project completed in the time Sean had.
Sean has received (non-written) permission from Rick Wild and WabaSoft to distribute the Waba for the Newton under the BSD license rather than the GNU GPL. This should eliminate any open-source license conflicts that had arisen. One file in the distribution, utf8.cp, is under the IBM Public License.