The full version string for this update release is 18.0.2+10. The version number is 18.
Liberica JDK 18.0.2+10
Liberica is a certified, Java SE 18-compliant distribution of OpenJDK 18 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 18.
-
Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.
Please refer to the Oracle JDK 18.0.2 release notes for further information on JDK 18 features. This document further outlines the peculiarities of Liberica distribution as compared to Oracle JDK 18 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 18 distribution
Liberica JDK 18 are distributed as .rpm, .zip, .deb and .tar.gz packages. Please select the one which is most appropriate for your purposes.
Liberica JDK 18 introduced all new features supported by OpenJDK 18.
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 18 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 18 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 18 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-8287175 | Backout 8270480: Better path to expressing Xpaths |
JDK-8285407 | Improve Xalan supports |
JDK-8285515 | (dc) DatagramChannel.disconnect fails with “Invalid argument” on macOS 12.4 |
JDK-8287644 | [18u] Backport of JDK-8240903 causes test errors |
JDK-8286855 | javac error on invalid jar should only print filename |
JDK-8282080 | Lambda deserialization fails for Object method references on interfaces |
JDK-8285517 | System.getenv() returns unexpected value if environment variable has non ASCII character |
JDK-8287378 | GHA: Update cygwin to fix issues in langtools tests on Windows |
JDK-8286594 | (zipfs) Mention paths with dot elements in ZipException and cleanups |
JDK-8286444 | javac errors after JDK-8251329 are not helpful enough to find root cause |
JDK-8284094 | Memory leak in invoker_completeInvokeRequest() |
JDK-8287162 | (zipfs) Performance regression related to support for POSIX file permissions |
JDK-8240903 | Add test to check that jmod hashes are reproducible |
JDK-8287336 | GHA: Workflows break on patch versions |
JDK-8287119 | Add Distrust.java to ProblemList |
JDK-8287202 | GHA: Add macOS aarch64 to the list of default platforms for workflow_dispatch event |
JDK-8286029 | Add classpath exemption to globals_vectorApiSupport_***.S.inc |
JDK-8285956 | (fs) Excessive default poll interval in PollingWatchService |
JDK-8282676 | Improve subject handling |
JDK-8286601 | Mac Aarch: Excessive warnings to be ignored for build jdk |
JDK-8285523 | Improve test java/io/FileOutputStream/OpenNUL.java |
JDK-8283469 | Don’t use memset to initialize members in FileMapInfo and fix memory leak |
JDK-8285921 | serviceability/dcmd/jvmti/AttachFailed/AttachReturnError.java fails on Alpine |
JDK-8286283 | assert(func2 == 0 && func3 == 0) failed: not unary |
JDK-8286013 | Incorrect test configurations for compiler/stable/TestStableShort.java |
JDK-8285828 | runtime/execstack/TestCheckJDK.java fails with zipped debug symbols |
JDK-8284992 | Fix misleading Vector API doc for LSHR operator |
JDK-8286198 | [linux] Fix process-memory information |
JDK-8282219 | jdk/java/lang/ProcessBuilder/Basic.java fails on AIX |
JDK-8284848 | C2: Compiler blackhole arguments should be treated as globally escaping |
JDK-8283022 | com/sun/crypto/provider/Cipher/AEAD/GCMBufferTest.java failing with -Xcomp after 8273297 |
JDK-8284023 | java.sun.awt.X11GraphicsDevice.getDoubleBufferVisuals() leaks XdbeScreenVisualInfo |
JDK-8280956 | Re-examine copyright headers on files in src/java.desktop/macosx/native/libawt_lwawt/awt/a11y |
JDK-8285686 | Upgrade to FreeType 2.12.0 |
JDK-8284532 | Memory leak in BitSet::BitMapFragmentTable in JFR leak profiler |
JDK-8285394 | Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id() |
JDK-8282170 | JVMTI SetBreakpoint metaspace allocation test |
JDK-8284549 | JFR: FieldTable leaks FieldInfoTable member |
JDK-8284620 | CodeBuffer may leak _overflow_arena |
JDK-8283422 | Create a new test for JDK-8254790 |
JDK-8284458 | CodeHeapState::aggregate() leaks blob_name |
JDK-8283725 | Launching java with “-Xlog:gc=trace,safepoint=trace,class*=trace” crashes the JVM |
JDK-8284808 | change milestone to fcs for releases: jdk-11.0.16, jdk-17.0.4, jdk-18.0.2 |
JDK-8280476 | [macOS] : hotspot arm64 bug exposed by latest clang |
JDK-8284622 | Update versions of some Github Actions used in JDK workflow |
JDK-8282929 | Localized monetary symbols are not reflected in
|
JDK-8284866 | Add test to JDK-8273056 |
JDK-8282042 | [testbug] FileEncodingTest.java depends on default encoding |
JDK-8284033 | Leak XVisualInfo in getAllConfigs in awt_GraphicsEnv.c |
JDK-8285445 | cannot open file “NUL:” |
JDK-8284920 | Incorrect Token type causes XPath expression to return incorrect results |
JDK-8284548 | Invalid XPath expression causes StringIndexOutOfBoundsException |
JDK-8284370 | Improve zlib usage |
JDK-8283379 | Memory leak in FileHeaderHelper |
JDK-8284369 | TestFailedAllocationBadGraph fails with -XX:TieredStopAtLevel < 4 |
JDK-8284507 | GHA: Only check test results if testing was not skipped |
JDK-8284389 | Improve stability of GHA Pre-submit testing by caching cygwin installer |
JDK-8283217 | Leak FcObjectSet in getFontConfigLocations() in fontpath.c |
JDK-8281638 | jfr/event/allocation tests fail with release VMs after JDK-8281318 due to lack of -XX:+UnlockDiagnosticVMOptions |
JDK-8281318 | Improve jfr/event/allocation tests reliability |
JDK-8277893 | Arraycopy stress tests |
JDK-8282194 | C1: Missing side effects of dynamic constant linkage |
JDK-8281811 | assert(_base == Tuple) failed: Not a Tuple after JDK-8280799 |
JDK-8282045 | When loop strip mining fails, safepoints are removed from loop anyway |
JDK-8279822 | CI: Constant pool entries in error state are not supported |
JDK-8283408 | Fix a C2 crash when filling arrays with unsafe |
JDK-8282590 | C2: assert(addp→is_AddP() && addp→outcnt() > 0) failed: Don’t process dead nodes |
JDK-8283451 | C2: assert(_base == Long) failed: Not a Long |
JDK-8283187 | C2: loop candidate for superword not always unrolled fully if superword fails |
JDK-8275337 | C1: assert(false) failed: live_in set of first block must be empty |
JDK-8282231 | x86-32: runtime call to SharedRuntime::ldiv corrupts registers |
JDK-8272493 | Suboptimal code generation around Preconditions.checkIndex intrinsic with AVX2 |
JDK-8277055 | Assert “missing inlining msg” with -XX:+PrintIntrinsics |
JDK-8282172 | CompileBroker::log_metaspace_failure is called from non-Java/compiler threads |
JDK-8282312 | Minor corrections to evbroadcasti32x4 intrinsic on x86 |
JDK-8271055 | Crash during deoptimization with “assert(bb→is_reachable()) failed: getting result from unreachable basicblock” with -XX:+VerifyStack |
JDK-8279219 | [REDO] C2 crash when allocating array of size too large |
JDK-8280600 | C2: assert(!had_error) failed: bad dominance |
JDK-8281544 | assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/ |
JDK-8280901 | MethodHandle::linkToNative stub is missing w/ -Xint |
JDK-8280867 | Cpuid1Ecx feature parsing is incorrect for AMD CPUs |
JDK-8283641 | Large value for CompileThresholdScaling causes assert |
JDK-8282592 | C2: assert(false) failed: graph should be schedulable |
JDK-8282874 | Bad performance on gather/scatter API caused by different IntSpecies of indexMap |
JDK-8280799 | РЎ2: assert(false) failed: cyclic dependency prevents range check elimination |
JDK-8256368 | Avoid repeated upcalls into Java to re-resolve MH/VH linkers/invokers |
JDK-8271008 | appcds/*/MethodHandlesAsCollectorTest.java tests time out because of excessive GC (CodeCache GC Threshold) in loom |
JDK-8281822 | Test failures on non-DTrace builds due to incomplete DTrace* flags handling |
JDK-8281266 | [JVMCI] MetaUtil.toInternalName() doesn’t handle hidden classes correctly |
JDK-8282887 | Potential memory leak in sun.util.locale.provider.HostLocaleProviderAdapterImpl.getNumberPattern() on Windows |
JDK-8282628 | Potential memory leak in sun.font.FontConfigManager.getFontConfig() |
JDK-8282551 | Properly initialize L32X64MixRandom state |
JDK-8281181 | Do not use CPU Shares to compute active processor count |
JDK-8284012 | Correction version-numbers.conf after merge |
JDK-8283190 | Improve MIDI processing |
JDK-8283555 | G1: Concurrent mark accesses uninitialized BOT of closed archive regions |
JDK-8278381 | [GCC 11] Address::make_raw() does not initialize rspec |
JDK-8281771 | Crash in java_lang_invoke_MethodType::print_signature |
JDK-8281274 | deal with ActiveProcessorCount in os::Linux::print_container_info |
JDK-8278794 | Infinite loop in DeflaterOutputStream.finish() |
JDK-8278549 | UNIX sun/font coding misses SUSE distro detection on recent distro SUSE 15 |
JDK-8283350 | (tz) Update Timezone Data to 2022a |
JDK-8281866 | Enhance MethodHandle invocations |
JDK-8278065 | Refactor subclassAudits to use ClassValue |
JDK-8280041 | Retry loop issues in java.io.ClassCache |
JDK-8277072 | ObjectStreamClass caches keep ClassLoaders alive |
JDK-8282444 | Module finder incorrectly assumes default file system path-separator character |
JDK-8282583 | Update BCEL md to include the copyright notice |
JDK-8281859 | Improve class compilation |
JDK-8281168 | Micro-optimize VarForm.getMemberName for interpreter |
JDK-8279668 | x86: AVX2 versions of vpxor should be asserted |
JDK-8272249 | Better properties of loaded Properties |
JDK-8279958 | Provide configure hints for Alpine/apk package managers |
JDK-8282225 | GHA: Allow one concurrent run per PR only |
JDK-8283017 | GHA: Workflows break with update release versions |
JDK-8281615 | Deadlock caused by jdwp agent |
JDK-8282295 | SymbolPropertyEntry::set_method_type fails with assert |
JDK-8283037 | Update jdk18u fix version to 18.0.2 |
JDK-8274524 | SSLSocket.close() hangs if it is called during the ssl handshake |
JDK-8282397 | createTempFile method of java.io.File is failing when called with suffix of spaces character |
JDK-8270480 | Better path to expressing Xpaths |
JDK-8272243 | Improve DER parsing |
JDK-8282300 | Throws NamingException instead of InvalidNameException after JDK-8278972 |
JDK-8277608 | Address IP Addressing |
JDK-8281093 | JDK 11.0.14 violates Attribute-Value Normalization in the XML specification 1.0 |
JDK-8281388 | Change wrapping of EncryptedPrivateKeyInfo |
JDK-8278356 | Improve file creation |
JDK-8270504 | Better Xpath expression handling |
JDK-8272588 | Enhanced recording parsing |
JDK-8272594 | Better record of recordings |
JDK-8272261 | Improve JFR recording file processing |
JDK-8277672 | Better invocation handler handling |
JDK-8269938 | Enhance XML processing passes redux |
JDK-8278972 | Improve URL supports |
JDK-8272255 | Completely handle MIDI files |
JDK-8280674 | Bump version numbers for July CPU |
JDK-8282134 | Certain regex can cause a JS trap in WebView |
JDK-8280841 | Update SQLite to 3.37.2 |
JDK-8286256 | Update libxml2 to 2.9.14 8286257: Update libxslt to 1.1.35 |
JDK-8285475 | Create release notes for 18.0.1 |
JDK-8285181 | Change JavaFX release version to 18.0.2 in jfx18 branch |
JDK-8283328 | Update libxml2 to 2.9.13 |