The full version string for this update release is 20.0.2+10. The version number is 20.

Liberica JDK 20.0.2+10

Liberica is a certified, Java SE 20-compliant distribution of OpenJDK 20 which works on server (Linux x86_64, Linux ARM64, Windows 64), desktop (Windows 64, Windows 32, Mac, Linux x86_64), and embedded devices (Linux ARM64, Linux ARMv7, including Raspberry Pi 2 & 3 (ARMv6 hardfloat)). It has the following notable additions:

  • Linux x86_64 version contains experimental support for ZGC.

  • Linux x86_64, ARMv8 and ARMv7 distributions include a choice of Client VM, Server VM and Minimal VM.

  • Alpine Linux x86_64 version is build with musl support.

  • Windows x86_64, Windows x86, Windows ARMv8, Mac, Linux x86_64, Linux x86 and Linux ARMv7 distributions contain OpenJFX 20.

  • Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.

Please refer to the Oracle JDK 20.0.2 release notes for further information on JDK 20 features. This document further outlines the peculiarities of Liberica distribution as compared to Oracle JDK 20 distribution.

Supported Server and Desktop configurations

Liberica is supported on the following OSes:

  • Ubuntu Linux 16.04, 18.04, 20.04 (x86, x86_64, ARMv7, ARMv8)

  • Debian Linux 8, 9, 10 (x86, x86_64, ARMv7, ARMv8)

  • Red Hat, Oracle Linux and CentOS 8x, 6.x, 7.x (x86, x86_64, ARMv7, ARMv8)

  • Alpine Linux 3.7+ (x86_64, ARMv8)

  • SUSE Linux Enterprise 12, 15 and tumbleweed (x86_64, ARMv8)

  • Apple macOS 10.11+ (x86_64, ARMv8)

  • Microsoft Windows 2019, Windows 2016, Windows 2012 R2, Windows 10, Windows 8, Windows 7 (x86, x86_64, ARMv8)

It is also known to work on other Linux distributions and Windows versions.

Note: The minimum supported Linux kernel version is 2.6.18 and GLIBC version 2.6. LibericaFX works on all supported Ubuntu versions, Red Hat Linux family starting from 7.x and SUSE versions with GTK3 backend.

Supported Embedded configurations

Liberica is tested and certified on Raspberry Pi 2, 3 and 4 running the following OSes:

  • Raspbian OS (armhf)

  • OpenSUSE (armv8)

It is also known to work with Debian (armhf) and Ubuntu (armhf).

Liberica JDK 20 distribution

Liberica JDK 20 are distributed as .rpm, .zip, .deb and .tar.gz packages. Please select the one which is most appropriate for your purposes.

Liberica JDK 20 introduced all new features supported by OpenJDK 20.

With the introduction of the Jigsaw feature in JDK 9 and Minimal VM it is now possible to create a Runtime that is sufficient to run your application and trim down the size of the Runtime. To generate a Runtime with just the Minimal VM, add --vm=minimal to jlink options.

Liberica JDK continues to provide support for AOT and Graal JIT. Since in OpenJDK 20 builds these features are deemed experimental and deprecated, it is recommended to compile native executables with Liberica Native Image Kit to avoid errors.

By default, the Liberica uses Server VM. Server VM and Client VM can be enabled with -server and -client command line options, respectively. In case the deployment requires to minimize the footprint, it may be beneficial to use Minimal VM, which emphasises on a minimal footprint. It has C1 JIT compiler only, Serial GC and no serviceability features.

LibericaFX for the Raspberry Pi

Liberica JDK 20 come with a bundled LibericaFX implementation, which is based on OpenJFX. The following tables lists Java FX modules status of Liberica distribution

  • Java FX Graphics - works.

  • Java FX Controls - works.

  • Java FX Media - does not work.

  • Java FX Webkit - does not work.

The following pipelines are known to work: EGL, SW (direct framebuffer) and GTK. By default, Liberica tries to use the accelerated EGL pipeline, which requires the presence of EGL libraries. If they are not found, the implementation falls back to software rendering.

Use the following command line options to specify the rendering pipeline:

  • -Dprism.order=sw forces the use of software rendering pipeline. *

  • -Dprism.order=es2 forces the use of EGL pipeline and hardware acceleration. *

  • -Djavafx.platform=gtk if you would like to launch a LibericaFX application using Liberica from X11.

  • Not supported on Raspberry Pi 4.

Please refer to the following wiki for more information.

Device IO API for the Raspberry Pi

Liberica JDK 20 comes with a bundled OpenJDK Device I/O (DIO) API implementation module. DIO provides a Java API for accessing Raspberry PI GPIO pins and for communicating with peripheral devices:

  • General Purpose Input/Output (GPIO).

  • Inter-Integrated Circuit Bus (I2C), Serial Peripheral Interface (SPI).

  • Universal Asynchronous Receiver/Transmitter (UART).

Please refer to the following wiki for more information.

Security Baselines

BellSoft Liberica follows the security baselines for Oracle Java SE. Please refer to the Oracle documentation for a list of issues fixed in a given release.

Known Issues

LibericaFX and EGL on Raspbian

As of 2017, the default location of Broadcom libEGL.so and libGLESv2.so has changed in Raspbian OS. If you’d like to leverage hardware EGL acceleration available from Broadcom video drivers in LibericaFX while running a recent Raspbian OS, run the following command:

cd /opt/vc/lib
sudo ln -s libbrcmEGL.so libEGL.so
sudo ln -s libbrcmGLESv2.so libGLESv2.so

CVEs

This is the list of the security issues fixed in this release. CVSS scores are provided using the CVSS version 3.1 scoring system.

CVE IDScoreComponentModuleAttack vectorComplexityPrivilegesUser interactionScopeConfidentialityIntegrityAvailability

CVE-2023-22043

5.9

javafx

graphics

network

high

none

none

unchanged

none

high

none

CVE-2023-22041

5.1

hotspot

compiler

local

high

none

none

unchanged

high

none

none

CVE-2023-25193

3.7

client-libs

2d

network

high

none

none

unchanged

none

none

low

CVE-2023-22044

3.7

hotspot

compiler

network

high

none

none

unchanged

low

none

none

CVE-2023-22045

3.7

hotspot

compiler

network

high

none

none

unchanged

low

none

none

CVE-2023-22049

3.7

core-libs

java.io

network

high

none

none

unchanged

none

low

none

CVE-2023-22036

3.7

core-libs

java.util

network

high

none

none

unchanged

none

none

low

CVE-2023-22006

3.1

core-libs

java.net

network

high

none

required

unchanged

none

low

none

Issues fixed

IssueDescription

JDK-8282359

Intermittent WebKit build failure on Windows: C1090: PDB API call failed, error code 23

JDK-8286089

Intermittent WebKit build failure on macOS in JavaScriptCore

JDK-8301009

Update libxml2 to 2.10.3

JDK-8304751

Improve pipeline layout

JDK-8305108

Change JavaFX release version to 20.0.2 in jfx20u

JDK-8306115

Update libxml2 to 2.10.4

JDK-8306450

Create release notes for JavaFX 20.0.1

JDK-8308682

Enhance AES performance

JDK-8305312

Enhanced path handling

JDK-8304468

Better array usages

JDK-8304460

Improve array usages

JDK-8303376

Better launching of JDI

JDK-8302483

Enhance ZIP performance

JDK-8302475

Enhance HTTP client file downloading

JDK-8300596

Enhance Jar Signature validation

JDK-8300285

Enhance TLS data handling

JDK-8298676

Enhanced Look and Feel

JDK-8296565

Enhanced archival support

JDK-8294323

Improve Shared Class Data

JDK-8304878

ConcurrentModificationException in javadoc tool

JDK-8305668

PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2

JDK-8307346

Add missing gc+phases logging for ObjectCount(AfterGC) JFR event collection code

JDK-8307104

[AIX] VM crashes with UseRTMLocking on Power10

JDK-8307425

Socket input stream read burns CPU cycles with back-to-back poll(0) calls

JDK-8304350

Font.getStringBounds calculates wrong width for TextAttribute.TRACKING other than 0.0

JDK-8307378

Allow collectors to provide specific values for GC notifications’ actions

JDK-8307466

java.time.Instant calculation bug in until and between methods

JDK-8307134

Add GTS root CAs

JDK-8289735

UTIL_LOOKUP_PROGS fails on pathes with space

JDK-8306976

UTIL_REQUIRE_SPECIAL warning on grep

JDK-8306825

Monitor deflation might be accidentally disabled by zero intervals

JDK-8304295

harfbuzz build fails with GCC 7 after JDK-8301998

JDK-8304760

Add 2 Microsoft TLS roots

JDK-8305975

Add TWCA Global Root CA

JDK-8306774

Make runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java more reliable

JDK-8305994

Guarantee eventual async monitor deflation

JDK-8301190

[vectorapi] The typeChar of LaneType is incorrect when default locale is tr

JDK-8306883

Thread stacksize is reported with wrong units in os::create_thread logging

JDK-8306734

Shenandoah: Missing barriers on deoptimization path

JDK-8306658

GHA: MSVC installation could be optional since it might already be pre-installed

JDK-8305403

Shenandoah evacuation workers may deadlock

JDK-8305352

updateIconImages may lead to deadlock after JDK-8276849

JDK-8304291

[AIX] Broken build after JDK-8301998

JDK-8306543

GHA: MSVC installation is failing

JDK-8297587

Upgrade JLine to 3.22.0

JDK-8304498

JShell does not switch to raw mode when there is no /bin/test

JDK-8298887

On the latest macOS+XCode the Robot API may report wrong colors

JDK-8302491

NoClassDefFoundError omits the original cause of an error

JDK-8302191

Performance degradation for float/double modulo on Linux

JDK-8296412

Special case infinite loops with unmerged backedges in IdealLoopTree::check_safepts

JDK-8305113

(tz) Update Timezone Data to 2023c

JDK-8305766

ProblemList runtime/CompressedOops/CompressedClassPointers.java

JDK-8296318

use-def assert: special case undetected loops nested in infinite loops

JDK-8298568

Fastdebug build fails after JDK-8296389

JDK-8303069

Memory leak in CompilerOracle::parse_from_line

JDK-8201516

DebugNonSafepoints generates incorrect information

JDK-8303564

C2: “Bad graph detected in build_loop_late” after a CMove is wrongly split thru phi

JDK-8301338

Identical branch conditions in CompileBroker::print_heapinfo

JDK-8299570

[JVMCI] Insufficient error handling when CodeBuffer is exhausted

JDK-8303508

Vector.lane() gets wrong value on x86

JDK-8304683

Memory leak in WB_IsMethodCompatible

JDK-8303511

C2: assert(get_ctrl(n) == cle_out) during unrolling

JDK-8301491

C2: java.lang.StringUTF16::indexOfChar intrinsic called with negative character argument

JDK-8290822

C2: assert in PhaseIdealLoop::do_unroll() is subject to undefined behavior

JDK-8300590

[JVMCI] BytecodeFrame.equals is broken

JDK-8289748

C2 compiled code crashes with SIGFPE with -XX:+StressLCM and -XX:+StressGCM

JDK-8299959

C2: CmpU::Value must filter overflow computation against local sub computation

JDK-8300079

SIGSEGV in LibraryCallKit::inline_string_copy due to constant NULL src argument

JDK-8302595

use-after-free related to GraphKit::clone_map

JDK-8302594

use-after-free in Node::destruct

JDK-8297730

C2: Arraycopy intrinsic throws incorrect exception

JDK-8302172

[JVMCI] HotSpotResolvedJavaMethodImpl.canBeInlined must respect ForceInline

JDK-8300823

UB: Compile::_phase_optimize_finished is initialized too late

JDK-8296389

C2: PhaseCFG::convert_NeverBranch_to_Goto must handle both orders of successors

JDK-8299259

C2: Div/Mod nodes without zero check could be split through iv phi of loop resulting in SIGFPE

JDK-8299179

ArrayFill with store on backedge needs to reduce length by 1

JDK-8304871

Use default visibility for static library builds

JDK-8304671

javac regression: Compilation with –release 8 fails on underscore in enum identifiers

JDK-8303102

jcmd: ManagementAgent.status truncates the text longer than O_BUFLEN

JDK-8227257

javax/swing/JFileChooser/4847375/bug4847375.java fails with AssertionError

JDK-8302976

C2 intrinsification of Float.floatToFloat16 and Float.float16ToFloat yields different result than the interpreter

JDK-8301998

Update HarfBuzz to 7.0.1

JDK-8300692

GCC 12 reports some compiler warnings in bundled freetype

JDK-8303937

Corrupted heap dumps due to missing retries for os::write()

JDK-8303440

The “ZonedDateTime.parse” may not accept the “UTC+XX” zone id

JDK-8282201

Consider removal of expiry check in VerifyCACerts.java test

JDK-8303186

Missing Classpath exception from Continuation.c

JDK-8303906

Update jdk20u fix version to 20.0.2

ON THIS PAGE