Google is working on a number of advanced programming technologies to ease complex web application development, a Google engineer revealed at a conference for software developers.
“We’re getting to the place where the web is turning into a run time integration platform for real components,” said Alex Russell, speaking at the EclipseCon, being held this week in Reston, Virginia. At Google, Russell works on the Chrome browser. He is also the creator of the widely used Dojo JavaScript framework.
Despite its popularity, the web offers only relatively primitive programming capabilities, compared to other platforms for delivering applications — such as Java or Microsoft Windows. One major shortcoming is that web technologies don’t have a “common component model,” which slows code testing and reuse, he said.
Google is working on a number of different projects to bring some advanced software engineering concepts to the web, Russell said. The idea is to introduce low-level control elements without making the web stack more confusing for novices. “We’re learning from platforms [that] started at a very low-level,” he said.
Much of the power of the web, Russell admitted, comes from its ease of use. Developers can view and reuse source code. Browsers are forgiving of errors, and technologies such as CSS (Cascading Style Sheets) offer simple methods to execute complex tasks, such as formatting text.
But such ease-of-use limits developer expressivity. With CSS, “the fact that you aren’t able to poke in and draw your own kind of line is not great,” Russell said. “You get the same text layout on all the web sites. You have the same design because you have the same constraints,” Russell said.
Google’s efforts include creating a unified component model, adding classes to JavaScript and even creating its own language for large web applications.
By developing a unified component model for web technologies, Google is setting the stage for developers to “create new instances of an element and do things with it,” he said.
As an example, Russell showed off a new element he created called commenting. For web pages that allow user comments, the commenting element, rendered as a tag, can automatically format the text submitted by a user and even add an accompanying photo. The tag is actually a program, complete with its own API (application programming interface), Russell said. With the unified component model, HTML can be a sub-class of a larger environment, allowing for more ways to manipulate HTML code.
Google engineers, Russell included, are also developing a proposal to add classes to the next version of JavaScript. A core element of object-oriented programming, classes are blueprints for reusable chunks of data and behaviours. Today, JavaScript does not support classes, so JavaScript programmers tend to use function calls to define many chunks of operational code that aren’t actually functions, such as methods and constructors. This practice is time-consuming and makes the code more difficult to reuse.
“We have to build everything up from these primitives. We can’t share anything. We have no common language for the web platform,” Russell said. With JavaScript classes, “We’re getting to the place where we’re adding shared language for things we’re already doing in the platform itself,” he said.
Another Google initiative along these lines is a new language the company introduced last year called Dart.
“The current crop of [programming] languages is hard to scale when creating really complex applications for the web. Creating good tooling for them is difficult,” said Dan Rubel, a Google software developer who is part of the Dart team, speaking at a EclipseCon technical session about Dart. The goal of Dart is to provide an easy way to create small web applications while providing the support for large, complex applications as well, Rubel said.
Mike Milinkovich, executive director of the Eclipse Foundation, agreed with Russell’s assessment that developers need more advanced tools for maintaining and debugging web applications. To this end, Eclipse is developing a version of its IDE (Integrated Developer Environment), called Orion, that runs entirely within a web browser.