Sunday, May 11, 2008

GWT + GAE

Web applications are generally modeled through client-server software architecture and consists of two components

  • Server side: This is were all the business layer resides and infrastructure code resides
  • Client side: This is where all the client user interface resides
There has been lots of frameworks available for the server side but when it comes to client side you are left with javascript and html. Working with javascript and html is like coding in assembly language for the browser and is generally considered as black art (considering that you need to make them work on different browser flavors). Google web toolkit (aka gwit) comes to rescue here with all the best practices of large scale software development cylce.

Of course it demands that you have some basic understanding of java language and some knowledge of writing GUI code, but the payoffs are tremendous for large web applications. And with the power tools like eclipse and netbeans with which you can develop/test/debug your user interface code just like typical GUI development process. There are plugins (cypal-studio and gwt4nb) available for both these IDEs which automates most of the gwit work for you. Another benefit of gwit is that you would get all most all the google api (like google maps, google search) binding available for gwit

Lets see what Google App Engine (a.k.a gae) has to offer. It is google infrastructure similar to what is provided by Amazone EC2 (a.k.a ec2) but for free (with some limitations since it is early days). As with gwit, with gae you need to know python to some extent. Learning new languages is always a fascinating experience and ones understanding of things become better and in an heterogeneous environment its is definitely a plus. With gae (once you have your account alloted), you can write web applications without worry about scalability and data infrastructure layer. Google answer to database is found in Bigtable. The same infrastructure is now available for you. Some of the limitations of gae are as follows:
  • No persistent server side processes (i.e. no crob facility yet)
  • SQL like but not SQL (could be a "blessing in disguise")

Google web toolkit and Google App Engine combination is a killer. Till now there wasn't any library which could make both of them talk to each other natively. The work done by python-gwt-rpc is of great value here. With this combination one can start writing great web applications for free. All this would require is knowledge of python and java.

I would personally like to use ruby on the server side since it has better code aesthetics which suits my taste

No comments: