Did Apple Make A Mistake Choosing Obj-C For The iPhone SDK? Part 2
Back in April 2008, on the 25 April to be precise, I wrote a blog that asked the question, “Did Apple Make A Mistake Choosing Objective-C For The iPhone SDK?”
It was a really popular entry on the blog, with some great discussions about the pros and cons surrounding the choice of Objective-C. Despite us unfortunately having to nuke the old blog and start again, that entry still shows up in Google auto-suggest and is referenced on the Wikipedia page about the iOS SDK (someone might want to update that reference now it’s broken btw).
Anyway, to recap – the reason for the question was straightforward. Back in 2008, Objective-C (the language used for developing for the Mac) had close to zero adoption among developers. Whereas, the language Java had many millions of developers. If you were going to release a phone SDK, Java seemed like a language you’d at least have considered supporting. Indeed, when the Android SDK was first released just a few months later, in September 2008, the Java language (smile, everyone) turned out to be the chosen language for that.
Anyway, now, it’s 2012, and we have a definitive answer to my question. The answer is – Apple definitely did not make a mistake.
Let’s have a look at the trajectories for the popularities of Java and Objective-C (based on data from the TIOBE index) , starting in 2007.
Driven by the huge success of two products that are genuinely revolutionizing personal computing (iPhone and iPad), Objective-C has seen massive adoption in the last few years. So much so that Objective-C and Java are now clearly on a collision course in terms of popularity among developers.
Java is still a hugely popular language. What’s happened since 2008 is that the rise in popularity of Objective-C has been meteoric. Looking at the trends, it’s possible that Objective-C and Java may reach parity in terms of popularity before the end of 2013.
It’s really an amazing story.

I think it just goes to show that’s it’s the platform, not the language per se that’s important. Java wasn’t a new language it’s was a new platform that happened to have a new language. Similarly javascript isn’t popular because of it’s features ( perhaps the inverse ) it’s popular because of the platform.
Developer productivity is more driven by the platform than the language per se these days as the ratio of code you don’t write ( in the platform libs ) to the code you do write in a particular language is heavily weighted to the former.
It’s interesting, though, that so many of the most popular languages have C-like syntax – C , Java, C++, Obj-C and C# are the top 5 languages on TIOBE, represent the top 60% in terms of ratings.
I agree, though, the platform is super-important. It would be interesting to know how much impact Android has had in keeping mind share up among Java developers…
Not just the API libraries that are part of the platform these days. IDEs are a big part of the equation too. Apple has made a big stride forward with Xcode 4.X – it now feels like a modern IDE. Also language innovation is important eg the introduction of ARC into Obj-C for iOS 5 has been transformational for productivity.
The goal of Java was to make a language that was usable by average programmers. This combined Smalltalk-like semantics with C syntax. The latter decision was made more for marketing reasons than technical ones. C had a large market share (and still does, for some strange reason), and it was easier to make developers switch to a language that looked similar than one that looked different.
What makes you say the goal of Java was to make a language that was usable by average programmers? I’m not saying that wasn’t a goal, but I’ve not heard that before. However, I do recall the early days of Java in the 1990s well. The situation in the real world was the opposite of this – it was so difficult to get Java to work effectively, that the discussions in major IT conferences were all along the lines of, “Java doesn’t work”. It was only the superstar developers that could make software written in Java work well, which was why salaries for Java developers commanded sky high prices.
The original Java whitepapers and comments by Gosling from back in the day described Java as being designed for average developers. It’s been a long time since I saw the exact references, but if you go dig up some of the material from the very beginning of Java’s life you’ll see that making a language usable and scalable for mediocre devs was a design goal.