GWT and Phobos: Have Java and Javascript Traded Places?

Share the article!

Okay, there are two new interesting developments in the Java world. The first and more prominent one is Google Web Toolkit (GWT). GWT allows developers to write user interfaces in Java, compile it into Javascript and have it run in a browser. For anyone who has ever written a significant application in Javascript one knows that its a trial and error processs. Javascript in the browser is simply an unpredictable and far from a well-behaved beast. Java developers for the longest time have tried to avoid writing javascript. Unfortunately with the advent of AJAX, it becomes mandatory that applications are implemented with a rich set of Javascript enable interactive. GWT helps to do away with this, by leveraging peer production it hopes that its not alone in removing this nightmare.

The second development is Sun’s project Phobos a framework for writing javascript on the serverside. The growing popular of dynamic languages has driven the need to provide more lightweight approaches for developing server based applications. The frameworks uses Mozilla’s Rhino javascript engine (w/c incidentally is also part of Java 6.0.

These two approaches are entirely new. They’ve been done before in the form of Java2Script and Helma. What’s changed now is that there’s this large company backing of the approach (i.e. Google and Sun). Although I truly grok the rational for each project, I can’t help but think “Have Java and Javascript traded places?” It’s quite a paradox, Javascript doesn’t have the consistency, modularity and static checking that Java has so someone builds a compiler. Java’s type checking system is not quick and dirty enough so someone builds a framework based on Javascript. Can’t we ever make up our minds our are we doomed to repeatedly re-invent the way we do things?


Share the article!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>