Rich Client Retro

User Interface applications or so called rich clients are hot once again. To be more specific…even rich clients written in Java Swing are hot! The cause of this rich client retro revival is that we finally seem to understand that not all applications benefit from an HTML interface. Not that I’m sceptic of web development in general, on the contrary…bringing applications and data to the internet is fine, at least as long as it is properly done. However, ‘properly done’ means that you have given some thought on the user interface aspects of your application. Even if it’s a simple data entry application, do not underestimate the impact for the end user! If the current application is a terminal based green screen with a keyboard that is whacked 200 times a minute, then fancy colored HTML pages which require mouse actions will seriously impact the end-user experience. Or worse: planner applications that require drag and drop support are also not very happy in a browser environment or require so much client side scripting that in the end you’ve built an entire rich client application in some obscure scripting language. Let’s just not think about the maintenance burden or browser support issues of that.


One of the most significant arguments for the popularity of web applications is that they require little to none client side administration. Hence, they are also called zero-administration clients. The web application end user only requires a browser – which is part of the operating system anyway :o) – to access the central placed application. If any modifications or bug fixes need to be made to the application, only the central part needs to be updated and clients will automatically use the new (and hopefully improved) version. With pure client side applications, a simple update will result in updating all installed clients individually.


For some years now, the Java platform ships technology called Java Web Start – or JWS for short. JWS is a utility associated with a web browser. When a user clicks on a link that points to a special launch file – JNLP file – it causes the browser to launch JWS, which then automatically downloads, caches, and runs the appointed Java application. The entire process is completed without requiring any user interaction, except for the initial single click.


Because Java technology is write once, run anywhere a single JWS application can even be used from different platforms. You just need a Web Server to install the application on. Applications launched with JWS are cached locally, thus an already downloaded application can run independent from an online connection and can be configured to launch similar to native applications e.g. through desktop shortcuts. Since JWS applications will run outside of the web browser they are able to access system resources if you let them. Ofcourse there still is the Java Security model to protect you from mischief.


So, combining the power of JWS with the advanced user interface possibilities of Swing can be a powerful alternative to web applications fueling the rich client retro.


For me all of the above gave me something to think about. Like, how many good Swing developers are there? The revival of rich client applications will most certainly increase the demand for Swing (or SWT) programming experience. As a result I decided to design a three day development training on several Swing and Java Web Start related topics and train some of my collegues and coworkers. In the near future, expect a few Swing or Java Web Start related posts.