Apple is a very rigid company from the Software Development side.
Unlike Microsoft who chooses to open Windows to any language out there Apple endorses only one language and that is Objective-C. As far as Apple is concerned that is how you develop applications for the Mac.
As you might expect, Apple made the same decision for the iPhone's SDK. A decision that Simon Brocklehurst questions the wisdom of...
Recently, Apple bowed to the inevitable, and has released an SDK for developer testing. The language they chose to base the SDK around is Objective-C. This wasn’t a complete surprise - after all, it’s the “native” language of Mac OS X. However, while it’s not a surprise, I wonder if it’s not a major strategic error on Apple’s part. The point is this: the Mac is a niche platform, and is especially niche in terms of numbers of developers building applications in Objective-C. Compare that to iPhone, which because of its technological lead, has the chance to become a major volume player in the mobile phone space. If Apple wants iPhone to succeed, it seems strange to attempt to force developers to use an unpopular language for programming it. That isn’t the way to win - developers have many, many choices of platforms they can spend time developing for.
He then goes on to quote a chart which shows Objective-C placing #38 in popularity among programmers. All leading to the question: Did Apple make the right choice by using Objective-C?
My answer, of course they did.
In fact, they made the choice that will probably save the platform in the long run. You see, developers can be a greedy lot. They'll often port their application to every phone available in order to maximize their profit. This is easy to do since most phones support Java natively but leads to lousy applications because almost no thought was put into each individual phone. So you get an application base for those phones that is polluted with half breeds that don't look or work right.
Apple can't allow that to happen to the iPhone.
The iPhone is all about user experience. Try to imagine an iPhone application where Multi-Touch isn't supported and you'll see what I mean. The platform demands consistency, anything less would risk tainting the whole experience for the user.
By limiting developers to Objective-C Apple forces them to write applications specifically for the iPhone. This draws iPhone specific developers to the platform who will preserve the user experience and give Apple the consistency they need.
So Objective-C is really the barrier against anyone wanting to make a few bucks off a badly ported Java Application.
This will limit the iPhone's application base but Apple clearly prefers a few high quality applications over an army of mediocre ones. That attitude will probably prevent them from ever being featured as the free phone in a sign-up offer but I doubt that was what they wanted anyway. The Apple brand stands for something better than that.