HTML/DHTML with the introduction of Ajax has reach the max of what is doable with this old technologies. Unfortunately the architecture and the browsers incompatibility makes the development quite costly, complex and tedious.
There is big need for a new way to build web apps having the best of the web and desktop without the worst. I’m convinced that without the deployment issue linked to multi tier client the web as we see today would have been very different.
What we really need for the web apps of the future:
- Zero deployment
- Cross browser / cross platform
- Write once, test once
- Take advantage of the client power
- Scalable vector based
- Sharing as much as possible with desktop technologies
- Multi tier, service enabled
- Same language, same tools, for all layers
Java applet was for sure a promising way to enhance the web, but due to the various JVM implementation (different vendors), too much test is need. Plus the lacking a markup langue has made tool development, especially the one for designer, not so compelling. Probably the lack of availability of broadband connections at that time was also the cause of not so great adoption of this technology on the web.
So it is time to find a better, more modern way, to build web UI. Preferably starting from a clean sheet and not inhering old and incompatible pieces of technologies.
Is XAML the answer then?
XAML, in its incarnation, in WPF and Silverlight is a very compelling and fun way to build UI. It enables a good separation between UI and code and facilitate workflow between developers and designers with the availability of tools like Expression Blend. Plus the power of this platform enables a true multi tier architecture with a single programming model (.NET) for all layers. From UI, to middle tier Web Services, to eventually .NET stored procedure. Using the same tool you can debug across all layer, implement the same error handling mechanisms, share validation code across layer, etc…
Silverlight, starting with version 1.1, will have a good base of .NET in it. It will make XAML+.NET available on Mac, Windows and Linux (Novell MoonLight) supporting Safari, Firefox and IE.
At that point why should I use AJAX for building my UI?
Let’s take a classic application: an e-mail client.
Let’s take Outlook for example, why should I build a AJAX version (Outlook Web Access) and an installed one where the UI layer can share no code at all?
I could build a WPF desktop version, a WPF XBAP version for the intranet and a Silverlight based one for the web. Sharing a good amount of XAML and .NET code. Same tool, same developer skills and same look and feel. Basically a dream come true.
So it is XAML the end of HTML/AJAX?
Most probably not, and for sure not in the short term. Silverlight 1.1 is not yet available and plus it needs a plug-in (2-4 MB). Like all the plug-in for browsers it needs admin right for the installation process. This is similar to Flash. It will take a while before every machine that support AJAX will also support Silverlight. Until then AJAX will be the best choice if you want the maximum reach.
Is XAML/Silverlight the only way to replace HTML/AJAX?
Absolutely no, one of the alternative is Flash with is advantage to have a very large installed based but the disadvantage that it lacks all the functionality that .NET offers in all layers and the possibility to use the same tools/technologies for all layers and even for desktop apps.
I’m personally convinced that the Web UI of the future will be composed by a large margin of Silverlight / Flash based application. The question is when they will be as popular as HTML applications.
I’m also convinced that HTML and AJAX will not die anytime soon but if I could choose I would definitely prefer to build a Silverlight or Flash apps than an AJAX one.
Bottom line I believe it is the right moment to start learning XAML/WPF/Silverlight, there is a good change that these technologies will play a key role on Web/Desktop UI development of the future.