||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Cloud, Google AppEngine, Java, Python, GWT
Title: Code In The Cloud
Author: Mark Chu-Carroll
Publisher: Pragmatic Bookshelf
Level: Some knowledge of programming in Python or Java required
There's no doubt that cloud computing is flavour of the month - it's like virtualisation on steroids, and everyone wants some. For developers wanting to know what all the fuss is about, this is a great place to start. While the book is geared around one specific implementation of cloud - Google's App Engine - it's a useful introduction to cloud development in general. For this reason, even if App Engine is not your intended platform, it's worth looking at it as a good learning tool, and as this book as an extended tutorial that will give you skills that you can transfer to other platforms and languages.
Where some books use lots of mini examples to illustrate a technology, this book adopts the approach of building a single cloud application - a web chat service. It's a good choice of project as it's familiar enough in concept that we can all understand it, and yet it throws up most of the key issues that arise in cloud development - issues of data persistence, concurrency, communications latency, dynamic allocation of computing resources etc. Being based on App Engine, there are two main languages supported: Python and Java. The first part of the book introduces the App Engine, while the second part develops the chat application using Python, the third part uses Java, finally the fourth part of the book looks at a series of advanced topics.
The app is developed iteratively, with each iteration used to illustrate some aspect of the platform or a specific issue related to cloud applications. As one would expect the app starts off as fairly basic (and ugly, to be honest), but then improves as the book progresses. So, for example, we go from using Python print statements to emit raw HTML to render out app, to using the Django template engine with CSS for styling. Services such as data persistence and user authentication are also introduced along the way.
The process is repeated by developing the app in Java, though this time the interface is rendered using GWT rather than using Django. The emphasis is a lot more on the server side of things, and there's also an emphasis on development and testing using the Eclipse IDE. The author spends time discussing the trade-offs between the Java and Python approaches to development and the relative strengths of each when it comes to cloud applications (where debugging can be a nightmare because of the distributed platform).
The final section of the book looks at more detail at data persistence, security and so on.
Overall this an easy to digest read, with lots of useful advice, a good central application to draw everything together. The author writes with an easy, chatty style, one developer to another, and so avoids the tendency to talk down to the reader or to try and blind with science. It's a book that's easy to read, and the coding is easy to follow even for those with only a passing acquaintance with Python or Java. Be aware though, that the reader is assumed to be a developer already - this is decidedly not designed for someone who does not have some programming experience. All in all, it's one we can recommend.