posts

Liberica 8u282, 11.0.10, and 15.0.2 are here

figure
Jan 19, 2021
Aleksei Voitylov

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

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:

NameSize (MB)SHA1
JDK 11.0.10+10 EA Linux x86 Lite DEB66.81407bf71325383afd3ccda8ee30e79454c943358
JDK 11.0.10+10 EA Linux x86 Lite RPM68ade756f0e0e4e9267e8bee7033f5565ef2f53df7
JDK 11.0.10+10 EA Linux x86 Lite TAR.GZ70.8f0135fc028a7085681d3aadf23b0a9c79169e9de
JDK 11.0.10+10 EA Linux ARM Lite DEB668182fd5d7878528e73d37e62e1d2478d56bb97b7
JDK 11.0.10+10 EA Linux ARM Lite RPM67.4d1fbca79c317a4a0789d2997e7ec2fc7f7ad391f
JDK 11.0.10+10 EA Linux ARM Lite TAR.GZ70.460f01b991ce6a2c63f354763ffba11a95e387eb9
JDK 11.0.10+10 EA Alpine Linux ARM (musl) Lite APK69.14cb9aa8cccfba4f55a70c5f2fb33a625ac244d51
JDK 11.0.10+10 EA Linux ARM (musl) Lite TAR.GZ70c00dd67f9c409254b35b9f2abcf7b19ebb785464
JDK 11.0.10+10 EA Alpine Linux x86 (musl) Lite APK69.586adea0b0a959da738ba207c5f5142b8cecec2a1
JDK 11.0.10+10 EA Linux x86 (musl) Lite TAR.GZ70.52dc43d1d14406d3a422ff72f23512a11e9c0f897

NameSize (MB)SHA1
JDK 15.0.2+11 EA Linux x86 Lite DEB67.427fba8134bb6100473057b34fcbb4fd8e667bce8
JDK 15.0.2+11 EA Linux x86 Lite RPM68.7fc618887c6c7c6ea42cce9b9b07ad787a979af4e
JDK 15.0.2+11 EA Linux x86 Lite TAR.GZ71.1c62a776af52b69a525df6765066563a3008b5a4c
JDK 15.0.2+11 EA Alpine Linux x86 (musl) Lite APK70.1419aaab372e599f53917bba4021c7a6660b7baa3
JDK 15.0.2+11 EA Linux x86 (musl) Lite TAR.GZ712d6fd2a8f73cbc33c9a2208d7ba50b8f3d511df3
JDK 15.0.2+11 EA Linux ARM Lite DEB66.897ce0e29bdcca8b26243cc3c56bd00b5b19e308a
JDK 15.0.2+11 EA Linux ARM Lite RPM68.21e2f6f06e99a4fad8df118f806cd88d86515ebd9
JDK 15.0.2+11 EA Linux ARM Lite TAR.GZ70.8a63ec89c90d1e23c9d4f39af7726965c29b78856
JDK 15.0.2+11 EA Alpine Linux ARM (musl) Lite APK69.9d7b9c8114f7ef011f786cccab761219075f72631
JDK 15.0.2+11 EA Linux ARM (musl) Lite TAR.GZ70.8c45f55ac62727c3686e5cc9f06698beba804b2ca

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

NameSize (MB)SHA1
JDK 11.0.10+10 EA Linux x86 DEB156.139fa6a91d82bbe400231a08bd803a9356bd49a0e
JDK 11.0.10+10 EA Linux x86 RPM162.7584418f982acdf769490fbef0b331d8e82943077
JDK 11.0.10+10 EA Linux x86 TAR.GZ181.3fe9ea1d8205ce2f97fc9ecef250e368c04bd3e88
JDK 11.0.10+10 EA Linux ARM DEB1636975ad025cbd45abbfadffdf148bab1274071113
JDK 11.0.10+10 EA Linux ARM RPM170435fa09411e6440015783dae5f0e46910ff1ce20
JDK 11.0.10+10 EA Linux ARM TAR.GZ189.7884895c6119ee42e22b46ee19365bcf9d7bed6f9
JDK 11.0.10+10 EA Alpine Linux ARM (musl) APK178.77fed224f6e7146a9c7144c63c2e387457fc4c968
JDK 11.0.10+10 EA Linux ARM (musl) TAR.GZ179.85516161846ef020525eb7ba29384fecce3438594
JDK 11.0.10+10 EA Alpine Linux x86 (musl) APK179.567dc4c1ca1460bef475dd279c4bb3617c1777010
JDK 11.0.10+10 EA Linux x86 (musl) TAR.GZ180.73d648000304deb723e7df47ccb7534454663a0e1

NameSize (MB)SHA1
JDK 15.0.2+11 EA Linux x86 DEB162.31461554cb7e14032137f6b8d85c9c6c491c02b9e
JDK 15.0.2+11 EA Linux x86 RPM169.205ff5748741b8d448f8e9ef56730dc1c9a84f834
JDK 15.0.2+11 EA Linux x86 TAR.GZ188.1f0a140f12be70617fa5a23a479ac8b132680a4a5
JDK 15.0.2+11 EA Alpine Linux x86 (musl) APK186.7178f41ec9ae015192a0f9b48175913c77de45a49
JDK 15.0.2+11 EA Linux x86 (musl) TAR.GZ187.949708830569af388a934e12fff1cd8dbf98d992c
JDK 15.0.2+11 EA Linux ARM DEB164.31461554cb7e14032137f6b8d85c9c6c491c02b9e
JDK 15.0.2+11 EA Linux ARM RPM170.905ff5748741b8d448f8e9ef56730dc1c9a84f834
JDK 15.0.2+11 EA Linux ARM TAR.GZ189.5f0a140f12be70617fa5a23a479ac8b132680a4a5
JDK 15.0.2+11 EA Alpine Linux ARM (musl) APK186.3fa09b54fee8063719fe40da1b17c0767e02021f9
JDK 15.0.2+11 EA Linux ARM (musl) TAR.GZ187.677730c58610e8bb8168c0456738bbf50c3f3fd79

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.

posts
Alpaquita vs Alpine: a head-to-head comparison
figure
Nov 10, 2022
Dmitry Chuyko
shorts
Critical vulnerabilities in OpenSSL 3.0
Nov 11, 2022
Sergey Chernyshev

Find out about the newest CVEs discovered in OpenSSL 3.0 and how to eliminate the risk of exploits

Subcribe to our newsletter

figure

Read the industry news, receive solutions to your problems, and find the ways to save money.