Apple has a problem. How do they attract and keep developers on their platform? They created an Apple-only API that requires a variant of C long thought dead. Developers aren’t so keen on having to learn a new programming language that doesn’t give them any advantage over their existing ones and ties them to a platform with a tiny market share. It means re-using code across platforms becomes nearly impossible. It’s just not an attractive prospect. The impromptu surveys done from the stages of the Apple World-Wide Developer Conference continuously surprise the Apple employees that most of their developers prefer to write in C++ even as Apple tries to marginalize it.
So, first Apple announces all these ObjC-only APIs, like Cocoa, Core Animation, etc… They get some converts on some new apps, but mostly the developers ignore the APIs and demand C++-compatible versions (which Apple promises they will never get).
Then, at WWDC 2007, Steve announces that the world of 64-bit is here and tells all Mac developers that it is their duty now to port all their apps to 64-bit. Just as he demanded they embrace Intel and OS X before it. A short while later, Apple announces quietly that it will not support Carbon for 64-bit. Basically, Steve tells the Apple developers that have supported him the longest, “screw you. You do as your told. I’m in charge here.”
Apple (and Microsoft for the same reason) wants you locked into their platform. Apple can’t try to kill Flash (a la Silverlight) because they don’t have the adoption (or money) to make it happen. But they can use the iPhone. It’s the coolest device around, the herald of a new class of computer devices, and it doesn’t run Flash. Then, just before the iPhone SDK announcement, Steve comes out and trashes it. Then they announce the iPhone SDK. Anyone see through the BS a bit? “Hey our phone isn’t powerful enough to run a web banner ad, but we can run Spore!” C’mon.
The iPhone SDK looks neat, but Cocoa and ObjC only? That sucks. I’d way prefer Flash or even Java support, at least that way I could release a mobile app with a desktop version that shares some of the code.