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:
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.