Three years after Microsoft acquired jClarity, Martjin Verburg presented at Devoxx UK on how reliant Microsoft is on Java. If the two didn’t initially seem to fit on the same page, the reality is different: Microsoft runs 2 million JVMs in production for internal purposes, 50+ Android apps, and Azure’s internal systems and Minecraft are built in Java. Moreover, Microsoft is committed to moving Java forward.
The experiments of the late 1990s and the trials of the early 2000s were long forgotten when Satya Nadella publicly committed to the new direction of the company in 2018:
We are all in on open source
Microsoft’s Java Engineering Group kicked off in 2019, bringing together former employees of jClarity, veterans of Microsoft’s runtime group, and JVM experts from IBM and ARM. Their first efforts were focused on migration and tuning, mainly for LinkedIn’s microservices, Azure’s services, and Minecraft. Their objectives were improving JVM startup times, increasing throughput, and reducing latency and memory footprint.
In the autumn of the same year, Microsoft signed the Oracle Contributor Agreement and OpenJDK Community Technology License Agreement and started its team’s integration with the OpenJDK community. In 2021 the Java Specification Participation Agreement was signed to join the Java Community Process, thereby transferring all patents related to Java. Some of the more impactful patches from OpenJDK include:
8241142: Shenandoah: should not use parallel reference processing with single GC thread: References should be processed in parallel only if multiple hardware threads are available, otherwise you end up battling over one thread, which will slow things down.
8236179: C1 register allocation error with T_ADDRESS: The C1-generated code for a load reference barrier was treating the load address parameter as a 32-bit value on 64-bit hosts.
Martijn Verburg: Sometimes it really is the compiler…
MD5 hashing: Intrinsic enhancement: The new version implemented with OSS community’s help is 15%-20% faster.
As part of Adoptium, Microsoft JEG contributed the Windows ARM Port, an effort during which the foundation of the macOS port was laid.
Taking into account that at the moment Azure supports a multitude of deployment models for Java applications (monolith, microservice, serverless or different combinations of the first), you can easily understand the group's motivation to improve startup times which would allow easier scaling applications horizontally. Besides this, another area of interest is improving escape analysis which could alleviate GC pressure and reduce cache/page misses by eliminating allocations.
Microsoft went from comparing one of the most iconic open source projects with the toughest illness of the previous century, to embracing open source in just two decades. Even more surprising is the transformation the company had in just four years when it made public its plans to support open source software.
Once a fierce opponent of Java, the Redmond giant is now one of the founding members of Adoptium (380 M downloads to date), the place to go for a verified and recommended Java build. Moreover, the company open sourced multiple projects and even built a coding pack for Java for its lightweight IDE VS Code (almost 12 M downloads). Even though it might seem surprising, the show is just starting for them; their future work on OpenJDK is related to performance enhancements, integration of jClarity Tooling with Application Insights, and building migration tooling between Java versions Java 8 => Java 11 => Java 17.