Alternatives to building Wasabi...
Joel of Joel on Software suggests that one of the only ways deliver a web application in a platform independent way is to create a compiler that can generate code that runs on different platforms.
We have taken a different approach in terms of delivering platform independent web applications. In our case, we have implemented a webserver within our product. We also have a mechanism to save data in files (rather than requiring our users to have a database) – [and for those of you wondering how anyone could possibly store data anyplace other than a database, where do you think databases store information??]. I’m fairly certain that implementing a webserver is trivial in comparison to a compiler, and that the advantages are greater. Here's an article about creating a webserver in Perl in under 50 lines of code, and I know it can be made smaller.
One advantage of our approach is that we have complete control over the environment that we run in. There are no dependencies, and our users require no software beyond a Java Virtual Machine (which we include in our Windows version), and is available on almost all other platforms (Mac, Linux, Solaris, HP-UX, etc.). I have a rant about dependencies in software that I’m saving for a day when I’m feeling really calm and relaxed and can present arguments in a logical fashion.
Complete control means, for example, that after seeing how gziping a webservers output can reduce bandwidth by 90%, allowed us to build gzip support into our integrated webserver and release it to our customers within a few days. For our competitors, it would mean documenting how to enable gzip communication on all of the different webserver platforms on which their software was deployed on. In our environment, we have complete control over our threads of execution, how they interact, what we keep in memory, and what we read from disk.
It also means that our developers don’t need to learn a new language, new compiler, etc, etc.
In Joel’s case, their product was created years ago, and, as he points out in an earlier blog, when choosing between technologies, his team chose what they knew at the time. Our framework was created almost five years ago, and if I was starting from scratch, being in a Java space, and building a platform independent product I wanted to ship, I might look at embedding an open source web server such as Jetty, and we could use something like Derby as an embedded database. Everything would be a bit bigger, not quite as tightly coupled as we can make things now, but overall might be a good choice. For someone building a custom web app, a lot of what I have to consider, or Joel has to consider, this discussion is not going to be as relevant.