New MacBook Pros are here! Get the lowest prices anywhere: Apple Price Guides updated Sept 17th (exclusive coupons)
 


Thursday, April 08, 2010, 03:00 pm PT (06:00 pm ET)

Apple's iPhone 4 SDK license bans ported 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."