Given the mind-numbingly large number of pages that Google serves up every day, compiled efficiency is a key requirement for their web development team. However, as with many organizations, Google's team has also needed to split up their development efforts, so that web designers do not need to be programmers (and more importantly, do not need to endlessly spend their time validating and debugging low level code), and the core developers could spend time building components.
Given that, it was perhaps not all that surprising that at some point, Google decided that the best way of building such tools would be to use XML as a way of abstracting out complex functionality, then using a Java-based interpreter to convert that XML into a compiled binary object. This technology, Google XML Pages, was first developed by Google engineer Laurence Gonsalves in 2001, largely as an experiment at first. Over the years, it migrated out of the lab and into a number of Google sites including the AdWords, Blogger, Google Analytics, AdSense and Google Checkout.
At OSCON 2008, Gonsalves made the announcement that, after several years of consideration, Google was releasing Google XML Pages (or GXP) under the Apache Open Source License. Gonsalves admitted at the conference that they had intended GXP to be release under open source code earlier, but the GXP team felt that it needed to be as bulletproof as possible before that should happen.
Originally developed as a Python interpreter that produced Java source code, gxp was rewritten in 2006-7 to be a completely Java based application. The idea behind gxp is fairly simple (and is one that is used, in slightly different fashion, for Microsoft's XAML and Silverlight) - a web designer can declare a number of XML namespaces that define specific libraries on an XHTML or GXP container element, intermixing GXP and XHTML code in order to perform conditional logic, invoke server components, define state variables or create template modules. This GXP code is then parsed and used to generate the relevant Java code, which in turn is compiled into a server module invoked from within a Java servlet engine such as Tomcat or Jetty and cached on the server.