Most commonly available JDKs
Tags: java, jdk
Published: 2020-11-22 17:00:47

For reasons I dare not mention, I had to install version 7 of the <abbr title="Java Developer Kit">JDK</abbr> a couple of months ago. As a Mac user, my usual way of installing is using Homebrew. To install a JDK, this is as easy as `brew cask install adoptopenjdkx`, where `x` is the Java version. It didn't work, as AdoptOpenJDK provides no version 7.

It took me some time to find a JDK 7. In the end, I found one in Zulu - thanks to Azul. Coupled to the fact that I also learned Alibaba provided a JDK and I got curious: how many JDK providers are out there? The next question is: which JDK can I use?

The matter can be confusing as a whole bunch of different JDKs is available. The OpenJDK project plays a big role in this ecosystem. Different developers jointly work on the OpenJDK codebase. They can be employees of software companies, including Oracle, Google, IBM, and Red Hat as part of their regular job. One can also work as an individual contributor to the codebase.

Vendors use OpenJDK as an upstream repository: individual vendors add additional features. The following diagram by [Aleksey Shipilëv](https://twitter.com/shipilev) sums it up:

<a href="https://shipilev.net/jdk-updates/map/" target="_blank"><img src="https://dev-to-uploads.s3.amazonaws.com/i/4hegzsbogfudl0g10iyx.jpg" alt="OpenJDK update releases" /></a>

Without further ado, here are some of the most widespread JDK providers:

<table>
  <thead>
    <tr>
      <th>JDK
      <th>Provider
      <th>Available versions
      <th>Miscellaneous
  <tbody>
    <tr>
      <td><a href="https://jdk.java.net/">Oracle JDK</a>
      <td>Oracle
      <td>
        <ul>
          <li><a href="https://jdk.java.net/java-se-ri/7">7</a>
          <li><a href="https://jdk.java.net/java-se-ri/8-MR3">8</a>
          <li><a href="https://jdk.java.net/java-se-ri/9">9</a>
          <li><a href="https://jdk.java.net/java-se-ri/10">10</a>
          <li><a href="https://jdk.java.net/java-se-ri/11">11</a>
          <li><a href="https://jdk.java.net/java-se-ri/12">12</a>
          <li><a href="https://jdk.java.net/java-se-ri/13">13</a>
          <li><a href="https://jdk.java.net/java-se-ri/14">14</a>
          <li><a href="https://jdk.java.net/15/">15</a>
          <li><a href="https://jdk.java.net/16/">16-ea</a>
      <td>Builds for different Java projects under development:
        <ul>
          <li><a href="https://jdk.java.net/lanai/">Lanai</a>: Implements a new Java 2D graphics rendering pipeline for macOS
          <li><a href="https://jdk.java.net/loom/">Loom</a>: I already touched the subject in a <a href="https://blog.frankel.ch/project-loom-reactive-coroutines/">previous post</a>
          <li><a href="https://jdk.java.net/metropolis/">Metropolis</a>: Use Graal in form of the native library, instead of C2 as HotSpot high optimizing JIT compiler
          <li><a href="https://jdk.java.net/panama/">Panama</a>: Test a prototype implementation of the <a href="https://cr.openjdk.java.net/~mcimadamore/panama/panama-binder-v3.html">native binder</a>
          <li><a href="https://jdk.java.net/valhalla/">Valhalla</a>: Test a prototype implementation of <a href="https://wiki.openjdk.java.net/display/valhalla/L-World">L-World Inline Types</a>
    <tr> 
      <td><a href="https://adoptopenjdk.net/">Adoptium</a>
      <td>Eclipse
      <td>
        <ul>
          <li>8
          <li>9
          <li>10
          <li>11
          <li>12
          <li>13
          <li>14
          <li>15
      <td>
        <ul>
          <li>Choice of traditional HotSpot vs. <a href="https://www.eclipse.org/openj9/">OpenJ9</a>
          <li>Recent rebranding of <a href="https://adoptopenjdk.net/">AdoptOpenJDK</a>
    <tr>
      <td><a href="https://github.com/alibaba/dragonwell8">Dragonwell</a>
      <td>Alibaba
      <td>
        <ul>
          <li><a href="https://github.com/alibaba/dragonwell8/releases">8</a>
          <li><a href="https://github.com/alibaba/dragonwell11/releases">11</a>
      <td>According to their own words:
        <blockquote>Optimized for online e-commerce, financial, logistics applications running on 100,000+ servers</blockquote>
        <ul>  
          <li>Supports Linux/x86_64 platform only
    <tr>
      <td><a href="https://aws.amazon.com/corretto/">Corretto</a>
      <td>Amazon
      <td>
        <ul>
          <li><a href="https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html">8</a>
          <li><a href="https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html">11</a>
          <li><a href="https://docs.aws.amazon.com/corretto/latest/corretto-15-ug/downloads-list.html">15</a>
      <td>
    <tr>
      <td><a href="https://www.azul.com/downloads/zulu-community/">Zulu</a>
      <td>Azul
      <td>
        <ul>
          <li>6
          <li>7
          <li>8
          <li>9
          <li>10
          <li>11
          <li>12
          <li>13
          <li>14
          <li>15
          <li>16-ea
      <td>
        <ul>
          <li><a href="https://www.azul.com/products/zulu-mission-control/">Zulu Mission Control</a>: Monitoring and Management for Java Applications
          <li><a href="https://www.azul.com/downloads/zulu-community/api/">Zulu OpenJDK Discovery API</a>: Programmatically fetch lists of OpenJDK builds
          <li>Azul provides an <a href="https://hub.docker.com/r/azul/zulu-openjdk-alpine">Alpine-compatible Docker image</a>
    <tr>
      <td><a href="https://bell-sw.com/pages/downloads/">Liberica</a>
      <td>BellSoft
      <td>
        <ul>
          <li><a href="https://bell-sw.com/pages/downloads/#/java-8-lts">8</a>
          <li>9
          <li>10
          <li><a href="https://bell-sw.com/pages/downloads/#/java-11-lts">11</a>
          <li>12
          <li>13
          <li>14
          <li><a href="https://bell-sw.com/pages/downloads/#/java-15-current">15</a>
      <td>
        <ul>
          <li><a href="https://bell-sw.com/pages/api/">REST Product Discovery API</a>
          <li>Liberica provides two Alpine-compatible Docker image:
            <ul>
              <li><a href="https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine">one for glibc</a>
              <li><a href="https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine-musl">one for musl</a>
    <tr>
      <td colspan="2"><a href="https://developers.redhat.com/products/openjdk/download">Red Hat build of OpenJDK</a>
      <td>
        <ul>
          <li>8
          <li>9
          <li>10
          <li>11
          <li>12
          <li>13
          <li>14
          <li>15
      <td>
    <tr>
      <td><a href="https://sap.github.io/SapMachine/">Sap Machine</a>
      <td>SAP
      <td>
        <ul>
          <li>11
          <li>15
          <li>16-ea
      <td><a href="https://github.com/SAP/SapMachine/wiki/Features-Contributed-by-SAP">Features contributed by SAP</a>
  </tbody>
</table>

**To go further:**

* [List of Java virtual machines](https://en.wikipedia.org/wiki/List_of_Java_virtual_machines)
* [OpenJDK on Wikipedia](https://en.wikipedia.org/wiki/OpenJDK)
* [Fantastic JVMs and Where to Find Them](https://foojay.io/blog/fantastic-jvms-and-where-to-find-them/)
* [Difference between OpenJDK and Adoptium/AdoptOpenJDK](https://stackoverflow.com/questions/52431764/difference-between-openjdk-and-adoptium-adoptopenjdk)
* [OpenJDK update release map](https://shipilev.net/jdk-updates/map/)

_Originally published at [A Java Geek](https://blog.frankel.ch/common-jdks) on November 22<sup>th</sup> 2020_