Liberica JDK 17.0.4+8 Release Notes

The full version string for this update release is 17.0.4+8. The version number is 17.

Liberica JDK 17.0.4+8

Liberica is a certified, Java SE 17-compliant distribution of OpenJDK 17 which works on server (Linux x86_64, Linux ARM64, Solaris SPARC, Solaris x64, 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 17.
  • Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.

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

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

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

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 17 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 17 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 17 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

Issues fixed

Issue Description
8284370 Improve zlib usage
8272243 Improve DER parsing
8281866 Enhance MethodHandle invocations
8285407 Improve Xalan supports
8283190 Improve MIDI processing
8281859 Improve class compilation
8272249 Better properties of loaded Properties
8277608 Address IP Addressing
8285515 (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4
8287109 failed with CertificateExpiredException
8286855 javac error on invalid jar should only print filename
8287162 (zipfs) Performance regression related to support for POSIX file permissions
8286594 (zipfs) Mention paths with dot elements in ZipException and cleanups
8286444 javac errors after JDK-8251329 are not helpful enough to find root cause
8287378 GHA: Update cygwin to fix issues in langtools tests on Windows
8284661 Reproducible assembly builds without relative linking
8284094 Memory leak in invoker_completeInvokeRequest()
8284437 Building from different users/workspace is not always deterministic
8287362 FieldAccessWatch testcase failed on AIX platform
8282422 JTable.print() failed with UnsupportedCharsetException on AIX ko_KR locale
8287336 GHA: Workflows break on patch versions
8283315 jrt-fs.jar not always deterministically built
8285397 JNI exception pending in CUPSfuncs.c:250
8181571 printing to CUPS fails on mac sandbox app
8287119 Add to ProblemList
8286601 Mac Aarch: Excessive warnings to be ignored for build jdk
8139173 [macosx] JInternalFrame shadow is not properly drawn
8285523 Improve test java/io/FileOutputStream/
8209776 Refactor jdk/security/JavaDotSecurity/ to plain java test
8240756 [macos] SwingSet2:TableDemo:Printed Japanese characters were garbled
8283469 Don't use memset to initialize members in FileMapInfo and fix memory leak
8286293 Tests ShortResponseBody and ShortResponseBodyWithRetry should use less resources
8236136 tests which use CompilationMode shouldn't be run w/ TieredStopAtLevel
8285686 Update FreeType to 2.12.0
8285728 Alpine Linux build fails with busybox tar
8284758 [linux] improve print_container_info
8284754 print more interesting env variables in hs_err and
8283323 libharfbuzz optimization level results in extreme build times
8286198 [linux] Fix process-memory information
8285956 (fs) Excessive default poll interval in PollingWatchService
8280593 [PPC64, S390] redundant allocation of MacroAssembler in StubGenerator ctor
8274687 JDWP deadlocks if some Java thread reaches wait in blockOnDebuggerSuspend
8268773 Improvements related to: Failed to start thread - pthread_create failed (EAGAIN)
8282008 Incorrect handling of quoted arguments in ProcessBuilder
8284848 C2: Compiler blackhole arguments should be treated as globally escaping
8285921 serviceability/dcmd/jvmti/AttachFailed/ fails on Alpine
8206187 javax/management/remote/mandatory/connection/ fails with Port already in use
8286013 Incorrect test configurations for compiler/stable/
8284992 Fix misleading Vector API doc for LSHR operator
8285828 runtime/execstack/ fails with zipped debug symbols
8285727 [11u, 17u] Unify fix for JDK-8284920 with version from head
8285726 [11u, 17u] Unify fix for JDK-8284548 with version from head
8282929 Localized monetary symbols are not reflected in toLocalizedPattern return value
8286029 Add classpath exemption to globals_vectorApiSupport_***
8284023 java.sun.awt.X11GraphicsDevice.getDoubleBufferVisuals() leaks XdbeScreenVisualInfo
8284532 Memory leak in BitSet::BitMapFragmentTable in JFR leak profiler
8282170 JVMTI SetBreakpoint metaspace allocation test
8285394 Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id()
8284549 JFR: FieldTable leaks FieldInfoTable member
8284620 CodeBuffer may leak _overflow_arena
8274735 javax.imageio.IIOException: Unsupported Image Type while processing a valid JPEG image
8279529 ProblemList java/nio/channels/DatagramChannel/ on macosx-aarch64
8279532 ProblemList sun/security/ssl/SSLSessionImpl/
8282293 Domain value for system property jdk.https.negotiate.cbt should be case-insensitive
8279842 HTTPS Channel Binding support for Java GSS/Kerberos
8280684 JfrRecorderService failes with guarantee(num_written > 0) when no space left on device.
8285445 cannot open file "NUL:"
8284458 CodeHeapState::aggregate() leaks blob_name
8284866 Add test to JDK-8273056
8278519 serviceability/jvmti/FieldAccessWatch/ failed "assert(handle != __null) failed: JNI handle should not be null"
8277396 [TESTBUG] In, frame is accessed from main thread
8273095 vmTestbase/vm/mlvm/anonloader/stress/oome/heap/ fails with "wrong OOME"
8282142 [TestCase] compiler/inlining/ will fail when --with-jvm-features=-compiler1
8285342 Zero build failure with clang due to values not handled in switch
8284622 Update versions of some Github Actions used in JDK workflow
8283422 Create a new test for JDK-8254790
8279597 [TESTBUG] fails with -XX:TieredStopAtLevel=1 on machines with many cores
8284884 Replace polling with waiting in javax/swing/text/html/parser/Parser/8078268/
8284033 Leak XVisualInfo in getAllConfigs in awt_GraphicsEnv.c
8283725 Launching java with "-Xlog:gc*=trace,safepoint*=trace,class*=trace" crashes the JVM
8279520 SPNEGO has not passed channel binding info into the underlying mechanism
8284507 GHA: Only check test results if testing was not skipped
8284603 [17u] Update Boot JDK used in GHA to 17.0.2
8284389 Improve stability of GHA Pre-submit testing by caching cygwin installer
8276863 Remove test/jdk/sun/security/ec/
8283217 Leak FcObjectSet in getFontConfigLocations() in fontpath.c
8279822 CI: Constant pool entries in error state are not supported
8276880 Remove java/lang/RuntimeTests/exec/ExecWithDir as unnecessary
8284369 TestFailedAllocationBadGraph fails with -XX:TieredStopAtLevel < 4
8283279 [Testbug] Improve TestGetSwapSpaceSize
8283347 [macos] Bad JNI lookup accessibilityHitTest is shown when Screen magnifier is enabled
8283187 C2: loop candidate for superword not always unrolled fully if superword fails
8281822 Test failures on non-DTrace builds due to incomplete DTrace* flags handling
8280940 gtest os.release_multi_mappings_vm is racy
8281522 Rename ADLC classes which have the same name as hotspot variants
8282382 Report glibc malloc tunables in error reports
8274939 Incorrect size of the pixel storage is used by the robot on macOS
8282887 Potential memory leak in sun.util.locale.provider.HostLocaleProviderAdapterImpl.getNumberPattern() on Windows
8282628 Potential memory leak in sun.font.FontConfigManager.getFontConfig()
8283497 [windows] print TMP and TEMP in hs_err and
8283249 fails on ppc with 'Narrow klass shift: 0' missing
8281450 Remove unnecessary operator new and delete from ObjectMonitor
8280941 os::print_memory_mappings() prints segment preceeding the inclusion range
8280004 DCmdArgument::parse_value() should handle NULL input
8273142 Remove dependancy of TestHttpServer, HttpTransaction, HttpCallback from open/test/jdk/sun/net/www/protocol/http/ tests
8256368 Avoid repeated upcalls into Java to re-resolve MH/VH linkers/invokers
8282590 C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes
8283641 Large value for CompileThresholdScaling causes assert
8283451 C2: assert(_base == Long) failed: Not a Long
8283834 Unmappable character for US-ASCII encoding in TestPredicateInputBelowLoopPredicate
8282592 C2: assert(false) failed: graph should be schedulable
8281811 assert(_base == Tuple) failed: Not a Tuple after JDK-8280799
8280799 РЎ2: assert(false) failed: cyclic dependency prevents range check elimination
8282312 Minor corrections to evbroadcasti32x4 intrinsic on x86
8279586 [macos] custom JCheckBox and JRadioBox with custom icon set: focus is still displayed after unchecking
8271008 appcds/*/ tests time out because of excessive GC (CodeCache GC Threshold) in loom
8282874 Bad performance on gather/scatter API caused by different IntSpecies of indexMap
8280901 MethodHandle::linkToNative stub is missing w/ -Xint
8282045 When loop strip mining fails, safepoints are removed from loop anyway
8282231 x86-32: runtime call to SharedRuntime::ldiv corrupts registers
8272908 Missing coverage for certain classes in
8272964 java/nio/file/Files/ fails with java.lang.RuntimeException: Copy was not interrupted
8272493 Suboptimal code generation around Preconditions.checkIndex intrinsic with AVX2
8283408 Fix a C2 crash when filling arrays with unsafe
8282172 CompileBroker::log_metaspace_failure is called from non-Java/compiler threads
8280867 Cpuid1Ecx feature parsing is incorrect for AMD CPUs
8280600 C2: assert(!had_error) failed: bad dominance
8271055 Crash during deoptimization with "assert(bb->is_reachable()) failed: getting result from unreachable basicblock" with -XX:+VerifyStack
8280964 [Linux aarch64] : drawImage dithers TYPE_BYTE_INDEXED images incorrectly
8272358 Some tests may fail when executed with other locales than the US
8277055 Assert "missing inlining msg" with -XX:+PrintIntrinsics
8264605 vmTestbase/nsk/jvmti/SuspendThread/suspendthrd003/ failed with "agent_tools.cpp, 471: (foundThread = (jthread) jni_env->NewGlobalRef(foundThread)) != NULL"
8279219 [REDO] C2 crash when allocating array of size too large
8281544 assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/
8283350 (tz) Update Timezone Data to 2022a
8275337 C1: assert(false) failed: live_in set of first block must be empty
8273169 java/util/regex/ failed after JDK-8271302
8271302 Regex Test Refresh
8282551 Properly initialize L32X64MixRandom state
8278794 Infinite loop in DeflaterOutputStream.finish()
8281771 Crash in java_lang_invoke_MethodType::print_signature
8270797 test is not complete
8278549 UNIX sun/font coding misses SUSE distro detection on recent distro SUSE 15
8278065 Refactor subclassAudits to use ClassValue
8280041 Retry loop issues in
8277072 ObjectStreamClass caches keep ClassLoaders alive
8255266 Update Public Suffix List to 3c213aa
8282444 Module finder incorrectly assumes default file system path-separator character
8281266 [JVMCI] MetaUtil.toInternalName() doesn't handle hidden classes correctly
8281338 NSAccessibilityPressAction action for tree node and NSAccessibilityShowMenuAcgtion action not working
8282345 handle latest VS2022 in abstract_vm_version
8281274 deal with ActiveProcessorCount in os::Linux::print_container_info
8280543 Update the "java" and "jcmd" tool specification for CDS
8193682 Infinite loop in ZipOutputStream.close()
8282583 Update BCEL md to include the copyright notice
8277922 Unable to click JCheckBox in JTable through Java Access Bridge
8249592 Robot.mouseMove moves cursor to incorrect location when display scale varies and Java runs in DPI Unaware mode
8282295 SymbolPropertyEntry::set_method_type fails with assert
8281275 Upgrading from 8 to 11 no longer accepts '/' as filepath separator in gc paths
8281262 Windows builds in different directories are not fully reproducible
8278472 Invalid value set to CANDIDATEFORM structure
8280956 Re-examine copyright headers on files in src/java.desktop/macosx/native/libawt_lwawt/awt/a11y
8265261 java/nio/file/Files/ fails with java.lang.RuntimeException: Copy was not interrupted
8280401 [sspi] gss_accept_sec_context leaves output_token uninitialized
8279227 Access Bridge: Wrong frame position and hit test result on HiDPI display
8277087 ZipException: zip END header not found at ZipFile#Source.findEND
8278851 Correct signer logic for jars signed with multiple digestalgs
8276796 gc/ large pages subtest fails with ZGC
8280476 [macOS] : hotspot arm64 bug exposed by latest clang
8214733 runtime/8176717/ timed out
8279437 [JVMCI] exception in HotSpotJVMCIRuntime.translate can exit the VM
8278186 throws StringIndexOutOfBoundsException when calling substring method
8277422 tools/jar/ fails with modified time mismatch
8277165 jdeps --multi-release --print-module-deps fails if module-info.class in different versioned directories
8277166 Data race in jdeps VersionHelper
8277123 jdeps does not report some exceptions correctly
8275037 Test vmTestbase/nsk/sysdict/vm/stress/btree/btree011/ crashes with memory exhaustion on Windows
8274751 Drag And Drop hangs on Windows
8279834 Alpine Linux fails to build when --with-source-date enabled
8281638 jfr/event/allocation tests fail with release VMs after JDK-8281318 due to lack of -XX:+UnlockDiagnosticVMOptions
8281318 Improve jfr/event/allocation tests reliability
8277893 Arraycopy stress tests
8281615 Deadlock caused by jdwp agent
8278766 Enable OpenJDK build support for reproducible jars and jmods using --date
8273139 C2: assert(f <= 1 && f >= 0) failed: Incorrect frequency
8283017 GHA: Workflows break with update release versions
8270435 UT: MonitorUsedDeflationThresholdTest failed: did not find too_many string in output
8274172 Convert JavadocTester to use NIO
8272168 some hotspot runtime/logging tests don't check exit code
8269077 TestSystemGC uses "require vm.gc.G1" for large pages subtest
8267163 Rename anonymous loader tests to hidden loader tests
8281168 Micro-optimize VarForm.getMemberName for interpreter
8279668 x86: AVX2 versions of vpxor should be asserted
8279958 Provide configure hints for Alpine/apk package managers
8276657 XSLT compiler tries to define a class with empty name
8276825 hotspot/runtime/SelectionResolution test errors
8276260 (se) Remove java/nio/channels/Selector/ from ProblemList (win)
8251904 vmTestbase/nsk/sysdict/vm/stress/btree/btree010/ fails with ClassNotFoundException: nsk.sysdict.share.BTree0LLRLRLRRLR
8268595 java/io/Serializable/serialFilter/ failed in timeout
8274244 fails on rerun
8274561 sun/net/ftp/ timed out on slow machines
8274233 Minor cleanup for ToolBox
8269373 some tests in jdk/tools/launcher/ fails on localized Windows platform
8282509 [exploded image] ResolvedClassTest fails with similar output
8282225 GHA: Allow one concurrent run per PR only
8268558 [TESTBUG] Case 2 in TestP11KeyFactoryGetRSAKeySpec is skipped
8272146 Disable Fibonacci test on memory constrained systems
8279515 C1: No inlining through invokedynamic and invokestatic call sites when resolved class is not linked
8272169 runtime/logging/ doesn't build test.Empty
8271224 runtime/EnclosingMethodAttr/ doesn't check exit code
8269753 Misplaced caret in PatternSyntaxException's detail message
8270336 [TESTBUG] Fix initialization in NonbranchyTree
8269933 test/jdk/javax/net/ssl/compatibility/JdkInfo incorrect verification of protocol and cipher support
8270837 fix typos in test
8270021 Incorrect log decorators in gc/g1/plab/
8263538 should test -Xshare:auto as well
8269135 TestDifferentProtectionDomains runs into timeout in client VM
8268906 gc/g1/mixedgc/ assumes that GCs take 1ms minimum
8263461 jdk/jfr/event/gc/detailed/ uses wrong mechanism to cause evacuation failure
8275745 Reproducible copyright headers
8279182 MakeZipReproducible ZipEntry timestamps not localized to UTC
8270468 TestRangeCheckEliminated fails because methods are not compiled
8269129 Multiple tier1 tests in hotspot/jtreg/compiler are failing for client VMs
8278948 compiler/vectorapi/reshape/ crashes in assembler
8265317 [vector] assert(payload->is_object()) failed: expected 'object' value for scalar-replaced boxed vector but got: NULL
8278966 two microbenchmarks tests fail "assert(!jvms->method()->has_exception_handlers()) failed: no exception handler expected" after JDK-8275638
8275638 GraphKit::combine_exception_states fails with "matching stack sizes" assert
8273056 java.util.random does not correctly sample exponential or Gaussian distributions
8276990 Memory leak in invoker.c fillInvokeRequest() during JDI operations
8274855 vectorapi tests failing with assert(!vbox->is_Phi()) failed
8278796 Incorrect behavior of FloatVector.withLane on X86
8278014 [vectorapi] Remove test run script
8275830 C2: Receiver downcast is missing when inlining through method handle linkers
8280123 C2: Infinite loop in CMoveINode::Ideal during IGVN
8273804 Platform.isTieredSupported should handle the no-compiler case
8279560 AArch64: generate_compare_long_string_same_encoding and LARGE_LOOP_PREFETCH alignment
8279356 Method linking fails with guarantee(mh->adapter() != NULL) failed: Adapter blob must already exist!
8279837 C2: assert(is_Loop()) failed: invalid node class: Region
8258814 Compilation logging crashes for thread suspension / debugging tests
8268231 Aarch64: Use Ldp in intrinsics for String.compareTo
8275854 C2: assert(stride_con != 0) failed: missed some peephole opt
8277906 Incorrect type for IV phi of long counted loops after CCP
8274983 C1 optimizes the invocation of private interface methods
8281043 Intrinsify recursive ObjectMonitor locking for PPC64
8282499 Bump update version for OpenJDK: jdk-17.0.4
8286261 Selection of non-expanded non-leaf treeItem grows unexpectedly when adding two-level descendants
8244234 MenuButton: NPE on removing from scene with open popup
8193442 Removing TreeItem from a TreeTableView sometime changes selectedItem 8187596: TreeView selection incorrectly changes after deleting an unselected row
8273339 IOOBE with ListChangeListener added to the selectedItems list of a TableView
8273336 Clicking a selected cell from a group of selected cells in a TableView clears the selected items list but remains selected
8282093 LineChart path incorrect when outside lower bound
8284654 Modal behavior returns to wrong stage
8271054 [REDO] Wrong stage gets focused after modal stage creation
8286256 Update libxml2 to 2.9.14 8286257: Update libxslt to 1.1.35
8285153 Change JavaFX release version to 17.0.4 in jfx17u
8284184 Crash in GraphicsContextJava::drawLinesForText on
8283869 Update attribution in file
8283328 Update libxml2 to 2.9.13
8283218 Update GStreamer to 1.20.1 8283403: Update Glib to 2.72.0
8282134 Certain regex can cause a JS trap in WebView
8281564 Update cmake to 3.22.3
8280841 Update SQLite to 3.37.2
8280840 Update libFFI to 3.4.2
8280275 JUnit5 tests using Assumptions API fail to compile in some cases
8280020 Underline and line-through not straight in WebView
8278759 PointerEvent: buttons property set to 0 when mouse down
8276553 ListView scrollTo() is broken after fix for JDK-8089589
8276174 JavaFX build fails on macOS aarch64
8276167 VirtualFlow.scrollToTop doesn't scroll to the top of the last element
8276142 Update gradle to version 7.3
8274274 Update JUnit to version 5.8.1
8274137 TableView scrollbar/header misaligned when reloading data
8273998 Clarify specification for Window properties controlled by the window manager
8270867 Debug build of WebKit 613.1 fails on Linux
8269115 WebView paste event contains old data
8255940 localStorage is null after window.close()