Culture / Development

This Week in Programming: Microsoft Jumps Back into Java with OpenJDK Build Preview

10 Apr 2021 6:00am, by

Who’s ready to get down and party like it’s 1990-something again because Microsoft is taking the internet by storm this week with its scintillating preview of some Java-related tech!

No, no, no, the Microsoft Java Virtual Machine (MJVM) hasn’t risen from the ashes to fight another day, and neither has Visual J++, nor J#. Worry not, dear developer, for all those Microsoft-made Java-esque implementations are buried deep under litigation long past. Rather, this week’s exciting news in the world of Java (aside from the Supreme Court ruling in Oracle v. Google — we touch on that below) is Microsoft’s release of a preview of the Microsoft Build of OpenJDK.

As Microsoft’s Scott Hanselman notes, this release is “not even the same sport” as those far-flung and failed Java-ish implementations, but instead presents a new, no-cost, long-term support (LTS) distribution of OpenJDK that is open source and supported by Microsoft. Far from those past languages, Microsoft’s build of OpenJDK is based on the OpenJDK source code and offers binaries for Java 11 that have passed the Java Technology Compatibility Kit (TCK), making it “a simple drop-in replacement for any other OpenJDK distribution available in the Java ecosystem,” the company writes in a blog post.

Part of the drama of Microsoft’s previous forays into the world of Java centered around the fact that the company offered Java implementations that were not, in fact, compatible with the Java specifications. The MJVM was actually cited in the antitrust actions against Microsoft as part of the company’s then-strategy of “Embrace, extend and extinguish,” wherein it would attempt to adopt and extend a widely used standard before adding proprietary capabilities to try to disadvantage competitors.

With this release, and with nearly a quarter-century between the Microsoft of old and the one that stands before us today, the company is working to assure developers that it’s here to play nice in the world of open source with a fully open source offering of OpenJDK. This point is one Hanselman notes again and again in his responses to the low-level J++ trolling in his Twitter thread around the news: this release, by comparison to Oracle’s, is free, open source, and has no license fees.

Beyond being open source, free, and supported, Microsoft’s OpenJDK, Microsoft principal product manager for Java Bruno Borges says there is another benefit as well: “We also believe that by providing users with our own builds, we are more likely to identify opportunities for fixes/enhancements that better match our infra/cloud and our customers’ needs.”

For full details on versions and all that nitty-gritty, head on over to the announcement blog, but rest assured that Java 11 support will continue “until at least 2024” and containers of the OpenJDK are to be “published soon on Docker Hub.”

This Week in Programming

  • Go Gets Fuzzy: First, up this week, a bit of an update — the Go programming language team has officially accepted the proposal to add fuzzing to Go’s standard library. First proposed in late February by Go security team member Katie Hockman, the Go fuzzing feature is expected to be experimental in Go 1.17. Upon submitting draft for fuzzing, Hockman wrote that “The functionality that goes into this release is expected to have bugs and be missing features, but should serve as a proof-of-concept for which Go developers can experiment and provide feedback.” As far as whether or not fuzzing a worthwhile endeavor for the language to pursue, as questioned in on Reddit thread on the newly accepted feature, a list of trophies compiles the bugs already found and fixed by go-fuzz.
  • Google Wins In Decade-Long Case Over Using Java APIs: The Supreme Court decided in Google’s favor this week, ruling that Google’s use of Oracle’s Java API was fair use and the GitHub blog detailing the decision says the ruling “reaffirms that developers’ ability to port their code and skills between platforms is a significant interest to be protected.” Under scrutiny was whether or not Google’s use of 11,330 lines of code from the Java SE API in its Android operating system was a case of copyright infringement, with a potential ruling in Oracle’s favor entitling the company to a piece of Google’s $8.8 billion operating system business. Instead, the court found that APIs differ from other types of code, and “to allow enforcement of Oracle’s copyright here would risk harm to the public.” According to GitHub’s interpretation of the ruling, this one is a win for developers all around, with the company writing that “this strong recognition of developer interest by the highest Court should pay dividends for developers’ freedom to innovate for years to come.”

  • GitHub’s Global Maintainer Summit: Those of you out there maintaining open source projects now have another conference to look forward to, this time put on by GitHub, which just announced the inaugural Global Maintainer Summit. The Global Maintainer Summit will be an “opportunity to discuss the meta aspects” of being an open source maintainer at a free, virtual event taking place June 8-9th. According to the announcement, the summit will consist of “a wide variety of short streaming talks, a hallway track via gathertown, and meeting like-minded peers in the open source community” and for those of you interested in sharing your perspectives, the Call for Proposals is open. “Talks can be serious, silly, or painfully vulnerable,” they write. “The vibe is honesty. Maintaining open source isn’t easy, and behind the scenes, it isn’t glamorous.”
  • Python Support Goes GA in Amazon CodeGuru: Amazon‘s CodeGuru code review automation tool has changed up its pricing model and moved Python support to GA in a move that the company says will save many users up to 90% in cost. As far as the cost savings go, it’s thanks to a simplified pricing structure based on repository size instead of lines of code analyzed per month. Under the new model, pricing will be $10 per month for the first 100,000 lines of code, across all connected repositories, and $30 per month for every additional 100k lines of code, meaning developers can scan their code as often as they like without incurring extra costs. As for Python GA support, Python now joins Java, and the move brings four new features, including increased coverage and precision for existing detectors, an improved detector for resource leaks, a new code maintainability detector, and a new input validation detector. While the Python CodeGuru Reviewer is in GA, Python Support for CodeGuru Profiler is still in preview.

  • AWS CDK Adds Support for Go: While we’re talking about Amazon, it’s also worth noting that the AWS Cloud Development Kit now supports Go in Developer Preview. Check out the blog post for step-by-step instructions on “how to initialize a new AWS CDK app as well as the basics of creating and deploying AWS CDK stacks using the Go programming language” and if you’re interested, check out project board tracking work towards general availability. Further details are also offered in the developer guide, reference documentation, and AWS CDK Go Module API documentation.
  • Android Hops Aboard The Rust Train: The same old story is being told again and again recently, and this week it is repeated once again, with the Android Open Source Project opting to support Rust for “developing the OS itself.” The reason given for adopting Rust is the same as cited by Microsoft in Windows development and for recent moves toward including Rust in the Linux kernel: memory safety. Choosing a memory-safe language like Rust, Google argues, allows them to lower the density of bugs, increasing the effectiveness of their sandboxing, as well as reducing the overall need for sandboxing, which they say will allow them to introduce “new features that are both safer and lighter on resources.”

Feature image by Nathan Dumlao on Unsplash.

A newsletter digest of the week’s most important stories & analyses.