Why Do We Build Web Applications?

Creating a good user interface is no trivial task, no matter if it's running as a desktop application or inside a browser. When it comes to accessing server-side resources (a common thing in the corporate world) web applications seem to be the first choice nowadays. You have complete control over deployment and in theory platform independence.

However, there are lots of disadvantages, too, and I don't understand why the alternatives are so often not even considered.

When building a sophisticated web application, you always have to work around the stateless nature of HTTP, deal with browser quirks, JavaScript's idiosyncrasies and other limitations. Sure, frameworks exist to hide all that from you, adding layers of abstraction and complexity. In the best case, web development feels almost like traditional client-side programming. The question is, why do we put up with this?

Don't get me wrong, I'm not talking about classic web sites here. Not even about community sites where users generate content. I'm talking about all those countless in-house applications that are used for data entry or management. A good example are corporate content management systems: They usually come with a more or less sophisticated web UI, but the number of people actually being allowed to edit content is small (the deployment argument doesn't work here).

In many cases, a rich client is a more suitable and cheaper solution. If your users are a relatively small on-site group, there should be no logistic problem to provide them with up-to-date clients. Technologies like the Eclipse Rich Client Platform (RCP) or Java Web Start for even easier deployment should be considered. I'm quite confident that they would help to reduce development costs quite a bit and (if done right) could result in a far more powerful and ergonomic user environment. In web applications you have to reach for Ajax (adding a second programming language to your project) and still won't get anywhere near a classic desktop application.

Maybe the problem is that there are too many web developers out there ...

social