Author: Tony Hillerson
Publisher: Pragmatic Programmer
Audience: Programmers evaluating mobile
Reviewer: Ian Elliot
Valuable experience of seven approaches to mobile?
Mobile development is important, no argument, but which one? Sometimes you have no choice. You just have to develop your app for Android and iOS, but what about cross platform approaches? This book covers seven approaches to mobile development and each is covered in the same overall way. First we have a description of what a beginner might make of the new environment. Then a rethink and something that corresponds to what an intermediate programmer might make of it all and then a final polishing things off.
The example programs are quite large compared to say a "hello world" app and this might cause a problem. You can argue that you need a relatively realistic app to show the characteristics of the environment, but it is also too easy to lose the essence because of the many side issues a complex app throws up. As a result how much you get out of this book depends on your willingness to spend time finding out how the examples work.
The book is divided into two parts - official native platforms and cross platform tools. There is also an initial chapter on setting up a server that the example apps can used to download data. The server is Ruby on Rails and if you are not interested in how it works you can either take it on trust or just follow the instructions.
The three official native platforms covered in the first part of the book are fairly obvious but we also have a fourth - a web app. Does a web app qualify as an official native platform? Isn't it a cross platform development environment? It doesn't really matter and the example app is a world-clock. It doesn't make use of an IDE but does everything in a raw and basic way but it also makes use of lots of libraries. It uses Node.js to manage dependencies, jQuery and Underscore. None of this represents the only way of doing the job and it does make it harder to see the wood for the trees. What exactly is so special about mobile web apps? From here we go on to use the Mustache template library and Skeleton grid system. At the end of the account we know about one possible approach to mobile web development.
The next three chapters are on iOS, Android and Universal Windows Platform. You have to cover iOS and Android and, even though it has a very small user base, you have to include UWP. The example apps are weather forecast, currency conversion and stock quote respectively.
At this point you might have the thought that the book would have been simpler and the comparisons easier if a single app had been developed on all of the platforms. However you might disagree and think that the variety illuminates more of the difficulties. Oddly, despite praising the tools that are available, the book tends to ignore them. For example, the Android layout is presented as XML rather than making use of the Designer. As a result you don't get a good impression of what a typical development session is like. What you get is a view of what this particular approach is like.
Part II moves on to a diverse set of cross platform approaches - RubyMotion,Xamarin and React Native. The projects are a To-do app, a calculator and a note taking app. The choice of RubyMotion might appeal to Ruby programmers, but the fact that it is a paid for development system won't go down as well generally. Xamarin was a paid for system, but it is now free since Microsoft took it over. If you are not a .NET C# programmer this isn't going to be particularly attractive. React Native is free, but relatively new and rapidly changing.
The selection of approaches is interesting but why no Cordova? This is probably the most popular of all cross platform approaches and it supports a very wide range of platforms. To omit Cordova from the mix means that the comparison really isn't general enough.
You are probably going to want to read this book to find out how the different approaches compare and there are some interesting comments about what's good and what's not so good. You will also learn something about the way an app is created for each platform or how the cross platform tools work, but a lot of it is detail that you can probably live without until you actually start to code for real.
When it comes to the native platforms it is difficult to know why you would want to compare them - apart from academic fun. You generally don't have a choice you simply have to code for Android and iOS and any comparison doesn't really help as there are no choices to make. With regard to the cross platform set of tools then you do have a choice, but RubyMotion and ReactNative are outliers that you aren't likely to consider unless you have other reasons to do so. Xamarin is a good system, but most would agree that its big problem is the huge task of staying up-to-date with iOS and Android. Will Microsoft continue to back it given its own mobile efforts are so feeble?
This is not a book for every mobile developer. It does have lots of interesting details and if you want a quick look at native development and some cross platform tools then you will find it useful - but make sure you also look at Cordova before you choose any cross platform tools.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.