iPhone OS 4.0

I’m sure you can read up elsewhere on the interwebs about some of the more critical features of the upcoming iPhone OS4 release. What I’d really like to concentrate on is a new clause that I signed yesterday involving development and use of 3rd-party IDE’s or non ObjC languages. The critical portion is reproduced here:

Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

This ends Adobe’s attempt to become a bit more relevant in the web space and I honestly feel a bit sorry for them. Flash has enjoyed being the king of the web for so long they’ve grown a bit complacent. However, if someone tried to convince me 5 years ago that the next battleground would be in the mobile device space and that Apple (ha!) would be on the forefront I would’ve laughed.

So, back to the changes in the dev agreement. My girlfriend’s cousin is currently a Java developer and has been dabbling a bit in iPhone dev, but only through a middle-ware tool called AlcheMo or Flash’s upcoming CS5. This has been his only expsoure to the OS because it would be a challenge for him to learn ObjC this late in the game– in his defense, he didn’t start out as a C programmer so I can understand a bit of his frustration. It isn’t as though he’ll be unable to develop for the iPhone, but he’ll need to do so: a) using a Mac and b) using XCode. As someone who started from the ground up one of these is a bit of a financial investment which is why I started with a Hackintosh.iPhone OS 4 Logo

On the flip side Apple is doing what they’ve always done: encourage shift to their platform. I’m more than happy to develop on a Mac and use one as my primary machine day to day. However the work that I do does occasionally require Windows so I will dual-boot.