Cydia

Apple's new developer license agreement bans any cross-compilation of iPhone and iPad apps developed for other platforms, including Flash runtimes that had been referred to an "end-around" to Apple's blanket prohibition of Flash on the iPhone OS. The ban also extends to other non-Apple frameworks like Java and Silverlight. While it could be Apple's traditional not-invented-here attitude, the move also reflects the need to evaluate how code works with the new iPhone 4.0 multitasking API's.

Apple changed the iPhone Developer Program License Agreement to restrict the use of cross-platform compilers in developing apps. Section 3.3.3 of the agreement, which devs have to accept before they can download the iPhone 4.0 SDK, states that apps "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)."

The change seems to be primarily targeted at Adobe, which has been trying to get Flash content onto the iPhone for years. Steve Jobs, however, dismisses Flash as "too slow to be useful" and a "CPU hog." Adobe had announced that Flash Professional CS5 would have a tool called Packager for iPhone OS, which turns Flash content into stand-alone iPhone apps. Van Baker, an analyst from the Gartner Group, referred to Packager as an Adobe "end around" to Apple's Flash prohibition. An Adobe spokeswoman with the impressive name of Wiebke Lips said that the company is "aware of the new SDK language and are looking into it," adding that they will "continue to develop our Packager for iPhone OS technology, which we plan to debut in Flash CS5." Adobe will officially launch Creative Suite 5 - including Flash Professional CS5 - on Monday.

Not just Flash is prohibited, however: the language specifically insists on "Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine." The reason for this, according to "sources familiar with Apple's plans" told AppleInsider, is because the system will be doing runtime evaluations of apps to manage resources for what is being called "smart multitasking." According to their source, unless code is using a structure the operating system can understand, it "can't swap out resources, it can't pause some threads while allowing others to run, it can't selectively notify, etc."

At the announcement yesterday, Steve Jobs made the case that the reason multitasking had been held up on the iPhone OS platform was due to the load it put on the system. If the whole edifice rests on a delicate operating system balancing act, then it makes sense that only code that has a predictable structure will work with the multitasking APIs.