Let’s assume we are buying a business software that will meet some business needs for our business. It is a multi user enviroment, so we opt for a product with a Client/Server architecture. What to ask for, other than the obvious requirements for the task?
I would, first of all, ask for ease of deployment. What good is a software if you can’t run it? Ease of deployment for both the clients and the server. But clients here are more important for two reasons; they will be many, and they will be installed on desktop computers in the wild. As opposed to one server, which is (hopefully) maintained by professionals. So I would like my new software to be easily installed, uninstalled and upgraded on any computer connected to my network.
I would also like to be able to access the software through any client connected. It is a bad bad security model to rely on authentication against a client installation. Each and every client should be identical and the authentication should be done against some form of credentials1.
As a user I would also like to know that the client software will not mess with the rest of my system. Software breaking2 other software, or the entire operating system is useless, no matter how much utility it has otherwise.
I guess you have realized by now where I am going with this. The system I have described above is unlikely a big over-burdened application that radiates seriousness from your screen and clings itself into the bowels of your Operating System. I am actually talking about a volatile client and server architecture. Where the client almost doesn’t exist. It exists of course. It resides on the server until you connect with your browser3, then get downloaded and run. This model is called Rich Internet Application, RIA for short.
The key characteristics of RIA are;
- No install or uninstall4.
- Automatic remote upgrades.
- [Sandboxed](http://en.wikipedia.org/wiki/Sandbox(computersecurity))
Rich Internet Applications are powerful and considerably easier to deploy. They do have one drawback; the platform (HTML+CSS+JavaScript) they run on is not designed for applications from the beginning. It is initially designed for documents and then extended to support for applications. The main practical problem is that the JavaScript implementations are not as fast and reliable (on high loads) as native code or other popular interpreted languages. But we have started to see a new breed of browsers specifically built for applications. I am sure JavaScript virtual machines will be improved significantly in the near future.
On the other hand benchmarking and measuring performance by actually using and application typically yields different results. In our example, business applications do not involve heavy operations that require a lot of processing power. Non-linear video editing does, image synthesis does, desktop publishing does, business applications doesn’t. So the RIA would still be my first choice even with the possible performance problems mentioned above.
