AJAX is the web development buzzword du mois. AJAX programming isn't really anything revolutionary. It is simply a means of combining a bunch of web-oriented technologies in a way that enables highly-interactive browser-based applications. There are a variety of AJAX definitions floating around, but I think this article outlines the essential elements:
- standards-based presentation using XHTML and CSS;
- dynamic display and interaction using the Document Object Model;
- data interchange and manipulation using XML and XSLT;
- asynchronous data retrieval using XMLHttpRequest;
Of course, that's the way a developer would define AJAX. From a user perspective, though, AJAX applications - such as Google Maps or Microsoft's Consumers are no longer willing to put up with the traditional 'good enough' web interface.Web Exchange client - are simply web applications that more closely approximate features normally associated with traditional, standalone desktop applications.
Historically, web pages haven't been as interactive as traditional desktop applications. The web environment has limits, but the ease with which colorful "eye-pleasing" user interfaces can be developed combined with the automatically updated nature of a web application (you download the user interface each time you access it) outweigh these limitations. The user interfaces was "good enough," and the other benefits outweighed the costs.
With the growing popularity of AJAX-style interfaces, what was "good enough" has gotten souped up to compete more fully with desktop applications (though not completely...there ARE differences). Web development is already the most popular form of application development. Will AJAX programming techniques further that trend?
Maybe, assuming desktop development stood still and didn't try learn from its web competition. Fortunately, standing still isn't in the nature of competition, and desktop application development certainly isn't standing still.
First, though, consider what the shift towards more interactive, AJAX-style web sites means for web development. It signifies that consumers are no longer willing to put up with the traditional "good enough" web interface. They want something that FEELS like a desktop application, and that means the bar has been raised on web development, making it that much more complicated to develop.
Traditional programming languages, with strong typing and rigorous object orientation, are a better option for such applications. That adds some complexity, but then again, AJAX-style web apps are harder to develop, making the productivity difference between desktop development and web development smaller. If desktop development could just fix its deficiencies, desktop development could start to seem a lot more compelling an alternative, particularly now that consumers have demonstrated a preference for highly-interactive applications.
That seems to be occurring.
The first example is Flash. Flash is normally associated with animated web sites that annoy the surfing programmer stuck in a typical "Joe Friday 'Just the Facts'" mode. Flash, however, also makes an interesting application development environment, enabling visually appealing user interfaces with less effort. Flash applications can also be turned into desktop applications, enabling the productivity benefits of the Flash environment to intersect with desktop applications to create something better than old-school desktop applications.
Microsoft, likewise, is turning the standard Windows development model upside down with its Windows Presentation Framework, slated for inclusion with Windows Vista and released as a separate library for Windows XP. Using the new vector-based rendering engine of Windows Vista, the old-style block rendering model is replaced with something more flexible. Furthermore, applications can be laid out, and effects tailored in an XML file (the specific grammar of which is defined in Microsoft's XAML schema). This XML layout capability makes desktop development more like web development (the layout portions of which are a vast improvement over the traditional desktop model), and combined with the auto-update feature of desktop applications in Windows Vista, could provide interactive capabilities far in excess of web applications while offering the productivity advantages of web-style development.
Web development is probably the dominant model for application development. The fact that the commanding heights are still held by desktop applications, however, shows that there are features in standalone applications that still trump web applications. Those features may grow in importance as AJAX habituates people to highly interactive applications, and as desktop development ditches old development paradigms and embraces the innovations of the web environment.