Mastering Mobile… by Jonathan Engelsma et al. [PDF/iPad/Kindle]
Mastering Mobile Application Development
Mastering Mobile Application Development
Mastering Mobile Application Development

This book is 100% complete

Completed on 2018-05-08

About the Book

Hundreds of books have been written on iOS and Android since the debut of these platforms some eight to nine years ago. Many of them are well-written by very capable authors. This leads to the inevitable question,  why write another?  

Both of us have both taught and developed on these platforms since they appeared, and also have worked on their predecessors (Java MicroEdition, Symbian, etc.) Over the years, we've made a number of observations. First, becoming proficient on either Android and iOS involves a fairly steep learning curve. To help with that of course, both Apple and  Google provide very large and comprehensive sets of how-to guides and reference  documentation. Second, while distinct in terms of programming languages, frameworks and basic vocabulary, these platforms actually have more in common than initially  appears. Third, while developers tend to specialize on one or the other, it is not unusual  for mobile app developers to become proficient on both platforms over time, as many production apps have both iOS and Android implementations.  

Often we find ourselves in situations where we will be explaining a concept on one of the  platforms to a student or developer in terms of what they already know about the other platform.   Similarly, we will have students in one of our courses in which we are teaching iOS tell us  they just got assigned to a new project at work involving Android or vice versa.  At one point we attempted to teach a semester course in mobile app development teaching both Android and iOS at the same time. We realized very quickly that other than a few scattered blog posts, there was very little instructional material available that explored the platforms side-by-side in a comparative manner.  Though we personally were proficient on both platforms, we had not spent enough time organizing our thoughts and materials in a way that would allow the learner to efficiently bridge concepts that related across the platforms, and simultaneously call out situations where a  fundamentally different approach was called for due to intrinsic differences. Instead, our lessons tended to quickly diverge into the details and world of the specific platform and any conceptual overlap was completely obfuscated and lost to the students. The net result was that students spent an enormous amount of effort learning a little bit about both platforms.       

These experiences and observations led us to the conclusion that we could do much better if we organized our thoughts and intentionally created a grand tour of both platforms that iteratively led the student from concept to concept in a logical manner, calling out the similarities and differences as we go. This vision, followed by a lot of discussion and hard work (and encouragement from students and colleagues!) has resulted in this book. 

Our approach is to imagine a fictitious yet non-trivial app that is clearly representative of the many apps consumers currently use daily on their smartphones.  Studying how this app is implemented on both iOS and Android in a logical step by step iterative fashion, exploring various facets of the platforms as we go. Each chapter therefore focuses on one a single key aspect of modern mobile apps and begins with a discussion of the concept itself, and a discussion of the commonalities and potential differences in iOS and Android, pertaining to that particular topic. Once the concepts  have been fleshed out at a conceptual level, we then introduce concrete examples of how  those features are implemented on both iOS and Android. 

This comparative approach to learning a software-related topic is not without precedent.  For many years accredited university computer science programs have offered courses in programming languages. These courses typically survey a variety of programming language principles, constructs, models, and styles, and illustrate them with concrete examples from a variety of programming languages. A common learning objective is to help the students understand programming language principles that lay beyond the mere syntax, and recognize the concept when it appears again in perhaps an entirely different syntax. Armed with these insights, the student not only learns to write better code in a particular language, but can also rapidly assimilate and learn new languages. For example, a student who has been exposed to lambdas in Ruby and who understand how Ruby implements such constructs, and when they are appropriate to use, will immediately recognize and understand closure expressions when they encounter them for the first time in Swift.  

Given the enormous demand for mobile apps and the rapid pace in which iOS and Android are evolving (not mention the platforms that will soon appear on the horizon.) we believe this comparative approach that intentionally calls out concepts in a way that transcends the implementation details will serve the student aspiring to be a professional mobile app  developer well. We believe this approach is also germane to the professional developer who is struggling to keep up with the constant avalanche of new mobile implementation frameworks, concepts, and in some cases even entirely new programming languages!  

Hence our intended audience consists of both the computer science student, as well as the practicing professional developer.  We believe this approach will help the mobile app newbie with no prior knowledge of mobile application development become rapidly proficient on both iOS and Android, and well-prepared to rapidly assimilate whatever our  mobile app development futures may hold. We also believe this approach is an excellent way for the experienced developer who is already proficient on either iOS or Android and would like to become proficient on the other. By bridging the knowledge they already have to the other platform, they will quickly orient themselves and become productive.  


About the Authors

Jonathan E
Jonathan Engelsma

Jonathan Engelsma is a Professor in GVSU’s School of Computing, where he leads the GVSU Mobile Applications and Services Lab.. His research interests are in distributed and pervasive computing with a focus on mobile applications and services. Dr. Engelsma earned his Ph.D. in Computer Science from Michigan State University in 1993. He has over two decades of industry experience, including 16 years in various research and development positions with Motorola. When he's not writing code or teaching, he's likely tending his honey bees.

Hans Dulimarta
Hans Dulimarta

When teaching introductory programming in Java to his students, Hans brags about his hometown in Indonesia. Sharing little knowledge of geography about Indonesia with his students helps them discover that Java is also the name of an island where their instructor was born. A scholarship awarded by the Indonesian government allows him to pursue his graduate degrees at Michigan State University. As a scholarship awardee, he was required to return and work for the Indonesian government after finishing his doctoral degree. After completing the employment requirement as a university professor in Indonesia, he decided to come back to teach in the US and chose West Michigan as the home for his family.

Hans' interest in Android programming began since Cupcake and he continues to stay up-to-date with the latest release.

Having research interests both in mobile applications and computer graphics has motivated him to learn Vulkan mobile-first, by exploring the library using Android NDK.

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors and publishers use Leanpub to publish amazing in-progress and completed ebooks, just like this one. You can use Leanpub to write, publish and sell your book as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub