In this post, I'll take a look at where desktop and web applications are heading. Eclipse E4 could be a major player, but its vision is too limited. First, I'll summarize the current state of application affairs.
Recent developments in web applications:
- Offline modes and databases (Google Gears).
- Run them as separate applications via Mozilla Prism.
- Write them like a desktop GUI application, be it via Dojo or via GWT.
- Have bidirectional communications with a server (Comet).
- The server is getting leaner, becomes mostly a service provider, while the clients do much more work.
- receive updates via the internet.
- provide help texts in HTML.
- Ubiquity: Applications are available anywhere (where you have online access) and there is no installation necessary. Update are completely unobtrusive.
- Synchronization: A corollary to ubiquity, you want your data to be ubiquitous, too; not just your application. Applications will synchronize with a server, in a fashion that mimics distributed version control systems.
- Integration: Applications are first-class citizens in a desktop environment.
- Mash-ups: You build mash-ups by orchestrating web services and exchanging user interface components.
- Stability: Applications run safely separately and don't affect some kind of browser, be it by slowing it down or by crashing it.
- Rich content: appears everywhere, it includes images, sound and movies.
In my opinion, tools like GWT get it right, while the Eclipse E4, at least from what I've read about it so far, does not. The former is an excellent intermediate solution that will be easy to evolve into what is to come. The latter feels more like a frantic push to be web-enabled, somehow. RAP, which has been quoted as an E4 inspiration, is a bit like an anti-GWT and relies a lot on the server to keep state. Pursuing this path gives you the worst of both worlds: You have sluggish web applications and do not evolve the state of desktop applications, either.
Any comments? Am I right in bashing E4's web ideas or did I just misunderstand?
Disclosure: This post has been partially triggered by "Who Needs an Online IDE?".
Update: The newest generation of applets can be dragged to the desktop to become a Java web start application. This is really cool: You can quickly test-drive an application as an applet, but also turn it into a proper application for long-term use.