Tuesday, July 26, 2011

XCode and Apple ...

<Warning>
<Nerd Speak Ahead>

    In an earlier post, I discussed my thoughts on whether or not I should learn to develop applications in Java or Apple's proprietary version of Objective-C known as Cocoa. At this point I feel I am obligated to at least re-cap some of the arguments for each.

    In favor of Java: There is a mountain of resources for learning the language. It is fairly well known and cross-platform (meaning you can get Java applications on just about anything from PC's to smart phones). It is well understood by the development community and has a very wide install/user base. 

    Against Java: The code is not executable. This means that another layer of software called a "Java Virtual Machine" or JVM is needed in order to use any Java application. This leads to more resources being required by the application in order to function. Java also contains a small mountain of security holes that most hackers are adept at penetrating. One of the few times such a large user base works against a piece of software. The tools that are free and/or "open source" tend to be buggy at best and for the most part incomplete. Often you will need five or six separate applications all talking to each other in order to develop even a simple application.

    For Cocoa: Very efficient and native binaries that execute programs much faster than Java. Rock solid "Integrated Development Environment" or IDE called XCode. Very secure compared to Java. "XCoders" on average make 32% (based on figures from monster.com job search web site) more than Java developers (there's just way too many of them).

    Against Cocoa: Very cryptic language. Proprietary version of Objective-C that only works on the Mac and iOS devices. Less than complete documentation for beginners or other basic information. Current documentation reads like you should already know the answers. Will probably take longer to master.

    In the final analysis I must conclude that XCode is the winner. Why? Well for a few reasons. The first is the stability and completeness of the IDE over the Eclipse IDE for Java/Android. Everything I need to develop not only desktop application for osX Lion, but also iOS (iPhone, iPod Touch, iPad, etc.) is free and comes directly from Apple. That means absolute compatibility.

    For the most part, really, what it came down to was stability and peace-of-mind. I agree with the ideas behind the free and open source communities, I am just choosing not to set up camp with them. The fact is the best software available regardless of platform or device type is closed source and costs money. Yes there are "decent" alternatives that will do the same thing for less, but its rather like going for a vasectomy; Would you prefer a doctor trained in the United States or Peru working on your man parts? Its not a question of "can he do it?" Rather it is a question of the overall experience while it is being done. I think I would be willing to put out a few dollars for that peace-of-mind. Wouldn't you?

    So, this weekend is my day job's payday weekend and my task will be to find a good book to learn this XCode and Cocoa language from. I will work through the exercises and keep you all posted on my progress as I make my way through the book. It will also serve as a guide for anyone else wishing to learn how to make apps for Mac's or iOS devices. I suppose it will also be a rather in-depth book review as well.