IMHO, Apple's motivation for their changes to the iPhone SDK developer agreement are clear: They want you to write your code in Objective C, written to the iPhone API, so your apps will run on their phone, and nowhere else.
This appears to be platform tie-down, plain and simple, though I don't know that there is anything illegal about this. Microsoft certainly always wanted you to write to the Windows API, and they did everything they could to get developers to write to the Win32 API, and they were successful at doing that, at least until Java and then Web Applications came along.
If there's one good thing about learning Objective C for the iPhone, it's that you'll also also be one step down the road to writing great, native applications for the Mac OS X platform.
The next logical step for Adobe and other cross-platform developers might be a legal battle ... though I don't know much about law here. That being said, I'm curious to see what happens.
Not buying Apple's iPhone quality argument
I know Apple is fanatical about quality in most areas -- although I can show you several Mac OS X bugs that have never been fixed -- but I don't buy their argument at all that this decision was made for the sake of quality. Since Apple has total control over the App Store, can't they easily reject apps for being of poor quality? And if a bad app somehow makes it out to a bunch of iPhones, and all of those iPhones suddenly begin misbehaving, won't that create a bad reputation for that app developer?
I was going to write more about this, but Jon Gruber covers the pros and cons of this decision very well on his Daring Fireball site, so I'll stop this discussion here.
Technical argument: Apple's decision is based on new multi-tasking needs
Staying away from the business reasons for making this decision and taking the technical road, AppleInsider makes the argument that this decision by Apple is to "support sophisticated new multitasking features in the new operating system". Here's a quote from their article:
"The primary reason for the change, say sources familiar with Apple's plans, is to support sophisticated new multitasking APIs in iPhone 4.0. The system will now be evaluating apps as they run in order to implement smart multitasking. It can't do this if apps are running within a runtime or are cross compiled with a foreign structure that doesn't behave identically to a native C/C++/Obj-C app."
Okay, no problem, if that's the real reason, Apple should just come out and say that: "Sorry guys, we'd love to support your cross platform tools, but we've got these technical issues we just can't overcome."
Welcome to the Java/iPhone/iPad development island
Personally, I've never developed with Adobe tools like Flash, but as a Java developer, the iPhone's lack of Java support left me out in the cold since Day One, so I can understand the angst of the Flash developer crowd.
Probably the biggest difference is that Java developers were hosed on the iPhone from Day One, so after some initial complaining we never thought about it any more, while Adobe has recently put a ton of effort into this, so Adobe and Flash developers are now feeling our angst. Welcome to the island.
(I hate to leave you on a downer, so here's a link to a funny Java/iPad development thread from the Mac/Java developer's mailing list.)
Steve Jobs thoughts on Flash
In a document released yesterday, Steve Jobs posted his thoughts on Flash, and in particular, Flash on mobile devices.
I could not agree with you more.
After the Apple's announcement, web applications become for me a priority.
my two cents.
Apple, extremely proud of their track record of "innovation", suddenly can't solve a technical problem? Blahahahaha ...
Sorry, but I don't buy the AppleInsider story.