- Shopping Bag ( 0 items )
Posted November 18, 2009
A must read for java developers who wants to learn Objective-C
I've been programming with Java since 1998. It's a nice language/platform with automatic garbage collection and a rich set of 3rd party APIs and libraries. However, the introduction of iPhone changed the world, and I wanted to develop some apps for iPhone. Since iPhone does not support Java as their development language, I had to learn Objective-C. Even though I learned some C/C++ back from college days, Objective-C is still quite foreign to me. It's a bit frustrating to Google and searching through Apple's documentation to find something equivalent (that works in Java) to be used in Objective-C. After many fruitless searches and frustration, I thought I might never learn Objective-C. Then this book was released and I grabbed a copy. After reading it, I truly wish this book was available earlier so I didn't waste so much time searching blindly in Google.
James did a wonderful job bring Java and Objective-C comparison side by side. But keep in mind, no single book can cover EVERYTHING between Java and Objective-C. There are obviously certain things missing but for the most part, it covers many grounds between Java and Objective-C.
Part 1 - Language
Chapeter 1-7 give you some nice introduction to Objective-C, and along the way, comparing with Java, and gradually feeds you more and more Objective-C features. Chapter 5 on Protocols and Categories is very nice, but I wish it was much longer. Protocols and Categories are very powerful features in Objective-C. They alone deserve a whole book ;)
Part 2 - Translating Technologies
Chapter 8-15 touches on many fundamentals of both languages, Strings and primitive values, Garbage Collection, Introspection, Files, Serialization, Exception Handling and Threads. The author shows us side-by-side code snippets comparison between Java and Objective-C. This alone is invaluable to us readers. There are some mind-bending situations where you will say: why it's so different? and makes you feel confused and puzzled. Then if you read up Apple's official documentation, and explore the APIs further, you will realize why things are in certain way in Objective-C. Definitely lots of learning there.
Part 3 - Programming Patterns
Chapter 16-23 shows the readers some common programming and design patterns in both language flavors. Collection pattern, Delegation pattern (lots of Objective-C APIs are through the use of delegation), Provider/Subscriber pattern, Observer Pattern(you will find how easy it is to setup observers in your program), MVC, Lazy Initialization, Factory, and our favorite Singleton pattern.
Of course, there are many more patterns that are not covered here, but these basic patterns are enough to get you started. Again, patterns alone warrants a whole 900-page book, so hopefully something comes out soon.
Part 4 - Advanced Objective-C
Chapter 24-26 deals with memory management, mixing c and objective-c, and runtime.
Memory management is especially important in iPhone SDK since so far iPhone SDK does not support automatic garbage collection. So all the memory allocations you have in the codes must be taken care of. Mixing C and Objective-C is very interesting, it should be very helpful for gaming development, where in many cases, involves game engines written in C.
Overall, it's a solid book for Java developers who want to dive into Objective-C. You might need to read it a few times to fully understand certain topics. It's a good reference book as well if y
1 out of 1 people found this review helpful.Was this review helpful? Yes NoThank you for your feedback. Report this reviewThank you, this review has been flagged.
Posted August 31, 2010
Ideal book for Java developers that want to learn Objective-C
Pros:Was this review helpful? Yes NoThank you for your feedback. Report this reviewThank you, this review has been flagged.
1) Many of the Objective-C examples were also shown with their Java counterpart. This added value in two regards. First, it clarified what the example was really doing. I could simply reference the Java version and quickly understand the Objective-C code. Secondly, it allowed me to compare and contrast the two languages. In many cases (but not all) the Objective-C examples contained fewer lines of code.
2) In addition to the Java and Objective-C examples, the book also had many table-based comparisons for common features (data types, methods). For example, one page listed the Java data types and their Objective-C alternative including their size and range restrictions. Again this helped simplify the learning curve. The table-based charts were also used for common method declarations too. For example, the common String utility methods were shown side-by-side. One column showing Java's String utility method declarations and the other column showing the Objective-C alternative.
3) Most code examples were a page or less. This helped simplify the learning process by allowing me to focus on more isolated code fragments.
1) Many books that teach a new programming language typically include exercises at the end of each chapter that the reader can take away and complete. This book did not have any. This is a minor complaint. I can definitely think of sample programs to write.
2) The index does not always serve as a good reference for finding things quickly. For example, I wanted to find more information about logging and "logging" or "NSLog" were not in the index. Need to find the for loop quickly? You will not find it in the index. It is actually found in the index under "Collections, iterating through". The index could have been structured slightly better for quick search keywords.
3) An Objective-C quick reference guide would have been helpful. This did not bother me too much because about the time I started reading this book DZone released a new Objective-C reference guide (http://refcardz.dzone.com/refcardz/objective-c-iphone-and-ipad). I highly recommend it! In my previous "con" I mentioned that it can be painful to find certain topics (logging, data types, loops) quickly within the index. The DZone refcard provides quick access to those topics and more!
Overall this book is a very valuable resource for Java developers that want to learn the Objective-C language. The author greatly simplifies the Objective-C learning curve by contrasting many features and examples to its Java equivalent.
Posted May 5, 2010
No text was provided for this review.