The proliferation of Web technologies has been much on my mind lately. Last week, I talked about the continuum of Web development tools, ranging from traditional browser-based technologies all the way to applications deployed as binary executables. The interesting thing is that all of these tools are designed to achieve similar goals. So which do you use?
I'm not trying to start a flame war. Some developers will swear by Flash, while others will choose AJAX, and even within those groups there will be individuals whose preferences are even more rigidly defined. The question is, how do developers maintain their skill sets -- and, by extension, their value in the marketplace -- when the so-called state of the art seems to change on an almost daily basis?
In contrast to large biological systems, which favor diversity, large programming projects tend toward homogeneity. Excess platforms and technologies are costly and wasteful, both for developers and for the users they target with their applications. Each site will want to standardize on the one or two tools that best meet its needs. Identifying those tools for a Web project, however, can be a daunting task.
Everyone knows that writing a traditional, standards-based Web application means writing JavaScript code. Unlike traditional systems programming languages such as C and Java, however, JavaScript has no standard function library. As a result, developers have not one or two AJAX libraries to choose from, but a dozen.
Then there are those tools that attempt to remove JavaScript from the programmer's dilemma. Google Web Toolkit, for example, lets you write Web applications in Java and compile them down to JavaScript, to be executed in the browser. Others have created similar tools that let you write client-side code in Python, Ruby, and even C.
On the other end of the spectrum, proprietary platforms based on plug-ins -- such as Curl, Flash, and Silverlight -- offer developers more consistency and stability, owing to their centralized control and governance. Each brings with it a unique development methodology, however, and familiarity with one does not necessarily translate into skill with the others.
Which tool is right for the job? What are the best practices? When comparing C and Java for desktop application development, for example, it's easy to point out the relative characteristics and methodologies that each tool will bring to a project. The distinctions between AJAX libraries such as Dojo, JQuery, and Prototype, however, are less clear.

Sign up to receive InfoWorld Resource Alerts