Email the Author
You can use this page to email Jonathan Engelsma and Hans Dulimarta about Mastering Mobile Application Development - 2nd Edition.
About the Book
This is an updated 2nd Edition of the previous version of the book. We've completely rewritten the book, and refreshed all code examples using the latest versions of Xcode/iOS and Android Studio. In addition, on the Android material, we've replaced the Java language with Kotlin! This book offers developers an in depth tour of these two important platforms. Whether you are just learning to programmer, or you are a seasoned developer, this book will quickly help you grasp the concepts and become proficient.
Hundreds of books have been written on iOS and Android since the debut of these platforms more than a decade ago. Many of them are well-written by very capable authors. This leads to the inevitable question, why write another?
We have 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 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.
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.
Dr. Dulimarta is currently an associate professor at School of Computing and Information System, Grand Valley State University. A few years ago he started a special section of Introduction to Computer Science II course opened to students who are interested in mobile application development using Android. Under his guidance, the students taking this special section have published several Android apps to the Google Play Store.
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.