Author: Wesley Hales
Reviewer: Ian Elliot
This book suffers from the fact that while there are lots of chunks of technology available there is still a lot missing. As a result it isn't 100% clear what a web app actually is let alone what an archetypal web app looks like. Then there is the mobile desktop split and do you write apps for Chrome or Firefox OS?
The author seems to take a slightly old fashioned approach. He takes HTML5 and a few additional APIs and describes how to build web pages that do things. Overall the approach tends to ignore the incredible range of APIs currently being thought up by the likes of Mozilla to allow us access to more and more hardware based facilities.
Chapter 1 reads like a description of the problem to someone who has been living under a rock for the past few years. However, client and server side considerations are at least dealt with in a very few pages and we get on to the real topic of the book quite quickly.
Chapter 2 opens a section of the book about mobile web apps. We have an overview of the browsers you are likely to meet and how well they support HTML5. Of course, the issue isn't really how well the support HTML5 but how well they go beyond the basics to support emerging standard APIs such as touch, camera and so on. The account is inevitably a bit out of date already because things are moving fast. It is also a bit webkit-biased - as are the following chapters.
Chapter 4 moves on to the desktop. First we consider the idea of client or server side generation of HTML and the security implications. The last part of the chapter considers tools including the use of grunt and MVC frameworks. Overall the chapter is a little unfocused with discussion of problems that aren't unique to the construction of web apps.
From this point on the book falls into a pattern of discussing a few APIs. Chapter 5 outlines websockets. Chapter 6 explains the storage API. Chapter 7 deals with geolocation. Chapter 8 is on device orientation API - even though it doesn't make sense for most desktop devices. Finally, chapter 9 deals with web workers. This is a fairly reasonable selection of important APIs. that play a role in creating web apps. None of the chapters are deep in terms of writing code and how to do things. They do contain simple examples but nothing more. There are, however, lots of useful comments about implementing the APIs and frameworks that you can use to simplify things. What you are getting is an overview of the situation - something that would help you orient yourself before using the facility.
There are lots of missing topics, but in a book of this size you can't really expect a complete coverage of all the topics that are important in creating a web app - WebGL, Canvas, WebRTC, the touch API and so on. You can also argue that some of these things aren't fully standardize yet and so probably shouldn't be included.
What really is missing from this book is a prescription for how to create a web app. There is no discussion of how the app might be discovered, installed or managed. Most important there is no discussion of how the app could work offline. One of the biggest challenges we face is the constructor of web based apps that behave like installed apps and carry on working when the web goes down or isn't available. There also is very little discussion of how to deal with the screen resolution problem using say fluid layouts and CSS.
If you are a beginner looking to find out a bit about web apps, but nothing too deep, then this book might make a good overview. If you are looking for real help in constructing installable or off-line capable web apps then this isn't for you.
I Programmer's series on creating web apps: