About proprietary JDKs on SDKMAN!

SDKMAN!
3 min readMay 31, 2017

--

A few months back, we started providing Java Development Kits on SDKMAN! Up to that point we had only been distributing other JVM related languages and tools (Groovy, Scala, Kotlin, Ceylon and many other tools), but never Java itself. Our users had been asking for us to provide JDKs for some time, but we held off due to potential legal and technical issues surrounding this.

Eventually we did take the plunge, and introduced our new Multi-Platform capability, a new feature which had huge impact on our backend services. This new feature would allow us to distribute SDKs seamlessly based on platform. Since the JDK was the first platform-specific candidate we would distribute, we needed this in place in order to proceed.

After much testing using all available historic versions of the Oracle JDK on chosen supported platforms (Linux, Mac OSX and Cygwin), we finally went live with the new feature. We had no idea how popular this would eventually become until it finally went live!

As mentioned earlier, we weighed up the odds regarding legal issues: we certainly didn’t want to infringe on any laws or step on any toes. Eventually the JDKs went live on SDKMAN!, but under very specific conditions:

  1. The Oracle Binary License Agreement should be presented to the user for viewing.
  2. The user has to agree to the Oracle Binary License Agreement before download and installation commences.
  3. Binaries are not to be hosted anywhere else other than by Oracle themselves.

We managed to get this all working pretty well and commenced the release.

This went well for some months, with huge adoption of the new candidate. Some teething pains were experienced due to the odd choice of binary types distributed by Oracle, but all in all it was a great success. That was until last week when suddenly issues started cropping up on Github of users no longer being able to install certain versions of the JDK. On closer inspection, it turned out that many versions of the JDK were no longer available on their site, or were now behind a curtain, protected by user account login. This meant that binaries which were once accessible to tools that help automation of the mundane were being blocked in downloading these binaries. What to do?

After some head scratching, it was decided to remove all volatile links pointing to Oracle’s binaries. Resources that were once know to be reliable had been yanked from beneath our feet. These had to be replaced with something else. Since many users really want Java on SDKMAN!, it was decided to introduce OpenJDK as an alternative to the Oracle JDK. One distribution of OpenJDK that really stands out is Zulu by Azul Systems. This distribution is free, open and does not require agreeing to any licencing (only their Terms of Use, which are very reasonable).

And so we introduced the initial version 8u131-zulu of OpenJDK on SDKMAN! Over the coming days, we will be releasing more versions of the OpenJDK as available on the Zulu download page. We will also look at bringing back selected versions of the Oracle JDK (subject to availability on the Oracle download pages). We realise that many prefer using the Oracle JDKs, but unfortunately we have no control over what Oracle allow us to provide through tools like SDKMAN!

We hope to get over this rocky patch as soon as possible, but also hope that more people will begin adopting the goodness of OpenJDK as a result of this. Organisations and companies like Azul are offering a great alternative through what they are distributing. Our desire is that we can help drive the winds of change in the JVM community away from proprietary software towards free and open alternatives.

--

--