The Wayback Machine - https://web.archive.org/web/20100330025555/http://www.psynixis.com:80/blog/2008/04/25/did-apple-make-a-mistake-choosing-objective-c-for-iphone-sdk/

Did Apple Make A Mistake Choosing Objective-C For iPhone SDK?

One of my favourite sayings is a quote from Sun’s CEO, Jonathan Schwartz – different isn’t always better, but better’s always different. So, I’m a fan of a lot of the super-innovative work that Apple does.   However, their thinking is sometimes different to the point of not making any commercial sense.  The iPhone is a case in point.

For example, it took a long time for Apple to even realise that it needed to release an SDK for the iPhone.  What they were thinking, I have no idea,  given it’s a blindingly obvious requirement.  Surely everyone knows by now that “innovation happens elsewhere”.  Or, to put it another way, it was clear from the word go that Apple wouldn’t have the resources to develop every iPhone application people would want to use; witness the popularity of third-party apps on “jail-broken” iPhones.

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.

Note that I’m not saying that Objective-C is a bad language.  I’m just saying it’s unpopular.  How unpopular?  Well, the TIOBE Programming Community Index for April 2008 has just been released.  Here’s the list, in order (most popular first), of programming languages that are more popular with developers than Objective-C.

  1. Java
  2. C
  3. Visual Basic
  4. PHP
  5. C++
  6. Perl
  7. Python
  8. C#
  9. Ruby
  10. Delphi
  11. JavaScript
  12. D
  13. PL/SQL
  14. SAS
  15. Pascal
  16. Lisp/Scheme
  17. FoxPro/xBase
  18. COBOL
  19. Ada
  20. ColdFusion
  21. Logo
  22. Lua
  23. ActionScript
  24. Fortran
  25. RPG
  26. MATLAB
  27. Prolog
  28. Awk
  29. Transact-SQL
  30. ABAP
  31. LabView
  32. Erlang
  33. Groovy
  34. Smalltalk
  35. Haskell
  36. PL/I
  37. Bash
  38. Objective-C

By this measure, almost any language would be a better choice than Objective-C if the goal is to attract developers to a platform.   I think it would be smart for Apple to now to think about releasing SDKs in more popular programming languages.  Which one should be next?  Look at the list above. Decisions like this really aren’t, or certainly shouldn’t be, rocket science. And no – the answer isn’t Tcl/Tk ;-)

Trackbacks & Pings

  1. Did Apple Make A Mistake Choosing Objective-C For iPhone SDK? at Simon’s Blog » Weblog of a "Switcher" on 26 Apr 2008 at 3:33 am

    [...] Did Apple Make A Mistake Choosing Objective-C For iPhone SDK? at Simon’s Blog: “DID APPLE MAKE A MISTAKE CHOOSING OBJECTIVE-C FOR IPHONE SDK? [...]

  2. Simon Sez (ObjC flame) « frameworker on 26 Apr 2008 at 3:40 am

    [...] Sez (ObjC flame) This is “duh!” on so many [...]

  3. TomsTechBlog.com on 26 Apr 2008 at 7:53 pm

    Objective-C: Savior of the iPhone…

    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. Th…

  4. Closer To The Ideal » Blog Archive » Maybe hecl is the new Applescript? on 09 May 2009 at 1:43 am

    [...] I would love to be able to write apps for the iPhone. But I don’t want to have to learn the Object C language. I don’t have the time. I agree with Simon Brocklehurst’s criticism of this decision: [...]

  5. Starting iPhone Devlopment « factornine weblog on 25 Aug 2009 at 9:25 pm

    [...] language for writing iPhone applications is Objective-C, I previously heard bad things about the language but after a little confusion I’m getting used to it and it’s seems [...]

Comments

  1. Michael Long wrote:

    Way back in the day, Jobs choose then then new Objective-C over the equally new C++ to create NextStep. Which in turn was purchased by Apple and became the basis for OS X.

    While there were once a few other choices for programing OS X applications, those have been deprecated in favor of Objective-C and Cocoa. In short, there are NO other languages currently supporting the full OS X environment.

    So you’re suggesting that, in the space of a few months, Apple should have created an entire iPhone SDK — BASED ON AN ENTIRELY DIFFERENT LANGUAGE FOR WHICH THERE’S NO OS X SUPPORT. WHATSOEVER.

    Sorry, but that’s nuts. Further, looking at the above chart, the choice is FAR from obvious. There’s no room for a full-boat Java interpreter, OS X is an object-based system so C is out, VB/C# belong to MS, and PHP/PERL aren’t application development languages.

    How about doing Mac/iPhone development in Delphi? Or JavaScript? Or D, PL/SQL, SAS, Pascal, Lisp/Scheme, FoxPro/xBase, COBOL, Ada, ColdFusion, Logo, Lua, ActionScript, Fortran, RPG, MATLAB, Prolog, Awk, or Transact-SQL?

    In fact, there’s little from 10 on down that’s suitable for any number of reasons.

    Which leaves C++ and perhaps Python, neither of which are natively supported by OS X AND Cocoa AND XCode.

    If Apple wants the iPhone to succeed, then they need to get an API and SDK and development system out the door NOW, and not spend another year doing it.

    Which means going with what they have today, which is Objective-C, Cocoa, and XCode.

    So, does THAT make commercial and strategic sense?

  2. Mike Rundle wrote:

    Obj-C is a very elegant language and is not hard to pick up and run with. I had never written 1 line of code in it prior to the SDK and now my in-progress iPhone app is nearly complete and I feel like I can conquer the world with ObjC after only a few weeks.

    Mac programmers have been using ObjC for years so you think picking a different language for the SDK — immediately alienating all core Mac developers — would have been a good idea? I don’t think you’ll find someone to agree with you.

  3. simon wrote:

    @Michael Long

    You ask about what they should have done in a “few months”. One of the points I was making was that they should have been thinking about SDKs for iPhone for a hell of a lot longer than that.

    Clearly, though, they are where they are. What matters is what they do next. My suggestion was that they now consider releasing SDKs for programming languages that are more popular than Objective-C. Do you agree, or disagree with that?

    By the way, your reasoning about possible language choices is way off. You managed to get to C++ and “perhaps” Python as the only possible choices!!! Fail! For sure Apple could support Java, C# and ActionScript. In fact, they wouldn’t even have to pay their own people to do the heavy lifting – Sun, Microsoft and Adobe would be happy to work with Apple on this; and if Apple wanted to maintain complete control, by itself, they could support Java on iPhone quite easily.

    And aside from native apps, the truth is that going forward, if Apple wants to claim that iPhone offers a full web experience, then they’re going to have to support Flash, Silverlight and Java anyway… They should be thinking about this now. Otherwise, in a year or two from now, people like you will be asking, “What – you expect Apple to be able to offer all that in a couple of months? How could anyone have known that Flash, Silverlight and Java would be important for the web?”

    @Mike Rundle

    I made a point of specifically not saying that Objective-C is a bad language. It’s a good language. I was saying that it’s not popular among developers.

    The iPhone is not the Mac. If all Apple wants to do is get Objective-C Mac developers writing for iPhone, then, of course, they’re going exactly the right way about it.

    As for alienating developers that use Macs, I have to tell you that most software developers that use Macs as dev boxes aren’t actually writing software using Objective-C. They using their Macs to develop software in languages like Java, Python, Ruby, JavaScript, ActionScript etc.

  4. Mike Rundle wrote:

    @simon: As far as ObjC not being popular among developers, your chart makes a lot of sense considering the Mac marketshare, but… consider the Mac marketshare. Developers who create software for the Mac use Cocoa libraries which are accessible via Objective-C, so instead of looking at ObjC development as a whole in the scheme of all programming, look at ObjC usage within the scheme of development for the Mac. It’s the winner. If we’re going to make the argument that Apple should have allowed languages that you’ve mentioned to put together iPhone software, then how about the alternate argument that Microsoft should be allowing Windows developers to use PHP to write Win32 applications? Or Sun should allow Java developers to use Ruby on Rails to create Java applications? Objective-C is the language for development on the Mac, and since iPhone programming accesses many of the same Cocoa libraries in the same way as Mac programming does, why switch? Google started from scratch when creating Android so they could do anything they want, but the iPhone’s APIs are based on years of Cocoa development and it made sense to keep the development similar.

    Also, it should be noted that there are several programmatic bridges that allow developers to access Cocoa APIs without using Objective-C like PyObjC (Python) and RubyCocoa (Ruby). Since both generate the same compiled code, I see no reason why you couldn’t use them to create iPhone applications. Here’s a link to a PyObjC app prototype for the iPhone.

    “As for alienating developers that use Macs, I have to tell you that most software developers that use Macs as dev boxes aren’t actually writing software using Objective-C. “

    When I said Mac developers I meant developers who create Mac applications. Obviously there are developers who use a Mac to create things other than Cocoa apps :)

    “The iPhone is not the Mac. If all Apple wants to do is get Objective-C Mac developers writing for iPhone, then, of course, they’re going exactly the right way about it.”

    This seems to be the same argument that people have been using when they say Apple should allow music purchased on Rhapsody or other non-iTunes stores to work on iPods. It’s not in their best interest to do so. Apple is catering to existing Mac developers with the iPhone SDK, but because the iPhone is so popular, they’re also hoping that developers who have not developed in ObjC before will learn it. If you learn ObjC to make a native iPhone app, then creating a full Mac application is now within reach, which looks to be Apple’s goal. Get a ton of developers to learn and use ObjC for iPhone development and now you have a lot more developers who could potentially make great Mac software. It’s a huge win for Apple. I don’t see the long-term Apple benefit for putting iPhone applications together in C# or ActionScript.

    “You ask about what they should have done in a “few months”. One of the points I was making was that they should have been thinking about SDKs for iPhone for a hell of a lot longer than that.”

    Who says they weren’t? The iPhone SDK, programming guides, examples, and tutorials are so deep and rich that there is no way Apple only put the SDK together “in a few months.” I have no doubt that when Steve Jobs originally said that the only 3rd-party iPhone apps would be web apps, they were already working on the native SDK but wanted to gauge interest first. It hasn’t been the first time Steve has said something in public only to have the complete opposite in the back of his mind.

  5. simon wrote:

    Mike Rundle said,

    “If we’re going to make the argument that Apple should have allowed languages that you’ve mentioned to put together iPhone software, then how about the alternate argument that Microsoft should be allowing Windows developers to use PHP to write Win32 applications? Or Sun should allow Java developers to use Ruby on Rails to create Java applications?”

    But that’s exactly what is happening right now. Microsoft is working to get non-Microsoft languages to compile down to CIL for running on the .NET CLR (e.g. Python in the form of IronPython); and Sun is working to get non-Sun languages (e.g. Ruby in the form of JRuby) to compile down to Java byte code to run on the Java VM. It’s all about attracting developers to your platform. For Microsoft, that platform is .NET. For Sun, it’s the Java Virtual Machine. For Apple, the platform is iPhone.

    Apple wins if they can grow the iPhone platform to the point where they sell hundreds of millions of iPhones a year. That’s what a successful mobile phone maker does; and it would be transformational for Apple if they could achieve that.

    Their core mobile hardware/OS platform is certainly good enough to let them achieve that. However, their software applications strategy looks like that of a small niche player. They need to attract millions of developers to their mobile platform…. and, IMHO, they’re just not going to get there by supporting only a tiny niche language like Objective-C.

  6. Ted wrote:

    Oh please.

    You say developers have lots of choices of platforms to develop on. Yes they do. But there is only one iPhone/Touch platform. And it’s the only one that counts right now… any C programmer can pick up ObjC in a few weeks. This is a non-issue.

  7. Jim Stead wrote:

    The most casual glance at Mac applications demonstrates that objc is no barrier to the quantity or (more importantly) the quality of them; there will be no shortage of good apps. Apple most certainly does *not* need “millions of developers”.

  8. simon wrote:

    LOL! Ted. Apple sold 1.7 million iPhones last quarter. The only platform that matters? Hardly.

    As for the “any C developer can pick up ObjC in a few weeks.” Of course. Any decent developer can pick up any language in a few weeks. The problem is, that’s just too big of a hurdle if you want to really attract large numbers of developers.

  9. simon wrote:

    @Jim

    You make a really good point. Objective-C does tend to appeal to high-quality developers, and so the quality of applications produced tends to be pretty high.

    The truth though, is that the Mac is a small niche platform… and I get the impression that Apple has bigger ambitions for iPhone.

  10. Tom wrote:

    Maybe, it will attract more developers to write Mac applications, after they wrote some iPhone apps. If it will follow this path, then it would be a really strong move.

    I don’t think a language is the hardest part to overcome. It’s the framework you have to get familiar with. In the end the language doesn’t matter that much.

  11. philip wrote:

    Your criticisms are laughable. Fortran a better choice than objective C? Gimme a break! Do your homework. After you eliminate the popular, but completely irrelevant languages for modern application development then Objective C doesn’t look like bad choice at all. Also, any programmer worth his or her salt can learn and be coding in Objective C in less than a week.

  12. Joe Anonymous wrote:

    I call BS on the chart. Apple has around 6% of the installed base for computers. Most Mac apps (and Mac OS X, of course) are written at least partially in Objective C. How in the world could it be #38?

  13. Peter wrote:

    Well the SDK has already been downloaded 200,000 times so I’m not sure they are going to have a problem with lack of developers.

    You say that “Apple bowed to the inevitable” and released an SDK under some sort of pressure. I say rubbish and it was planned all along. This has *all* been planned with almost perfect timing to get tens of millions of dollars worth of free publicity.

    As a developer I switched to Cocoa recently and its not so hard. For the most part you can write your app in C/C++ and just use Cocoa for the GUI as I am doing. You don’t have to go Objective C all the way if you don’t want to.

  14. soft_guy wrote:

    Obj-C is a good choice because, like C++, it is a superset of C. In addition, it works with C++ too. So, if you have existing C/C++ code, you can use it very easily with Objective-C. There are plenty of CoreOS APIs that don’t use Objective-C on the Mac. The beauty of Objective-C is that you can call these “straight C” APIs right from your Cocoa app. I have done several projects where I wrote portable C++ to share between platforms and then wrote a GUI interface in Cocoa with Objective-C for Mac and did something else for Windows. It is also possible to take code written in this way and migrate the UI to something Trolltech’s Qt without too much trouble. (I did this on a recent project.) Now, for example, I might want to migrate my Qt code back to Cocoa to support iPhone. I can do it because I can use C++ which will work with my new Cocoa iPhone application.

    Also, you are making some serious mistakes in your thinking. Many of the 37 languages you cite as being more popular than Objective-C are not used and not suitable for the development of native GUI applications. Javascript, Perl, Python, Bash and several others on that list would be unsuitable. Objective-C coexists with C and C++ which are #2 and #5 on your list.

    Apple doesn’t need to attract a huge number of developers to iPhone, merely a sufficient number of good developers.

    Furthermore, you make an assertion that Apple wasn’t planning to deliver an SDK all along. You are incorrect in this assertion. When the iPhone was delivered, I was able to get strong hints from Apple engineers (while they were drunk at a party) that there would be a native SDK. Waiting to announce and deliver this SDK was smart for two reasons. First, Apple could control the quality of all of the software for the iPhone on day one. They could establish the iPhone as a successful platform first, then open that successful platform for developers all at once. Very smart move.

    I developed for PDAs in the early days. Because of the difficulty in supporting a lot of third party developers, many pda platforms made their SDK available by invitation only. Then they didn’t get enough third party apps and the press labeled them a “failure”. Then they tried to open it up later which also failed because not very many develoers want to develop for a failing platform (a few vertical/embedded developers and that’s it.) One of the ones who did this was General Magic. My company wanted to develop for their system day one. We couldn’t because we didn’t know anyone over there and weren’t a big enough deal yet. A year later we had a successful app for the Newton and General Magic needed third party developers so they called us multiple times begging us to write for their device. Sorry, Charlie! Too little, too late.

    But Apple brilliantly sidestepped BOTH of these problems with iPhone. By doing the internal development first, they were able to work most of the problems out of the SDK before releasing it. They were able to sooth AT&T about software quality. They established iPhone as a success without having to bet on third parties to deliver key applications. They were able to draw up really well thought out business plans for the App Store initiative. They were able to talk with key third party developers and get feedback.

    And THEN, from a position of strength and success, they let in the community of Mac developers to write for their iPhone using tools we already know how to use.

    Brilliant. Absolutely this was the best possible strategy.

    And if we don’t get some java developer or some VB developer – who cares? There are thousands of Mac developers who know how to write some quality software working feverishly to have the best apps in the App Store the day it opens.

  15. Synthmeister wrote:

    Well, maybe Apple isn’t attracting “millions” of developers but Apple said this at their conference call:

    “Over 200,000 developers have signed up and downloaded the software development kit. Interest in the iPhone enterprise beta program has also been off the charts. We have received applications from over one-third of the Fortune 500 and over 400 higher ed institutions. Hundreds of companies and institutions have been accepted into the program and more are being added each week.”

    I think Apple is going to do quite nicely, thank you very much. Having the same code base as Mac OS X makes tons of sense. It gives them a synergy between the two platforms that no one else has. (MS has tried this for years with WinCE and failed.) Every innovation on one platform will help drive the other. Synchronization between the two platforms will be a snap. Porting software from one platform to the will be a no-brainer.

    Finally, Apple has totally revolutionized and democratized distribution and sales with their Apps store.

    Objective C or not, this is going to be HUGE.

  16. Steve wrote:

    Apple is not going after the enterprise just because some analysts think they should. Apple is carefully managing their resources and staying focused on strategies that add value to a long-term Apple.

    The ObjC SDK for iPhone was acheivable, allowed current Mac developers to leverage their familiarity with ObjC and Frameworks to get excellent apps out quickly, and creates new developers who can then turn their iPhone learned chops to Mac applications. You don’t want to learn ObjC – fine stay in your sandbox. Just don’t let the blowback from the train passing you by cause you any consternation… Apple wins, Mac developers win, new developers win.

    Apple plays smart, it doesn’t dance with every tart just because it could.

  17. Mike wrote:

    It was a no-brainer to use Obj-C. There truly is no other option. It is the native language of OSX, Cocoa is almost entirely written in Obj-C (code reuse anyone?) and X-Code is built around using Obj-C. Not to mention the incredible amount of hype around the iPhone WILL get developers to use Obj-C and make apps on the iPhone which (ready for this one) will then increase the number of developers who know Obj-C. This, in turn, will push Obj-C up your cute little ladder of languages and (get this) may even open the door for developers who would previously make only a windows version of a program also port it to OSX. Simple. Elegant. And it works. I work in a straight up microsoft company: C#, ASP.NET, SQL Server, etc. They bought me a Mac just to make an iPhone application. It works. Period. End of story.

  18. tata wrote:

    simon,

    don’t worry just wait for Android and JavaFX or AIR or Microsoft to copy iPhone then you won’t have obj-c nightmares. FWIW, same bullshit was written about cocoa when Mac OS X was introduced in 2001. So nothing has changed.

    Hey, May be your next post could about how garbage collection being done by hand. no swap file. Only one application running at a time.

  19. Andy.rennard@gmail.c wrote:

    This post barely warrants a comment, but here goes anyway…

    The language that Objective C is most similar to is…wait for it… C.

    Take another look at that list of yours. See that language that’s at #2 on the list ?

    ..and #5 ?

    ..and #8 ?

    And arguably the languages at #1, #4, #6 and #11 are also very C-like in their syntax.

    The major difference with ObjC is it’s messaging syntax, which is a) very easy to learn, and b) make for very readable code because all parameters are named.

    The big difficulty in programming for the iPhone – or any new platform for that matter – is not the language per se, it’s the frameworks and APIs. These are what gives a platform it’s power, and there’s no getting around the fact you actually might have to, you know, do some actual real gods-honest WORK and learn that stuff. This applies equally to Android with it’s extensive and complex Java API just as much to Windows Mobile or Symbian. iPhone actually has an advantage here, because the APIs are almost identical to those for Mac OS X. Existing Mac developers at least already have a huge leg-up.

  20. nik wrote:

    A few answers:
    1 – The SDK is late not only because Apple kinda sorta tried to get away with not releasing one, but also because Apple simply didn’t have the engineering resources to make it happen.
    Squeezing OS X onto a phone was a major, almost insane achievement. Apple even delayed Leopard by 6 months because it needed all hands to pull it off – this was a huge deal at the time. The underlying implementation had some very rough edges at release time – running everything as root for example.
    2 – Objective-C – time constraints are a major factor again. Obj-C hasn’t prevented great apps on the Mac – the tools make the learning curve very acceptable, esp. for C and C++ developers.

    Lastly, I personally think Objective-C on the iPhone will make way more people learn the language, which again is good for the Mac. Can you say “halo”? The iPhone is a trojan horse that will sell Obj-C and the Mac dev tools to developers that would otherwise never have looked.

    Case in point: Myself. I am a Java dev, now learning Obj-C and XCode because, well, the iPhone is just an amazing device. Going from Java back to basically C is tough but the tools make it bearable so far ;)

  21. spamnot wrote:

    Consider this: Using ObjC makes it just a little more difficult for virus writers to attack the iPhone. It isn’t a huge impediment, but perhaps just enough of a disincentive to help eliminate a fair number of casually malicious programmers from infecting this new, inherently public platform.

  22. Craig wrote:

    I’ve been a Java developer for the past 13 years (yes, it’s been around that long!) and have had no problem picking up ObjC for the iPhone. While it would have been nice to have been able to program in Java, the last thing I want to see is Java for the iPhone because I believe it will result in an avalanche of crappy applications that are ported over from other phones. As an iPhone user, I like the fact that ObjC is going to limit the number of developers programming for the iPhone to those who are serious about doing so. However, and don’t tell anyone this, programmers who really don’t want to learn ObjC can still program for the iPhone SDK using C and C++.

  23. Ted wrote:

    simon,

    I mean the only platform that matters going forward… within 2 years almost every ipod sold will have the touch interface. Add that to all the iphones 1, 2 and by then 3 and you the beginnings of the new computing platform. And I’m not even including the almost certain touchpad like device that is almost certain to be released.

    Apple does not need to attract developers. Developers will go where the money/fun is.

  24. Asam Bashir wrote:

    By the time *you* have decided whether you like the iPhone SDK or not, thousands of other developers are getting their high quality applications, with the best user interface on the market, ready for release whilst Apple puts the final touches to the 3G iPhone. As I’ve said a million times before, consumers who buy the iPhone are doing so for a specific reason, they want a high quality GUI experience that no other phone or company has thus far managed. If by using Objective-C Apple can deliver, then who cares about Java.

    Your insistence at failing to understand this particular point is proof of your lack of thinking different….

  25. Sandeep wrote:

    Simon,

    Explain to me what exactly Java has done for Sun. Has it given them a wedge to exploit commercially. Has it made them a ton of money?

    At the end of the day, languages are commercially unimportant (at least in $B range) what matters at the end of the day in high quality API and high quality libraries. Apple already has both in terms of Cocoa and Core* .

    Porting this to support the flavor of the month, year, decade is not an easy job. Apple’s goal is to sell iPhones. You don’t need a lot of developers at the end of the day– you need quality. What users want is high quality apps. By choosing ObjC, Apple tends to set themselves apart from god-awful Java programmers who shell out god-awful client side Java apps.

    More != better.

  26. Stephen Ludwig wrote:

    I think that Objective-C is going to start moving up that list very soon and very fast.

  27. Chucky wrote:

    Ugh. This shouldn’t be so difficult to understand.

    Even if the logistical reasons for doing the Touch platform in Obj-C weren’t overwhelming, Apple has obvious strategic reasons for using the Touch platform to bring more developers into the Obj-C fold.

    Want to develop for what’s going to be the overwhelmingly largest handheld platform? Guess what? Now you can develop for the Mac as well!

    Just as Microsoft long used Office and Windows to reinforce one another, Apple will be doing that with iPhone/iPod and Mac for the next decade.

    Check back in two years to see where Obj-C is on that language popularity list. That’s part of the point.

  28. stwf wrote:

    As a long time Mac developer I was very unhappy having to throw away years of experience, source code libraries and typing muscle memories, but it was all worth it!
    Objective C is a fine language, once you get past the syntax (hello autocomplete) it is efficient fast and fun.
    But the best part about it is its integration with Cocoa. So easy to add giant pieces of functionality. It alone is a good reason to embrace Objective C.
    Learning the language is always the easiest part of a language transition these days. Learning the associated class library is always the most complicated part of the transition.

  29. ex2bot wrote:

    I think the enthusiasm for iPhone / touch development is really good news for us Mac users. Everyone who wants to develop for the iPhone will learn Objective C and some or many will use their knowledge to develop Mac apps.

    Though we already have plenty of apps, more quality apps won’t hurt.

    I don’t see a strategic error. I’m not a programmer, but it doesn’t appear that Obj-C will be a huge hurdle anyway. It’s a superset of C, which everyone is familiar with. Apple seems to have decent documentation and IDE. And many devs seem to be champing at the bit to develop for the platform.

    Bot
    Mac and iPod Touch Fanbot

  30. Lakshmi Vyas wrote:

    Popularity doesn’t really matter. It is a side effect.

    Rails made ruby popular and iPhone SDK might just make Objective-C popular. I have done programming with just about any microsoft technology that you can name and I found picking up Objective-C not only easy but lovable.

    The beautiful mix of static and dynamic programming (which C# wants to introduce with the ugly dynamic{} syntax) is just enticing.

    Programming languages have been made popular by their applications and this might as well be the application that makes objective-c popular.

  31. Michael Long wrote:

    What everyone else said, and I don’t think you quite understand how Cocoa and Objective-C work architecturally.

    Most everything in the API is object-based, so to use a completely different language you’re going to have to wrap EVERY object, every function call, converting every struct, parameter, and result. Even assuming the target language in question can find some way to support the equivalent operations and functionality (like messaging). Or that they want to waste memory space accommodating Java/CLI runtimes.

    Supporting another language is a major, major task, and I suspect that they’ll be lucky to get the one they have out the door by the target date.

    But if you truely believe in your heart that “millions” of developers would flock to the iPhone if it only had a C# compiler… well, that sounds like an opportunity to me.

    Knock yourself out.

  32. Michael Linnane wrote:

    1) To suggest that Apple didn’t have an SDK planned from day one is kidding themselves – these things do NOT spring complete, from the ground, in a few months.

    2) The choice of language aside (FWIW, I love Obj-C, and I’m a C# expert) I’d argue that Apple may not WANT to pick up a huge number of developers. Apple wants to control the applications, thereby controlling the user experience. It’s a win-win. What’s the problem, exactly?

  33. Mike M wrote:

    @Michael Long: “Most everything in the API is object-based, so to use a completely different language you’re going to have to wrap EVERY object, every function call, converting every struct, parameter, and result. ”

    This could not be further from the truth. There are several bridges to Objective-C, and there is no reason why any of these wouldn’t work for the iPhone. For instance…

    http://rubycocoa.sourceforge.net/HomePage

    This whole post is flat wrong. You can use any one of many languages with ObjC bridges. Also, I question the way that Language popularity list was made. By searching the web, you are including a lot of old information which is not relavent today. Find the original source of the list. You’ll see that their list is highly prone to mistakes. A better way would be actually polling developers about what they are currently using.

  34. Thomas wrote:

    Even with the supposedly limited market of Mac developers I don’t think there will be any shortage of apps for the iPhone. Of course they could have opened it up to a wider range of developers – windows developers maybe – but then they’d just get a deluge of crap.

  35. MEP wrote:

    “Any decent developer can pick up any language in a few weeks. The problem is, that’s just too big of a hurdle if you want to really attract large numbers of developers.”

    I don’t think Apple cares about attracting large numbers of developers. They want good developers to produce good programs. The developers who find consider learning a new C-derived language a hurdle are not good developers–period. If I ever meet such a developer, I will smack them and call them out as the pathetic worthless excuse they are.

  36. simon wrote:

    Lots of thoughtful (and a few not so thoughtful) comments! Thanks for those – I appreciate people taking the time to post their thoughts. Seems clear the people commenting here aren’t wanting anything other than Objective-C.

    That’s cool – Objective-C is a great language. I’d just point out that iPhone sold only 1.7 million units last quarter. If sales don’t improve, that means iPhone is failing in the market.

    Time will tell on this one. To me it’s a no-brainer that Apple will have to support other application programming languages for iPhone. In fact, they already do. JavaScript is the language of choice for programming web app clients on iPhone; and I suspect people should expect JavaScript performance on iPhone to improve dramatically in coming months which will make AJAX apps less painful.

  37. Paul Franceus wrote:

    What no one here has mentioned is that Apple did have a Java/Cocoa bridge. It didn’t work very well and required a huge amount of work to maintain, partially due to the fact that Java is in no way as dynamic a language as Obj-C. It’s hard to mix strongly typed languages like Java with dynamically typed languages like Obj-C. There’s just too large of an impedance match. The reason PyObjc and RubyCocoa can work much better is due to their more closely matching object models.

    Mental exercise: How would you implement key-value coding and key-value observing in Java?

    Apple eventually deprecated the Java bridge because nobody used it.

    Paul

  38. Ken wrote:

    I’d be curious to know how the list would look if you removed the corporate market. I mean the boring back end stuff that employs the majority of the world’s programmers. I’d bet it would look a LOT different. I mean COBOL? Fortran? come on. really. I’m not saying that there aren’t some great programmers who still have to muck about in Fortran that couldn’t write a freakin great iPhone app but…

    Also, I happen to think quality matters a lot. Windows has exponentially more programs but it’s exponentially more crap too. Yes, of the millions of programmers shunning the iPhone (according to you) there may be a few that could have done something great but sheer quantity doesn’t = success.

    Silly argument all around. There’s more interest and demand for the iPhone SDK REGARDLESS of the language than Symbian, Windows Mobile, Palm, and Blackberry combined. Think about it. I don’t see you complaining about the Symbian SDK. And that’s on more phones than anything.

  39. Hywel wrote:

    Most developers/day-coders don’t pick the languages they use. Only the really good ones do.

    ‘Popular’ here means most widely used. It does not mean most widely liked. It does not mean language that most developers would want to use.

    Many of the listed languages would be technically inappropriate.

    Many of the listed languages, though technically appropriate, are unappealing to developers.

    More languages, especially those needing their own runtime or virtual machine or interpreter, means more stuff on the iPhone. This is a small device with a small amount of storage and a small amount of memory. The most sensible thing to do is limit to one language, and the most sensible language is the one that plays best with Cocoa. That’s Obj-C. That it has high-developer appeal (rather than a high developer population), is nice bonus.

  40. Jon H wrote:

    Major flaw in Tiobe’s methodology: They apparently just search for “Objective-C”. As you can see in the comments here, Objective-C is referred to in several ways: Objective C (no hyphen), ObjC, Obj-C etc. Searching for just “Objective-C”, the most verbose form, is going to miss things.

    This “search term problem” even makes it tricky to create an Objective-C job search ‘bot.

  41. Marcos El Malo wrote:

    simon wrote:
    Lots of thoughtful (and a few not so thoughtful) comments! To me it’s a no-brainer that Apple will have to support other application programming languages for iPhone. In fact, they already do. JavaScript is the language of choice for programming web app clients on iPhone . . .

    Dude, if your original post wasn’t enough, you pretty much proved you haven’t been paying attention in class.

    I’m going to go out on a limb here, and assume you’re not an idiot, but merely lazy. You didn’t want to research WHY Apple went to objc, so you threw out a troll blog post to get the information. The problem with this is that now everyone thinks you’re a fool. And the pointing to Javascript as an example of Apple supporting other programming languages really points to your ignorance. It shows that you haven’t been following along and that you just started looking into iPhone development
    yesterday.

    Seriously, Google is NOT that hard to use. It couldn’t be any harder than writing a troll post in hopes of getting spoon fed answers, and people won’t point at you and laugh.

  42. pete wrote:

    I don’t think it was a mistake for Apple to choose Objective C for iPhone. However, analyses which consider only the difficulty with which a good programmer will learn Objective C miss an important aspect of the language:

    It’s vile.

    It’s feature-poor, makes several critical wrong-headed assumptions, and to top it off has cognitively dissonant syntax. OH MY GOD do I hate Objective C! I would rather use plain C with a truckload of function pointers.

    (Cue Apple fanboys: “don’t let the door hit your ass on the way out.”)

  43. tim wrote:

    “For example, it took a long time for Apple to even realise that it needed to release an SDK for the iPhone.”

    I can’t get passed this. The iPhone as released last June SCREAMED version 1.0 due to its limited functionality and sometimes quirky behavior. Apple even pulled resources from Leopard to finish up the project. To suggest that Apple didn’t have an SDK on the drawing board since the beginning is absurd. As for the rest of the article – if a developer wants to developer for the iPhone or any device they have to adapt to that platform – and every platform has its differences. And objective-c is not a stretch for any decent developer. This is a non-issue.

    [still chuckling over the prospect of perl being used to develop applications on the iPhone)

  44. Jon H wrote:

    BTW, it seems really odd that Javascript fell on the Tiobe list, while Delphi has risen.

    I suspect that has more to do with the release of a new Delphi product producing more posts about it, rather than any real spike in interest.

  45. Christopher wrote:

    I agree with a few of the other comments I’ve read above. Obj-C is the correct language for the iPhone and, in fact, the only language for the iPhone. First, the OS in the iPhone is OS X, so you are going to need Cocoa support, and believe me you are going to want to use XCode to create your apps, so Obj-C is the obvious choice for the phone. Finally, we are talking Obj-C here not Haskell or Prolog. We are simply asking a programmer to make the jump from one C-based Object-Oriented language to another. The developer is not being asked to learn an entirely different programming paradigm or get in-depth with Category Theory to understand how to program the phone. Seriously, if the developer can’t teach themselves enough Obj-C in a day or two to get a moderately useful application up and running on the phone, then they should really consider a career change.

  46. Tim Buchheim wrote:

    Apple released an SDK using the Objective-C language and the Cocoa Touch API for one reason: Apple uses the Objective-C language and the Cocoa Touch API internally for developing all of the iPhone apps!

    Why would they release something other than what they themselves use? That would be a hell of a lot of pointless work, wouldn’t it? That would be like Microsoft saying “hey, ignore all the work we’re doing on C# and .NET and try using Smalltalk”

    Anyway, Objective-C is an extremely good language for writing GUI applications. Most programmers know C, and it takes about 30 minutes for a C programmer to learn Objective-C.

  47. Daniel wrote:

    Apple was *always* going to release an SDK. There were a few things that just had to happen first.

    First up, the phone had to be finished. The original release of the iPhone was a bit of a hack, software-wise. That’s why jailbroken iPhones kept getting bricked by updates – because the iPhone was changing at a fundamental software level as rushed code was replaced with the correct stuff.

    Secondly, Apple wanted webapps to be used where webapps were logical, so they only allowed them for a bit so people would see what they were capable of. Otherwise, everyone would just jump on the SDK whether it was apropriate or not.

    Thirdly, the SDK had to be written. That takes a while and was probably part of the reason for the webapps thing.

    Apple was, well, Apple and they played their cards close to their chest. That doesn’t mean they weren’t working towards it. Given that Apple lost their last great platform to Windows, I think they would be fools to have *ever* considered not allowing 3rd party apps on the iPhone

  48. Hendrik wrote:

    Couldn’t agree more with what tim wrote. It is ridiculous to assume that Apple only started thinking about a public SDK once there was the public outcry about the lack of one. This was obviously planned from the very beginning.

  49. yet another steve wrote:

    Apple didn’t “choose” this language based on attracting developers, they made an engineering decision. The decision was to use/leverage the technology they had: OS X and Cocoa.

    Heck you can make a web app using javascript. But the call was for a “native” API…. well that’s what is native.

    Were Apple to slap another layer on top to support some other language, it would not only be stupid, but developers would be crying foul.

    Were Apple to develop the iPhone with completely new technology rather than leveraging the very mature technologies they already have… well that would be the pre SJ Apple that spent fortunes on software R&D that failed commercially.

    It was an obvious engineering/technology management decision… and I say this not being a fan of ObjC. In fact, once I knew the iPhone was OSX based I knew (1) there would be an SDK and (2) it would be Obj C based. Obvious decisions. Apple just doesn’t like announcing things til they’re ready.

    SJ and Apple are committed to OS X and Cocoa (and thus Objective C) to the core. If you can’t deal, you just need to move along.

    And frankly, it is more important that Apple make good engineering decisions. A quality, commercially successful product will attract developers… who will be happy to find a mature, quality framework.

    Oh, and I’m pretty sure the iphone doesn’t have the RAM to support the bloat of a Java runtime or a C# CLR/.NET framework (bloat because they are never native.)

  50. Rene wrote:

    Sorry, I didn’t read all of the posts and many people, I hope, probably noted this fact. The SDK most likely was developed for Apple’s own internal use, sure it didn’t necessarily look as it did now, but they needed to develop tools to make their job of writing iPhone software easier. It most likely just took them as long as it did to make it workable as a product.

    Other people have mentioned this, I know I’ve read one, but Apple here will really utilize the demand for iPhone apps to get developers to learn Obj-C which in turn will create many more Mac developers. The worst business decision for Apple would have been to splinter the development environment into two.

  51. Lava wrote:

    “I’d just point out that iPhone sold only 1.7 million units last quarter. If sales don’t improve, that means iPhone is failing in the market.”

    Ummm, not only are your arguments about Objective-C make no sense, you obviously need to take a good business class.

    Apple made $1+ billion in PROFIT last quarter. Deferred revenue from iPhone and Apple TV amounted to $2 BILLION. You can guess from those figures that iPhone is hugely profitable.

    How important is profit? More than you seem to understand. Take this note from John Gruber at Daringfireball.net.

    “Motorola’s quarterly results: 27.4 million phones sold and $7.45 billion in revenue. But the bottom line? A $194 million loss.”

    “What matters is profit; market share and revenue only matter insofar as they lead to making money. Motorola sold 16 times more phones than Apple for at least 8 times more revenue — but is there a person on the planet who would trade Apple’s phone business for Motorola’s?”

    So Simon – tell us, would you take Motorola’s cell phone business, which by your definition should be hugely profitable since they sold nearly 30 million phones over Apple’s iPhone business? Please tell because it ain’t Apple’s phone business that is about to go bankrupt.

  52. Falkirk wrote:

    Could you have it any more backwards? 200,000 SDK downloads in the first 4 days?Apple doesn’t NEED developers. They’ve GOT developers. They could have written the SDK in Mandarin and they would have gotten developers. Developers NEED Apple because Apple controls the hottest new device in the world – the iPhone (ever heard of it?). Developers know that there’s money to be made in developing for the iPhone. And then when they are done developing for the iPhone they are going to port those programs to the Mac.

    But hey, the proof is in the pudding. I’m predicting that by the end of the year the iPHone will have literally thousands of high quality programs available on the new App store. With thousands more to come. EVERYBODY who’s ANYBODY will want to develop for the iPHone. And you’re predicting, what? That developers will be scared away by Objective C?

    I’ll take that bet.

  53. John wrote:

    Clearly Apple intended there to be an SDK from the start. Something as complex as this SDK didn’t just happen in 8 months. They just didn’t have time to get it done before the phone shipped. And in typical Apple style, they got more press by first saying “no” before finally saying “yes”.

  54. PXLated wrote:

    I’m not even a programmer and I can see the flawed logic of the original post. And, you’re thinking in a box and thinking very small. This isn’t just about the iPhone, it’s about everything coming in the future that uses the touch interface. And the bonus is, you learn the language/environment, it opens your world to do Mac stuff too.

  55. addicted wrote:

    Its ludicrous to think Apple did not plan on having an SDK from the beginning. The kind of tutorials, and support the beta offered 8 months after the release of the iphone was definitely more than 8 months of work.

    Developing an SDK is long and hard work. Apple always planned on releasing one, but being secretive in nature, let people know this only much later.

  56. Lex wrote:

    Simon stated: “That’s cool – Objective-C is a great language. I’d just point out that iPhone sold only 1.7 million units last quarter. If sales don’t improve, that means iPhone is failing in the market.”

    It sounds like you’re trying to make the sly suggestion that Objective-C exclusivity is somehow related to “poor sales” of the iPhone. Apps developed for the iPhone aren’t even available yet! At least wait until apps have been available for a while before making a call. Sheesh.

  57. Jon H wrote:

    ” And the bonus is, you learn the language/environment, it opens your world to do Mac stuff too.”

    And AppleTV stuff, should that ever be opened up as a platform.

    If Apple came out with a remote control with a multi-touch pad on it, then a plasma panel or a projection TV could work like a giant iPod touch, and would be pretty cool for gaming. (In that case they’d have to replace the current infrared remote interface with something higher-bandwidth.)

  58. Jon H wrote:

    The Schwartz quote is ironic, in that he came to Sun when Sun bought Schwartz’s company, which was in the business of writing Objective-C-based applications for the NeXT OS.

    Objective-C certainly turned out well for *him*.

    Two more points: Work involving the popular languages is more easily sent offshore. And, following supply and demand, the more popular a language is, the greater the supply of programmers, which will tend to bring salaries down.

    From a coder’s perspective, the ideal is for the language to be sufficiently unpopular that talent is scarce, but sufficiently popular that employer demand for talent exceeds the supply.

  59. Eli Cash wrote:

    “it took a long time for Apple to even realise that it needed to release an SDK for the iPhone”

    What makes you think that? Just because they didn’t announce it doesn’t mean they weren’t planning on it.

    “after all, it’s the “native” language of Mac OS X”

    Objective-C is the language of choice for Mac OS X application development, no doubt, but calling it the “native” language of the platform is as nonsensical as calling jazz the native music genre of your iPod.

    “witness the popularity of third-party apps on “jail-broken” iPhones”

    What language do you think those jail-broken apps were written in? That’s right, Objective-C. You’ve just contradicted yourself.

    “almost any language would be a better choice than Objective-C if the goal is to attract developers to a platform”

    Developers will naturally be attracted to a platform that is both revolutionary and extremely popular. You make it sound like Apple is begging developers to write apps for the iPhone. That’s delusional.

  60. Torsten wrote:

    The question is: Does Apple get paid to support anything but Objective-C in any way? I don’t think that there is a huge number of developers who would develop good iPhone applications if only they could do so in C#, but now don’t. Developers who want C# or Java would port stuff for other phones with as little change as possible to iPhone, and that’s something Apple clearly does not want, because it results in an inferior user experience.

    I’d also say that Objective-C is not an unpopular language in the conventional sense. It’s just not a useful option on anything but Mac OS X due to lack of frameworks (sorry GNUstep, that’s just my impression), so obviously it’s statistics will be bad.

  61. thavith wrote:

    Simon, if the iPhone becomes a huge run away success for 3rd party, will you write another blog saying you were misinformed, that is, the the language doesn’t matter?

    As others have pointed out, a “good” programmer can pick up just about any language. It’s the API’s that have to be learned, not so much the language, so if the language was Java, C#, PHP or Obj-C would make little difference, we still have to learn the API calls for the iPhone.

    Oh, and most of you will love the free XCode and Interface Builder (well, free if you already own a Mac – lol)

  62. agnoster wrote:

    So what I hear you saying is “Using ObjC will keep developers who can’t or won’t learn a clean programming language from developing iPhone apps”… sounds like a big win for iPhone users and Apple. Not to mention the fact that when those capable developers get a taste of ObjC, it starts creeping up the rankings. In short, the very reasons you give for it being a mistake are compelling reasons for Apple to do this.

    (Also, where exactly did you get the information that Apple wasn’t considering/prepping an SDK this whole time? It looks like a decent effort went into it – my guess is this has been in the works since well before the iPhone was released, and likely even before it was officially announced.)

  63. Jon H wrote:

    Wait! The Schwartz irony gets better.

    After Sun bought Lighthouse Design, there was an attempt to convert their Objective-C apps to Java.

    They never shipped.

    Also amusing: before the acquisition, Lighthouse Design was selling their software to a market of NeXT users that never exceeded about 100,000 users. Total.

    If Objective-C is unpopular *now* just imagine how ‘unpopular’ it was then, when NeXT was the most prominent user of the language, and to get NeXT’s developer environment cost at least $4000.

  64. Nathan wrote:

    I just have to chip in here and echo the thoughts of PXLated and co. How can anyone seriously think Apple didn’t have an SDK planned from the beginning? The SDK was obviously planned for much longer than the author suggests.

    Apple/SJ’s public statements have never had much relation to what they secretly have planned. Look at video on the iPod, and then the Intel switch for perfect examples of how close they hold the cards to their chest.

    As for learning ObjC? Any decent programmer knows C already, this is just a different flavour. If you don’t have the motivation to learn it you probably wouldn’t have gotten past releasing “Hello World 0.5 beta” anyway.

    Apple wants a mature and polished looking plaform. Good to weed out the 2nd rate programmers at the front door.

  65. simon wrote:

    Re: people saying that SDK in the works since before the iPhone Launch.

    Of course. However, as others have pointed out, that’s not the same thing as sayng a publically available SDK was always planned.

    Need I remind everyone that Steve Jobs said that the iPhone would be a closed device, because unlike other mobile phones, he wanted the iPhone to be “stable”? That is, owners of phones expect phones to “just work”; and that installing third-party applications would somehow mean that the iPhone could bring down AT&T’s network etc.

    At the time, many Apple fans said, “Yes! Jobs is a genius! Phones are more like iPods than computers. They need to just work. We shouldn’t be allowed to develop and install applications because they will make our iPhone unstable. And anyway, no-one installs apps on phones. Apple will develop all the apps we need.”

    The truth is: Apple changed strategy here. At least Apple learns when it makes a mistake and fixes it. Most people commenting here seem to just agree with whatever Steve Jobs’s latest prounouncement is.

    I’m also amused by people spinning that selling 1.7 million phones per quarter is a huge success, just because that’s what Apple achieved. If anyone here thinks that Steve Jobs will be happy with selling 1.7 million phones a quarter, I’m afraid they’re the ones that are delusional.

    The point is: the market opportunity for mobile phones is enourmous. Just because Motorola can’t sell phones profitably at volume, doesn’t mean Apple can’t. If Apple makes the appeal wide enough, they can sell hundreds of millions of phones a year – with big profit margins. That’s why they got into the phone business!

    To do that, though, they’re going to have to make the iPhone have broad appeal. Think of iPhone as a device with the potential to be the most popular personal computer in the history of the world. I love how people here think that, in the future, the most popular personal computer on the planet will be programmed with only one language. Not gonna happen people – the only question is “when”, not “if” other languages will be supported in some way, shape or form.

  66. Phuul wrote:

    Simon if you equate what Steve Jobs says with what Apple (and SJ) actually plans you just haven’t been paying attention over the years. There is a long history of this, from well before the iPhone was a gleam in Steve’s eye. I’m not saying that Apple or SJ is perfect, just your argument in the 65 comment really doesn’t hold water. I might have bought the “Apple changed strategy” argument before I got the SDK. After I played around with it, I do have to say that argument is complete bunk. The extent of it was way more than anyone expected. The continual refinement to the API, and making it a BETA until June, speak worlds to making an API that will not suck.

    On to the last couple of paragraphs in your 65 comment. I’m going to paraphrase you here to rebut you. “I love how geeks here seem to think that the people who use the most popular personal computer on the planet care about what language is used to program it.” Judging from the SDK downloads I don’t think people will be lacking for applications. The enterprise interest is pretty active as well.

    Now in the future there very well may be other languages that can be used to program for the iPhone/Touch and Mac OS X. Right now though I’m thinking a quality over quantity is what Apple and SJ are going for.

  67. Blain Hamon wrote:

    I hate to pick nits, but at the launch, Jobs stated a goal of 10M iPhones by 2009. Let’s call ‘Reaching the goal set’ success.

    Q307 sold 270K iPhones.
    Q407 sold 1119K iPhones.
    Q108 sold 2315K iPhones.
    Q208 sold 1703K iPhones.
    JunJulAugSeptNovDecJanFebMar

    That’s halfway to 2009 and we’ve got 5407k phones. Given how Apple does accounting, there’s three more quarters left. Q109 is Nov08 and Dec08 and half of Jan09. We’ll even make it difficult for Apple and assume that, for some reason, neither the rumored 3G phone, nor the release of iPhoneOS 2.0 with the store, nor even christmas season causes any sale increase. Clearly this is a lower bound, as Q2 is historically nearly always Apple’s worst, and the quarter with christmas sales (Q1) is nearly always Apple’s best.

    So 3*1703K phones per quarter, that’d be 5109K more phones. That puts it safely beyond the 10M mark. Which, as we said, would be considered a success.

    I’m happy that I amuse you.

  68. simon wrote:

    Blain, maybe you need to pick your nits more carefully ;-) Apple has confirmed that its stated aim is to sell 10 million iPhones during calendar year 2008. Apple isn’t counting sales from 2007 in their own numbers for reaching “10 million”.

    Sales have to actually grow from here, averaging 3 million per quarter over the next two quarters. That’s hardly too much to expect if the iPhone is a commercial hit. You can’t seriously think Steve Jobs is saying to his team, “Dont worry about growing our iPhone sales, guys. It’s just fine if the sales stay flat, or even decline. No worries!”

    It speaks volumes that Apple fans are trying to say there’s no issue if iPhone sales don’t grow. Of course there’s an issue if the sales don’t grow! Like Apple’s senior management team, though, I’m pretty confident they can grow sales from here to reach their target. And the truth is, if they can’t, something major has gone wrong.

    Also, that’s the only the goal for 2008, the first full year for iPhone. They will want to grow rapidly from there. Make no mistake, Steve Jobs and Apple understand the market opportunity for mobile phones, even if the commenters here don’t. The opportunity for Apple is to sell hundreds of millions of phones a year… profitably… and that’s what they’re going to be aiming at in the future.

  69. Jon H wrote:

    “Sales have to actually grow from here, averaging 3 million per quarter over the next two quarters. That’s hardly too much to expect if the iPhone is a commercial hit. ”

    At this point people are probably waiting for an updated version, and especially for a 3G version, which should come out in June.

    The current offering’s sales may have flattened or even dropped, but Apple isn’t going to keep selling it for the rest of the year.

  70. Chris.b@ssett.com wrote:

    Of course, it may make sense to use the iPhone as a way to promote objective-c, introducing it to a multitude of developers who would never have given it the time of day otherwise.

    Now, if they use their new-found knowledge to go on to develop Mac apps afterwards, that would probably not hurt apple too much.

  71. Andy again wrote:

    Simon – you just keep on shooting yourself in the foot again and again ! Whether or not Apple sells 10M iPhones by year end (and it’s likely to be close to that number even if they miss it), what you’re missing is the point that the iPod is also moving to the Touch platform – the current Classic and Nano and near end of life-cycle, and my guess is that they will move entirely to the Touch platform for all iPods soon.

    In case you’re not keeping up here, Apple sold 10M iPods last quarter.

    FWIW, the next gen iPhone is due out in weeks, and yes, I fully expect them to exceed their targets on this one.

    What you’re also missing is the fact that each and every iPhone users – past and future – will have direct download-on-device access to your 3rd party applications. Again those numbers : your app will be infront of > 5M iPhone/iPod users in June, just a tap away from putting money in your pocket.

  72. John C. Randolph wrote:

    Simon,

    If popularity was an overriding criterion, then the iPhone should be running Windows XP, and the SDK should be Visual BASIC.

    Apple has many years of direct experience of the relative benefits of Objective-C and many other languages. This is about the long term as you said, and that’s why Apple made the right choice. Those of us who use Obj-C know that we’re far more productive with this toolset than we were with previous systems.

    -jcr

  73. John C. Randolph wrote:

    Jon H,

    Bit of additional info for you about the Lighthouse apps, and why they vanished. It wasn’t just that they got re-written in Java.

    Apparently, the Java weenies didn’t like the direct target-action paradigm that NeXTSTEP used, so the Lighthouse apps were made to use global messaging queues instead, and the performance became dismal even by the very low standards of the Java crowd: so much so, that it was just too embarrassing to release them.

    -jcr

  74. simon wrote:

    JCR – I do think you make a valid point about plenty of Mac developers being productive with the current Mac tool chain.

    The question I was trying to get at was whether it would make sense to offer a choice of languages for developers, to make the developer appeal as broad as possible.

    In one sense, they’re actually going to have to do this going forward, because of the way that the Web is going in terms of RIA. In the future, any mobile phone that can’t see the entire web, is not going to be in pole position. Today, iPhone has a lead here, because it has by far the best web browsing experience of any phone on the market. If they want to keep that lead, they’re going to need to add Flash support for sure… and, depending on what happens in the future, both Silverlight (which would let VB.NET developers build web apps for iPhone) and Java as well.

  75. John C. Randolph wrote:

    The developer appeal for the iPhone is already broader than any mobile device before it, and not by a small margin.

    Pandering to the ignorant is not in Apple’s best interest: they chose Objective-C and Cocoa, because they want those developers to be *productive* when they work on the iPhone.

    If there are some out there who won’t consider writing iPhone apps because they have to learn Obj-C, then those are precisely the people that we *don’t* want on the platform.

    As for Flash and Silverlight, you should realize that a major part of any product development at Apple is deciding what the product *shouldn’t* include. Flash and Silverlight do not belong on the iPhone, for the simple reason that they’re crap.

    Adobe may someday get their act together and make a lightweight Flash interpreter, but I wouldn’t hold my breath. As for Microsoft, any attempt to shoehorn .NET compatibility into a mobile devices is doomed to be the kind of bloated, crashy mess that we already see in Windows Mobile.

    -jcr

  76. ht fe wrote:

    “At the time, many Apple fans said, “Yes! Jobs is a genius! Phones are more like iPods than computers. They need to just work. We shouldn’t be allowed to develop and install applications because they will make our iPhone unstable. And anyway, no-one installs apps on phones. Apple will develop all the apps we need.””
    I wish people stopped doing this. Using this mythical fantasy apple fan as an argument. First in the argument it self if you have been reading the blogs of the people/developers whose opinion counts in the mac world you get a very different picture. It is a stupid and annoying kind of argument. In the computer world it is only annoying but imagine this kind of argument used in politics it then becomes a very dangerous kind of reasoning.

  77. Diego wrote:

    “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. ”

    Apple bowed to nothing. I bet you they had this planned all along. Do you think Apple bowed to “pressure” from some grumpy bloggers and turned around and decided to release an SDK? You’re dreaming.

    Apple did not choose Obj-C for the iPhone SDK. The long history of the SDK, back to NeXT means the decision was made for them many years ago.

  78. Jane wrote:

    Or, you know, those people designing/developing sites with Silverlight, Flash and Java could also make their site degrade nicely cause not everyone wants to deal with any or all of those three in their desktop browsers, let alone on a mobile device with limited bandwidth, power, and battery life.

  79. simon wrote:

    ht fe, such fans are hardly mythical. In fact, agreeing with absolutely everything Steve Jobs says, even when he’s (possibly deliberately) talking nonsense, is the standard MO of an Apple fan.

    Of course there were also many people telling Apple they wanted a native app SDK (that’s why Jobs had to bow to pressure and write a letter on the Apple web-site saying they would release an SDK). However, to deny that there were Apple fans publically lauding Apple’s original decision to not have a freely available SDK is revisionist… which is another part of an Apple fan’s MO, btw.

  80. simon wrote:

    @Jane. That’s not going to happen. When people make the decision to build a web application user interface using Flash, Silverlight or Java, that’s what the user interface will be.

    This is not about animated entry pages into web-site. It’s about the user interface to a web app.

  81. Jane wrote:

    …and most webapps don’t need it, it just looks shinier with it. And fucks over a lot of people in the process who don’t want to deal with them, who don’t know what they are, who haven’t installed them, who can’t use them…unless they’re not in your target audience, in which case it doesn’t matter because it’s not worth spending time/money on, right?

    I saw this post on programming.reddit, and another one I saw there was http://dev.opera.com/articles/view/stop-using-ajax/ talking about gratuitous usage of ajax. I’d say the same applies to flash/silverlight/java as well, so you should check it out. It raises lots of valid points that a lot of people are ignoring because they feel the need to abuse eyecandy.

    And right now I’m just touching on the accessibility aspects of those three on a mobile device like the iPhone. I haven’t even started on all the issues you’re going to end up with. People can’t even design straight html+css+maybe javascript sites for the iPhone usable on the iPhone even without the likes of Flash and Silverlight, and a lot of people suck at designing native applications for the iPhone from the ton of unofficial apps out right now…and you think those three are going to make an impact so big that the iPhone needs to support them otherwise it’s useless? That is laughable. I bet user experience and usability goes straight down the toilet thanks to rampant abuse the day Flash/Silverlight/Java support is added.

    Do you even use an iPhone or do you believe that language lock-in is such a problem (when it’s been clearly explained why it isn’t by the dozens of commenters before me) that you won’t be able to use such a device ever? If you should ever use an iPhone, I suggest visiting a few webapps for the iPhone first and see how awful some of them can be before suggesting that Apple just invite any and all developers to come in and do whatever they want because supporting more languages (to get more developers) means the iPhone will succeed…cause end-user happiness and ease of use obviously means zilch to you.

  82. simon wrote:

    @Jane

    Re: user interface design

    HTML/Ajax – based interfaces suck compared to what can be done with a rich graphical user interface toolkit. That’s why Flash, Silverlight and Java are going to be increasingly popular.

    Re; Do I even use an iPhone?

    I have used an iPhone plenty, of course, however I find that for real-world use, a Blackberry suits my needs better right now for a smart-phone. The Blackberry today is far more usable as a messaging device than the iPhone is. For a small feature phone, I use a Nokia 6500 Classic which meets my requirements in terms of pocketability when I’m not wanting to deal with business e-mails etc.

    Re: language choice on iPhone

    The language choice isn’t an issue for me personally, in terms of iPhone app development. I’m perfectly happy with Objective-C for my own purposes.

    However, I would like to see the iPhone to become a huge volume platform; and not remain a small niche player like the Mac is… even if the price of that kind of success is that lots of people develop ugly applications.

  83. Terry wrote:

    Also existing Mac developers are probably going to make all the best apps anyway, looking at whats considered a good application on other platforms makes me throw up in my mouth a bit

  84. John C. Randolph wrote:

    Simon,

    Why do I get the impression that you’ve got a lot of sunk costs in software developed for the previous generation of mobile devices?

    You’re arguing for Flash and Sliverlight as if they matter. They don’t.

    -jcr

  85. bananaranha wrote:

    You ask about what they should have done in a “few months”. One of the points I was making was that they should have been thinking about SDKs for iPhone for a hell of a lot longer than that.

    And they had. Around the same time that they first began working on the iPhone.

    Reality check: creating a SDK takes as much time as it does to release the actual device. Even more time, if you want to get it right, finalize most interfaces, provide complete documentation, etc. Even more time to get feedback from a selected group of users and devs on your 1st generation product and API. Even more time if you are shorthanded, and you are releasing a new version of your OS shortly after the launch of the new device.

    What matters is what they do next. My suggestion was that they now consider releasing SDKs for programming languages that are more popular than Objective-C. Do you agree, or disagree with that?

    Disagree.

    First of all, this “popularity” stats you give. Is it based on what professional programmers use on their day job? I don’t think so. There are many more geeks programming in (dabbling would be more appropriate) and talking about, say, Haskell than Haskell jobs. I don’t really buy TIOBE’s methodology —I mean “The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings.“. WTF?

    By the way, your reasoning about possible language choices is way off. You managed to get to C++ and “perhaps” Python as the only possible choices!!! Fail!

    Fail, but for the opposite reason. Python is not a “possible choice” (nothing interpreted would do with the current processing power provided. Even the finely tuned javascript webkit engine sucks the donkey’s ass on the iPhone, being hundreds of times slower. And this is on a machine where hands-on, immediate interaction is of paramount importance). C++ is also not an option: in it’s Carbon incarnation it is strongly discouraged on OS X (see Adobe in re: Cocoa and 64-bit), why the f**k would they encourage it on the iPhone?

    For sure Apple could support Java, C# and ActionScript. In fact, they wouldn’t even have to pay their own people to do the heavy lifting – Sun, Microsoft and Adobe would be happy to work with Apple on this; and if Apple wanted to maintain complete control, by itself, they could support Java on iPhone quite easily.

    Java on the iPhone? The horror, the horror.

    And aside from native apps, the truth is that going forward, if Apple wants to claim that iPhone offers a full web experience, then they’re going to have to support Flash, Silverlight and Java anyway…

    Or probably, the wont.

    My full web experience is great without Java (Java?! Where is this used on the client side Web? On 1998 abandoned sites?). As for Silverlight, does it really exist? Does anyone care?

    Now, about Flash. It is a resource hog on OS X. It will be even more so on the iPhone. And most flash web apps are not adaptable to iPhone interaction.

    There is, also, no competitor with a mobile phone browser that provides Flash, Java Applets and Silverlight, so why would they care?

    Otherwise, in a year or two from now, people like you will be asking, “What – you expect Apple to be able to offer all that in a couple of months? How could anyone have known that Flash, Silverlight and Java would be important for the web?”

    Java has not been important on the web for a full decade. Are you one of those kool-aid drinking “Javafx” dudes?

    I made a point of specifically not saying that Objective-C is a bad language. It’s a good language. I was saying that it’s not popular among developers.

    That’s great. It raises the bar.

    The iPhone is not the Mac.

    And yet it uses Cocoa and runs on a subset os OS X. Seems very Mac-like to me, to get even more Mac-like as mobile processors get more power.

    If all Apple wants to do is get Objective-C Mac developers writing for iPhone, then, of course, they’re going exactly the right way about it.

    Alright, then. And everybody else who is professional, and motivated enough, can easily pick Obj-C. As for the hoi polloi who can dabble in Actionscript and Java, they better stay away. We’ve seen their amateurish crap on other platforms, and we just don’t care.

  86. Punchinello wrote:

    Can someone who has ideas for iPhone apps, but has never programmed anything in his life, learn Obj-C in a reasonable time?

    How long might that take? I realize this is an open-ended, sophmoric question, but I’d be happy with a range of time.

    Many thanks.

  87. atma wrote:

    I think that Obj-C is not a bad option, it’s the logical choice as you said and it’s elegant and clean language. The c-like structure makes it easy for most programmers to learn.

  88. Tommy Simmons wrote:

    This is hilarious. I left Microsoft to join Apple’s dev tools group. Objective-C is an amazing language and it fits perfectly into the rest of the OS/app layer infrastructure.

    I wouldn’t want anyone developing iPhone apps that couldn’t pick up Obj-C in a week.

    Get more developers using Obj-C and perhaps they’ll start creating native apps too. Apple doesn’t care about obtaining millions of new developers – we want thousands for awesome developers.

  89. Zed wrote:

    You don’t pick a platform based on what language is popular. Gads. You choose it based on which is best for the task at hand. Objective-C is the language all of OSX is based upon, and Nextstep before it. It makes perfect sense for it to also be on the iPhone… to suggest otherwise is just idiotic. It’s a great language and fits in perfectly with the rest of Apple’s products. Get a grip dude.

  90. Asam Bashir wrote:

    Greetings Mac developers :) Hey anyone got a hack to access shared iTunes playlists from iPhone? And sending iPhone sound over Airtunes – like Airfoil but for iPhone?

  91. Steve K. wrote:

    > If Apple wants iPhone to succeed,
    > it seems strange to attempt to force
    > developers to use an unpopular
    > language for programming it.

    I think it depends on what you mean by “succeed”. The iPhone is already has the second largest market share in the U.S. It hasn’t even been out for a year.

    Objective-C is one of the cornerstones of OS X just as it was for NeXTSTEP. Of course the iPhone SDK is going to use it.

    I don’t think you understand Apple. As far as Objective-C not being very popular, my guess is Apple likes it that way. Only people who WANT to create really compelling apps will use it. Just as for the Mac. If you WANT to write for the iPhone, you’ll have to put in a little time to learn Obj-C. Yes it is very niche, but sometimes niche is good. I think Apple prefers having a dedicated developer base over a larger one.

    Also, if developers do in fact learn Obj-C and put in the time on an iPhone ap, they may decide to start creating OS X apps as well. Very well played on Apple’s part. The iPhone SDK is a trojan to get get people into Obj-C. That much is pretty clear.

    Just my take on the situation.

  92. James Katt wrote:

    The iPhone is a wild success for Apple. In less than 6 months since its introduction, it is the number one used cellphone for web browsing. The demand for it is so high, more than 50,000 iPhones a month are smuggled out of the US into countries which don’t have official support for the iPhone. Even Russia now has over 500,000 iPhone users. The iPhone is what every other cell phone is compared to and the standard by which every smartphone is compared.

    Objective-C is the most popular language for developing applications on Mac OS X. It is just the most natural choice for developing Apps on the iPhone – which is also based on OS X. It’s a no brainer for Apple. The tools for it have already been done and have been kicked and debugged for years. Further, they are free for Mac users.

    Non-Mac users have to purchase Macs to develop for the iPhone. This is a great strategy since it forces developers to become familiar with the Mac. Thus they will also be enticed to develop for the Mac.

    Apple consumers are very picky. They expect high quality software – not crap like on PCs. When I look and use apps on made for jailbroken iPhones, a lot of this is crap. Thus Apple has done a great job by producing an official SDK with very high quality standards.

    A good developer has no problems picking up Objective-C. If they don’t like it, they don’t have to develop on the iPhone. Apple will gladly not have such developers.

    Apple does not need millions of developers. Apple needs good ones. With over 200,000 new developers for the iPhone, with many on Fortune 500 firms and Universities, Apple already has its hands full of developers. In fact, if all of them just develop one application for the iPhone, then there will be over 200,000 apps on the iPhone! And far more if some develop more. For consumers, this is application overload. How many word processors does one need, for example? Of course, on the Mac, it is easy to use more than one.

    That Objective-C is a niche language is fantastic. This means developers won’t easily do cross platform applications. Only the best ones would be able to do so. This will keep crap Windows and Linux ports away from the iPhone. Apple prefers high quality Apps – as does its users. And again, the use of Objective-C means more developers can develop for the Mac. It is a win-win for Apple.

  93. simon wrote:

    @Steve K.

    Apple doesn’t have the second largest market share of mobile phones in the US. It has the second largest market share of a particular narrow segment which has almost no volume i.e. the SmartPhone segment.

  94. Jason McC. Smith wrote:

    “However, I would like to see the iPhone to become a huge volume platform; and not remain a small niche player like the Mac is… even if the price of that kind of success is that lots of people develop ugly applications.”

    And that’s where you diverge wildly from Apple’s mindset, and the mindset of most Mac developers.

    Crap is crap. Crap is bad. If I want crap, I can use Windows, where crap applications abound.

    I don’t want crap. I avoid crap.

    Saying that you think attracting crap, by devoting (wasting) engineering resources to promote ‘popular’ languages, is the way to success… gah. I don’t even know where to begin.

    The rest of your argument seems to flow from this axiomatic disconnect. Until you get that hammered out, this entire discussion is pretty moot.

  95. Tim wrote:

    Has it really gotten to the point where you say that Apple could be selling hundreds of millions iPhones if it supported Java, Flash, and Ruby?

    I don’t see how millions of developers versus hundreds of thousand will do that. Developers aren’t the biggest determining factor here.

    Apple is currently focused on one model of a high-end consumer smartphone. Every app for every other platform won’t get them to your expectations. That would take several models, many of them low-end or available for zero from most carriers in most markets. Hundreds of millions would equal more than the current smartphone market.

    I’ll leave Apple’s strategy to others than you.

  96. kimi wrote:

    dont know who TIOBE is, but seeing javascript at 11th position, i wouldnt consider it as SERIOUS.
    java would be nice, but J2ME for Mac doesnt exist, Objective-c with cocoa is nice & made for Mac-platform.
    i dont think something else (.net , vb…) would be a good choice.

  97. Tim wrote:

    “Today, iPhone has a lead here, because it has by far the best web browsing experience of any phone on the market. If they want to keep that lead, they’re going to need to add Flash support for sure… and, depending on what happens in the future, both Silverlight (which would let VB.NET developers build web apps for iPhone) and Java as well.”

    So what’s the problem? They’re ahead now and, as you yourself said, they don’t have to do the heavy lifting. We know both Sun and Adobe are tripping over themselves like silly fools trying to convince Apple to accept their unwanted runtimes. So doesn’t it make sense for Apple to say: we’ve got issues with your runtimes (do we really need it; are they resource hungry; are they potentially buggy or security holes; are they developed to be Mac-like), which has left Adobe and Sun scrambling to (in addition making really stupid comments in the press along the same vein as your post) improve Flash and Java and port it to the iPhone.

    If they do a good enough job and Apple sees the need, it won’t be a problem. Right?

    Apple is, as you say, AHEAD. Acting as if they are making serious errors or are not succeeding is silly. Your hopes and expectations are inline with those that want a cheap headless, expandable Mac and/or OS X licensing. It shows no understanding of Apple strategy and ignores the strengths that Apple is bringing to bear on the marketplace. Right now, everyone else is shifting to catch up with Apple because they got ahead. Not the other way around.

  98. Dan wrote:

    This is a really interesting debate.

    One thing that has been alluded to a few times is that Apple isn’t that interested in mass developer support. I think that is very true, at least for the moment, and is supported by the fact that they did not originally want to even have a public SDK (they could always have released it to selected partners if they felt they needed outside innovation). It is also consistent with their core philosophy of controlling the user-experience as much as possible.

    Since the iPhone is arguably a year or more ahead of the nearest competitors, they don’t need to be frantic about getting developers to write to the iPhone. In fact, I would guess at this point that the main concern at Apple is that there are already too many developers and the risk is that there will be a lot of UX risk introduced that isn’t necessary.

    Also, in the near term, it is simple enough to write iPhone-targeted Web apps using other languages anyway, if you are really that put off by Objective-C (as, say, Pete is). Longer term, as the platform matures, Apple can gauge whether there is a shortage of applications that is adversely affecting sales, and I suspect the development community will also find ways to use their favorite languages to build iPhone apps.

    So I think if you look in the context of the iPhone product lifespan and Apple’s conservative tendencies around UX, ObjC makes sense. It doesn’t preclude them from supporting other languages down the road, but it was enough to begin introducing 3rd party apps and see how it goes.

  99. thickslab wrote:

    By this measure, almost any language would be a better choice than Objective-C if the goal is to attract developers to a platform.

    I’m racking my brain trying to think of the different planet Simon lives on where developers decide what platforms to code for based on language and not potential profit.

  100. Eric Brunstad wrote:

    Some people have been saying that Apple was planning on developing the SDK all along. I belive this is partially true. Apple engineers recognize the importance of a well-designed platform and were trained in the design principles of ObjC, so it was probably natural for them to create a high-quality API for their own use. Perhaps they were not intending to release it to developers initially. But, when the need became obvious, it was probably easy to transform the already-rather-good internal API into something useable by the public.

    Eric

  101. ht fe wrote:

    “ht fe, such fans are hardly mythical. In fact, agreeing with absolutely everything Steve Jobs says, even when he’s (possibly deliberately) talking nonsense, is the standard MO of an Apple fan.
    Of course there were also many people telling Apple they wanted a native app SDK (that’s why Jobs had to bow to pressure and write a letter on the Apple web-site saying they would release an SDK). However, to deny that there were Apple fans publically lauding Apple’s original decision to not have a freely available SDK is revisionist… which is another part of an Apple fan’s MO, btw.”

    Must I assume that you interviewed these people and that you counted many of them btw how much is many? sorry if I find it difficult to believe you did. So your argument is in fact completely based on your fantasy of an group of many apple fans.

  102. Hamranhansenhansen wrote:

    Apple was always going to ship an SDK and iPhone v2.0 was always going to support third-party apps. They were not surprised by anything. Did they introduce iPod games for the classic iPods just to release iPod touch and never have any games on there? No. Further, the maturity of the development tools shows that they have been planning this for a long while.

    What’s hard for application developers and many computer nerds to understand is that Apple prioritized the built-in features of the phone over third-party development. Apps are not the only game in town on the iPhone platform. In iPhone v1.0, it was more important to Apple to support existing third-party movies, music, Podcasts by building in MPEG-4 support and iPod features than it was to support future third-party applications. About 80% of my iPhone use is limited to the 4 main apps in the lower dock area: Phone, Mail, Safari, and iPod. The apps in the top area are only going to represent a small minority of iPhone use. Being limited to only 10-12 of them for the first year has not been all that bad, especially considering the iPhone browser runs all of my websites, including my bank. The App Store in iPhone v2.0 is well-timed.

    As for language choice, something like 90% of Objective C is C. If you were to pick the “best” language for application development from the perspective of existing application developer knowledge it would be C. If you further have an object-oriented system you will have to account for that somehow, so you get Objective C. If you know C you can learn Objective C much quicker than you can learn Java or some unrelated language. Objective C is the very best language on your list for iPhone development, not because Apple is lucky but because they’ve been building rich interface object-oriented applications since the 1980’s. The iPhone developer toolkit is outrageously mature compared to other mobile development platforms because all of the iPhone software is already desktop-class, and the iPhone UI is already next-generation compared to other mobiles. It is worth a developer’s time to learn it now because this is what all mobiles will be doing in 10 years time.

  103. Sebastian Lewis wrote:

    1) There is no proof that Apple was never planning an SDK from the beginning. Judging from accounts of how unfinished it was a few months before Macworld, David Pogue’s post MWSF07 description of it, the delay in Leopard on account of the iPhone (software issues) and the stability post-release (mostly stable but with problems in MobileSafari that weren’t solved for a few releases), I’d say the OS was just too unfinished at the time to really open up the APIs and an SDK.

    2) With or without an SDK and/or developers, the iPhone would still sell well making it an attractive platform in terms of users anyway.

    3) Objective-C is a direct superset of C making a valid C program also a valid Objective-C program, not quite the same case with C++ or anything that you listed above, so it’ll be easy for a C programmer to pickup by just learning the extensions that were made to the C language.

    I don’t see an issue here, Apple is choosing a language that is also the basis for the Mac OS X platform and the iPhone could serve as an advertisement for more Mac OS X development, which is helpful since basically any iPhone developer will have a Mac with Xcode anyway (unless they want to use OSx86, but err… Apple doesn’t support OSx86 installations so any iPhone developer pursuing that, good luck).

    Sebastian

  104. Martin Hill wrote:

    Simon,
    I can’t let your contention that iPhones are currently selling poorly go without pointing out a few facts.

    1.7 million iPhones sold in this last quarter may not sound like a huge amount vs a worldwide market of approx 200 million cell phones this quarter. However, the iPhone is not competing in the commodity market with the millions of $15 pieces of plastic provided free with a contract.

    As John Gruber said: “Motorola sold 16 times more phones than Apple for at least 8 times more revenue — but is there a person on the planet who would trade Apple’s phone business for Motorola’s?”

    Rather it is fully-featured smartphones which currently make up about 10% of the whole market (and growing rapidly – I don’t know where you get the idea that the smartphone market has almost no volume?!) where you’ll find hardware and software at all comparable to the “Jesus-phone”. It is in this very lucrative market that the iPhone is a juggernaut.

    The iPhone is rapidly becoming the most popular smartphone on the planet in a remarkably short space of time. It is already the number two smartphone in the USA with 27% marketshare, beating all Windows Mobile vendors combined (21%) and also managed 3rd place globally behind Nokia and RIM – quite amazing considering that the iPhone was only available from 3 carriers for most of that time in only 3 countries vs for example the Blackberry which is available from over 300 carriers in over a hundred countries worldwide.

    http://www.techcrunch.com/2008/02/06/iphone-now-in-2nd-place-in-the-us-smartphone-race-3rd-globally/

    Then there are the usage stats that demonstrate the iPhone is far more popular as an internet device with Google’s discovery of 50 times more searches on Apple‘s iPhone than any other mobile handset. Google “thought it was a mistake and made their engineers check the logs again,” said Vic Gundotra, head of Google’s mobile operations.

    http://www.ft.com/cms/s/667f13de-da60-11dc-9bb9-0000779fd2ac.html

    In addition to this, Net Applications has found that the iPhone registered almost 1% of all web traffic which “when you consider that the iPhone has only been selling for 5 months and for most of that time was in one – albeit large – market (the U.S.), that share is amazing. Add another .01% for the iPod touch and Apple mobile platform is one out of every thousand pageviews across the Internet. The iPhone has captured a 70% share of the mobile browsing market.”

    http://blogs.computerworld.com/iphone_browsing_marketshare_closes_in_on_1

    Despite the fact that Symbian owns 67% of the global smartphone market, they only represent a tenth as much web traffic as the iPhone.

    “It’s not just Windows Mobile that is getting killed by iPhone. PSP, Playstation and WebTV combined don’t even come close. The Sidekick, also, only has 1/5 of the browser marketshare.”

    Simon, you said:
    “I would like to see the iPhone to become a huge volume platform; and not remain a small niche player like the Mac is… even if the price of that kind of success is that lots of people develop ugly applications”. !!!!

    Now that is just crazy talk. Although Apple has already captured a larger smartphone marketshare than the Mac has ever achieved, they are not at all interested in the cut-throat, no-margin, commodity market that they’d need to compete in if they were to aim for a majority of the wider mobile phone market (just think how cheap the iPhone would have to become to be affordable for the hundreds of millions in India and China etc). Apple is rightly far more interested in the higher-end of the market which will always probably be a smaller, but far more profitable segment.

    So no Simon, I don’t think Apple has anything to worry about currently in terms of the success of their little black slab of glass and aluminium. They’re doing quite well enough without your poorly thought-out arguments.

    -Mart

  105. Martin Pilkington wrote:

    There are some pretty good reasons to just have Obj-C/Cocoa Touch as the development environment for the OS X touch platform, but the main one is that Cocoa Touch is the only API out there that is designed purely for multi touch input.

    The problem with Flash is that developers like to use hover over actions all over the place. It’s hard to do that on the iPhone, as when your finger is down it counts as a click. Of course you then have the fact that Adobe can’t seem to make an efficient Flash player for OS X.

    Then you have Java, which is a breeding ground for crap applications from crap developers. Sun or Apple would have to completely scrap all the UI frameworks in Java and start from scratch to make something efficient, touch enabled and most of all something that actually seems like it had some sane design thought put into it. As I don’t see that happening I doubt that we’ll see Java on the iPhone.

  106. Frodo wrote:

    Any C programmer worth their salt should be able to learn Objective-C syntax in about 15 – 20 minutes.

    The hard part to learning “Objective-C” is learning how to use the libraries that provide the immense functionality. No matter what programming language one uses, one would still need to learn those libraries to understand things like how to make buttons appear, how to process dictionaries, etc. This is truly not an “Objective-C” issue.

    Therefore, there is no real barrier to any C programmer to start programming for an iPhone unless the added concepts associated with object-oriented programming need to be learned. This can take longer but there are many good resources available for learning these concepts.

    In any event, the object-oriented development environment provided by Apple is the BEST, bar none, development environment for GUI applications in the world today. Take the plunge and be more productive today. Enjoy.

  107. John C. Randolph wrote:

    SteveK,

    ” As far as Objective-C not being very popular, my guess is Apple likes it that way.”

    I wouldn’t really put it that way. More like Apple doesn’t *care* if anyone else uses Obj-C. It works well for Apple and their third-party developers, and whether developers on other platforms go for it, great. If not, so what?

    -jcr

  108. John C. Randolph wrote:

    “In any event, the object-oriented development environment provided by Apple is the BEST, bar none, development environment for GUI applications in the world today”

    I’m not 100% sure that’s the case. The Smalltalkers have been doing great work in that area for a very long time. Nevertheless, Cocoa blows away any other development environment with that many users.

    -jcr

  109. Kendall Gelner wrote:

    Your point is pointless at best – while the concept of language potentially limiting developer use may be of some theoretical interest if you were planning to release a product with an SDK, it is of little interest in talking about the iPhone SDK which already has demonstrated drawing power with a few hundred thousand downloads of the SDK and developers clamboring for deployment certificates faster than Apple can provide them.

  110. Ixian wrote:

    I’m curious as to how many people simply haven’t bought an iPhone because it doesn’t support flash/silverlight/java/etc (their particular language in the SDK).

    How many sites completely fail without flash or silverlight? I’ve not seen one yet, and about the only thing I’ve noticed from making flash content require me to allow it from a menu before it even downloads is that a lot of annoying ads don’t take over my screen anymore on some sites. Not much angers me when I’m browsing like getting a link to a good article on some site I’ve never been to before and finding out the site relies on having flash ads pop up and take over the screen so you can’t read your article till it’s over, assuming it’s coded right and actually gets out of the way then (I’ve encountered a few where I just couldn’t read the article because the flash ad took over the screen and didn’t go away until I closed the tab).

    Never seen a silverlight part come up anywhere other than on microsoft sites. I’m still not seeing silverlight as important to a browser at all. Heck you might as well be called out for saying the iPhone needs silverlight for the very same reasons you question using Obj-C, however there’s no real evidence I’m aware of that would refute that calling out.

    When the number of sites out there that use flash/whatnot for a *very good* reason that can have no fall back method exceeds the sites that either use it wrong or have it in a good way but also have a fall back, I’ll then admit that flash/etc is needed for the web. Until then I just can’t agree that we need such things in a browser.

    Everything else I could say on this post has already been covered to such extent that it’s not even worth repeating any of it, but I would be interested in getting those numbers I asked for above.

  111. simon wrote:

    Ixian wrote,

    How many sites completely fail without flash or silverlight? I’ve not seen one yet, and about the only thing I’ve noticed from making flash content require me to allow it from a menu before it even downloads is that a lot of annoying ads don’t take over my screen anymore on some sites.

    Ever seen a web-site that has video on it? If you have, then the chances are that it delivers that video content via Flash.

    Apple understands that video is important – witness their range of video iPods; the Apple TV; and, of course, the deal with Google to repurpose YouTube’s Flash videos to a format that iPhone can play via a custom native app.

    There’s really no escaping the fact that Flash is an important way of delivering video inside a web browser. And, over the next year or two, the same is likely going to be true of Silverlight… and there are good reasons to believe that the same will happen for Java too.

    There’s also an increasingly important class of applications called Rich Internet Applications (RIA). A popular example of this would be Apple’s iTunes app. Many RIAs are delivered inside web browsers. Today, the dominant mechanism for delivering these is to use Flash. However, there’s a lot of work being done by Microsoft and Sun that will see both Silverlight and Java start to see broad adoption of these technologies for browser-based RIAs going forward.

    Today, iPhone has a lead in mobile web browsing experience for three main reasons: first, the iPhone screen has at twice the resolution of 99% of high-end mobile phones; second, Apple included good JavaScript support in iPhone Safari, which is a key feature of all modern web browsers; and thirdly, the iPhone CPU is at least twice as fast as the CPUs in most other high-end mobile phones, so pages can render in a reasonable time (it’s not only bandwidth that’s important rendering web-pages at a good speed).

    Taken together, these combine to mean that viewing even quite complex (but not all – you don’t have to try too hard to find pages that don’t render correctly on iPhone Safari) web pages as they were intended to be viewed is a realistic proposition for iPhone. However, there are no barriers that will stop other other handset makers catching up.

    The next big step on the road to making mobile web browsing truly “desktop class”, is to support web video and browser-based RIAs properly; and it’s going to be super-important as mobile phone hardware continues to advance over the next few years.

    What you’re going to see going forward is that other mobile handset makers are going to support all of Flash, Silverlight and Java on phones. You’d have to bet against Moore’s law if you want to suggest that even low-end mobile phones won’t soon be powerful enough to run desktop-class Flash, Silverlight and Java content inside web browsers.

    So the question is whether Apple wants iPhone to continue to set the bar for mobile web browsing or not.

  112. Steve Streza wrote:

    A language is just a language. It shouldn’t take someone who knows any OO language more than a couple weeks to pick up Objective-C. The value in a language comes in its libraries, and the reason that Objective-C is “unpopular” is that there are no major libraries outside of Cocoa/Cocoa Touch implemented in Objective-C. However, Apple’s libraries rock; Google around for new-to-the-Mac developer stories and all you’ll find are stories about how the framework gives you so much for free.

    Furthermore, Apple has a strong history of building and delivering solid libraries in Objective-C, as has been demonstrated by their releases over the past 7 years, the maturity of Cocoa in its present form, and in the huge additions they’ve made over time (Core Data/Image/Audio/Video/Animation, Cocoa bindings, etc.). Not to mention that they’ve already written an entire OS in the language, with those libraries.

    “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.”

    No, the way to win is to create demand for the platform as a whole. If I want to write code for a given device, I’ll figure out the language I need to use to write for it. However, the iPhone has a user base of people who have proven they will spend money for quality and who are probably more likely to go looking for a software solution to a problem on their own; couple this with the strength of the libraries and you’ve got an extremely desirable platform, regardless of the language.

    And, to top it all off, Objective-C is an unpopular language only when you look at a comparison of all software written on all platforms. If you look at the Mac platform, which itself has been gaining market share, the balance is completely the other way, with a majority of Objective-C applications and developers. And since Apple makes a decent amount of money from Mac computers (and much of that is driven by the software available for the platform), it is almost certain that one of the goals of the iPhone SDK is to expose more non-Mac developers to the benefits of the Objective-C language and the Cocoa frameworks. The hoped benefit of this is, of course, that more developers are writing more apps for the Mac.

    These are just a few things that immediately came to mind, but suffice to say there are many reasons that Apple would benefit from an ObjC SDK.

  113. Asam Bashir wrote:

    @111

    Yes, Apple understands that video is important, that’s why we have QuickTime, one of the best streaming media formats with proven quality and available on multiple systems. If it’s not in MP4 H.264 format it’s probably not worth watching.

    Silverlight will not succeed because, well, it’s made by Microsoft, and obviously it’s doomed. Flash is hideously inefficient on CPU resources, like most Adobe products now, and is again doomed. It would take them several years to make an efficient iPhone client.

  114. Elliott Sprehn wrote:

    This post and the comments seem to be very confused about what happened with the API and how the iPhone works.

    The iPhone runs a stripped down and slightly modified version of OS X. It’s basically *nix on there, and the C API that developers are already familiar with always existed. All the iPhone software since day 1 of the iPhone release was written in Objective-C using the Cocoa and UIKit APIs. The “jailbroken” applications used this API, the same one Apple was using, which was *always* in Objective-C.

    When Apple released their API they just formalized, for the most part, what was already there to begin with in terms of documentation and how to deliver applications to users.

    There was no “choice of language,” this is what the iPhone runs, what it has always run, and Apple just documented it.

    The iPhone doesn’t come with ruby, python or Java. Potentially, because of the dynamic nature of ruby and python (or perl) I could see them allowing use of them with the new ScriptingBridge. Unfortunately the static nature of Java means that a native API requires constant support from Apple. They just recently dropped support for the Cocoa/Java bridge in favor of the ScriptingBridge which supports ruby, python and perl where they can dynamically handle all the APIs.

    People are already working to get python apps on the iPhone it seems too: http://www.saurik.com/id/5

  115. simon wrote:

    Elliot, you’re right. I wrote this post to try to stimulate some debate. The real question, of course, is whether Apple should support only Objective-C on iPhone; not that they shouldn’t support Objective-C at all.

  116. Martin Pilkington wrote:

    I don’t see why they need to support other languages? It’s not like Obj-C isn’t capable enough. Apple’s attitude has always been to get fewer but get better, where as other companies generally go for more quantity at a lower quality.

    This is pretty evident in terms of employees. Apple has a relatively small workforce for what they do but they have a lot of very talented people working for them. Microsoft on the other hand has a few talented people but a much bigger share of average people.

    This then moves over into applications on a platform. There are a few really good pieces of software for Windows, but they’re drowned out by the amount of below par software out there. On the Mac there is less software, but the standard of quality of that software is much higher. Most of this is because the vast majority of software is written in Objective-C, which isn’t the most popular language in the world.

    Generally if you look at the most popular languages they are the ones taught in schools and universities, and so you get a lot of people who aren’t really that good at programming/development learning them. The majority of the talent moves on to lesser known languages or APIs which they learn themselves (being able to learn a language/API yourself is a telltale sign of a good developer, because it means they understand the basic concepts of programming in general).

  117. Jussi wrote:

    @115

    At the moment I don’t see a reason (adequate return to investment) to supporting other languages in addition to Objective-C. Supporting one language means much less resources need to be used to creating the SDK, documentation and examples. This means better quality, less time to market and less money wasted. Also the tools for Cocoa development in Objective-C are already there, Xcode is tried and tested by thousands of developers every day, adding the support for Cocoa Touch is much less work than creating a proper support for another language(s) in Xcode (and maybe additional work on runtime/API levels too).

    The API is created with Objective-C in mind so Objective-C is the perfect fit to using it. Using the Cocoa API with another language is possible but tends to be quite awkward because of the messaging syntax does usually not fit other languages, Smalltalk is a known exception to the rule. Also bridging native types to Cocoa types and back can be quite a hassle.

    On iPhone resources are scarce even if the CPU is a tad faster than on some other smart phones. Using a compiled language uses less memory and CPU cycles on the phone compared to interpreted languages. VM based languages can be equal to compiled languages in benchmarks but in the real world this seems not to be the case and they do add strain to the memory usage.

    In conclusion, supporting other languages costs, and just is not worth it. Objective-C was not chosen specially for the SDK but its use follows directly from the use of Cocoa on the iPhone. The original list of languages and methodology of the research were quite questionable, most of the languages in the list were not good candidates for using on the iPhone, for several equally obvious reasons. Which language(s) did you want the SDK to support? Why?

  118. ardaz wrote:

    @Simon
    Coming from my background > Fortran >Pascal > Smalltalk > C# > Visual Basic and finally to Objective-C, where thank goodness I can pick up on Smalltalk again via F-Script, I can say for sure you are out of your depth here and floundering around making silly statements about what Apple needs to do when you don’t even appreciate the lineage of Obj-C which links directly with C.(#2 on your suspect list) does you no good – the argument is lost = moot.

    The major point, which nobody has mentioned, is that Apple ‘rewarded’ it’s developers by continuing with Objective-C on the iPhone SDK. Existing developers get a head start and a promotion within the community. Why would developers feel happier having to compete with every Tom, Dick or Harry porting garbage code into their gui goodness.
    As far as #1 goes, surely constructing a Java-Cocoa bridge is pointless because when you’ve finished, you have essentially become an Obj-C coder anyway?

    Flash? – Puleease
    Silverlight???
    What planet are you on?

  119. simon wrote:

    Jussi wrote:

    Which language(s) did you want the SDK to support? Why?

    The short answer for “which languages/platforms”, is probably both Java and Flash.

    Why Java? Well, that’s all about the value proposition that Apple offers to potential iPhone developers, particularly potential Enterprise iPhone developers.

    Supporting Java would enable organisations with a big investment in Java (of which there are many) to more easily justify making substantial new investments to develop applications for iPhone. It will be easier for organisations to justify this because developing for iPhone in Java would mean: a smaller training need for people compared with getting people up to speed with Objective-C; applications will be easier and cheaper to support and maintain because the organisation’s code-base won’t become fragmented with code written in a language that only a handful of developers inside the organisation know.

    The current choice facing people and organisations that want to develop native mobile apps is: use Java to develop for any of billions of phones on the planet except iPhone; or use Objective-C to develop applications for iPhone.

    Apple made Java a core part of Mac OS X years ago; and Java is an important part of the success of Mac OS X. As a result, Apple has already made a substantial investment in Java to make it work well on Mac OS X (it supports its own version of Java, rather than leaving it entirely to Sun Microsystems). But don’t take my word for it… to quote from the most up-to-date version of Apple’s own developer documentation,


    Deploying Java applications on Mac OS X takes advantage of many built-in features… As a result, Java applications on Mac OS X look and perform like native applications on Mac OS X…

    Mac users are known for their high standards, so if you’re bringing your Java application over from another platform, you’ll find that adding support for Mac OS X is one of the easiest things you can do…

    Because Java is integrated into the operating system and kept updated through regular software updates, applications don’t need to bundle a JRE. Java support is transparent to users, so when you distribute your Java application to your Mac OS X users, it includes all the flexibility, power, and charm of the native Mac OS X platform.

    It would also make a lot of sense to work with Adobe to bring Flash support to iPhone. If they could make part of that a Flash browser plug-in that works well in iPhone Safari, that would be a massive win for Apple. This would consolidate and extend iPhone’s leadership position for accessing the web on mobile devices.

    It’s a tough call to say which of Java and Flash would be most important to support next: that is, which of the two would drive the most new iPhone sales. From the consumer software point of view, the answer is probably Flash, particularly because it would let iPhone Safari “see” large parts of the web that are currently invisible to it; and from the enterprise sofware point of view, the answer is probably Java.

  120. Ixian wrote:

    I’ll concede the video point, though I don’t really agree with flash video on the web. Youtube’s about the only place that has stuff worth watching, and there’s ways to watch those vids without using flash (been long enough since I’ve been to youtube for anything I hadn’t even thought of it when making my first post). Bookmarklets for downloading the original video, and I believe the iPhone has something specifically made for watching youtube without flash.

    What’s your basis for assuming that silverlight will also become important for sharing video online though? Flash is already usually good enough for most people, has a much larger installation base, and from what I hear works better than silverlight for video. Is there a good reason to believe silverlight will become near popular enough to become needed when existing technology already works and is more refined?

  121. simon wrote:

    ardaz wrote,

    I can say for sure you are out of your depth here and floundering around making silly statements… What planet are you on?”

    Really? LOL! You think being rude advances your argument? I think you might do well to at least consider the possibility that I know rather more about the business of software development than you do ;-)

    This Java-Cocoa bridge thing has been brought up a couple of times now. It’s a red herring. A Java SDK for Mac OS X has no need of a Java-Cocoa bridge. That’s why Apple deprecated their Mac OS X Java-Cocoa bridge years ago, and end-of-lifed it recently.

    Not sure quite sure why you’re quite so derisive and dismissive of Flash as a platform, by the way… For sure, it has technical weaknesses; but it does have volume. Perhaps you think not only that you know more than me about software, but also that you know more than the thousands of employees at Adobe combined, too? If the latter is true, very many congratulations on your brilliance!

  122. simon wrote:

    Ixian wrote,


    What’s your basis for assuming that silverlight will also become important for sharing video online though? Flash is already usually good enough for most people, has a much larger installation base, and from what I hear works better than silverlight for video. Is there a good reason to believe silverlight will become near popular enough to become needed when existing technology already works and is more refined?

    Silverlight is a rather more sophisticated platform than Flash; and has features that will provide benefits for people and organisations interested in deploying high-quality video, with high-end production values.

    As an example of that, the US TV network NBC has chosen to use Silverlight for all its online video coverage of the Beijing Olympics this year. On-line video is going to be massively important for US sports fans interested in watching the Olympics: NBC will show 1200 hours on TV, but will show an extra 1000 hours exclusively on-line, on demand.

    You’re right that Flash is currently much more widely deployed than Silverlight. I think it’s pretty clear, though, that Microsoft won’t have too much of a problem distributing Silverlight, at least on Windows XP and Vista… which as you know make up almost all of the market.

  123. Martin Pilkington wrote:

    “Deploying Java applications on Mac OS X takes advantage of many built-in features… As a result, Java applications on Mac OS X look and perform like native applications on Mac OS X…”

    What Apple doesn’t tell you in this is that:

    a. “look” means “they look vaugly similar to real OS X apps”
    b. “perform” means “they may work sorta like real OS X apps”
    c. they don’t make up for the fact that Swing goes out of it’s way to make it hard to develop a decent UI

    “This Java-Cocoa bridge thing has been brought up a couple of times now. It’s a red herring. A Java SDK for Mac OS X has no need of a Java-Cocoa bridge. That’s why Apple deprecated their Mac OS X Java-Cocoa bridge years ago, and end-of-lifed it recently.”

    I believe you need to get your facts straight. The Java-Cocoa bridge was to let Java developers ease their transition over to Cocoa. Apple deprecated it because nobody used it and because Java isn’t anywhere near dynamic enough to easily provide a Cocoa bridge.

    Also, while we’re on the lines of Java, you haven’t addressed an issue I raised earlier about the fact that Swing doesn’t support multitouch. You can add multitouch events to an API (Leopard does with with the multitouch trackpads on new MacBooks) but Cocoa Touch is designed for multitouch on mobile devices. This is why they didn’t port AppKit and instead built UIKit.

    “As an example of that, the US TV network NBC has chosen to use Silverlight for all its online video coverage of the Beijing Olympics this year. On-line video is going to be massively important for US sports fans interested in watching the Olympics: NBC will show 1200 hours on TV, but will show an extra 1000 hours exclusively on-line, on demand.”

    Didn’t Microsoft pay NBC to use Silverlight? Silverlight hasn’t really been gaining widespread adoption outside of people who MS gives money to use Silverlight.

  124. simon wrote:

    Martin Pilkington wrote,
    “they (Swing apps) look vaugly similar to real OS X apps”

    Well, that’s a value judgement you’re obviously free to make. Apple appears to disagree with you, judging by their documentation. Apple engineers have worked hard to provide APIs that enable developers to write Java applications that have both the look and feel of native Mac OS X apps. They’ve done a pretty good job too, and have made further progress in making Java apps even more Mac OS X-like in the all-new Java SE 6 release today/yesterday.

    Martin Pilkington wrote,
    “they don’t make up for the fact that Swing goes out of it’s way to make it hard to develop a decent UI”

    Not really. Medicore developers have been saying this since Swing first came out. It’s never been true. Swing is an elegant, super-powerful API. It goes out of its way to make it possible to develop gorgeous, cross-platform user interfaces. Clearly, there has been an issue in that many developers don’t understand the issues surrounding building cross-platform user interfaces (it’s a complex topic)… but Swing works fabulously well in the hands of talented developers.

    Martin Pilkington wrote,
    “I believe you need to get your facts straight… Apple deprecated it (the Java-Cocoa bridge) because nobody used it”

    Yes, no-one used it. Remember that bit you quoted where I said, “A Java SDK for Mac OS X has no need of a Java-Cocoa bridge”?

    Martin Pilkington wrote,
    “Swing doesn’t support multitouch”
    True. Fixing this is a matter of Apple writing a Java API or two. Do you think Apple’s engineers aren’t capable of writing APIs?

    Martin Pilkington wrote,
    Didn’t Microsoft pay NBC to use Silverlight?

    Probably – I haven’t seen the terms of the deal. Certainly, though, Microsoft appears to be serious about signing up high-profile content partners for the Silverlight platform, so they can show what can be done with it. Getting US on-line coverage of the Olympics was a pretty big win.

    As far as Silverlight adoption goes, the runtime is being downloaded and installed on people’s computers at the rate of around 40 million installs per month. That qualifies as rapid distribution in anyone’s book: remind me, how many iPhones a month is Apple selling?

    Silverlight didn’t get a really powerful programming model until version 2, which isn’t even in production yet; it only had its first public beta release at the beginning of March 2008. All-in-all, it’s a bit early to be making calls as far as Silverlight’s developer mindshare goes.

  125. Martin Pilkington wrote:

    “Well, that’s a value judgement you’re obviously free to make. Apple appears to disagree with you, judging by their documentation. Apple engineers have worked hard to provide APIs that enable developers to write Java applications that have both the look and feel of native Mac OS X apps. They’ve done a pretty good job too, and have made further progress in making Java apps even more Mac OS X-like in the all-new Java SE 6 release today/yesterday.”

    I can’t comment on any improvements in Java 6 on OS X, but launching one app written in Java 5 I can easily see that JTextArea does in no way map to NSTextView. The appearance is wrong and it doesn’t support the likes of system wide spell checking, dictionary support or grammar checking. Yes Apple does a LOT of work to try and make Java apps look and feel somewhat native, but they still stick out like a sore thumb, especially as it’s impossible to make a cross-platform UI that looks native on multiple platforms.

    “Not really. Medicore developers have been saying this since Swing first came out. It’s never been true. Swing is an elegant, super-powerful API. It goes out of its way to make it possible to develop gorgeous, cross-platform user interfaces. Clearly, there has been an issue in that many developers don’t understand the issues surrounding building cross-platform user interfaces (it’s a complex topic)… but Swing works fabulously well in the hands of talented developers.”

    I’d love to see one of these gorgeous, cross-platform user interfaces, because I have yet to see a Java app that I would class as passable, let alone gorgeous ;) The biggest problem with Java is that “build once, deploy anywhere” doesn’t work, because it doesn’t take into account the fact that there is a lot more to UI differences on each platform than looks.

    And while it may be because I come from a Cocoa background but the whole model behind Swing seems overly complex. Listeners make it very awkward to set up clean boundaries compared to delegates and the target-action model in Cocoa. There also seem to be lots of unnecessary subclasses (why does JToggleButton need to exist when it could be implemented in JButton). In my experience of Java it seems like whenever an API dev has wanted to modify a class they’ve just subclassed it instead of extending the existing class.

    “True. Fixing this is a matter of Apple writing a Java API or two. Do you think Apple’s engineers aren’t capable of writing APIs?”

    They’re more than capable, but I think that between the iPhone, iPod, Mac, OS X, various applications and their own APIs and developer tools that writing a Java UI API for the iPhone isn’t very high on the agenda.

  126. simon wrote:

    Martin Pilkington wrote,
    “I’d love to see one of these gorgeous, cross-platform user interfaces, because I have yet to see a Java app that I would class as passable, let alone gorgeous ;)

    The problem has been that almost all the top-talent Java Swing developers have been employed inside companies developing custom software for internal use.

    I suspect this may change though. I’m expecting to see Sun’s work on making Java more attractive for building consumer applications to start making some kind of impact towards the end of 2008, and build momentum through 2009.

    Martin Pilkington wrote,
    “The biggest problem with Java is that “build once, deploy anywhere” doesn’t work, because it doesn’t take into account the fact that there is a lot more to UI differences on each platform than looks.”

    I don’t think it’s so much that it doesn’t work, so much as the fact that very few developers understand what UI “look and feel” really means… especially the “feel” part. You need to do some things differently for different OS platforms, which is perfectly possible to do with Java in a single build.

    It’s arguable, though, whether this matters very much anymore. Today, it’s only a small proportion of personal computer users that care about consistency of behaviour between different applications. The advent of the Web has meant people are now used to using a broad variety of different interfaces.

    Martin Pilkington wrote,
    Writing a Java UI API for the iPhone isn’t very high on the agenda.

    I suspect you’re right. The question is whether there’ll ever come a time when it goes up the agenda. When iPhone was first announced, Apple was flooded with requests from Mac Java developers for a Java iPhone SDK; so there would clearly be interest in it.

  127. JulesLt wrote:

    Simon – firstly, I think it’s a bit of a myth that Apple responded to pressure to create an SDK after a developer pressure / didn’t expect huge developer interest. There may have been debate whether it would be an ‘open’ SDK or one for partners only, but with iPod games proving lucrative, it was certainly something they were intending to do.

    Why wasn’t it ready at the same time as the iPhone?? Because it would have held back iPhone development by about a year, at least – Apple barely shipped the iPhone on time as it is, and the underlying software has continued to change in ways that would be unacceptable to anyone expecting to develop on a stable platform.

    On the ‘language popularity’ chart – I find it hard to believe that ActionScript is less popular than D or Lua – it’s certainly wider used, which makes me a bit suspect of their methodology.

    The issue with the languages you pick – Java, Actionscript and C# – is that all of them are not just languages but platforms or SDKs in their own right, each running on their own VM. The ActionScript 3.0 VM is hugely faster than previous versions but a Flash or AIR app can still easily cause 40% load on a dual-core Intel machine, to run something where a comparable native app would be in the 2-3% range.

    Windows developers complain that C# is sluggish compared to the C++ they are used to. Of course there are other good reasons to use C#, such as safer and faster app development.

    And Java – well it may not be ’slow’ anymore, but have you seen the memory footprint? Think how long it takes for an average phone to load in the Java VM and get going.

    Would you use these languages to program an XBox or PS3 game, or even a PC game? So why do we consider them suitable for mobile development? Until about a couple of years ago it could take 20-30 seconds for a phone to load up a J2ME app.

    I can think of good reasons for using all of those languages, and I run a team who do, but they are not what I would pick for mobiles or embedded devices. If you’re in that area, you want a compiled language. Not necessarily Obj-C – I’m sure Nokia will do well with Linux and C++.

    Of course that won’t be true forever – once upon a time desktop machines couldn’t even run a Unix kernel, now that barely tickles the processor, and we can run Unix on a phone. But right now, I don’t even think those technologies are great on desktop machines – and we develop using them – but as said earlier, there are a lot of good reasons to use a language other than performance – so long as performance doesn’t matter.

    And that, more than anything else, is what impresses me about the iPhone/Touch – it is responsive. Whereas the HTC Touch and first generation Nokia N95 are not. Most mobile Java apps are not. And when companies do their cost/benefit studies and decide to settle on a single cross-platform language to do their development, they are basically saying ‘we care more about saving ourselves money than delivering the best experience to the customer’.

    That is something that never strikes me as a good starting point for software development.

  128. Brent D wrote:

    I’ve taken the time to read all the posts (just found the blog today). It’s interesting how the age group of most of the posters is very evident by the comments written. :) Imagine the horror to find out that Fortran is still used – in this day and age. Imagine that large a large part of today’s banking systems are still running on Cobol. Horrors. Imagine that the federal government and the Department of Defense uses ADA and even wrote the specifications for it because they couldn’t rely on a corporation to have complete control over their operating system and programming (and many other reasons). Imagine a part of the world that gets along just fine without Microsoft. Yikes. And I haven’t mentioned a word about Obj-C or the iPhone yet. I’m getting to it.
    What goes around, comes around. What was once vilified is now the new technology. It’s very interesting that the computer science field over the past 40 years has discovered truths about computing and built wonderful operating systems and hardware. What was once only available to large companies and educational institutions can now be running on our phones!! How has the Unix model outlasted all comers? How has something that seems to date back to the very beginnings finds new life with the Linus community and with Apple? How has central processing systems given way to distributed processing, with everyone owning their own desktop computer, then suddenly revert back to web apps running on central servers again? (Notice I still haven’t mentioned Obj-C nor the iPhone, but you can guess where I’m going with this.)

    It could be that different isn’t necessarily better, but better can usually be seen as different. Has Apple always been better or just different. I’ve been on the sidelines and been a MS apps developer until recently. Since Apple moved their OS to Unix, I’ve switched, not because they have 1000’s of apps, but because Unix has always been at the core of computing and the Mac OS X system has brought Unix to a level where everyone can feel comfortable with using it. There are obvious gains and I don’t need to list them, several of which Windows has never managed to duplicate. We should keep in mind that software and operating environments can not exist without the appropriate hardware, and there is a form of evolution taking place as hardware gets faster and more capable – OCR and handwriting recognition for instance. The language used is an artificial construct that is usually developed for specific purposes. Alan Turing proved that we only need a limited subset of commands to do anything that is computable. The rest is for convenience. A high-level language is necessary for efficient use of a developer’s time, but we can’t forget about the performance of the hardware, which translates into the user’s experience of either a snappy, intuitive device, or a dog no one wants to own. Interpreter and general purpose intermediate-compilation languages have no place in small devices because the overhead is far too great. Where are all the RISC processors today. Why has general purpose processors continued to dominate and graphics boards branched off to use a specialized vector processor – because it makes the most sense! If you want to do signal processing for music or seismic data, use a specialized chip where it’s encoded in silicon. If you want to process vector graphics for 3-D animated simulation, use a specialize chip. Both come with an API and low-level routines that make it accessible to the developer. You choose what to be compatible with by who you intend to sell it to.

    I believe that Apple is continuing to fight for its share of the market for all of its products – iPod, iPhone, and iMac. The common elements that made them so successful are quality, design, interoperability, simplicity of operation, and power. Many aspects of their decisions were driven by a need to improve the way we use these devices, not just to be another player in the lineup of music players and mobile phones. I applaud their research into Human-Machine Interface studies to improve the devices we use. I enjoy using a computer that was well thought out and not thrown together from a hodge-podge of parts. “It just works” is the marketing strategy of the century. Imagine if Ford did this from day one with their cars and actually meant it.

    So, to answer the initial blog, I am in favour of the Obj-C and Cocoa choice for a development framework for the iPhone because we are not talking about making it easy to port bad developers or bad apps from other systems over to the iPhone or the OS X environment. It’s time to break from the current junk mentality and build on a tradition of superior product expectation when you think of Apple products. And lets remember that all things physical or generally obsolete by the time they come to market, especially the difficult things. There is always a Version 2.0 upgrade regardless of who is making version 1. So before we pounce too hard on iPhone version 1 or 1.5, we can’t get to version 10 without all the baby steps inbetween…god knows we’ve given MS a enough time to get Windows right and they still manage to screw it up.

    One last comment – how in the hell can Apple be expected to sell 100 million phones a year when every man, woman, and child in the US would have to buy one in the next 3 years to meet that expectation – with only AT&T being the official service provider. At $400 apiece and $50/month for fees, it’s unrealistic that this product can replace the need for a simple cell phone device. I think someone is speaking from a lofty height and has forgotten that the price point of this phone is well beyond the affordability of the masses. The iPhone will not be competing with the basic cell phone market anytime soon. The iPod product was split into several models that provided competition in several price levels, from the low end shuffle to the high end iPod Touch/iPhone without the phone part. This is essentially the top of the line iPod with phone and browser capability, and it will obviously be a future pocket computer link to your desktop system in the near future.

    Yes, the Blackberry market is the target for the iPhone and more apps for the iPhone will improve the functionality. It will squarely be aimed at users who also have a Mac computer to connect to, but like the Blackberry server software for the PC server system, the iPhone server may only be available for the OS X environment. The last thing Apple will do is provide a reason for people not to leave the competition.

  129. simon wrote:

    Nice post, Brent!

    Re: How can Apple be expected to sell 100M phones a year?

    By getting their business model right; and by offering the right mix of phone products. Apple doesn’t sell just one type of iPod; and they’re not going to sell just one type of phone.

    Nokia ships 100M phones a quarter, never mind a year. So, it’s certainly possible to sell 100M in a year. Apple has the capability to make products that are superior to Nokia’s. Witness, Apple came from nowhere to make the best phone on the planet at their first attempt.

    Or, to come at this another way, Apple already sells over 40M iPods a year. The market for mobile phones is much larger than that for MP3 players. The question is how to grab market share, profitably.

    Bottom line: for sure, Steve Jobs will have sales of 100M iPhones a year in his sights…

  130. Devon wrote:

    I think that you might be mistaken thinking that Apple didn’t ever think they’d need to release an SDK. All you have to do is look at the SDK from the beginning and realize that it was pretty raw. The iPhone 1.0 was a pretty raw device in the sense that Apple had JUST created Cocoa Touch and many things were not ready to be widely used. They knew that so IMO they made it easy to make native looking apps with Safari since Safari was already supporting many things that would make that happen.

    As for the choice of Objective-C, I don’t think the best thing for them to do is alienate current Mac developers. They want to bring more developers to the Mac and learning to program on the iPhone is a stepping stone to full blown Mac development. It also gives existing Mac developers an advantage and you could say it’s a reward for them developing Mac apps in the first place. They get to be the first to develop for the iPhone because there’s not as much to learn. In a way it’s Apple thanking them for sticking with the Mac platform. I think there could be some revolt if Apple decided to base the iPhone SDK on Java for example.

  131. Joe.voelker@pianojoe wrote:

    As an Obj-C dev, I think Apple did the right thing. Obj-C is the native language of Cocoa which makes things simple, and elegant. Everybody in the programming world knows C, and, you can do your thing in C, or even C++, and use Objc-C for the view only.

    Short message: The ease of getting your interface going with only a few (!!) lines of code makes up for the need to grasp the fundamentals of Obj-C. Which took me a few days, back then.

  132. bill slusser wrote:

    I’ve just started picking up obj-c and I realize why and how NextStep got it’s name. Objective-C and the Cocoa Framework ARE the NextStep for all of use backwards people. NextStep was ahead of it’s time in the late eighties and to my suprise, they still are about a decade ahead of Java, which is the number 1 language on your list. Take all those people who program in a language ahead of Objective-C in that list, teach them Obj-C and cocoa and they will never look back, but think duh! I was so stupid and ignorant.

    XCode and IB are way ahead of Eclipse, which still needs to learn from NextStep how to build a decent IDE. Then Java borrowed heavily from Objective-C, but it’s nowhere near as succint and efficient as Obj-C.

    Please stop looking at Objective-C as the language people still haven’t picked up, but as the next step in the evolution of OOP that will become very obvious to all developers when word trickles down that this Language still beats all others. I program Action Script 3, which is not unlike Java and JavaScript or even C, I hope Adobe will wise up and build Flex Builder to mimic XCode, not Eclipse and I hope they drop AS3 and start using their own version of Objective-C, which I see happening in the next ten years if not the next 5.

  133. simon wrote:

    Bill – in what ways do you think Obj-C is a decade ahead of Java?

    You also say that “Action Script 3… is not unlike Java and JavaScript or even C”. But surely Java, JavaScript and C are all rather different? I’m not sure what you mean.

  134. joshi wrote:

    Wow! I’m surprised at the almost unanimous disagreement with the original post. While I think this decision made sense from a practical point of view (given that the Cocoa libraries are Obj-c) and maybe from an engineering view (works with C, no big virtual machine, etc) I think the original post has a point. The question is what is apple’s goal. Do they want the iPhone to be the mac of phones (small, thriving, high end) or the market dominating technology? Apple’s walled garden/Obj-c vision of widget development does lead to a generally superior product, but I think the history of the mac shows it doesn’t necessarily lead to a market dominating technology.

    Speaking on a purely aesthetic level, I think Obj-C is actually very un-Apple.

    Personally, I hate Obj-C, and if I do any mobile development it will probably be for Android. Despite what the fanboy snobs on here might say, I am a damn good programmer, and I think I have good application concepts to contribute to the mobile space, so I find the idea that Obj-C will make for a better developer pool questionable.

    If you want to create a vibrant and sustained iPhone ecosystem having only one viable development path is, at the very least, a risk. Although there are interfaces for Obj-C from Python and Ruby it would open up the platform even more to have official support for a true modern, dynamic language, especially for simple applications.

  135. simon wrote:

    @Joshi

    I don’t think you should necessarily take the comments here as a statistically random sample ;-) This discussion was linked to by some Apple developer sites.

    Nevertheless, it’s clear that the iPhone native application ecosystem is going to be incredibly vibrant, even with a single language environment. That’s because, by any standards, Apple has done a great job with the iPhone native SDK and with their developer tools.

    Do I think it would be good to have other languages? Most definitely. However, the lack of these languages won’t stop iPhone from taking the next steps in gaining market share.

    A big question for Apple now is whether to deliver the “complete Web” inside the iPhone Safari browser. Today, Apple doesn’t need to do this: the iPhone already has the best mobile browsing experience of any phone, by a big margin.

    However, as it stands, iPhone does not deliver the complete web. In future, as the power of handsets grows, the complete web will be expected by customers. That means support for a Flash plug-in for iPhone Safari will be an absolute requirement (it’s a matter of “when”, not “if”). And if Sun and Microsoft are successful in growing adoption of Consumer Java and Silverlight, then both Java and Silverlight plug-ins will also be required.

  136. Chris wrote:

    Firstly, Objective-C is uniquely suited to the iPhone being compiled to machine code, garbage collection optional, and yet highly dynamic and suited for guis.

    Secondly, they probably didn’t have a lot of choice unless they wanted to release something in 5 years.

    Thirdly, I think they’ve got plenty of developers.

  137. Aatif wrote:

    Obj-C was a stranger for me, but as soon as I started working on iPhone SDK, I got familiar to it, (I liked its way of messaging) and now its ok.
    iPhone has a reasonable number of programmers worldwide and I think there aren’t much complaints about its unpopularity.

  138. Jill wrote:

    A computer language can be VERY easy to learn, clear, and simple.

    We *MAKE* languages that are hard to work with.

    I avoid them.

  139. Rob Evans wrote:

    After seeing the iPhone dev video on Apple’s site, I went and bought a MacMini (my first ever Apple computer) because I wanted to mess around with the iPhone SDK.

    I can program in lots of languages but I’ve always had a soft spot for PHP, its been my favourite for web development for years now, with C++ as my app favourite.

    After picking up the SDK, a week and a half later I had a fully finished game published on the app store (iBacteria).

    I had never had any experience programming with either a Mac or in Obj-C… now it’s my favourite language. FULL STOP.

    It is elegant, easy to pick up, functional and powerful. It sounds to me like you’re just whinning because you can’t use Java on an iPhone… Java is total bloatware… you need a native language for the OS you’re running and Java isn’t going to be it. If only everyone knew how awesome Obj-C is.

  140. Rob Evans wrote:

    On a side note, I think there are many more pressing issues for Apple to deal with anyway, such as fixing problems with the App Store submission system and making the code-signing process a one-click affair.

    I cannot currently upload any updates to my game because Apple’s submission system is being overly sensitive to my info.plist file. How do I retrieve my original file from my original app bundle uploaded so I can compare? Good question, Apple… that’s way more important than multi-language support, app store submissions should be one-click!!!

  141. simon wrote:

    LOL @ “whining”, Rob. Obj-C isn’t a problem for us, by any means; and you’re quite right – it’s a fine language.

    That doesn’t make it popular, though. The truth is: the computing platforms that win in the long-term (and iPhone is a computing platform) are the ones that can attract the most developers. That was true of desktop computers. It’s true of games consoles. It will be true of mobile phones too.

    If Apple believes that placing all iPhone developers under restrictive NDAs that mean they can’t discuss how to develop for iPhone is a good way to attract developers, it is mistaken. Similarly, if Apple believes, as you do, that Java is “total bloatware” or, as Steve Jobs said, “a ball and stick that nobody uses”, again the company is mistaken.

    Java is used to program billions of consumer devices: smarts cards, set-top boxes, LCD televisions, Blu-ray players, motor vehicles, and, of course, several billion mobile phones. Technically, it’s perfectly possible to build a compelling version of Java for iPhone.

    I’m not sure what you mean by Java being “total bloatware” – it’s a major platform for programming super-constrained devices such as smart cards (currently, there are over a billion Java smart cards deployed per year).

    Good luck with iBacteria, btw – hope it’s a big success for you!

    As for the technical problems you’re experiencing with signing your app etc, are you sure you’re not breaking the terms of the iPhone developer NDA by asking this question? I wouldn’t want Steve Jobs to hit his “kill switch” on your app, for being disobedient ;-)

  142. James wrote:

    I just came across this discussion thread. As a postdoc researcher in computing languages, I find the level of passion generated interesting. And it’s funny that Apple fans have 10X the passion of Objective-C fans…

    Anyway, a thought that I haven’t seen expressed here is that quite a few professional programmers will be tempted by the opportunity to learn Objective-C for the iPhone for FUN in their spare time. If you program C++/Java all day at work, you want to mess around with something different at home…

  143. simon wrote:

    Absolutely, James. And of course, such people have already been inspired to produce some great apps for the iPhone App Store…

  144. Girish Sarwal wrote:

    What Simon says here makes good sense to me. It is simply not about how good/bad/powerful/ a language is. Seeing it from the technical perspective, I don’t want to spend another week or so getting up to speed with ObjC for writing stuff (and of course every language has its own shares of glitches and kludges and pitfalls) and from a business perspective, I might not want to incur additional training costs/time for my developers who’ve been working with other popular languages for time immemorial. A new technology/language does pose “Entry Barriers” – Ref Porter. Remember when .NET started cannibalizing COM and native code calling it “Unmanaged”. Applications were working always and working good, but .NET did hurt COM and other older technologies with a compelling thought of “Saving the programmer’s time, and increased productivity”. productivity will surely be hurt if developers have to learn stuff before being able to produce.

  145. Nathan Wright wrote:

    I also think Simon makes perfect sense in the original post. I read this entire thread top to bottom, and I’m amazed at some of the comments people are making – apparently only to uphold their argument. They’re the kind of things you write and then look back at them in 3 years and think, “I really wrote *that*??”.

    For example, “As far as Objective-C not being very popular, my guess is Apple likes it that way.” I mean, you really believe that?

    Or this one arguing against your wishes to see the iPhone become a “huge volume platform”:

    “And that’s where you diverge wildly from Apple’s mindset.”

    Are you kidding me? Do people really think Apple is in business to be “little engine that could”? I don’t think it’s enough for Steve Jobs to know they built the best OS/UI (both desktop and mobile). I would bet my firstborn that he would trade his current market share with, oh, say 85%.

    I wonder if some of the commentators on this post have looked back at their words with a bit of embarrassment.

    To your original post, I would love to see the iPhone support Java and for Apple to provide an API to tap into all the iPhone features from Java. I have 3 apps in particular that I would like to port that would probably take a couple days to support the iPhone features if I could keep it written in Java. But having to port them to Objective-C will be a months task. I will probably still do it eventually, but my calendar will have to open up first.

    To call all Java developers bad programmers and all Java apps “crap” is elitist, and that’s what’s given the Apple fans such a bad rap over the years. It’s the “We’re better than you so we don’t need you” attitude. Much like I can write now write Mac apps in Java, I am certain that the only thing stopping me from writing iPhone apps in Java is Apple resource allocation, rather than some 60s-ish devotion to a cause.

  146. zanxre wrote:

    no . objective-c is better than c++

  147. Tom wrote:

    Some developers have made quite a bit of money developing iPhone apps. Those who were not familiar with Objective-C found plenty of documentation to make it easier to learn. Read this NYT article about the iPhone developers gold rush.

    http://news.cnet.com/The-iPhone-gold-rush/2100-1037_3-6249428.html

  148. Ed Park wrote:

    I am not a Java evangelist (it’s just one of many programming languages I’ve used), but degree to which Java and Java developers are bashed on this thread is pretty ridiculous.

    Here are some points to consider.

    #1. developers are often biased when it comes to technology they already know and are comfortable with.

    If you asked Apple developers, who had lots of experience with Objective-C, whether Objective-C was the right choice for iPhone app development, what would you expect them to say? :)

    Ditto for Java developers working with Java frameworks, open-source libraries, Eclipse, etc.

    Ditto for Microsoft developers…

    You get my point. Most people tend to defend what they know and like, it’s human nature.

    #2. I’m pretty surprised the extent to which people poo-poo Java and Java developers.

    There are a few subtopics here (A and B).

    #A.
    Yes, it’s true Java hasn’t succeeded in terms of client-side application development. No need to beat that dead horse.

    That isn’t the full story though.

    What language has arguably changed the face of UI development forever for the better? It wasn’t Java, and it wasn’t Objective-C either. It was HTML.

    The web took front-end design out of the hands of the developers and put in hands of designers, thanks to easy-to-use presentation languages such as HTML. Designers made web apps usable, and this in turn has changed user expectations in terms of application usability, regardless of whether those apps are web-based or not.

    So who cares if Java isn’t good for client apps?

    What do people typically use Java for? They use it for everything *but* writing the UI itself. Middleware, business logic, backend code, MVC frameworks using HTML/CSS as the UI part, etc

    #B.
    We could argue the pros and cons of Java as a language. But let’s step back and look bigger picture than just the language itself.

    Java, maybe moreso than any other language in the past decade, has been involved with changes in *how* we develop, esp in terms of setting trends, paradigms, and tools.

    Consider these examples:
    - Java was arguably the 1st language to make automated unit testing very popular, heck, even expected, as a part of software development, because of the widespread use of the open-source framework JUnit. I’m a big advocate of unit testing, the payoff (code quality, usability, and ability to refactor) is huge
    - a lot of popular frameworks were initially implemented in Java, then were ported to other languages. Not the other way around
    - Java frameworks were among the 1st to widely either adopt innovative programming concepts and/or help make them popular. E.g. dependency injection (Spring), convention over configuration (Maven, and notably Ruby on Rails which is obviously not Java-based), generating API documentation from code comments, etc
    - Ant (and now Maven) was a huge leap forward in terms of compiling/building/packaging code. I remember the days of C/C++ makefile writing and maintenance, painful to say the least
    - there are a crapload of open-source Java libraries available, many of them well worth using. There is simply critical mass
    - in my experience leading development teams, Java is a excellent language from a TCO perspective. Easy to learn, easy to troubleshoot/debug, tons of open-source libraries available, etc

    Are all the people who developed with Java just morons? Did they all write crappy code? I doubt it :) Java is not the silver bullet for all app development (no language is), but it has brought a lot of *business* value to technology and helped to change how developers “do” software.

  149. Rob wrote:

    So Macmerica, let me get this straight:

    Java sucks, and is trivial on the web. Ok. I missed that memo. Whenever I don’t install the Java plugin on a newly set-up browser, I can’t help notice that half the friggin’ sites on the we don’t work right. That’s right, sites *work* now, they don’t just sit there. And no big enterprises use Java, no sir. I bet Oracle uses an ObjC app-server/middleware suite to serve up high-availability ObjC apps over TCP/IP. Why, I bet you could use the world’s most introverted language to program an awesome platform agnostic online version of….I dunno…iPhoto or something. Sweet.

    And Flash, well it has its liabilities, but it does come in useful on sites like YouTube, MSNBC, CNN, Facebook and MySpace…but your right…nobody goes there.

    I think the sensible thing to do is, go buy a $600 phone that will try to lock me into the special asylum reserved for MacHeads even *more* or I can’t program it for shit, and which doesn’t support any technology not blessed by SJ– and then post on blogs about what an uberUser I am ’cause my effing phone costs half as much as my already over-priced white paper-weight of a pointless PC does.

    Wait…not completely pointless. It came with iPhoto. Wow. You won’t see a killer app like that on any other platform.

  150. waffletower wrote:

    It is hilarious to read this more than a year after it was posted and see how out of touch it is. Developers are highly adaptive and have embraced Objective-C on the iPhone with few misgivings. It is highly doubtful that a ranking where Cobol is considered more “popular” than Objective-C is measuring developer preference. Cobol software maintenance work is simply ubiquitous. I would wager that the suicide rate of Cobol developers is far higher than that of developers who work with Objective-C.

  151. Quinn Taylor wrote:

    Comment 40 is only partially right: searches for Objective-C include the terms “Objective-C, objc, Obj-C”. However, they don’t include “iPhone programming”, “Cocoa programming”, “Mac programming”, or a number of others that would be related. I don’t suffer from the delusion that if you include such terms, Objective-C would shoot right to the top of the rankings. In fact, I think search ranking is largely irrelevant, anyway.

    While the TIOBE index is a useful metric of the popularity of *searching the web* for a particular programming language, it fundamentally cannot measure the true popularity of actually *using* a given language. Forget measuring lines of code in each language (a lousy metric anyway, given the variability in verbosity between languages), they don’t even claim to measure the number of projects that use a given language, the number of active developers for a given language, etc.

    This comment isn’t written in defense of Objective-C, it’s written as a criticism of poorly-applied statistics. You simply can’t claim to infer something from a measurement of another completely separate thing, no matter how related they may appear. The most you can say is that language X is more popular to search for than language Y. Without even the context of whether the search originated from a developer or not, how can you claim anything more? What if someone were to claim that languages which rank at the top of the list are there because they’re inherently more confusing than lower-ranked languages? They’d have as much “proof” as this post presents.

    IMHO, analyzing whether Apple made a mistake by choosing a programming language with miniscule market share is essentially laughable. Any programmer worth his salt will analyze a language based on its strengths and weaknesses, and its fitness for a particular purpose. Objective-C is extremely dynamic and well-suited for extremely rapid and flexible design, both of applications and UIs, especially when coupled with Interface Builder. It wasn’t the only choice for OS X and iPhone, but it was a great one.

    I think time has already proven that developers are overwhelmingly willing to learn Objective-C in order to program for the iPhone. Especially for mobile devices, the language choice pales in comparison with the quality of the SDK and development tool chain. Apple did its utmost to preserve seamless consistency of its tools, and waited to release a solid SDK, not one that was half-baked. In that respect, I’d say they hit it out of the park.

  152. chano wrote:

    Your article is truly naive. Why on earth would Apple dilute its franchise by using old languages, however ‘popular’ they are in your rankings? Only a fool would suggest they do such a thing. Objective C extends C and C++. Extends … as in it does all that they can do and then some. So it automatically rises above C in your list as a SuperSet of C.
    Your other assertions have been shown to be entirely without merit as Apple’s App Store is a runaway success to die for and every vendor supporting the languages ranked higher than Obj C in your list is struggling trying to reach even 10% of Apple app list. There are precisely ZERO quality apps in the other vendor’s stores. SO that will tell you all there is to know about what tools the quality developers work with and it seems to be Objective C – the modern developer’s choice.
    What a silly proposition you made a year ago. What are you, a COBOL baby boomer?

  153. J Barker wrote:

    Talk about being late to the ball… (it’s now 2009)

    While Objective-C was ranked 38th in 2008, where do you think it’s ranked today? As of Aug 2009, it’s ranked 19th! W00t! Go Apple!

  154. Funny Dummy wrote:

    What is the best and quickest way to learn ObjC? Any recommended books or online courses?

  155. yottzumm wrote:

    My, what a lot of hot air. Here are my thoughts:

    1. What made Java so wonderful to learn was javadoc–the best webapp ever.

    2. Learning Interface Builder is a pain in the neck. Still trying to figure it out. I can do a poor job Matisse/NetBeans just fine…I can actually look at the code it generates and understand it. Has anyone opened a .nib or .xib file and tried to understand it? What happened to literate programming? I think that people are finally coming to the conclusion that XML sucks for programming, with the rise of GWT. Designers need tools, not HTML/XML/CSS–why do you think Flash is so popular with designers? They need tools that generate Objective-C, JavaScript, ActionScript and Java. They need tools that parse Objective-C, JavaScript, ActionScript and Java. Why don’t some of you people who are so hot on writing in Objective-C write some reasonable reverse engineering tools so that we can write Java code and translate it to Objective-C?

    3. Oh, I forgot, someone has already done that. It’s called XMLVM. You can write Java and Cocoa Touch and translate it to Objective-C. Whee! I’d like to see more of that.

    4. Better yet, why not take Objective-C and translate it to JavaScript. Whoops, someone has done that too, it’s called Cappucino or Objective-J.

    5. I think all the Objective-C programmers who are so smug to have escaped the web world are going to get hauled kicking and screaming back into it. It’s not that they don’t like Java, it’s that they can’t stand the web. Admit it!

    6. With the rise of O3D, even games programmers are going to get hauled into the web. Now we just need a Java library which will generate O3D…GWTO3D?

    7. Does anyone recall how difficult it sometimes was to get a reasonable stacktrace out of gdb? Even compared to Smalltalk, Java stack traces were and still are a godsend! Yes, I realize depending on them makes me a “bad” programmer.

    8. I forgot if Objective-C had exceptions are not. Perhaps the lack of exceptions makes Objective-C programmers exceptional?

  156. C++ wrote:

    honestly, I don’t know why they didn’t have (better/full) c++ support. I know apple would like to think that the iPhone is a good gaming platform, but they aren’t going to get many game devs, who almost all use c++, to suddenly switch to obj c, which is probably why there is a lack of really good iPhone games.

  157. Steven wrote:

    @ Ed Park
    “What language has arguably changed the face of UI development forever for the better? It wasn’t Java, and it wasn’t Objective-C either. It was HTML.”

    Is kinda funny. You do know the platform HTML and the WWW was developed on? Do you think it was based on the power of Objective-C? Perhaps? Driven by Interface Builder? Perhaps? Developed under Project Builder (predecessor of XCode)? Perhaps?

    The truth of your statement really is the power of PB/IB almost 20 years ago was still amazing by todays standards. It is not a code generator as many on this thread think it is but, rather, an object creator. It is this tool, more than any other, that pushed GUI design more than any other in the industry IMO. Silently, in the background with few even recognizing it.

  158. blacksheep wrote:

    unpopular? about 80.000 apps to download means unpopular? don’t understand…

  159. Steven wrote:

    @C++

    You do realize that the iPhone SDK fully supports Objective C++? This allows freely mixing C++ and Objective C programming making using existing C++ libraries possible.

    As for the lack of really good iPhone games??? Did I miss something on that one? There are thousands.

Post a Comment