A review of Google App Engine Java and GWT Application Development
Buy it now
One Minute Bottom Line
|This book is my top recommendation for Google App Engine Java programming. It's coverage of the datastore is worth the purchase price alone.|
Writing a book on a young fast moving technology, like Google App Engine (GAE), is an enormous challenge. You risk the material being outdated by the time the book hits the bookstores, or the technology developing to the point where you are covering only a small subset of its features. One or both of these issues has affected every published book covering GAE, and will in time effect this one too. However, there is much here to recommend this book and give it a longer shelf life than some of its predecessors.
First and perhaps most importantly the authors have avoided the trap of trying to be all things to all people: rather, they single mindedly target the intermediate level Java programmer, including the following in their introduction:
“This is an intermediate-level book. It is designed for readers with some prior programming experience, and previous experience with Java development and object-oriented programming. It also assumes a general understanding of web technologies and concepts, and how to build web applications.”
Evidence of this can be seen not only by what is included, but more importantly what is not included. There is no discussion of basic programming topics basic Java syntax, OOP etc., and the authors mention but otherwise ignore the low level Data API – and similar advanced topics. Similarly, topics which might change quickly and otherwise date the book, billing for example, receive only brief mention, and the reader is directed to the GAE Documentation for more details.
The standout feature of this book is its coverage of the GAE’s datastore. The authors obviously spent a lot of time looking at the questions in the GAE Java mailing list, where datastore questions make up a large percentage of all questions posted to the list. Especially noteworthy were:
- The explanation of the non-relational underpinnings of the datastore,
- How the need to scale the data access layer imposed limits on the schema and query methods allowed (e.g. why a query cannot contain more than one inequality filter),
- the detailed discussion of denormalizing your data schema to allow the use of a keys only query (which improves performance and makes modeling some relationships possible),
- The design of indexes and how they improve read time at the cost of write time,
- The creation and vacuuming of indexes,
- Entity groups
- How to modify an existing entity
- How and when to use transactions, and
- Improving performance by using memcache.
While the book’s coverage of datastore topics alone makes it worth the purchase price. It also explains:
- How to create a front end using GWT (including coverage of UI Binder),
- Cron jobs and scheduled tasks – great solutions to a common problem,
- The Channel API,
- XMPP – I especially liked the authors use of this feature as a push mechanism (something that I had never thought about), and
- How to manage your app and stored data
One minor complaint I have is, that while the sample application’s code was well architected and structured, it did not include a class diagram, or a complete directory and file listing for the book’s sample application. Yes, I could have gotten this from viewing the downloadable code in eclipse I read this book on my netbook which doesn’t have eclipse installed. I think this is the type of issue that authors and publishers need to keep in mind when creating e-books as tablets and e-readers become more prevalent.
While the pace of development GAE and GWT are experiencing will keep this book from becoming a classic, read and reprinted for years to come, like Kernighan and Ritchie’s “C Programming Language” or the gang of four’s book on design patterns. Overall, when asked to recommend a book on GAE for Java. This book has earned its place atop that very short list.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)