On March 10, O’Reilly will release Jonathan Zdziarski’s book iPhone Open Application Development, currently available as an online RoughCut. Online and brick-and-mortar bookstores will have the book as soon as shipping permits.
Apple has just released a toolkit for application development on the iPhone. Readers will naturally ask: what is the relationship between the material in the book and Apple’s development environment? Can they apply what they learn in the book to Apple’s toolkit?
A bit of history is required. Last year, a group of programmers figured out the APIs behind the iPhone and created the open toolkit that has been used to create new native iPhone applications for almost a year. (See my earlier blog.) Zdziarski was a leader in that community. Intense interest among the open source community in that project, as well as anticipation over the upcoming Apple toolkit, made this RoughCut the most popular one ever released by O’Reilly. The open kit is covered by an Apache-style license, and functions on many different platforms including OSX, Linux, and even Windows under Cygwin. This free, open-source development tool chain is not encumbered by any Apple licensing restrictions, nor does it depend on Apple’s DRM-based distribution network.
As of March 6th, Apple introduced their own official SDK, although it won’t allow applications to actually run on an iPhone until much later this year. The Apple SDK bears a considerable resemblance to the open source SDK, but naturally has some differences.
For one, Apple has restricted and locked down many of the frameworks that are operable using the open source tool chain. This means that some of the functionality covered in Jonathan’s book, while accurate, has been made intentionally unavailable in Apple’s version of the SDK.
Apple has also placed licensing and distribution restrictions on software designed with their tool kit, meaning that developers will not be able to release certain types of applications, and no developer will be able to release software without enrolling in a special developer program (which will initially be limited).
A significant portion of the foundational code and examples provided in Jonathan’s book do in fact apply to both the open source tool chain and Apple’s SDK, though there are both minor differences in method names and more noticeable differences with respect to some of the more advanced examples. Some are affected by actual code differences, and others merely by licensing restrictions. These differences have been documented by Apple and can be found in their SDK manuals. For the low-level technical details about specific changes, consult Apple’s manual. For everything else, use Jonathan’s book.
As Apple works over the next several months to improve their SDK, the open source community has expressed a strong commitment to continually supporting the free tool chain, enabling developers to continue to write software unencumbered with licensing restrictions, operating system requirements, or requirements of a corporately-owned distribution channel. As a result, the open source SDK is likely to be around for a long time, and will likely be made to function on newer iPhone firmware in the future.
Whether you are using Apple’s SDK or the open source tool chain, O’Reilly is thrilled to provide you with Jonathan’s book as an excellent introduction to the iPhone development environment along with a broad range of intermediate and advanced programming techniques. It is not merely a recipe book, but a guide to concepts, techniques, and whatever a programmer needs to become a good iPhone developer. Apple SDK users will find this book valuable, in conjunction with manuals to uncover the differences in the Apple SDK.
As of today, and for much of 2008, the only applications from the public you will find on the iPhone will be those built with the open source tool chain. Apple’s SDK is not yet ready for mainstream distribution, and there is no way yet to run Apple SDK applications on the iPhone. Practice your skills on the single SDK that does work today, and just be ready to adapt that knowledge to Apple’s SDK when it becomes more solid, as Apple is likely to re-evaluate some of their decisions with respect to restricted features and licensing
A lot of developers are complaining about Apple’s choices, so it’s quite possible Apple will undo some of the changes and bring their toolkit closer to the open one. When things settle down, we’ll know more about where Apple is going with this. Until then, regardless of which SDK you plan on using, you will find Jonathan’s book to be of great value.