A New Rich Client: WeatherWatcher
I think this MiniApp idea is starting to have legs. Thinking about all that Java Web Start provides we can start to imagine an application category: the so called "Rich Client". The key to a successful rich client is that it must do something that neither webapps nor native programs can do well. It must exist outside of the webrowser (the rich part), use the network for something (the client part), and not require installation (or as minimal as possible). I think my new MiniApp does this quite well.
Presenting Weather Watcher
Okay, so my graphic design skills aren't the best, but you get the idea. Weather Watcher is a simple webstart application that grabs weather data as an XML feed from www.weather.gov. It does one thing, display weather, pretty well, and it's super easy to use. So how does it stack up on the rich client qualifications?
Exists outside of the webbrowser. This is obviously true since you can close the browser down and still have the program running. More subtly, however, the program runs when offline (displaying stale data though) and it saves the city selection locally, remembering your settings each time. In the future it could do things like monitor more than one city, or track and analyze the weather history. This would make the interface more "rich", which is really just a code word for stuff you can't do with a browser.
Use the network for something. Weather Watcher is the definition of a networked app. It not only parses live xml data from a public webservice, but is also uses jsps for the configuration pages. There is a big (700k) xml file containing every weather station in the country. Rather than download this file, Weather Watcher calls a JSP on my site which has a single copy of the database. This JSP generates the list of possible states. Once you select a state it goes to another JSP to get the list of stations for that state. Thus we have a central networked database (of sorts) shared by lots of thick clients (potentially more than just this one). Though this is a simple example I think it shows the potential of networked interfaces. If new stations or states were added to the list (which, admittedly, doesn't happen that often) then they would automatically show up in the setup panel without the user anything special. That's pretty powerful.
Does not require installation. Since this is a Java Web Start application you obviously need to have a recent version of Java installed, and auto-installing still isn't as easy as it should be. Once you overcome that hurdle (which is only done once) there is visible installation step for a webstart app. You click on the link in your browser and it pops up on your screen. While it still has some bugs Java Webstart provides a really great user experience. My mother would have no trouble using it.
So what do you think? What will it take to get more of these kinds of applications going?
I should mention that the webstart requires full access. This is for two reasons. First, WeatherWatcher makes screenshots to create the illusion of transparency. Second, WeatherWatcher is loaded from my server but the data it accesses is on a different server, weather.gov. I could solve the first problem by removing the transparency effect, but the second one I can't do anything about (other than mirror the entire nationwide weather data set on my lowly 1.3Ghz Athelon).
The real solution is for Java Web Start to grant either conditional access as needed (ask only when you actually use it instead of at startup) or to provide more fine grained permissions. Currently you can only ask for full or none. I would, of course, prefer both options. Until then, I'm afraid we'll have to deal with the security popup.