Bandwidth, Installers and Schema Updates
I recently wrote an article, "Create Desktop Applications with Java-Based Web Technologies" for O'Reilly ONJava.com, and I was just pondering some of the feedback I got. (If you're too busy to read the article, basically I write about using a web application in a bundled Tomcat to build a desktop application w/installer).
First off, people seem to think that bandwidth is *awfully* cheap nowadays - in my lead in to the article, I talk about how servers and bandwidth are expensive, and several people commented that bandwidth is more or less too cheap to worry about. I agree that it's true up to a point, but the real heart of my comment is that running a 24/7 server operation is beyond most small development houses.
More interesting, several people seemed to think that building an installer for end-users was more or less a waste of time. There was also a comment that Java Web Start was the better route, and that Swing is the proper way to go for all client development.
I really like Swing for certain kinds of development, but I've always been a bit surprised at how hard it is to build a really good user interface with it. I would be the last person to say that we should all throw out all of our Swing apps and reinvent them as web apps. Instead, think about all of that great software written for the web and locked away on servers in the form of JSP code. We talk about digital hubs, but the only way I have to program my Tivo with my Tungsten C is via the Tivo website (I do have a web browser on my Tungsten C, but I doubt I'll be running Swing apps any time soon...).
The one I keep coming back to, however, is the "we don't need an installer" concept. Looking at a bunch of the software I've got, open source, Java, and otherwise, it's intriguing to see how much (especially open source stuff) has no installer and/or a truly miserable installation processs. I'm trying to figure out how common this attitude is among Java developers. Do people really not think that software needs installers? (As an aside, I will confess that I use a lot of development tools, which seem to suffer from this attitude more than other software).
So, I'll get up on my soapbox. People need good software that's both easy to use and easy to install. Developers appreciate the time and investment as well. I've given up on trying out a number of potentially interesting packages based on the incredibly cumbersome installation requirements.
I feel a little weird saying this - it seems awfully common sense. But, again, looking around at the state of affairs...
In any event, the heart of the article, including the real world "life story" behind the need for the technology, is something I'll be talking about at the upcoming O'Reilly Mac OS X conference and also at ApacheCon (from somewhat different angles). If you're going to be going to either show, please come by and let me know what you think...
Oh, and one final note. I mentioned in an earlier post that I was interested in looking for some way to automatically update the schema in a database to the current rev for an application, and it looks like Hibernate supports this capability. You can find some of the info here and here. The upshot is that you use the net.sf.hibernate.tool.hbm2ddl.SchemaUpdate class. So far, it seems to be working pretty well.