Learning Android by Marko Gargenta
Learning Android by Marco Gargenta is what I would consider a high level introductory book for those well grounded in Java or have a strong OO development background and don’t mind coming up to speed in order to learn Android. If you like to learn by building out non-trivial applications in a style that mimic’s real world development then consider this book.
I have been writing Java code on and off since Java was considered one of those fringe languages for those a bit off kilter OO types. I also have a style of learning that is not book oriented. I seem to prefer the ad hoc “random walk in the woods” approach. Good for discovering a lot of interesting stuff, not so good at getting a well oriented systematic approach to developing in new areas. When Learning Android by Marco Gargenta was release I decided to have a go at a more direct approach. Since I had been developing in Android for several years this was not my traditional behavior.
The book is well suited to those with a solid Java background. Needless to say if you have a strong OO background and have developed in OO languages you will not have a problem, but I recommend you have a strong Java book at your side and a willingness to spend time in the Java references to get the most out of the book. The book covers a lot of ground and is defiantly not a “now push this button” style book.
The preface mentions that the book evolved from years of the authors teaching Android in Bootcamp style classes. This shines through in the book with little snippets of knowledge that pop up at the right moment, almost anticipating reader questions and not relying on the reader to research the issue. This is obviously the byproduct of teaching many classes and occasionally watching students flail.
The theme of the book is to incrementally evolve a “twitter like” application. Not my favorite domain but very enjoyable and an excellent vehicle for covering a lot of Android functional ground. Each chapter covers a broad Android functional area such as UI, Services, Broadcast Receivers, Content Providers, file and DB systems, etc. With each chapter new functionality is introduced to the application based on these core functions, the application is refactored and in the process the reader incrementally understands the relationship of the components. While the incremental enhancement approach can be a risky proposition for a book, as opposed to books that develop limited demo capability on a per chapter basis, it works well and keeps the reader engaged. Going through the book had the feeling of developing a real world application with all the success and failures one would anticipate.
The book does a good job of introducing the Android stack, Libraries, and the general concepts required for Android development. There is good treatment of the development environment setup, Eclipse, DDMS, appropriate API’s, etc. and along the way introducing the reader to debugging techniques and tricks. The author provides a “twitter like” site with the appropriate API for development purposes. This gives the developer a real world site to experiment with and provides great feedback as the project evolves.
I enjoyed how the book incrementally evolved core functions that was not simply adding on to existing code, but required refactoring of large chunks of code. This juggling of the allocation of core functions helped with the learning process of how to really “wire up” a non trivial application. While I learn by banging in code and flailing with the debug process (as opposed to cut-and-paste), the provided sample code, segmented by chapter, was nearly flawless and provided a fantastic backup.
As a side note, in the first week of work with the book there were some minor issues with the “twitter site” used for development. The author was incredibly helpful and responsive in resolving the issues. I liked this, having experienced books where promised code or documentation never materializes. The errata site on O’Reilly was active but the majority of the issues discovered by the first couple readers through the book were minor and would in no way stall a new reader.
I very much enjoyed working through this book. If you have a good grounding in Java you will really appreciate the pace of the books and its focus on Android specific functions. If you are new to Java but are comfortable with other OO languages and want to get up to speed with Android fear not, I think you will be OK with a little slogging. The book served my purpose by filling in little holes in my knowledge that I may have missed over the years and understanding new patterns and approaches.