As reported everywhere, with the iPhone OS 4 beta release, the development license was changed. The new license stated that developers could only “originally use Objective-C, C++ or C” to develop applications. This was believed to be a direct attack against Adobe Flash.
After a few days of investigation by the blogosphere, it has now become clear that the intent of this license change really was a direct attack against Flash. And Mono (C#). And every other cross-platform toolkit.
Steve Jobs responded to critical emails sent to him to clarify the situation. Apple has decided that the only way to make a good iPhone/iPad application is to develop directly for the device. Not to build cross-platform applications. In Steve Job’s words, “intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform”.
So Steve’s version is that this is intended to protect the users so they get quality applications (or, at least, don’t get automatically crappier versions). But Apple also gets a few additional items out of this:
- Developers who are experienced with Objective-C and Cocoa (and thus are most of the way to being Mac developers)
- Developers who can’t simply move their applications to another platform without significant effort
- Android gets fewer developers and fewer applications
There is one very small bright spot in all of this. The rule applies to applications sold through the app store. Enterprise developers can do whatever they like as long as the apps are distributed through enterprises.
So, at this point, and until/unless the rule is changed, the only way to develop truly cross-platform mobile applications is to use C. Game developers have already been going down this path. Several mobile game development houses have stated this rule bothers them not at all since the bulk of their code is in C with small device-specific Objective-C/Java(Dalvik)/J2ME sections.
There was also speculation that this move was a technical one on Apple’s part, mainly related to multi-tasking and the monitoring of code execution for power consumption and other purposes. Uh, no. That’s being done through the new multitasking APIs.
Apple simply believes that they have the superior platform with superior user experience, superior performance, superior power management and superior APIs. They want applications that take complete advantage of the entire “gestalt” that they’ve created. Not watered down, least common denominator apps. I can sympathize but it still sticks in my craw. This will successfully exclude the rush of Flash “shovelware” from the App Store but it alienates the developer community, many of whom never even intended to use cross-platform toolkits.