Liberica JDK 21.0.1+12 Release Notes

The full version string for this update release is 21.0.1+12. The version number is 21.

Liberica JDK 21.0.1+12

Liberica is a certified, Java SE 21-compliant distribution of OpenJDK 21 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 21.
  • Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.

Please refer to the Oracle JDK 21.0.1 release notes for further information on JDK 21 features. This document further outlines the peculiarities of Liberica distribution as compared to Oracle JDK 21 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 21 distribution

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

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

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 21 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 21 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 21 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 and 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
sudo ln -s


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 ID CVSS base score Component/Module Attack vector Complexity User interaction Scope Confidentiality Integrity Availability
CVE-2023-22081 5.3 security-libs/ network low none unchanged none none low
CVE-2023-22025 3.7 hotspot/compiler network high none unchanged none low none

Issues fixed

Issue Description
JDK-8240567 MethodTooLargeException thrown while creating a jlink image
JDK-8284772 GHA: Use GCC Major Version Dependencies Only
JDK-8286503 Enhance security classes
JDK-8293114 JVM should trim the native heap
JDK-8296581 Better system proxy support
JDK-8297856 Improve handling of Bidi characters
JDK-8299658 C1 compilation crashes in LinearScan::resolve_exception_edge
JDK-8302017 Allocate BadPaddingException only if it will be thrown
JDK-8303815 Improve Metaspace test speed
JDK-8304008 Update and for jfx update repos
JDK-8304954 SegmentedCodeCache fails when using large pages
JDK-8307766 Linux: Provide the option to override the timer slack
JDK-8308042 [macos] Developer ID Application Certificate not picked up by jpackage if it contains UNICODE characters
JDK-8308047 java/util/concurrent/ScheduledThreadPoolExecutor/ timed out and also had jcmd pipe errors
JDK-8308184 Launching java with large number of jars in classpath with java.protocol.handler.pkgs system property set can lead to StackOverflowError
JDK-8308474 DSA does not reset SecureRandom when initSign is called again
JDK-8308609 java/lang/ScopedValue/ fails with "-XX:-VMContinuations"
JDK-8309032 jpackage does not work for module projects unless --module-path is specified
JDK-8309088 security/infra/java/security/cert/CertPathValidator/certification/ fails
JDK-8309214 sun/security/pkcs11/KeyStore/ fails after 8301154
JDK-8309475 Test java/foreign/ fails: a problem with msync (aix)
JDK-8309502 RISC-V: String.indexOf intrinsic may produce misaligned memory loads
JDK-8309591 Socket.setOption(TCP_QUICKACK) uses wrong level
JDK-8309746 Reconfigure check should include make/conf/version-numbers.conf
JDK-8309889 [s390] Missing return statement after calling jump_to_native_invoker method in generate_method_handle_dispatch.
JDK-8309966 Enhanced TLS connections
JDK-8310106 incorrectly checks handshakeConsumers
JDK-8310171 Bump version numbers for 21.0.1
JDK-8310211 serviceability/jvmti/thread/GetStackTrace/getstacktr03/ failing
JDK-8310233 Fix THP detection on Linux
JDK-8310268 RISC-V: misaligned memory access in String.Compare intrinsic
JDK-8310321 make JDKOPT_CHECK_CODESIGN_PARAMS more verbose
JDK-8310586 ProblemList java/lang/ScopedValue/ with virtual threads on linux-all
JDK-8310681 Update WebKit to 616.1
JDK-8310687 JDK-8303215 is incomplete
JDK-8310873 Re-enable locked_create_entry symbol check in runtime/NMT/ for RISC-V
JDK-8311026 Some G1 specific tests do not set -XX:+UseG1GC
JDK-8311033 [macos] PrinterJob does not take into account Sides attribute
JDK-8311097 Synchron XMLHttpRequest not receiving data
JDK-8311160 [macOS, Accessibility] VoiceOver: No announcements on JRadioButtonMenuItem and JCheckBoxMenuItem
JDK-8311249 Remove unused MemAllocator::obj_memory_range
JDK-8311285 report some fontconfig related environment variables in hs_err file
JDK-8311511 Improve description of NativeLibrary JFR event
JDK-8311592 ECKeySizeParameterSpec causes too many exceptions on third party providers
JDK-8311682 Change milestone to fcs for all releases
JDK-8311862 RISC-V: small improvements to shift immediate instructions
JDK-8311917 MAP_FAILED definition seems to be obsolete in src/java.desktop/unix/native/common/awt/fontpath.c
JDK-8311921 Inform about MaxExpectedDataSegmentSize in case of pthread_create failures on AIX
JDK-8311923 fails on RISC-V
JDK-8311926 java/lang/ScopedValue/ takes 9mins in tier1
JDK-8311955 c++filt is now ibm-llvm-cxxfilt when using xlc17 / clang on AIX
JDK-8311981 Test gc/stringdedup/ timed out
JDK-8312127 FileDescriptor.sync should temporarily increase parallelism
JDK-8312128 Change JavaFX release version to 21.0.1 in jfx21u
JDK-8312180 (bf) MappedMemoryUtils passes incorrect arguments to msync (aix)
JDK-8312182 THPs cause huge RSS due to thread start timing issue
JDK-8312248 Enhanced archival support redux
JDK-8312394 [linux] SIGSEGV if kernel was built without hugepage support
JDK-8312395 Improve assertions in growableArray
JDK-8312401 SymbolTable::do_add_if_needed hangs when called in InstanceKlass::add_initialization_error path with requesting length exceeds max_symbol_length
JDK-8312489 Increase jdk.jar.maxSignatureFileSize default which is too low for JARs such as WhiteSource/Mend unified agent jar
JDK-8312525 New test runtime/os/ is failing: did not see the expected RSS reduction
JDK-8312535 MidiSystem.getSoundbank() throws unexpected SecurityException
JDK-8312555 Ideographic characters aren't stretched by AffineTransform.scale(2, 1)
JDK-8312573 Failure during CompileOnly parsing leads to ShouldNotReachHere
JDK-8312585 Rename DisableTHPStackMitigation flag to THPStackMitigation
JDK-8312591 GCC 6 build failure after JDK-8280982
JDK-8312619 Strange error message when switching over long
JDK-8312620 WSL Linux build crashes after JDK-8310233
JDK-8312625 Test serviceability/dcmd/vm/ failed: RSS use increased
JDK-8312909 C1 should not inline through interface calls with non-subtype receiver
JDK-8312976 MatchResult produces StringIndexOutOfBoundsException for groups outside match
JDK-8312984 javac may crash on a record pattern with too few components
JDK-8313081 MonitoringSupport_lock should be unconditionally initialized after 8304074
JDK-8313177 Web Workers timeout with Webkit 616.1
JDK-8313181 Enabling modern media controls on webkit 616.1 does not load button images on HTML5 video Element
JDK-8313248 C2: setScopedValueCache intrinsic exposes nullptr pre-values to store barriers
JDK-8313262 C2: Sinking node may cause required cast to be dropped
JDK-8313307 java/util/Formatter/ fails on some Locales
JDK-8313312 Add missing classpath exception copyright header
JDK-8313323 javac -g on a java file which uses unnamed variable leads to ClassFormatError when launching that class
JDK-8313402 C1: Incorrect LoadIndexed value numbering
JDK-8313428 GHA: Bump GCC versions for July 2023 updates
JDK-8313576 GCC 7 reports compiler warning in bundled freetype 2.13.0
JDK-8313602 increase timeout for jdk/classfile/
JDK-8313626 C2 crash due to unexpected exception control flow
JDK-8313657 com.sun.jndi.ldap.Connection.cleanup does not close connections on SocketTimeoutErrors
JDK-8313676 Amend TestLoadIndexedMismatch test to target intrinsic directly
JDK-8313678 SymbolTable can leak Symbols during cleanup
JDK-8313691 use close after failing os::fdopen in vmError and ciEnv
JDK-8313701 GHA: RISC-V should use the official repository for bootstrap
JDK-8313707 GHA: Bootstrap sysroots with --variant=minbase
JDK-8313711 Cherry-pick WebKit 616.1 stabilization fixes
JDK-8313752 InstanceKlassFlags::print_on doesn't print the flag names
JDK-8313765 Invalid CEN header (invalid zip64 extra data field size)
JDK-8313796 AsyncGetCallTrace crash on unreadable interpreter method pointer
JDK-8313856 Replace VLA with malloc in pango
JDK-8313874 JNI NewWeakGlobalRef throws exception for null arg
JDK-8313900 Possible NULL pointer access in NativeAudioSpectrum and NativeVideoBuffer
JDK-8313901 [TESTBUG] test/hotspot/jtreg/compiler/codecache/ fails with java.lang.VirtualMachineError
JDK-8313904 [macos] All signing tests which verifies unsigned app images are failing
JDK-8314020 Print instruction blocks in byte units
JDK-8314024 SIGSEGV in PhaseIdealLoop::build_loop_late_post_work due to bad immediate dominator info
JDK-8314063 The socket is not closed in Connection::createSocket when the handshake failed for LDAP connection
JDK-8314117 RISC-V: Incorrect VMReg encoding in
JDK-8314118 Update JMH devkit to 1.37
JDK-8314139 TEST_BUG: runtime/os/ could fail on machine with large number of cores
JDK-8314144 gc/g1/ihop/ fails due to extra concurrent mark with -Xcomp
JDK-8314212 Crash when loading in WebView
JDK-8314216 Case enumConstant, pattern compilation fails
JDK-8314262 GHA: Cut down cross-compilation sysroots deeper
JDK-8314423 Multiple patterns without unnamed variables
JDK-8314426 runtime/os/ is failing on slow machines
JDK-8314501 Shenandoah: sun/tools/jhsdb/heapconfig/ fails
JDK-8314517 some tests fail in case ipv6 is disabled on the machine
JDK-8314618 RISC-V: -XX:MaxVectorSize does not work as expected
JDK-8314649 Enhanced archival support redux
JDK-8314656 GHA: No need for Debian ports keyring installation after JDK-8313701
JDK-8314679 SA fails to properly attach to JVM after having just detached from a different JVM
JDK-8314730 GHA: Drop libfreetype6-dev transitional package in favor of libfreetype-dev
JDK-8314850 SharedRuntime::handle_wrong_method() gets called too often when resolving Continuation.enter
JDK-8314960 Add Certigna Root CA - 2
JDK-8315020 The macro definition for LoongArch64 zero build is not accurate.
JDK-8315051 jdk/jfr/jvm/ fails with non-JVMCI GCs
JDK-8315534 Incorrect warnings about implicit annotation processing
JDK-8315657 Application window not activated in macOS 14 Sonoma
JDK-8316879 RegionMatches1Tests fails if CompactStrings are disabled after JDK-8302163
JDK-8317121 vector_masked_load instruction is moved too early after JDK-8286941