The full version string for this update release is 17.0.3+7. The version number is 17.
Liberica JDK 17.0.3+7
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.3 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 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
Issues fixed
Issue | Description |
---|---|
JDK-8281089 | JavaFX built with VS2019 and jlinked into JDK 11.x fails to start |
JDK-8280490 | Change JavaFX release version in jfx17u to 17.0.3 |
JDK-8278260 | JavaFX shared libraries not stripped on Linux or macOS |
JDK-8277457 | AccessControlException: access denied (“java.net.NetPermission” “getCookieHandler”) |
JDK-8242544 | CMD+ENTER key event crashes the application when invoked on dialog |
JDK-8203463 | [Accessibility, Narrator] NPE in TableView |
JDK-8197991 | Selecting many items in a TableView is very slow |
JDK-8282099 | Cherry-pick WebKit 613.1 stabilization fixes (2) |
JDK-8281711 | Cherry-pick WebKit 613.1 stabilization fixes |
JDK-8281459 | WebKit 613.1 build broken on M1 |
JDK-8278980 | Update WebKit to 613.1 |
JDK-8274221 | More definite BER encodings |
JDK-8272261 | Improve JFR recording file processing |
JDK-8272255 | Completely handle MIDI files |
JDK-8284548 | Unexpected StringIndexOutOfBoundsException can occur for invalid XPath expressions after JDK-8270504 |
JDK-8282397 | createTempFile method of java.io.File is failing when called with suffix of spaces character |
JDK-8278798 | Improve supported intrinsic |
JDK-8278356 | Improve file creation |
JDK-8272594 | Better record of recordings |
JDK-8269938 | Enhance XML processing passes redux |
JDK-8284920 | Incorrect Token type causes XPath expression to return empty result |
JDK-8282300 | Throws NamingException instead of InvalidNameException after JDK-8278972 |
JDK-8281388 | Change wrapping of EncryptedPrivateKeyInfo |
JDK-8278972 | Improve URL supports |
JDK-8278805 | Enhance BMP image loading |
JDK-8278449 | Improve keychain support |
JDK-8277672 | Better invocation handler handling |
JDK-8277233 | Improve ECDSA signature support |
JDK-8277227 | Better identification of OIDs |
JDK-8275151 | Improved Object Identification |
JDK-8272588 | Enhanced recording parsing |
JDK-8270504 | Better Xpath expression handling |
JDK-8282761 | XPathFactoryImpl remove setProperty and getProperty methods |
JDK-8277795 | ldap connection timeout not honoured under contention |
JDK-8276141 | XPathFactory set/getProperty method |
JDK-8274471 | Add support for RSASSA-PSS in OCSP Response |
JDK-8282219 | jdk/java/lang/ProcessBuilder/Basic.java fails on AIX |
JDK-8279669 | test/jdk/com/sun/jdi/TestScaffold.java uses wrong condition |
JDK-8276841 | Add support for Visual Studio 2022 |
JDK-8272866 | java.util.random package summary contains incorrect mixing function in table |
JDK-8272996 | JNDI DNS provider fails to resolve SRV entries when IPV6 stack is enabled |
JDK-8278185 | Custom JRE cannot find non-ASCII named module inside |
JDK-8281460 | Let ObjectMonitor have its own NMT category |
JDK-8278163 | –with-cacerts-src variable resolved after GenerateCacerts recipe setup |
JDK-8277383 | VM.metaspace optionally show chunk freelist details |
JDK-8271721 | Split gc/g1/TestMixedGCLiveThreshold into separate tests |
JDK-8277488 | Add expiry exception for Digicert (geotrustglobalca) expiring in May 2022 |
JDK-8270117 | Broken jtreg link in “Building the JDK” page |
JDK-8279695 | [TESTBUG] modify compiler/loopopts/TestSkeletonPredicateNegation.java to run on C1 also |
JDK-8278080 | Add –with-cacerts-src=‘user cacerts folder’ to enable deterministic cacerts generation |
JDK-8277762 | Allow configuration of HOTSPOT_BUILD_USER |
JDK-8274524 | SSLSocket.close() hangs if it is called during the ssl handshake |
JDK-8278346 | java/nio/file/Files/probeContentType/Basic.java fails on Linux SLES15 machine |
JDK-8274171 | java/nio/file/Files/probeContentType/Basic.java failed on “Content type” mismatches |
JDK-8274562 | (fs) UserDefinedFileAttributeView doesn’t correctly determine if supported when using OverlayFS |
JDK-8273655 | content-types.properties files are missing some common types |
JDK-8279385 | [test] Adjust sun/security/pkcs12/KeytoolOpensslInteropTest.java after 8278344 |
JDK-8280373 | Update Xalan serializer / SystemIDResolver to align with JDK-8270492 |
JDK-8272541 | Incorrect overflow test in Toom-Cook branch of BigInteger multiplication |
JDK-8278951 | containers/cgroup/PlainRead.java fails on Ubuntu 21.10 |
JDK-8272600 | (test) Use native “sleep” in Basic.java |
JDK-8271199 | Mutual TLS handshake fails signing client certificate with custom sensitive PKCS11 key |
JDK-8277299 | STACK_OVERFLOW in Java_sun_awt_shell_Win32ShellFolder2_getIconBits |
JDK-8281061 | [s390] JFR runs into assertions while validating interpreter frames |
JDK-8275330 | C2: assert(n→is_Root() || n→is_Region() || n→is_Phi() || n→is_MachMerge() || def_block→dominates(block)) failed: uses must be dominated by definitions |
JDK-8190748 | java/text/Format/DateFormat/DateFormatTest.java and NonGregorianFormatTest fail intermittently |
JDK-8274750 | java/io/File/GetXSpace.java failed: ‘/dev’: 191488 != 190976 |
JDK-8273387 | remove some unreferenced gtk-related functions |
JDK-8279702 | [macosx] ignore xcodebuild warnings on M1 |
JDK-8277180 | Intrinsify recursive ObjectMonitor locking for C2 x64 and A64 |
JDK-8277449 | compiler/vectorapi/TestLongVectorNeg.java fails with release VMs |
JDK-8275643 | C2’s unaryOp vector intrinsic does not properly handle LongVector.neg |
JDK-8271056 | C2: “assert(no_dead_loop) failed: dead loop detected” due to cmoving identity |
JDK-8275847 | Scheduling fails with “too many D-U pinch points” on small method |
JDK-8274944 | AppCDS dump causes SEGV in VM thread while adjusting lambda proxy class info |
JDK-8275874 | [JVMCI] only support aligned reads in c2v_readFieldValue |
JDK-8271506 | Add ResourceHashtable support for deleting selected entries |
JDK-8278381 | [GCC 11] Address::make_raw() does not initialize rspec |
JDK-8279124 | VM does not handle SIGQUIT during initialization |
JDK-8277497 | Last column cell in the JTable row is read as empty cell |
JDK-8278604 | SwingSet2 table demo does not have accessible description set for images |
JDK-8278526 | [macos] Screen reader reads SwingSet2 JTable row selection as null, dimmed row for last column |
JDK-8275645 | [JVMCI] avoid unaligned volatile reads on AArch64 |
JDK-8280414 | Memory leak in DefaultProxySelector |
JDK-8273381 | Assert in PtrQueueBufferAllocatorTest.stress_free_list_allocator_vm |
JDK-8269616 | serviceability/dcmd/framework/VMVersionTest.java fails with Address already in use error |
JDK-8280155 | [PPC64, s390] frame size checks are not yet correct |
JDK-8279924 | [PPC64, s390] implement frame::is_interpreted_frame_valid checks |
JDK-8280526 | x86_32 Math.sqrt performance regression with -XX:UseSSE= |
JDK-8279076 | C2: Bad AD file when matching SqrtF with UseSSE=0 |
JDK-8279445 | Update JMH devkit to 1.34 |
JDK-8274753 | ZGC: SEGV in MetaspaceShared::link_shared_classes |
JDK-8274935 | dumptime_table has stale entry |
JDK-8251216 | Implement MD5 intrinsics on AArch64 |
JDK-8278241 | Implement JVM SpinPause on linux-aarch64 |
JDK-8275608 | runtime/Metaspace/elastic/TestMetaspaceAllocationMT2 too slow |
JDK-8276057 | Update JMH devkit to 1.33 |
JDK-8275082 | Update XML Security for Java to 2.3.0 |
JDK-8177814 | jdk/editpad is not in jdk TEST.groups |
JDK-8253197 | vmTestbase/nsk/jvmti/StopThread/stopthrd007/TestDescription.java fails with “ERROR: DebuggeeSleepingThread: ThreadDeath lost” |
JDK-8236505 | Mark jdk/editpad/EditPadTest.java as @headful |
JDK-8272553 | several hotspot runtime/CommandLine tests don’t check exit code |
JDK-8275687 | runtime/CommandLine/PrintTouchedMethods test shouldn’t catch RuntimeException |
JDK-8278344 | sun/security/pkcs12/KeytoolOpensslInteropTest.java test fails because of different openssl output |
JDK-8273972 | Multi-core choke point in CMM engine (LCMSTransform.doTransform) |
JDK-8273438 | Enable parallelism in vmTestbase/metaspace/stressHierarchy tests |
JDK-8278389 | SuspendibleThreadSet::_suspend_all should be volatile/atomic |
JDK-8273433 | Enable parallelism in vmTestbase_nsk_sysdict tests |
JDK-8277503 | compiler/onSpinWait/TestOnSpinWaitAArch64DefaultFlags.java failed with “OnSpinWaitInst with the expected value ‘isb’ not found.” |
JDK-8277137 | Set OnSpinWaitInst/OnSpinWaitInstCount defaults to “isb”/1 for Arm Neoverse N1 |
JDK-8273341 | Update Siphash to version 1.0 |
JDK-8269032 | Stringdedup tests are failing if the ergonomically select GC does not support it |
JDK-8186670 | Implement _onSpinWait() intrinsic for AArch64 |
JDK-8276766 | Enable jar and jmod to produce deterministic timestamped content |
JDK-8279453 | Disable tools/jar/ReproducibleJar.java on 32-bit platforms |
JDK-8279998 | PPC64 debug builds fail with “untested: RangeCheckStub: predicate_failed_trap_id” |
JDK-8280002 | jmap -histo may leak stream |
JDK-8277069 | [REDO] JDK-8276743 Make openjdk build Zip Archive generation “reproducible” |
JDK-8279833 | Loop optimization issue in String.encodeUTF8_UTF16 |
JDK-8273277 | C2: Move conditional negation into rc_predicate |
JDK-8279412 | [JVMCI] failed speculations list must outlive any nmethod that refers to it |
JDK-8271202 | C1: assert(false) failed: live_in set of first block must be empty |
JDK-8263567 | gtests don’t terminate the VM safely |
JDK-8269206 | A small typo in comment in test/lib/sun/hotspot/WhiteBox.java |
JDK-8278309 | [windows] use of uninitialized OSThread::_state |
JDK-8274506 | TestPids.java and TestPidsLimit.java fail with podman run as root |
JDK-8276764 | Enable deterministic file content ordering for Jar and Jmod |
JDK-8273967 | gtest os.dll_address_to_function_and_library_name_vm fails on macOS12 |
JDK-8273366 | [testbug] javax/swing/UIDefaults/6302464/bug6302464.java fails on macOS12 |
JDK-8277846 | Implement fast-path for ASCII-compatible CharsetEncoders on ppc64 |
JDK-8273526 | Extend the OSContainer API pids controller with pids.current |
JDK-8269849 | vmTestbase/gc/gctests/PhantomReference/phantom002/TestDescription.java failed with “OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects” |
JDK-8269087 | CheckSegmentedCodeCache test fails in an emulated-client VM |
JDK-8278871 | [JVMCI] assert((uint)reason < 2* _trap_hist_limit) failed: oob |
JDK-8277447 | Hotspot C1 compiler crashes on Kotlin suspend fun with loop |
JDK-8279505 | Update documentation for RETRY_COUNT and REPEAT_COUNT |
JDK-8225559 | assertion error at TransTypes.visitApply |
JDK-8276654 | element-list order is non deterministic |
JDK-8279300 | [arm32] SIGILL when running GetObjectSizeIntrinsicsTest |
JDK-8273682 | Upgrade Jline to 3.20.0 |
JDK-8278758 | runtime/BootstrapMethod/BSMCalledTwice.java fails with release VMs after JDK-8262134 |
JDK-8262134 | compiler/uncommontrap/TestDeoptOOM.java failed with “guarantee(false) failed: wrong number of expression stack elements during deopt” |
JDK-8269037 | jsig/Testjsig.java doesn’t have to be restricted to linux only |
JDK-8269523 | runtime/Safepoint/TestAbortOnVMOperationTimeout.java failed when expecting ‘VM operation took too long’ |
JDK-8244602 | Add JTREG_REPEAT_COUNT to repeat execution of a test |
JDK-8272398 | Update DockerTestUtils.buildJdkDockerImage() |
JDK-8278384 | Bytecodes::result_type() for arraylength returns T_VOID instead of T_INT |
JDK-8278020 | ~13% variation in Renaissance-Scrabble |
JDK-8279225 | [arm32] C1 longs comparison operation destroys argument registers |
JDK-8266490 | Extend the OSContainer API to support the pids controller of cgroups |
JDK-8279379 | GHA: Print tests that are in error |
JDK-8278987 | RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in write_sample_info |
JDK-8278627 | Shenandoah: TestHeapDump test failed |
JDK-8278824 | Uneven work distribution when scanning heap roots in G1 |
JDK-8278239 | vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine failed with EXCEPTION_ACCESS_VIOLATION at 0x000000000000000d |
JDK-8277919 | OldObjectSample event causing bloat in the class constant pool in JFR recording |
JDK-8277342 | vmTestbase/nsk/stress/strace/strace004.java fails with SIGSEGV in InstanceKlass::jni_id_for |
JDK-8278104 | C1 should support the compiler directive ‘BreakAtExecute’ |
JDK-8274465 | Fix javax/swing/text/ParagraphView/6364882/bug6364882.java failures |
JDK-8273933 | [TESTBUG] Test must run without preallocated exceptions |
JDK-8278172 | java/nio/channels/FileChannel/BlockDeviceSize.java should only run on Linux |
JDK-8275800 | Redefinition leaks MethodData::_extra_data_lock |
JDK-8273634 | [TEST_BUG] Improve javax/swing/text/ParagraphView/6364882/bug6364882.java |
JDK-8239502 | [TEST_BUG] Test javax/swing/text/FlowView/6318524/bug6318524.java never fails |
JDK-8275326 | C2: assert(no_dead_loop) failed: dead loop detected |
JDK-8274130 | C2: MulNode::Ideal chained transformations may act on wrong nodes |
JDK-8279011 | JFR: JfrChunkWriter incorrectly handles int64_t chunk size as size_t |
JDK-8276662 | Scalability bottleneck in SymbolTable::lookup_common() |
JDK-8275536 | Add test to check that File::lastModified returns same time stamp as Files.getLastModifiedTime |
JDK-8273895 | compiler/ciReplay/TestVMNoCompLevel.java fails due to wrong data size with TieredStopAtLevel=2,3 |
JDK-8272167 | AbsPathsInImage.java should skip *.dSYM directories |
JDK-8270874 | JFrame paint artifacts when dragged from standard monitor to HiDPI monitor |
JDK-8275610 | C2: Object field load floats above its null check resulting in a segfault |
JDK-8278099 | two sun/security/pkcs11/Signature tests failed with AssertionError |
JDK-8276623 | JDK-8275650 accidentally pushed “out” file |
JDK-8277328 | jdk/jshell/CommandCompletionTest.java failures on Windows |
JDK-8277441 | CompileQueue::add fails with assert(_last→next() == __null) failed: not last |
JDK-8274714 | Incorrect verifier protected access error message |
JDK-8274658 | ISO 4217 Amendment 170 Update |
JDK-8274795 | AArch64: avoid spilling and restoring r18 in macro assembler |
JDK-8277777 | [Vector API] assert(r→is_XMMRegister()) failed: must be in x86_32.ad |
JDK-8276314 | [JVMCI] check alignment of call displacement during code installation |
JDK-8265150 | AsyncGetCallTrace crashes on ResourceMark |
JDK-8276177 | nsk/jvmti/RedefineClasses/StressRedefineWithoutBytecodeCorruption failed with “assert(def_ik→is_being_redefined()) failed: should be being redefined to get here” |
JDK-8275650 | Problemlist java/io/File/createTempFile/SpecialTempFile.java for Windows 11 |
JDK-8273704 | DrawStringWithInfiniteXform.java failed : drawString with InfiniteXform transform takes long time |
JDK-8273162 | AbstractSplittableWithBrineGenerator does not create a random salt |
JDK-8273351 | bad tag in jdk.random module-info.java |
JDK-8247980 | Exclusive execution of java/util/stream tests slows down tier1 |
JDK-8272327 | Shenandoah: Avoid enqueuing duplicate string candidates |
JDK-8278115 | gc/stress/gclocker/TestGCLockerWithSerial.java has duplicate -Xmx |
JDK-8278116 | runtime/modules/LoadUnloadModuleStress.java has duplicate -Xmx |
JDK-8277992 | Add fast jdk_svc subtests to jdk:tier3 |
JDK-8278016 | Add compiler tests to tier |
JDK-8277385 | Zero: Enable CompactStrings support |
JDK-8275586 | Zero: Simplify interpreter initialization |
JDK-8269175 | [macosx-aarch64] wrong CPU speed in hs_err file |
JDK-8278822 | Bump update version for OpenJDK: jdk-17.0.3 |