Microsoft released a preview of Volta last month. Many people have commented on this new technology and the concept of Architecture Factoring. Some have compared it with GWT (Google Web Toolkit). James McKay is unconvinced by these new abstractions as JavaScript development environment are improving. Ray, from the Chronoscope project, compared startup time between GWT and Volta. InfoQ spoke with Didier Girard, CTO of SFEIR a consulting company based in Paris. Didier blogs on GWT at OnGWT.com.
InfoQ: GWT is about two years old, you have been following and using this technology since its inception, where are we today?
Didier: GWT is a technology which enables the development of Rich Internet Applications (RIA). There are two families of frameworks in this space. The first type of frameworks, such as GWT, is dedicated to building traditional information systems while the second type emphasizes multi-media applications (Flash, SilverLight,…).
With GWT we are no longer using a page navigation paradigm, this is a single page application, or more exactly an entire application accessed via a single URL. One of the goal of this type of frameworks is to give a desktop like user experience with the advantages of zero-deployment and cross-browser compatibility.
Today SFEIR is developing five GWT based applications and we already have several in productions. We have recently developed an extranet using GWT that has had a warm welcome across our customer’s organization, up to the CEO, precisely because of the enhanced user experience. RIA and GWT in particular is a revolution in terms of user experience and in terms of development experience too !
Typically, we develop on the Windows platform and we perform extensive QA on Internet Explorer and Firefox, and we validate on Opera and Safari.
InfoQ: What are the implications of this technology on the architecture of web applications? In particular could comment on the applicability of the MVC Pattern?
Didier: GWT is very easy to use, a Java developer can develop Web application without learning any new technologies. This is an approach that is very similar to VB. As long as a developer knows how to create a user interface in Java, he or she can use GWT.
In MVC terms, GWT is the view, there are no provisions for models and controllers. For a basic application, the view is enough. When the application is more sophisticated, it is recommend to use a traditional MVC approach.
We actually use a variation of the MVC pattern, the Hierarchical MVC pattern (HMVC). In this variation, each graphical component individually is an MVC tuple. We use events to broadcast state changes and create “behaviors” for our graphical components. We created a framework to simplify the implementation of this pattern (GDF). It is available on Google Code. It should really be used as a guide or an illustration of best practices rather and a traditional framework that introduces checks and balances to avoid developer mistakes.
InfoQ: Since its release Volta has often be compared to GWT? What is your take on the question?
Didier: Today, Volta is only a proof of concept, it enables us to become familiar with some future directions that Microsoft may release in production. The Volta vision goes significantly beyond GWT. GWT is a Java to JavaScript compiler. First, Volta itself is independent of the programming language, a developer can generate JavaScript directly from its preferred programming language. But Volta is really about developing an application and deciding later where the code executes. That’s very ambitious.
The first capability of Volta is certainly useful, the second one is, in my opinion, theoretical. Today, we don’t have enough data points to understand if this really works or not.
Let’s take an example to illustrate my point, in JavaScript the long type does not exist, it is often mapped to a float but the precision is not very good. Architecture factoring is difficult because of that. It’s interesting to have a choice, but you have to be pro-active about issues like this such that your choices can remain effective. The fact and the matter is that languages can’t project themselves directly one onto another. A language to language compilation is really a projection: you are losing semantics in the process.
InfoQ: Where are we heading with technologies such as GWT and Volta?
Didier: The trend we see today is the separation between development languages and execution languages. This is very important to understand. Some JavaScript developers feel a little bit offended by that statement, but JavaScript is a powerful language, it is so powerful that it is difficult to master, specially across four browsers. To make it accessible we have to start from a different language. I really like to think that the browser is a processor, GWT or Volta give us the ability generate some code optimized for this processor, but for the developer, in general, he or she doesn’t have to go back and optimize this code. This is why these compilers help building sophisticated web applications in an efficient way. We should think of GWT or Volta as GCC for the web and we should start viewing Javascript as the universal web runtime and start to forget it as a programming language.
Google itself is establishing the browser as the “platform”. Current browsers are incomplete, and this is why Google is developing Gears which includes a local database, a WorkerPool and a local server. This is only the first step. The second step is going to be defining interactions between the browser and the services. Google is now developing APIs to deal with synchronization issues, for instance transactional interactions between the cache and the services. Intermittent connections are really a fact of life, a lot more so than network latency and bandwidth. For instance, an iPhone is not always connected. Google is trying to solve this problem. Many other APIs may be coming for Gears : multiple files uploading API, Crypto API, Logging API, Messaging API, Location API, Desktop Shortcut API, Image Manipulation API (Just check Dion Almaer’s blog for more information). The vision behind Gears is certainly why it won the PCWorld “Most Innovative Product of the Year“.
In an RIA architecture we rely almost exclusively on distant services, often unrelated to the URL of the application itself. In the programming model the service proxy is local. It is really the role of architecture to manage the idiosyncrasies of the connection. This is really where RIA frameworks are targeting moving forward, strengthening the role of the browser as a platform.
This is less true for the second type framework which is targeting rich media, here the emphasis is more on viewers, performance and in particular streaming. We can really see a market emerging for rich media access points. For instance, goodOS just released a Web oriented Linux. Some network access points will still be producing content and require more robust capabilities at the point of access, but we should see a proliferation of a new type of content (and applications) access points.
InfoQ: Any recommendation for a developer or an architect?
Didier: If you are a java developer, give GWT a try, you will adopt it. And if you are a .NET developer, keep an eye on Volta, it is certainly a keystone of Microsoft web strategy.