ECMA achieves Harmony on the Web
Tuesday, August 19th, 2008
As you might have heard, harmony has been found in the ECMAScript working group ECMAScript Harmony (see also EJohn Resig’s post and thegreat Harmony podcast with Brendan Eich and Arun Ranganathan).
To sum it up, the ECMAScript, responsible for standardizing JavaScript, has had pretty intense discussions over the years about the future of the language. One side wanted to evolve JavaScript into a more typed and traditional compiled language (ECMAScript 4), while the other wanted to keep JavaScript’s dynamic nature a core feature of the language (ECMAScript 3+).
Theoretically, from a language perspective there are pros and cons for both sides. However, the bigger question was and is “what is the best direction for the web?”
To better answer this question, a quick look at the different application architecture designs would be helpful. There are two main architecture designs for client applications.
- Client Oriented Architecture in which application logic resides on the client machine and data are loaded and synchronized from a local or remote internet destination. This approach is currently the best, if not the only, way to build desktop applications (i.e. Outlook, Photoshop and Skype). While it can also work and be useful in a web environment via plugins such as SilverLight, Java and Flash, it often finds itself at odds with standard web assets.
- Web Oriented Architecture in which application logic is distributed across client and server and data can be downloaded or synchronized as part of the application flow. The distributed nature of this approach requires the client runtime (i.e. browser) to have a more programmable interface (i.e. html, css, and JavaScript) than the traditional client centric approach. A unique attribute of this web architecture is the capability for the server to completely reprogram the client within an application flow. This architecture attribute is probably the single most important design concept behind the web we know today.
In the client centric approach, the benefits of having a typed and compiled language provides undeniable benefits as it facilitates client applications to fully take advantage of the local device’s resources. Platforms such as Java, .Net and others provide great versatility and client side capabilities.
For the web centric approach, dynamic languages and architecture such as html/css and JavaScript have proven to be robust and scalable design principles for internet based applications. These include consumer sites such as YouTube, Facebook and eBay as well as enterprise mission critical applications such as SAP, Oracle Ebusiness, and SalesForce.com.
So the real debate was “do we bring the ‘client/server’ application model back to the web, or do we continue to improve the current dynamic nature of the web which allows clients and servers to fully participate in all aspect of the application?”
Luckily, a conclusion has been reached and the decision has been to keep the Web dynamic and to abandon parts of the ECMAScript 4 concepts that could have had a negative or backward impact on the dynamic nature of the web.
Some might call harmony a victory for Microsoft, who despite their SilverLight effort were lobbying to keep JavaScript more incremental and dynamic, others might say that it dismisses Adobe’s ActionScript, which was paving the way for a more a traditional object oriented language for the Web. However, the real winner is the Web as we know it today as this event ratifies its design principles and consolidate its resources for building a better and brighter future. Harmony is a great milestone for the future of the web, and in many ways it has already reinvigorated the industry interest about the web technology discussions and directions. The ECMAScript team did a fabulous job at reaching consensus and articulating the decisions in an objective and informative way.
For enterprises, this is a huge step forward as it ratifies open Web technologies and design principles as the future-proof building blocks for creating the next generation of internet enterprise applications.
Now, the next two big milestones for the web are going to be how fast Microsoft will catch-up on its JavaScript implementation, and when the web will be able to leverage the next iteration of the web markup language (HTML 5).
Note: if you are getting confused with all these names and version, Alex Russell made a nice name soup.
