Hi, I’m Edson Yanaga and I’ve been a Java developer for more than 17 years. Like most people in the Java community, I can remember having some grim thoughts when hearing the name “Microsoft”. It brings back all the discussions about Visual J++ and the Microsoft Java Plugin which resulted in the creation of the .Net platform as a form of “homage” to Java.
But this year, I was invited by Microsoft Brazil to take part in Build 2014 – the worldwide Microsoft event for developers (btw, thanks to Vinicius Souza and Danilo Bordini from Microsoft Brazil for the invitation and the very warm reception in San Francisco!), and I decided to give it a shot. What’s the worst that could happen?
Now, I’ve never attended a Microsoft event before, so I can’t say what changed (or even if anything changed at all) – but what I was expecting was more of the same superiority complex I’d always perceived in the past from them. To me, Microsoft always seemed to have an arrogant posture regarding their products and tools – something that historically could be very well justified by their market dominance, at least until recently… Surprisingly, I found the very opposite: a sympathetic and humble tone.
Satya Nadella’s keynote was populated by some mottos which should delineate Microsoft’s strategy for the years to come: “cloud-first, mobile-first” and “interoperability”. Interoperability has always been an issue with Microsoft’s products and services, so we’ll have to see what “interoperability” means for Microsoft now in a “cloud-first, mobile-first” world where neither Azure nor Windows Phone are the dominant players. In fact, I might see a place for Azure in the cloud computing arena, but with a recent survey of 2164 developers showing Google Android (66%) and Apple iOS (27%) basically running the mobile space, I’m struggling to find a place for a Windows Phone in this two-horse race.
So, what is Microsoft doing with Java? Or perhaps: what interest could Microsoft have in Java – and more specifically, in the Java community?
Microsoft’s embrace of the JVM
Java applications and the JVM probably are the most deployed appliances in the business area, and the Java community is one of the most (if not *the* most) vibrant and large developer communities in the world. We see estimates that as many as 9 million Java developers are out there worldwide–which is difficult to confirm or deny–but nonetheless we’re a huge task force that can’t be left behind for any cloud computing provider.
Just as Azure had to embrace Linux to satisfy market conditions (Linux has become a de facto standard for cloud computing environments), Microsoft might have perceived that it couldn’t stand against its competitors without also embracing the largest platform and developer community worldwide. The first step was to provide IaaS (Infrastructure-as-a-Service) support on Azure with an OpenJDK version provided by Azul systems. But certainly it was far from sufficient, and on the second day of Build 2014, Microsoft announced in the Cloud Keynote their support for Java in Azure Websites, Azure’s PaaS (Platform-as-a-Service) offering.
Have you ever dreamed about a full-featured, out-of-the-box, turn-key, complete Java EE platform provided by Microsoft on Azure? Neither did I, but that would be a huge accomplishment for the Java developer community and the Java ecosystem. I guess that’s where Microsoft should be aiming if it’s really willing to engage in the Java arena.
Many of you might be asking: but *why* would I deploy Java applications on Azure? There are 3 reasons I can think of:
- Java’s motto was once “Write Once, Run Anywhere”, so for Java Developers our applications should be platform agnostic and run smoothly whether on Linux, Windows, MacOS X or Solaris.
- We as the Java community believe that having the right to choose matters, and having one more player for deploying Java apps on the cloud means we have an additional choice. We don’t want to have only one stack, one provider and one way to develop and run Java applications, right?
- Competition leads to innovation – and Microsoft has plenty of competent engineers, money and resources to bring innovation to the Java platform.
Staying cautious with vendor lock-in
So should we take a step back when dealing with Azure? Perhaps; it’s sensible to be careful about vendor lock-in, but not only on Azure: we must avoid lock-in pitfalls by any cloud computing provider. We must be aware of any functionality that can potentially limit our freedom to choose. Having all of this in your mindset, Azure should be evaluated for your Java applications in terms of cost, features, easiness, and the value it can provide to your business – just like Amazon, Jelastic, OpenShift and any other cloud provider.
For now, my impression is that Azure’s Java support is still in its formative years and behind its competitors. And without any rancor, at least we from SouJava (one of the biggest JUGs in the world), are willing to help the development of Java support in Azure. Consider this as a public invite to Microsoft OpenTech to consider joining the Java Community Process (JCP). One of the main discussion points of Java EE 8 might be cloud computing, and I think that Microsoft has tons of expert engineers and resources to contribute to any JSR – in fact, it really would be the major proof of goodwill we’re expecting.
Please share your thoughts in the comments section below, or Tweet me at @yanaga.
Hope you liked hearing about this topic, which is the first of short series of related articles about Java running on Azure. Next up, we’ll cover the technical details and issues of the Azure Platform for Java applications, and show you what’s under the covers of Microsoft’s greatest Java ambition to date..