Liberica 8u282, 11.0.10, and 15.0.2 are here

Liberica 8u282, 11.0.10, and 15.0.2 are here

Liberica 8u282, 11.0.10, and 15.0.2 are here


January 19, 2021


January marks the beginning of the year and a new JDK release. Welcome versions 8u282, 11.0.10, and 15.0.2! This time, the release contains 401 fixes overall (139 in JDK 8, 200 in JDK 11, and 62 in JDK 15). It will aid Java developers with the following features, selected and crafted by BellSoft based on the latest IT trends.

1. Support for Apple Silicon

Liberica JDK now runs natively on M1-powered Apple products. This feature applies to both LTS’s (8, 11) and the current Liberica JDK 15. Given that in July 2020 we added AArch64 support for LibericaFX to JDK 11, the most recent LTS version, it paved the way to include it for 64-bit ARM processors in Macs and Macbooks. Apple Silicon users will benefit from full-fledged JavaFX (including Graphics, Controls, Media, and Webkit modules) in all Full bundles to create complex and appealing visual interfaces.

When it comes to JVM features, all GCs, C1 and C2 JIT Compilers are supported. Graal JIT Compiler, Ahead-of-Time Compilation, and Class Data Sharing are explicitly not supported on this platform in this release.

2. JDK EA trimmed down by 5 MB

Comparation

Our last article discussed how we build minuscule Liberica JDK and JRE images suitable for cloud environments and microservices. Along with today’s new version, BellSoft releases special Early Access binaries that are even smaller than before. All are reduced by 3–6 MB in size, or 5 to 14.7 percent. Such an improvement will bring extra efficiency and savings to software development with Docker containers.

The EA lite packages are available from here:

Name Size (MB) SHA1
JDK 11.0.10+10 EA Linux x86 Lite DEB 66.8 1407bf71325383afd3ccda8ee30e79454c943358
JDK 11.0.10+10 EA Linux x86 Lite RPM 68 ade756f0e0e4e9267e8bee7033f5565ef2f53df7
JDK 11.0.10+10 EA Linux x86 Lite TAR.GZ 70.8 f0135fc028a7085681d3aadf23b0a9c79169e9de
JDK 11.0.10+10 EA Linux ARM Lite DEB 66 8182fd5d7878528e73d37e62e1d2478d56bb97b7
JDK 11.0.10+10 EA Linux ARM Lite RPM 67.4 d1fbca79c317a4a0789d2997e7ec2fc7f7ad391f
JDK 11.0.10+10 EA Linux ARM Lite TAR.GZ 70.4 60f01b991ce6a2c63f354763ffba11a95e387eb9
JDK 11.0.10+10 EA Alpine Linux ARM (musl) Lite APK 69.1 4cb9aa8cccfba4f55a70c5f2fb33a625ac244d51
JDK 11.0.10+10 EA Linux ARM (musl) Lite TAR.GZ 70 c00dd67f9c409254b35b9f2abcf7b19ebb785464
JDK 11.0.10+10 EA Alpine Linux x86 (musl) Lite APK 69.5 86adea0b0a959da738ba207c5f5142b8cecec2a1
JDK 11.0.10+10 EA Linux x86 (musl) Lite TAR.GZ 70.5 2dc43d1d14406d3a422ff72f23512a11e9c0f897
Name Size (MB) SHA1
JDK 15.0.2+11 EA Linux x86 Lite DEB 67.4 27fba8134bb6100473057b34fcbb4fd8e667bce8
JDK 15.0.2+11 EA Linux x86 Lite RPM 68.7 fc618887c6c7c6ea42cce9b9b07ad787a979af4e
JDK 15.0.2+11 EA Linux x86 Lite TAR.GZ 71.1 c62a776af52b69a525df6765066563a3008b5a4c
JDK 15.0.2+11 EA Alpine Linux x86 (musl) Lite APK 70.1 419aaab372e599f53917bba4021c7a6660b7baa3
JDK 15.0.2+11 EA Linux x86 (musl) Lite TAR.GZ 71 2d6fd2a8f73cbc33c9a2208d7ba50b8f3d511df3
JDK 15.0.2+11 EA Linux ARM Lite DEB 66.8 97ce0e29bdcca8b26243cc3c56bd00b5b19e308a
JDK 15.0.2+11 EA Linux ARM Lite RPM 68.2 1e2f6f06e99a4fad8df118f806cd88d86515ebd9
JDK 15.0.2+11 EA Linux ARM Lite TAR.GZ 70.8 a63ec89c90d1e23c9d4f39af7726965c29b78856
JDK 15.0.2+11 EA Alpine Linux ARM (musl) Lite APK 69.9 d7b9c8114f7ef011f786cccab761219075f72631
JDK 15.0.2+11 EA Linux ARM (musl) Lite TAR.GZ 70.8 c45f55ac62727c3686e5cc9f06698beba804b2ca

The EA JDK packages that can be used to build arbitrary runtimes with jlink are available from here:

Name Size (MB) SHA1
JDK 11.0.10+10 EA Linux x86 DEB 156.1 39fa6a91d82bbe400231a08bd803a9356bd49a0e
JDK 11.0.10+10 EA Linux x86 RPM 162.7 584418f982acdf769490fbef0b331d8e82943077
JDK 11.0.10+10 EA Linux x86 TAR.GZ 181.3 fe9ea1d8205ce2f97fc9ecef250e368c04bd3e88
JDK 11.0.10+10 EA Linux ARM DEB 163 6975ad025cbd45abbfadffdf148bab1274071113
JDK 11.0.10+10 EA Linux ARM RPM 170 435fa09411e6440015783dae5f0e46910ff1ce20
JDK 11.0.10+10 EA Linux ARM TAR.GZ 189.7 884895c6119ee42e22b46ee19365bcf9d7bed6f9
JDK 11.0.10+10 EA Alpine Linux ARM (musl) APK 178.7 7fed224f6e7146a9c7144c63c2e387457fc4c968
JDK 11.0.10+10 EA Linux ARM (musl) TAR.GZ 179.8 5516161846ef020525eb7ba29384fecce3438594
JDK 11.0.10+10 EA Alpine Linux x86 (musl) APK 179.5 67dc4c1ca1460bef475dd279c4bb3617c1777010
JDK 11.0.10+10 EA Linux x86 (musl) TAR.GZ 180.7 3d648000304deb723e7df47ccb7534454663a0e1
Name Size (MB) SHA1
JDK 15.0.2+11 EA Linux x86 DEB 162.3 1461554cb7e14032137f6b8d85c9c6c491c02b9e
JDK 15.0.2+11 EA Linux x86 RPM 169.2 05ff5748741b8d448f8e9ef56730dc1c9a84f834
JDK 15.0.2+11 EA Linux x86 TAR.GZ 188.1 f0a140f12be70617fa5a23a479ac8b132680a4a5
JDK 15.0.2+11 EA Alpine Linux x86 (musl) APK 186.7 178f41ec9ae015192a0f9b48175913c77de45a49
JDK 15.0.2+11 EA Linux x86 (musl) TAR.GZ 187.9 49708830569af388a934e12fff1cd8dbf98d992c
JDK 15.0.2+11 EA Linux ARM DEB 164.3 1461554cb7e14032137f6b8d85c9c6c491c02b9e
JDK 15.0.2+11 EA Linux ARM RPM 170.9 05ff5748741b8d448f8e9ef56730dc1c9a84f834
JDK 15.0.2+11 EA Linux ARM TAR.GZ 189.5 f0a140f12be70617fa5a23a479ac8b132680a4a5
JDK 15.0.2+11 EA Alpine Linux ARM (musl) APK 186.3 fa09b54fee8063719fe40da1b17c0767e02021f9
JDK 15.0.2+11 EA Linux ARM (musl) TAR.GZ 187.6 77730c58610e8bb8168c0456738bbf50c3f3fd79

Here’s how to build a Docker image with these files:

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM alpine:3.11

ENV LIBERICA_VERSION=11.0.10+10-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-x64-musl.tar.gz
ENV LIBERICA_SHA=e621f4115f6d357b31b1b8888c42329c2c78d575e9e24ddbe8c2162a8caf5874
ENV LIBERICA_HOME=/opt/bellsoft/jdk
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN set -o errexit -o nounset \
 && apk add --no-cache binutils \
 && wget --no-verbose --output-document=jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p /tmp/jdk \
 && tar xf jdk.tar.gz -C /tmp/jdk --strip-components=1 \
 && rm jdk.tar.gz \
 && /tmp/jdk/bin/jlink \
   --add-modules java.base \
   --compress=2 \
   --no-header-files \
   --no-man-pages \
   --module-path /tmp/jdk/jmods \
   --output "$LIBERICA_HOME" \
 && rm -rf /tmp/jdk \
 && apk del binutils \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run --rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM alpine:3.11

ENV LIBERICA_VERSION=11.0.10+10-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-x64-musl-lite.tar.gz
ENV LIBERICA_SHA=cf561299f4e3540ee5bc706a1c1bffb2d8156a67413e5489bd818fdd7c2356ce
ENV LIBERICA_HOME=/opt/bellsoft/jdk
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN set -o errexit -o nounset \
 && wget --no-verbose --output-document=jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run --rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM debian:9

ENV LIBERICA_VERSION=11.0.10+10-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-amd64-lite.tar.gz
ENV LIBERICA_SHA=4f362dd78b00cc077d770dfa5331cb0ae7d6ed124f8a73dea560a1dee0793606
ENV LIBERICA_HOME=/opt/bellsoft/jdk
RUN set -o errexit -o nounset \
 && apt-get update \
 && apt-get install --yes --no-install-recommends \
   ca-certificates \
   curl \
   fontconfig \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
RUN set -o errexit -o nounset \
 && curl --fail --location --silent --show-error --output jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM centos:7

ENV LIBERICA_VERSION=11.0.10+10-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-amd64-lite.tar.gz
ENV LIBERICA_SHA=4f362dd78b00cc077d770dfa5331cb0ae7d6ed124f8a73dea560a1dee0793606
ENV LIBERICA_HOME=/opt/bellsoft/jdk
RUN set -o errexit -o nounset \
 && yum install --assumeyes \
   ca-certificates \
   curl \
   fontconfig \
 && yum clean all \
 && rm -rf /var/cache/yum \
 && rm -rf /var/lib/rpm/__db* \
 && rpm --rebuilddb
RUN set -o errexit -o nounset \
 && curl --fail --location --silent --show-error --output jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM alpine:3.11

ENV LIBERICA_VERSION=15.0.2+11-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-x64-musl.tar.gz
ENV LIBERICA_SHA=a7e1ef6d00b16ff61d982fef94584b73533e3732b8b0c92355fdb08867758cba
ENV LIBERICA_HOME=/opt/bellsoft/jdk
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN set -o errexit -o nounset \
 && apk add --no-cache binutils \
 && wget --no-verbose --output-document=jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p /tmp/jdk \
 && tar xf jdk.tar.gz -C /tmp/jdk --strip-components=1 \
 && rm jdk.tar.gz \
 && /tmp/jdk/bin/jlink \
   --add-modules java.base \
   --compress=2 \
   --no-header-files \
   --no-man-pages \
   --module-path /tmp/jdk/jmods \
   --output "$LIBERICA_HOME" \
 && rm -rf /tmp/jdk \
 && apk del binutils \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM alpine:3.11

ENV LIBERICA_VERSION=15.0.2+11-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-x64-musl-lite.tar.gz
ENV LIBERICA_SHA=67e4f6d85fcd28d25d62d314e4a8bb8aa536b843e6476045c5586b5e85038eb0
ENV LIBERICA_HOME=/opt/bellsoft/jdk
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN set -o errexit -o nounset \
 && wget --no-verbose --output-document=jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM debian:9

ENV LIBERICA_VERSION=15.0.2+11-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-amd64-lite.tar.gz
ENV LIBERICA_SHA=7e490719b0fc08cf68b9524e14833e3f53aa378c7e94e17ca93a6bc6317b0315
ENV LIBERICA_HOME=/opt/bellsoft/jdk
RUN set -o errexit -o nounset \
 && apt-get update \
 && apt-get install --yes --no-install-recommends \
   ca-certificates \
   curl \
   fontconfig \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
RUN set -o errexit -o nounset \
 && curl --fail --location --silent --show-error --output jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

1. Create an empty directory and cd into it.

2. Create a file named Dockerfile and insert the following code:

FROM centos:7

ENV LIBERICA_VERSION=15.0.2+11-ea
ENV LIBERICA_URL=https://download.bell-sw.com/java-ea/$LIBERICA_VERSION/bellsoft-jdk${LIBERICA_VERSION}-linux-amd64-lite.tar.gz
ENV LIBERICA_SHA=7e490719b0fc08cf68b9524e14833e3f53aa378c7e94e17ca93a6bc6317b0315
ENV LIBERICA_HOME=/opt/bellsoft/jdk
RUN set -o errexit -o nounset \
 && yum install --assumeyes \
   ca-certificates \
   curl \
   fontconfig \
 && yum clean all \
 && rm -rf /var/cache/yum \
 && rm -rf /var/lib/rpm/__db* \
 && rpm --rebuilddb
RUN set -o errexit -o nounset \
 && curl --fail --location --silent --show-error --output jdk.tar.gz "$LIBERICA_URL" \
 && echo "$LIBERICA_SHA *jdk.tar.gz" | sha256sum -c - \
 && mkdir -p "$LIBERICA_HOME" \
 && tar xf jdk.tar.gz -C "$LIBERICA_HOME" --strip-components=1 \
 && rm jdk.tar.gz \
 && "$LIBERICA_HOME/bin/java" -version
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV JAVA_HOME=$LIBERICA_HOME
ENV PATH=$LIBERICA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["java", "-version"]

3. Build: docker build . -t name:tag

4. Run image with: docker run –rm name:tag

3. New architecture/OS combination

If previously Liberica only supported Alpine Linux on Intel x86, this release extends it to AArch64. We see that the ARM architecture is becoming increasingly more prevalent in software development and cannot help but deliver.

4. Liberica installers and repository for Alpine Linux (Intel & AArch64)

Before, Liberica binaries for Linux distributions could only be downloaded as digitally signed TAR.GZ archives, DEB or RPM files. Now we offer a possibility to install JDK and JRE packages on Alpine Linux with a standard apk add <liberica package> procedure. Here’s how you do it.

To add BellSoft official Alpine Linux repository, use the following commands:

# add our repository
echo "https://apk.bell-sw.com/main" | sudo tee -a /etc/apk/repositories
# add our official signing key
sudo wget -P /etc/apk/keys/ https://apk.bell-sw.com/[email protected]

Now you install Liberica as easily as typing the following command:

sudo apk add bellsoft-java8

It’s also possible to fetch the package directly from BellSoft’s website with busybox wget. Find the desired package on the Downloads page. Copy its URL and paste it in the command line, i.e.:

wget https://download.bell-sw.com/java-ea/15.0.2+11-ea/bellsoft-jdk15.0.2+11-ea-linux-aarch64-musl-lite.apk

Then install the newly downloaded package locally:

sudo apk add --allow-untrusted bellsoft-jdk15.0.2+11-ea-linux-aarch64-musl-lite.apk

You can omit the --allow-untrusted option in case if you’ve already added our official signing key as described above.

We continue making our products more helpful for your day-to-day development tasks. You can rely on BellSoft to look into what the community needs and bring it to Liberica users.

All builds are ready for download on our website.

Author image

Aleksei Voitylov

BellSoft CTO

BellSoft LTD [email protected] BellSoft LTD logo Liberica Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 111 North Market Street, Suite 300 CA 95113 San Jose US +1 702 213-59-59