Why Apple Fears Mono, Java, and Flash

Goodnight by ~Aphrodite

Much ado has been made of these few words in Apple’s iPhone SDK:

"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)."

Apple is asserting it can not only control what software runs on its devices, but what that software was created with.  Steve Jobs has claimed this is to keep out bad applications that result from cross platform frameworks.  I wonder what the Mozilla Firefox developers think of that…

Let’s get one thing straight – Jobs doesn’t care about application quality, only quantity.  In the recent OS 4.0 event Jobs claimed 285,000 apps in the app store, I doubt he filtered out the iFart clones.  50,000 games next to a chart showing the Nintendo DS at a mere 4,321. 

Why the focus on the numbers?  Because of this number: 1 Billion.  Apple is launching an advertising network iAd, and is touting 1 Billion ad impressions per day.  That is a very strong number for advertisers who are trying to capture the hip new doesn’t-watch-tv, doesn’t-read-magazines crowd.  If Apple can get an exclusive lock on these people, they can charge much, much more than anyone else.

Enter Mono, Java, and Flash.  These technology share one thing in common that scares Apple and threatens this advertising river of money.  Each of these let developers write their app once and deploy it to multiple devices with minimal effort.  Traditionally, developers would spend many hours porting an application across APIs and SDKs, and even more hours maintaining multiple ports.  This leads to most developers picking one platform to focus on, and ignoring the rest.

If you told a developer for the same level of effort they can sell their application to all devices, who would turn it down?  All the locked exclusive applications that lead to those 1 Billion ad impressions would dissolve away.  Most smart phone hardware is the same – big touch screen, or big touch screen with keyboard.  The iPad has a dozen competitors ready at the start, and doesn’t have the time lead of its older brother iPhone.  If the majority of applications are available for any device, what is left to compete on but price?

Mono, Java and Flash aren’t toothless hobby projects either, they are backed by Novell, Oracle, and Adobe – three amigos not afraid of a fight.  Can Apple get away with this move remains to be seen, but let’s not kid ourselves that the market will factor in.  For every developer that abandons Apple 50 more will take their place, and the majority of consumers will not understand nor care.  It’s easy to throw up a red herring like flash banner ads and claim that’s what will happen if flash is allowed on the iPhone.

If Apple gets their way the damage won’t be felt for a few years.  We’ll look back at a stagnant mobile device world and wonder what happened.  It will be no different than Microsoft knocking off Netscape, and giving us 5 years of IE6.  Innovation happens when there is healthy competition.

What I’d really love to see is someone create a tool that converts Objective-C and iPhone SDK apps to other platforms.  Developers of existing iPhone apps can run this tool on their code which would convert it to say, Java and Android, build it, make some tweaks, and start selling it in the Android Marketplace. 

Then we’ll see if Apple will go the next step and claim it owns the right to anything you create with Apple tools.


Posted 04-13-2010 9:56 PM by Michael C. Neel
Filed under:

[Advertisement]

Comments

Brian Donahue wrote re: Why Apple Fears Mono, Java, and Flash
on 04-14-2010 9:23 AM

There are some important points that I think you are missing.  Very few, if any, of the tools/platforms you mention will allow you to write once, deploy to multiple mobile platforms for an entire application.  Adobe's tool maybe the closest to what you describe, but MonoTouch, and likely any Java tool, are wrappers/bindings directly to the iPhone OS SDK.  While you can write your app such that business logic/data manipulation could be shared, the UI and device interaction would require nontrivial work to port across the various devices. The Mono crew is working on MonoDroid which will wrap the Android APIs, but you would have to write custom UI code using the specific Android APIs. If it's like MonoTouch, the APIs are basically exactly the same as the native SDK APIs, just in C#. That's why MonoTouch seems to be "less" in violation than a pure translation tool like Adobe's. But of course, the way the clause is written, Apple can basically reject anyone for nearly anything if they want.

One side benefit to something like MonoTouch is at least you are learning the iPhone SDK, knowledge which will translate to Obj-C if they ban MonoTouch and you aren't too disgusted to continue building iPhone apps at that point :)

Michael C. Neel wrote re: Why Apple Fears Mono, Java, and Flash
on 04-14-2010 10:03 AM

The tools aren't there yet, but it's the next step.  Once you have C#/Mono for Android and iPhone, creating an abstraction layer that uses compiler flags to target device becomes much easier.  Apple's smart to cut this down before it really gets going.

Brian Donahue wrote re: Why Apple Fears Mono, Java, and Flash
on 04-14-2010 11:02 AM

If you read Novell/Mono's response on Friday, though, they state pretty affirmatively that they intend to adhere strictly to Apple's APIs...   I have never heard them say they were looking to do a build-once, deploy anywhere tool, and have in fact heard Miguel say that you will have to write multiple UI layers, but could share other code.

www.mono-project.com/.../Apr-09.html

Miket wrote re: Why Apple Fears Mono, Java, and Flash
on 04-14-2010 1:14 PM

According to lists.ximian.com/.../001878.html,  it looks as though Apple doesn't want to hurt the potential sales of iPhone/iPad devices to the corporate Windows-based market, and will allow Mono-developed C# apps to be used by Enterprise customers,  but will not let them be distributed through the app store.

It seems somewhat arbitrary and would seem to dispel the notion that there are technical arguments against MonoTouch.

John wrote re: Why Apple Fears Mono, Java, and Flash
on 05-25-2010 5:10 AM

It should be noted that you can write cross-platform native or web apps using PhoneGap -  which is free and open source, and more importantly, has now been officially accepted by Apple as ok for OS 4.0.

jimmy wrote re: Why Apple Fears Mono, Java, and Flash
on 09-01-2010 10:17 AM

smell like rotten apples.  takes one to spoil the whole lot.

anyways apple always dictates everything.

they change pascal to obj-c.

build cocoa bridge  and collapse cocoa bridge for java

they add obj-c++ which I think will not have much future.

if future c++ syntaxes clashes with obj-c syntaxes, it will be very ugly and hard to maintain in both your code and in compiler.

first they forbid writting duplicated functions & interpreters now they restrict dev. languages to obj-c, obj-c++, javascript.  

i mean it's bad they put restrictions on their hardware like

only mac mini (mid 2010) can install 64 bits. wtf. so screw all early 2010 models that users buy.

why do users and developers  put up with these shit.

i really want to like them. they add interior decoration to pcs.

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Subscribe
Google Reader or Homepage

del.icio.us CodeBetter.com Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl CodeBetter.com Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of Devlicio.us
Red-Gate Tools For SQL and .NET

NDepend

SlickEdit
 
SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
LiteAccounting.Com
DevExpress
Fixx
NHibernate Profiler
Unfuddle
Balsamiq Mockups
Scrumy
JetBrains - ReSharper
Umbraco
NServiceBus
RavenDb
Web Sequence Diagrams
Ducksboard<-- NEW Friend!

 



Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers

 

Community Server (Commercial Edition)