On Apple, Flash and Java

February 17, 2010

Steve Jobs said reportedly that Flash is buggy and that it won’t make it to the iPad and iPhone. The same story was used for Java, a technology that Steve Jobs described as not worth going onto the phone. However, I call B.S. on Apple’s arguments. Apple has decided not to ship Flash and Java not because of the lack of intrinsic value and quality, but because if allowed these technologies would result in the vertical disintegration of the Apple platform.

Microsoft saw the same threat with Netscape and Java more than 15 years ago. When the application developers were developing for Windows, Microsoft was controlling the ecosystem, but most importantly, reaping the rewards of the complementary value generated the applications created by those developers. The more applications that were out there, the more users wanted to use Microsoft Windows.

But Netspace and Java were promoting a cross-platform environment with the famous write once, run anywhere. In the Internet, data formats and viewers are open, and any developer can create new applications. Being able to run those applications on multiple platforms is a significant advantage, especially in the context of the Internet. Microsoft reacted by exposing the Windows API, what developers were familiar with, through ActiveX and Internet Explorer. Developers could reuse their tools and code and use these to create great applications that would only run on Internet Explorer and Windows. Great apps attracted users, and more users attracted more developers. This is how Microsoft attacked the jugular of Netscape and Sun. Netscape eventually went bankrupt, but that's probably partially because of its own doing.

To Apple, Flash and Java technologies pose the same cross-platform threat that Netscape and Java were to Microsoft. Apple wants to control the hardware, the operating system, and the content that goes onto the devices through iTunes. Apple is locking developers onto its own APIs and its own distribution system, controlling all the feedback loops that the Apple ecosystem has.

Steve Jobs clearly learned the lessons well from Bill Gates. By allowing the Flash and Java runtimes, Apple would be opening the door to competitor products and applications running on multiple platforms, which could result in users switching platform if a competitor platform would for example lower costs or subsidize users or developers. Today, developers, and users, are locked in to the Apple platform.

In a market where the economics of developing applications for the iPhone are not that attractive, allowing cross platform would result in killing the value of developing for that platform. Most developers cannot afford to write code in parallel for Symbian, Android and iPhone, as the cost of doing so would eat up whatever small margins they are now getting. But because the alternative platforms to the iPhone have even smaller margins, developers are "happy" to be locked into Apple.

However, such lock-in is dangerous as it is a vector of Apple becoming a monopoly in the portable computing device market. Apple might argue about how ensuring a perfect user experience is the main reason why they control the whole ecosystem. However, Apple not only controls the user experience, but the runtimes. Apple could allow Flash and Java runtimes, and only approve those applications complying with the user experience guidelines. However, it is not likely to do so, because it would be opening the door to make a competitor platform, namely Android, stronger.

This situation makes me highly upset. I still believe that the iPhone SDK is one order of magnitude better than what you get with Symbian, and still a few knots better than what Android has to offer. Symbian and Android suffer, although not on equal degrees, of the multiple identity problem. There is no one Symbian, there are many Symbians. There is no one Andriod, there are many Androids. This atomization of the device and the user experience makes the developer's jobs significantly more complex than it ought to be.

Flash and Java have some of the same problems as Symbian or Android. Since the target platform is unknown, the developer has to work much harder to provide a user experience that works in all environments. It's a trade off the developer opts in to. As a developer, I want to have the freedom to opt into a harder development environment, if that means getting cross-platform support because my business model so it requires. And until Apple gives me that, I won't get anywhere close to the iPhone.

Apple needs a strong competitor, and the only one that is positioned to potentially become one is Nokia. Nokia unfortunately has been playing the disintegration harakiri game really well, and completely opened itself for a competitive attack. As a developer, I don't care whatsoever what their internal device platform strategy, but externally, as a developer, and consequently as a user, I care about consistency of APIs, distribution channels, tools, etc. Now that Android Linux is becoming the standard for Java on the mobile phone, I wonder if all is left for Nokia is to become the standard for Flash and AIR on the mobile. Except, of course, if they really believe that they can compete with their own Linux distribution.


blog comments powered by Disqus