Why Microsoft Loves Google's Android
Blogger: Richard Monson-Haefel
Note: due to inconsistent use of terminology this blog post can be confusing. It's been replaced with a new entry "Why Microsoft Love Google Android, Take 2". It's recommended that you read that post rather than this one.
You won't hear Microsoft say this out loud, but secretly they are celebrating Google's contribution of the Android mobile phone platform to the Open Handset Alliance - at least they aught to be. Android is perhaps the best thing to happen to Microsoft since they won the browser wars in the 1990’s. And given Verizon’s announcement yesterday that they will be opening up their network to any device and operating system that meets a "minimum technical standard" it seems that Android may have legs even if Google doesn't secure the 700 MHz spectrum.
Microsoft's biggest competitor in the software development industry has been, for the past 12 years, Sun Microsystems' Java Platform. Starting in the mid to late 1990's Java began to gain mind share among developers in every area in which Microsoft has an interest. Today, with over 6 million developers (according to Sun) Java clearly dominates the software development industry. Point in fact, Microsoft had to completely revamp their software development platform in 2000 to mimic the Java platform in order to complete; enter Microsoft .NET. While Microsoft .NET has been extremely successful at winning back a portion of the developer community from the Java platform, Java has remained the darling of the enterprise and perhaps the most successful software development platform in the history of computing. Microsoft really doesn't like the Java platform very much. Java is Microsoft's biggest competitor in software development and is arguably the platform to beat.
The Java platform and its standardization process are not perfect. A series of missteps by Sun Microsystems and the Java Community Processes (JCP) have contributed to the growing success of Microsoft .NET. The JCP which defines the Java standards has allowed the enterprise platform, Java EE, to become unbearably complex and has created an ecosystem for its mobile platform, Java ME, which is terribly fragmented despite its overwhelming penetration (8 out of 10 phones ship with Java). The foundational platform, Java SE, however has remained a strong competitor and has given up very little ground to Microsoft, but all that is about to change with the introduction of Google's Android mobile platform.
To put it bluntly: Android as it is currently defined is a fork of the Java ME platform. Android is similar to the Java ME, but it's a non-conformant implementation. Android is not compliant with Java ME nor is it compliant with Java SE. In fact, it’s not really Java. Although it uses the Java programming language, the core APIs and the virtual machine are not consistent with the Java ME or SE platform - it’s a fork. This was first pointed out by Stefano Mazzocchi in his November 12th blog entry entitled "Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME". Stefano missed the fact that Android does not properly implement the CDC or CLDC Java ME APIs (a minimum requirement for Java ME conformance) - but kudos to him for being the first to report on the fork. The fork has since been picked up in the blogsphere by others here, here and elsewhere.
The forking of Java is good news for Microsoft for a couple of reasons. First, from a marketing perspective the Java platform's greatest strength is standardization and multi-vendor (e.g. IBM, Oracle, SAP, etc.) support. In comparison, Microsoft .NET is a portrayed as a proprietary platform that locks-in organizations to the Microsoft platform. That's the marketing message which has been used by Java proponents for a decade and it has been extremely successful. But now, with the introduction of Android, the solidarity around the Java platform could crumble. If Android, as it’s currently defined, is successful then Java will no longer be consistently implemented at a fundamental level.
Microsoft offers an excellent mobile platform of its own, Windows Mobile and Microsoft .NET Compact Framework. It's proprietary, that's true, but it’s consistently implemented and extremely powerful platform for developing Rich Mobile Applications (RMAs). In comparison, Java ME is a standard that has a wealth of functionality and is supported by dozens of vendors, but its implemented inconsistently across mobile devices making it extremely difficult to develop applications that will "write once, run anywhere". If Android succeeds (time will tell) then Java on mobile devices will loose its hold on the market. Android may win, but Java ME will loose. If I was in the Windows Mobile and .NET CF marketing department I would be popping the cork on a huge bottle of
OK, so if the Java mobile platform will falter because of the introduction Android, how does that impact Java SE? After all, Java SE is used for desktop and server-side development. How is that threatened by a mobile platform? Good question. Here's why: Sun has been moving toward unifying the Java ME and Java SE platforms for a while now. This was pointed out in an excellent analysis by Caroline Gabriel of Rethink Research. As part of the evidence for her argument Caroline references a quote from James Gosling the "father of Java” in a CNET interview just last month.
"We're trying to converge everything to the Java SE specification. Cell phones and TV set-top boxes are growing up," Gosling said at a Java media event here Wednesday. "That convergence is going to take years."
But don't take James Gosling's word for just take a look at JavaFX Mobile, which Sun Microsystems announced earlier this year. It's based on the full Java SE platform, not Java ME. In a nutshell Sun Microsystems isn't betting on Java ME for the long-haul, they are betting on Java SE. After all, Java ME was developed for "constrained devices" with limited memory and processing power. However, as technology advances that label no longer applies to mobile phones in general. Smartphones are becoming powerful, if smaller, computers with complete operating systems, lots of processing power and plenty of memory. The era when mobile phones are simple appliances is coming to an end - mobile phones are becoming a complete computing platform.
The reason a phase out of Java ME and the expansion of Java SE to mobile devices is so important to Sun Microsystems, is that it meets Sun’s original goal for Java. It establishes a single platform for all computing devices. It makes excellent sense and improves the argument that Java is a standard consistently implemented across computing platforms. Sadly, however, by the time that happens Android may have already Balkanized the mobile Java community into Java ME and Android camps. The “one platform to bind them all” party may be over before it gets started.
Assuming the demise of Java ME as a standard platform for mobile development is nearing and that Java SE will take its place, the question of a consistent platform across all computing devices becomes even more important. How do you sell people on Java? You tell them that it’s a standard used across mobile, desktop, and server applications. You tell people that the skills your enterprise developers gain writing desktop and server-side applications will translate directly to the mobile platform.
Unfortunately Android undoes all that. It tells the industry that Java is not consistent across computing platforms and that using the Java language, but not the APIs or virtual machine is just fine as long as the end result is a workable solution. That leads us to the assumption that if it works for the mobile industry then why not the desktop or the server-side? Why can't other vendors introduce platforms that use the Java programming language and some of the Java APIs, but is otherwise inconsistent with the Java platform? What's the harm of IBM or Oracle having their own version of Java as long as it works? You'll find the answer to that question in historical records when Sun Microsystems successfully stopped Microsoft from adding proprietary extensions to the Java platform in the 1990's. As pointed out by Maureen O'Gara there is some irony here.
“The sweet irony is that this greatest threat to Java since Microsoft should come from Google CEO Eric Schmidt, the guy who originally led Java development at Sun and signed the contract with Microsoft, leading to the Java wars.”
Java's greatest strength today is uniformity and ubiquity. Take away uniformity and you end up with many different kinds of Java and so there is no real ubiquity. Take away ubiquity and there is very little incentive to choose the Java platform over other options like Microsoft .NET. In fact, Microsoft .NET starts looking a lot more attractive because it is consistently implemented; not Balkanized. If .NET is just as powerful as Java, why choose a solution such as Java that is inconsistently implemented across vendors? The strongest marketing asset that Java has today, "write once, run anywhere" standardization, is effectively lost.


If GOOG plays their cards right, and have a desire to do so, Dalvik can serve as the "better CLR than CLR" to the CLR's "better Java than Java". Not just on embedded. From MS's POV, they will have just replaced their current competitor, Java, with a different one.
Posted by:Patrick Mueller | November 28, 2007 at 10:53 AM
I have to completely disagree with you.
1. MS's biggest threat is not a software platform its the OS itself. MS .NET will only work on windows mobile, where as the Java platform is ported on most other OS's. And If you look at the current heading of mobile, more of it is moving towards *nix based OS's.
2. I find it very hard to believe that google will ever give MS such an easy opening, and will make android compliant with standard j2me. Its inevitable, in order for android to be successful they need to attract developers, and developers that are developing for 90% of mobile with j2me, will not want to rewrite just for android. This is a MS tatic, not one i see google will be using.
3. MS should be very afraid of android. MS's biggest foothold on the mobile market is in the strong grasp on the enterprise such as email. If google can create a successful open platform that works with the enterprise, you will see ms's foothold on the enterprise market dwindle. One huge complaint of the iPhone was bad outlook integration. If google solves this on there platform look out MS.
Posted by:theuniblogger | November 28, 2007 at 12:21 PM
I'm an engineer... .Net, Java, C++, C, Assembly, Basic, Pascal, SQL, Propeller Spin (for chrissakes), etc, etc, etc - I solve problems on whatever platform is put in front of me... lacking a platform, i'll push out an ntsc signal on a microcontroller and create a character map... lacking that - i'll make furniture.
point being: who needs a team? technologies, platforms, corporations, civilizations... transitory.
Posted by:Doug Squires | November 28, 2007 at 12:31 PM
Android is not a fork of JME. If Android replaces JME then the platform will be more unified. More of my JSE code is compatible with Android which has better support for JSE core APIs than JME. I don't care what kind of VM my Java code runs on. Why should I?
This was an embarrassingly weak attack and use of FUD. Go back to your real job.
Posted by:scott | November 28, 2007 at 11:59 PM
Hey Richard! Long time no see!
I totally hear you; but I find myself taking the 100% opposite position. As what Google doing is totally different to what MS did in the early days of Java - which really was an embrace and extend strategy.
All Google is doing is totally implementing a subset of the Java Platform - not forking it or embracing & extending it which I see as a good thing for Java the ecosystem.
I posted a rather long response on my blog...
http://macstrac.blogspot.com/2007/11/net-should-be-certified-java-platform.html
Posted by:James Strachan | November 29, 2007 at 03:30 AM
As we have seen with Eclipse, competition and open source are great for progress and adoption. Just like IBM has created the strongest and liveliest development platform ever with Eclipse, I see Google doing the same for mobile application development with Android.
I have written a bit more on my blog under "
Why Android will start the mobile Tornado". Just click on my name to get there.
Ed Burnette has written a reply to your blog entry:
http://blogs.zdnet.com/Burnette/?p=473
He does have a point. JavaME already is highly fragmented, so what do you want to protect?
Android is a new chance for a strong and consistent standard. If we are lucky, IBM and Google will fix all the mistakes that Sun has made.
Posted by:Carl Rosenberger | November 29, 2007 at 05:07 AM
Hi,
IMHO you miss some important points here :
- Java has not yet played an important role as an environment for *serious* applications for cell phones.
- Integration with the OS, which is a crucial feature for cell phones, has never been a strength of Java
- "Java based" cellphones so far have not been a threat to Microsoft.
- Googles VM will be open source, Therefore you could still have different vendors for it.
I think Microsoft will have to react because license fees froms operating systems for cell phones may decline.
Regards,
Markus
Posted by:Markus | November 29, 2007 at 05:51 AM
Android -- mobile operating system from google
http://www.allaboutandroid.net/phpbb/viewtopic.php?t=4
how to install the android
http://www.allaboutandroid.net/phpbb/viewtopic.php?t=2
android programming
http://www.allaboutandroid.net/phpbb/viewforum.php?f=1&sid=3a6736b573f38d5945b27d794f63fd09
android projects
http://www.allaboutandroid.net/phpbb/viewforum.php?f=2&sid=3a6736b573f38d5945b27d794f63fd09
Posted by:mohit | November 29, 2007 at 10:10 AM
Java is the platform to beat? Darling of the enterprise? Dominates the software development industry?
Ummm, no.
"Info-Tech's research identified that almost half (49 per cent) of all enterprises focus primarily on .NET with an additional 12 per cent focused exclusively on .NET. That is in comparison to only 20 per cent of enterprises that focus primarily on Java with a mere additional 3 per cent that standardize solely on it."
http://news.websitegear.com/view/29845
For years there has been research and studies that show that at the very least, .NET is as popular as Java (among developers, IT departments, etc.).
http://www.computerworld.com/developmenttopics/development/story/0,10801,100542,00.html
http://www.businessweek.com/technology/content/dec2005/tc20051213_042973.htm
You're correct to say that Java is on the majority of phones by default, but to extrapolate that to the entire software development industry is just wrong.
I would argue that Microsoft doesn't worry about Java at all these days, certainly not like 2000 or 2001.
Microsoft simply doesn't need Android to help .NET. It's not Microsoft who should be celebrating, it's Sun who should be worrying.
Posted by:Mack D. Male | November 29, 2007 at 12:39 PM
You quote Maureen O'Gara, and think you have any credibility at all???
What's next, are you going to quote Rob and Laura too?
Posted by:Christian R. Conrad | November 30, 2007 at 01:35 AM
I don't know how technical you bloggers are, or think you are...but us programmers (the ones for whom platforms matter) know the difference between Java the language and Java the platform. For example, Javascript uses the Java language, but it doesn't bother anybody that it doesn't use the Java platform. If android is just some random API (like Javascript) that uses Java, the language, then it doesn't affect Java ME at all.
I would bet that Android can and will run Java ME on top of itself. The problem will be that Java ME won't run Android applications...but that shouldn't matter considering the difference in capabilities.
Posted by:Henry S. | December 01, 2007 at 06:03 AM
Richard,
yes and no...
yes: Androids' java is a fork (started by IBM/Harmony)
no: .Net doesn't get better because it's bound to MS platforms
and no: as long as Google keeps Android compatible
but yes: it *nix'es up Java and that is dangerous (it introduces the problems Unix and Linux has between their versions and distributions incompatibilities)
2cents
Rafael
Posted by:Rafael Laguna | December 02, 2007 at 03:29 PM
very interesting article. as were the reply posts.
http://www.golfnorwich.com/
Posted by:jim | December 07, 2007 at 02:17 PM