However, since servlets and JSPs are so "Web 1.0," you are going to be
developing your presentation layer using Google Web Toolkit (GWT).). If you've
ever done any web development, you know how frustrating, time consuming, and
error prone it is to write the sexy, dynamic applications that users crave, given the
ways that different browsers and versions of browsers interpret your code. With
GWT, you write your AJAX front end in Java, and GWT then compiles it into
the "Web 2.0" functionality without all of the hassle of writing cross-compatible
It's an understatement to say that virtually all applications need a way to persist their
data. This could be user-generated data or simply configuration settings required by
your application at runtime. Some frameworks and web application servers are
distributed with lightweight, embedded databases, but App Engine comes with a
massive, scalable database called Bigtable. Bigtable is a flexible, schema-less object
database or entity store. It supports massive data sets with millions of entities and
petabytes of data across thousands of commodity servers. Many projects at Google
store data in Bigtable, including web indexing, Google Earth, and Google Finance.
Using Bigtable, your applications can take advantage of the same fault-tolerant
storage that Google relies on to run its business.
Your timecard application will use Bigtable to store the daily time entries that
users enter. Your application will be inserting and querying for entities but not
updating them. We'll be covering Bigtable and topics such as scalability, JDO, JPA,
and JDOQL in more detail in Chapter 7.
Using Google Web Toolkit
As previously stated, you will be using GWT for your front end. GWT isn't a server-
side framework like Spring and GraniteDS but an entirely separate product that
Google has recently baked into App Engine using its Eclipse plug-in. Just as App
Engine doesn't depend entirely on GWT, GWT can run just fine without App Engine.
You can write GWT applications that can be embedded into HTML pages or used
with other application servers. You can run a GWT application on a PHP/MySQL
stack if you'd like.
One of the main advantages of GWT is that it hides the complexity of writing
browsers. During development, you can iterate functionality quickly with the same