In 1996 Microsoft licensed Java from Sun. Think about that for a moment before continuing on with this blog post. At what seemed the height of its PC market dominance, when it “owned” the developers, when Visual Basic and Visual C++ dominated the application development landscape, and it was embarking on its own effort to create what would become .NET, Microsoft licensed and brought to market its own Java Virtual Machine (MSJVM). If in those days of “monopoly” strength Microsoft was willing to bring a way to run non-Windows apps to Windows, and in the process risk furthering a development platform explicitly designed to take away the Windows’ app advantage, why is it such a shock that they would consider a similar strategy today? With a struggling library of modern mobile-centric apps, why is looking for a way to bring Android apps to Windows and Windows Phone any different from what Microsoft attempted to do with Java?
Of course Microsoft, having gained rights to offer its own JVM, then proceeded to enhance that JVM with access to its own APIs and services rather than newer ones that Sun was adding. Microsoft thought their contract allowed this, Sun thought otherwise and sued Microsoft in 1997. Five years later Sun had prevailed and Microsoft removed MSJVM from Windows XP SP1 by issuing a SP1a. The nice thing about Android, at least AOSP, is that Microsoft doesn’t need a specific contract with Google to offer an AOSP compatibility layer. They just need to abide by the Open Source licenses that cover various parts of it.
One of the big questions everyone has is, if Microsoft offers Android app compatibility why will anyone ever write a “native” Windows/Windows Phone app. I’ve thought about this and I believe there are multiple answers. Here are two:
The first answer is, maybe they won’t! Maybe instead Microsoft will start to treat the Android “compatibility layer” the way they’ve nativized HTML5/JS in the Windows app model and the way they attempted to nativize Java. They’ll add APIs to access both local Windows/Windows Phone capabilities and Microsoft cloud services to AOSP. Oh, under GPL they’ll have to make that source code available to others. And if others pick it up and make those APIs available in Google’s own Android code base, or on Samsung’s market dominant Android devices, how will that do anything other than help Microsoft?
The second answer is that maybe they won’t have to, customers will pressure developers to do it for them. Once Windows 8+/Windows Phone volumes reach a certain point developers will have interest in, and justification for, targeting Microsoft’s platform. Customers will demand apps that fully make use of the platform. Customers will demand a reasonable amount of user experience consistency. And while the ability to run Android apps will delay a developer’s need to create a “native” app, it won’t eliminate the pressure.
In fact, with three strong platforms to support the path of least resistance for a developer is going to be to move to a tool like Xamarin for future versions of their app. In that sense, no one has a fully native app, but they all share a common code base with tweaks to have native experiences on each device. That puts Microsoft in as good a position as any for running most apps. It is then up to Microsoft to make available unique capabilities that are interesting enough for developers to want to put in the extra effort to exploit.
My take on what Microsoft should do, which I have no information to support other than it’s the option with the most potential return for the least potential risk, is to use Android as a development tool for Windows/Windows Phone apps. If they do that then I can envision a number of paths in which they turn it to an advantage for their devices, their services, and the Windows OS. Yes it is a tricky game, but what is the alternative?
Microsoft faces a critical mass problem in mobile apps. If they don’t get to critical mass then they are irrelevant in this space and the rest of the discussion is moot. If they do get to critical mass and achieve very significant market share (e.g., 25%) but the apps are mostly pure Android apps then they have a potential problem, but it will be a good problem to have. And if they get to critical mass with a bunch of Android apps that have been tweaked to use their platform and cloud services? Then who cares that the apps started out as Android apps!
Microsoft can make a huge move here, completely change the app market dynamics for their platform, and eliminate this huge hurdle in their efforts to rival Google and Apple in the mobile space. They could execute a strategy with near perfection and turn the current market on its ear. Or they could make both strategic and execution mistakes and increase the odds that they never achieve true relevance in mobile. But it’s not the concept I propose, it’s the details that are the issue. And we don’t know what concept or details Microsoft has in mind.
Totally agree. It’s only a matter of time before we see a Java binding to WinRT. Once MS have that (I would expect under some license agreement with Oracle), the Dalvik compatibility layer is an easy next step. This is just an extension of the same strategy used in Azure. I would also hope that these binding API layers are opened up in the same way as the Azure SDKs are now.
That will be a total and utter disaster. Microsoft is facing a critical mass problem, yes. But taking this step, they will be facing a much bigger problem, that will be extremely hard to repair. And that is the trust of the masses (or what’s left of it) developing for the windows platform. The little credit left after the Silverlight disaster will be gone. Why develop a pure Win/WP app, when building an Android app is sufficient? Allowing Android apps may solve a short-term problem, but the ramifications in the long run will be severe. This is a trust issue, and Microsoft has shown over and over again they simply ignore 3rd party developer investments. Allowing Android apps will be the final blow.
I do not know what they should do, but cherishing the little respect they still have from the client dev crowd would be my no 1 priority.
“Why develop a pure Win/WP app, when building an Android app is sufficient?”
1) As Hal said in his previous Android post, “let end-users put the pressure on app developers” to make compelling WP apps. If you’re talking consumer apps, *merely* sufficient (i.e. Android-themed) may not last long next to shiny, modern WP apps.
2) Your question may be more geared to devs that haven’t worked with .NET/C#. If the critical mass problem is being improved, I would imagine that the many devs who currently work with .NET/C#/XAML would enjoy the opportunity to put their skills to use in the WinRT/WP world using the tool they know and love (Visual Studio). And concerning LOB apps, I think a long-term view is important here. Being able to build on top of existing skills (.NET/WPF/SL) would make investment into WinRT/WP more attractive. If only MS would pay attention to side-loading challenges smaller businesses…
I don’t know, I’m impartial to this. Microsoft in the 90s has the privilege of being dominant so it doesn’t matter if they licensed Java (if anything they benefited due to their position). But now, Android is the Windows of mobile and Microsoft is in the shoes of IBM OS/2.
One way Microsoft might make this work is to really improve their services and open it to developers. Bing, AI, maps, cloud computing, and everything including the kitchen sink. But then again, they’ll have to throw everything at it to make a compelling reason why devs should not to use Google services instead.
I think they’re already a long way toward making cloud computing a more compelling offering than what Google has. http://www.windowsazure.com/en-us/
Azure competes with AWS, not Google. And Azure is irrelevant to the smartphone consumer, anyway. Doesn’t matter if the app uses AWS or Azure — it’s transparent to the end-user.
I wonder the reaction of millions of Windows developer. Will they ever trust Microsoft again? In future MS will have to rely on a very different set of developers to carry them in future. The trust/relationship built will be wiped out.
Having said that I do see your point.
That depends on the details. If they just do a Java projection for WinRT, for example, it will just be a natural extension of the existing WinRT concept and commitment to supporting multiple languages etc., and allowing developers to use the skills and tools they already have. I don’t really see that as a betrayal.
Hmm..I see your point.
On a different note if this scenario does become successful and most of apps start to look like Android app, personally I will be very disappointed. I find most Android apps to be pretty ugly (personal opinion).
I think that Microsoft realize that they could put a trojan horse in the heart of android.
After reading these articles, you can forget about apps and developers, and look in the jewel of the crown, web services, if the plans of microsoft is port their web services to manufacturers to make them less dependent on google services and the growing concern about privacy from the users.
Look, at this moment there are not an alternative for search and maps in android, beside google, if a manufacturer want a good experience in their high end smartphones must be tied to google and play google rules, but if exist a viable alternative in microsoft services a manufacturer could confidently walk away from google and uses MS android, or at least leverage the position of the OEM’s against google. Microsoft is going to play here what google is playing in PC’s with the DOA chromebooks.
Weirdly enough, Larry Ellison may have a say here. One of the parts of the Sun Java settlement (if I remember correctly) was that Microsoft agreed to never try to integrate .NET and the Java JVM. I realize that Google’s JVM isn’t officially Java, but it would be interesting to watch what the lawyers say.
It smells a little bit like Apple’s original strategy with Mac OS X. When it debuted, it was far from obvious that Cocoa would come out on top. This was a new OS with very few native applications and even less enthusiastic developer support. Apple put Carbon/Cocoa/Java all on relatively equal footing so that there would be as broad a pool of developers making apps short of porting Win32.
It wasn’t until three or four years in that Apple started picking winners out of their pool of supported APIs. The Java bridge was deprecated, and Carbon64 was shelved. That all played out on the Mac and was never an issue on the iOS side, but it was a somewhat similar long game to what you have described here. They have to get some kind of developer buy-in to their platform. Microsoft has the tools and the talent to pull off something like this in a way that is transparent to users, but they have to full commit to it.
Or I should say Java and OpenGL ES
Great post. I think you are absolutely right. What Microsoft needs is developer engagement and they do not have that today for Windows Phone. This would be a way of having a meaningful discussion and doable strategy for developers to write apps for Windows Phone. Argue about which particular API’s they write to later. Waiting for critical mass on current course and speed? Hope is not a strategy and even if they can pull it off (and Windows Phone is a high quality product so in the fullness of time they may well be able to) the real question is how long will it take and what will the relative positions of Google and Apple be at that time. If they are further ahead with developers Microsoft only hurt themselves with the go it alone approach. AOSP would be a way of getting app and developer attention now and that matters much more than API pride.
Your point on Xamarin is also spot on. There are three things all developers want. A great platform for their applications technically, a way to make money (a high volume platform) and building their own career. Today I am afraid Microsoft does not give them any of these. I don’t want to argue the technical point so let’s say that is a draw they still lose out to Android and Apple on volume by a massive factor and no one seeks our Windows Phone skills to increase their salary. Even worse that that Microsoft has no compelling message to their remaining developer community. I think what they have left is mainly .Net developers writing internal corporate apps. What is the message to those guys that keeps them loyal? How can they burnish their resumes while remaining within the Microsoft fold. The sad answer is that they can’t. There is no exciting path forward with Microsoft. The implicit message is to retool yourself for the mobile world you should invest in iOS or Android. Xamarin could help here. (Full disclosure, the vc firm I work for is an investor in Xamarin.)
I think you are right, the remaining developer community for Microsoft is mostly the internally focused corporate developer. Why would a developer coming out of school want to focus on Microsoft technologies? It must feel like being offered a position as a Cobol/VSAM/CICS programmer in 1995.
Good questions. Being 15 years into corporate dev career focused primarily on MS technologies, I probably don’t have a good understanding of what those coming out of school want. Is it iOS or Android? Or is it rather the Web? In either case, MS provides some fantastic tooling (VS) and PaaS solutions (Azure), so I would disagree with the statement that MS doesn’t have an exciting path for corporate developers. I would even guess that might be some intrigue in Windows 8 among younger devs given its newness and differentiation.
I would imagine that most devs who make a good living are from the corporate world, not the app store world. And as much as I lament that my company still supports and even enhances major VB6 apps (in addition to newer .NET apps), there is something to be said for knowing you’re making a difference and being paid well for it, even though the technology isn’t the latest and greatest. As I’ve heard another say before, that kind of “mature” technology put their kids through college. But on the flip side, this is exactly why I have personal side projects where I can learn and utilize some of the newest technologies (like WinRT and Azure) to publish apps and gain experience. Whether it is my use of those specific technologies or just the fact that I’m proactive in trying things out, I believe these personal efforts do, in fact, burnish my resume.
Even for developers interested in the corporate world, I suspect a college hire picks a Ruby-on-Rails or node.js position over an ASP.NET position. And don’t you think being hired into the team at United or Chase doing their mobile apps pays as well as their website or other positions (TPF aside)? And is Hadoop expertise worth less than DB2?
I am talking about my specific situation being freshly out of college in the central Europe region. MS technologies may not be the latest and coolest they are, as Tim mentioned mature. While yes all the startups are doing the whole HTML/JS and Android/iOS thing. There are still a lot of more jobs to be had with Java, .NET, C and C++. They job I currently have in one big IT corporation utilizes all of the previously mentioned mature languages with a bit of scripting languages on the side (Python/Perl). In my opinion it is still worth it to invest the knowledge in these languages.