Apple's iPhone 4 SDK license bans Flash, Java, Mono apps
Apple has updated its iPhone Developer Program License Agreement in the iPhone 4.0 SDK to specifically prohibit the development of apps using "an intermediary translation or compatibility layer or tool," which would include Adobe's Flash, Sun's Java, or Microsoft's Silverlight/Mono.
Apple has always prohibited the use of outside frameworks, runtimes or plugins in iPhone apps, a measure that has prevented Adobe or others from delivering an app with the ability to run content such as Flash or Java or Silverlight.
This restriction prompted Adobe to attempt to salvage its developers' existing Flash content by adding a feature to the upcoming Creative Suite 5 that would allow the Flash Professional application to export existing Flash content into a native iPhone application package that could be legitimately sold in the iTunes App Store because it was no longer Flash, and therefore no longer needed any sort of external runtime to play.
However, in iPhone 4, a clause in the developer license that until now only prohibited the use of private APIs (that is, development features that Apple has not completed, documented, and disclosed as being available for public use) has now been expanded to include prohibitions on developing iPhone apps in other languages or in other development environments that are then translated or cross-compiled into native iPhone apps. The clause, section 3.3.3, now reads:
"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 measure means Flash Professionals won't be able to develop content using Flash's ActiveScript and then port this code to iPhone. It also means that developers won't be able to directly port code written in Microsoft's C# language to its .NET framework into a translated iPhone app.
The prohibition may also be a roadblock for Appcelerator and its Titanium SDK or the similar PhoneGap, both of which are designed to build native mobile apps using web technologies such as HTML and JavaScript. The clause specifically limits JavaScript for use in web apps, and does not allow it to link against the native Cocoa Touch APIs.
The news should come as a crushing blow to Adobe, which has been working furiously to develop its Flash to iPhone cross compiler as the key new feature for Flash Professional in CS5. It also erases Adobe's strategy to push mobile and web development toward Flash while still leveraging compatibility with the iPhone OS.
By insisting that all iPhone apps begin as native development using its own Xcode tools, Apple can prevent third party middleware platforms from muscling into the market it created. This will effectively reserve the value and sales volumes of the App Store to benefit Apple's own development tools, ensuring that all the apps sold in the App Store are being built using the company's own native tools and not just cross-compiled from another source.
Apple's move apparently comes in a defense strike against Flash app shovelware, which threatens to water down the original content in the App Store with lots of existing, poor quality Flash games originally designed for the web or other mobile platforms and rebaked to work on the iPhone.
The new rule also rubs out any hope for Java or Silverlight/Mono as a common denominator for building mobile apps, preventing developers from coding apps using Java or C#/.NET and then just cross-compiling them into iPhone apps using a "translation or compatibility layer."
Apple has always prohibited the use of outside frameworks, runtimes or plugins in iPhone apps, a measure that has prevented Adobe or others from delivering an app with the ability to run content such as Flash or Java or Silverlight.
This restriction prompted Adobe to attempt to salvage its developers' existing Flash content by adding a feature to the upcoming Creative Suite 5 that would allow the Flash Professional application to export existing Flash content into a native iPhone application package that could be legitimately sold in the iTunes App Store because it was no longer Flash, and therefore no longer needed any sort of external runtime to play.
However, in iPhone 4, a clause in the developer license that until now only prohibited the use of private APIs (that is, development features that Apple has not completed, documented, and disclosed as being available for public use) has now been expanded to include prohibitions on developing iPhone apps in other languages or in other development environments that are then translated or cross-compiled into native iPhone apps. The clause, section 3.3.3, now reads:
"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 measure means Flash Professionals won't be able to develop content using Flash's ActiveScript and then port this code to iPhone. It also means that developers won't be able to directly port code written in Microsoft's C# language to its .NET framework into a translated iPhone app.
The prohibition may also be a roadblock for Appcelerator and its Titanium SDK or the similar PhoneGap, both of which are designed to build native mobile apps using web technologies such as HTML and JavaScript. The clause specifically limits JavaScript for use in web apps, and does not allow it to link against the native Cocoa Touch APIs.
The news should come as a crushing blow to Adobe, which has been working furiously to develop its Flash to iPhone cross compiler as the key new feature for Flash Professional in CS5. It also erases Adobe's strategy to push mobile and web development toward Flash while still leveraging compatibility with the iPhone OS.
By insisting that all iPhone apps begin as native development using its own Xcode tools, Apple can prevent third party middleware platforms from muscling into the market it created. This will effectively reserve the value and sales volumes of the App Store to benefit Apple's own development tools, ensuring that all the apps sold in the App Store are being built using the company's own native tools and not just cross-compiled from another source.
Apple's move apparently comes in a defense strike against Flash app shovelware, which threatens to water down the original content in the App Store with lots of existing, poor quality Flash games originally designed for the web or other mobile platforms and rebaked to work on the iPhone.
The new rule also rubs out any hope for Java or Silverlight/Mono as a common denominator for building mobile apps, preventing developers from coding apps using Java or C#/.NET and then just cross-compiling them into iPhone apps using a "translation or compatibility layer."
Comments
Maybe it will cause more decent upgrade pricing for CS5 suites. Classic win-win!
the App Store are being built using the company's own naive tools and not just cross-compiled from another source.
"Native" instead or "naive"
Apple's coding platform had always been marginalized, so this will solidify it in market.
The news should come as a crushing blow to Adobe, which has been working furiously to develop its Flash to iPhone cross compiler as the key new feature for Flash Professional in CS5. It also erases Adobe's strategy to push mobile and web development toward Flash while still leveraging compatibility with the iPhone OS.
Are you kidding me? Adobe is jumping for joy. Apple just removed themselves as a real contender for vertical markets and multi-platform apps.
I know from Adobe's perspective it would make it easier for Flash designers to create iPhone apps. I always thought this was a bit fishy. I never used their Flash-port tool. Does the designer have access to the lower level code that is generated? I bet Adobe would slip something in there with no one's knowledge to override the App store guidelines.
I just want to know what it is.
Apple has earned the right to behave like South Park's Eric Cartman! You're bustin my balls! Or, Futurama's Bender.
Apple to Adobe: Ya wana live in my house you gotta live by my rules or kiss my shinny metal iPad a..!
Cheers to Apple for sticking it to the man. I mean the middle man.
Also, I believe it's "Actionscript" NOT "Activescript". But who cares anymore. Maybe it's Antiquatedscript.
OS4 is balls-to-the-wall! Really!
I have to admit, it's actually quite funny. This has got to be pi**ing off the bigwigs at Adobe. Jobs really has his sniper-scope pointed directly at Flash.
I know from Adobe's perspective it would make it easier for Flash designers to create iPhone apps. I always thought this was a bit fishy. I never used their Flash-port tool. Does the designer have access to the lower level code that is generated? I bet Adobe would slip something in there with no one's knowledge to override the App store guidelines.
I wish someone with greater knowledge of the whole thing than the article's author would chime in with an explanation.
I am no coder, but it seems to me that if the resultant code is the same then there is no way to tell what the thing was "originally" written in. Conversely, if Apple can tell what language things were "originally written in," then the resultant code is not equivalent and they have every right to argue for it not being used.
It does prevent 3rd party apps which create native apps which then hook into Apple's APIs without going through XCode for compilation. But this is easy to work around using the above described process.
Apple is guaranteeing they will not be the industry standard platform, once again.
Are you kidding me? Adobe is jumping for joy. Apple just removed themselves as a real contender for vertical markets and multi-platform apps.
And you think Flash is the solution to multi-platform apps????
BWAHAHAHAHAHAHAHAHA!!!!!!!
Can I have what you're smoking?
Apple's iPhone 4 SDK license bans ported Flash, Java, Mono apps
As it should be.
Apple is guaranteeing they will not be the industry standard platform, once again.
Are you kidding me? Adobe is jumping for joy. Apple just removed themselves as a real contender for vertical markets and multi-platform apps.
NO.
This clause insures that developers who build multi-platform apps will create apps that are best-in-class for the iPhone platform - not just hacked Bizarro Java apps.
This insures that iPhone users will get BEST TREATMENT from developers and are not treated like second-class citizens.
Are you kidding me? Adobe is jumping for joy.
Apple is banking on the mobile market surpassing the consumer desktop market in the near future...the next frontier one might say. At this point, Flash has made no real inroads into the mobile market, so, I doubt they are happy about this.
a) It's because in those environments code is effectively data and can be modified post-submission (e.g., for mono, just download another .dll - it's dynamic linking, which is banned). If Adobe's Flash converter is outputting C code compiled through the iPhone SDK then it could still work. If it's just an SWF runtime, then it's doomed.
b) Apple's app validation tool can't verify the contents of non-native code (all apps have to go through validation to check for use of private APIs).