Actually Microsoft lets you distribute most of their runtime databases for free, and in fact we've gotten a couple of free Visual Studio licenses from them as well (they pretty much give them away at trade shows, conferences, etc), so if anything we've spent less on that than on CodeWarrior.
Regarding Java, unfortunately we've had to stay away from that because of the fact that we generally have to rewrite large portions of the OS in order to get things working the way we need them to (and work around any OS bugs). Virtually everything you see in the main screen of PlecoDict on Palm is being drawn by Pleco- rather than Palm-created code; everything that happens in between the pen tap and the screen redraw, including the font rendering, is done entirely in our code. We have a lot of custom UI elements on Pocket PC as well, and we've moving towards adding more in the next release to work around a couple of lingering bugs.
Because of this, it would be nearly impossible to duplicate our software's functionality in Java, at least not with a dramatic performance hit - even if we could get the low-level access to the OS that we need, manually rendering a bitmap font or reading binary data from a database in a Java VM would be almost painfully slow. Palm OS for Linux is supposedly going to be largely API-compatible with the current Palm OS, and actually adds several new features that might help (such as built-in support for SQLite), so I don't think it'll be too difficult to keep our current Palm version working on that. And we're not currently planning a Symbian version at all, but if we do I suspect we'll need to do a similar amount of mucking around with the OS to get things running smoothly, so the same concerns about Java will appply and we'll likely still want to do everything in native code.