The full version string for this update release is 14.0.1+8. The version number is 14.

Liberica JDK 14.0.1+8

Liberica is a certified, Java SE 14-compliant distribution of OpenJDK 14 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, 4 (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, Mac, Linux x86_64, Linux x86 and Linux ARMv7 distributions contain OpenJFX 14.

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

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

Supported Server and Desktop configurations

Liberica is supported on the following OSes:

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

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

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

  • Alpine Linux 3.7+

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

  • Apple macOS 10.11+

  • Microsoft Windows 2019, Windows 2016, Windows 2012 R2, Windows 10, Windows 8, Windows 7 (64 and 32 bit)

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 14.0.1 distribution

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

Liberica 14 introduced all new features supported by OpenJDK 14.

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.

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

IssueDescription

JDK-8044365

(dc) MulticastSendReceiveTests.java failing with ENOMEM when joining group (OS X 10.9)

JDK-8183369

RFC unconformity of HttpURLConnection with proxy

JDK-8221741

ClassCastException can happen when fontconfig.properties is used

JDK-8223898

Forward references to Nashorn

JDK-8223904

Improve Nashorn matching

JDK-8223935

PIT: java/awt/font/WindowsIndicFonts.java fails on windows10

JDK-8224541

Better mapping of serial ENUMs

JDK-8224549

Less Blocking Array Queues

JDK-8225130

Add exception for expiring Comodo roots to VerifyCACerts test

JDK-8225216

gc/logging/TestMetaSpaceLog.java doesn’t work for Shenandoah

JDK-8225603

Enhancement for big integers

JDK-8226346

Build better binary builders

JDK-8227467

Better class method invocations

JDK-8227542

Manifest improved jar headers

JDK-8229733

TLS message handling improvements

JDK-8231118

ARM32: Math tests failures

JDK-8231415

Better signatures in XML

JDK-8231785

Improved socket permissions

JDK-8232424

More constrained algorithms

JDK-8232581

Improve TLS verification

JDK-8233245

More adaptive sockets

JDK-8233250

Better X11 rendering

JDK-8233410

Better Build Scripting

JDK-8234027

Better JCEKS key support

JDK-8234146

compiler/jsr292/ContinuousCallSiteTargetChange.java times out on SPARC

JDK-8234408

Improve TLS session handling

JDK-8234825

Better Headings for HTTP Servers

JDK-8234841

Enhance buffering of byte buffers

JDK-8235274

Enhance typing of methods

JDK-8235332

TestInstanceCloneAsLoadsStores.java fails with -XX:+StressGCM

JDK-8235691

Enhance TLS connectivity

JDK-8236201

Better Scanner conversions

JDK-8236759

ShouldNotReachHere in PhaseIdealLoop::verify_strip_mined_scheduling

JDK-8236851

Shenandoah: More details in Traversal GC event messages

JDK-8237192

Generate stripped/public pdbs on Windows for jdk images

JDK-8237217

Incorrect G1StringDedupEntry type used in StringDedupTable destructor

JDK-8237543

Shenandoah: More asserts around code roots

JDK-8237632

Shenandoah: accept NULL fwdptr to cooperate with JVMTI and JFR

JDK-8237780

Shenandoah: More reliable nmethod verification

JDK-8237837

Shenandoah: assert(mem == __null) failed: only one safepoint

JDK-8237879

make 4.3 breaks build

JDK-8237945

CTW: C2 compilation fails with assert(just_allocated_object(alloc_ctl) == ptr) failed: most recent allo

JDK-8237951

CTW: C2 compilation fails with “malformed control flow”

JDK-8238190

[JVMCI] Fix single implementor speculation for diamond shapes.

JDK-8238247

CTW runner should sweep nmethods more aggressively

JDK-8238356

CodeHeap::blob_count() overestimates the number of blobs

JDK-8238366

CTW runner closes standard output on exit

JDK-8238385

CTW: C2 (Shenandoah) compilation fails with “Range check dependent CastII node was not removed”

JDK-8238438

SuperWord::co_locate_pack picks memory state of first instead of last load

JDK-8238452

Keytool generates wrong expiration date if validity is set to 2050/01/01

JDK-8238534

Deep sign macOS bundles before bundle archive is being created

JDK-8238721

Add failing client jtreg tests to the Problem List

JDK-8238756

C2: assert failed: can not use dead node

JDK-8238811

C2: assert(i >= req() || i == 0 || is_Region() || is_Phi()) with -XX:+VerifyGraphEdges

JDK-8238851

Shenandoah: C1: Resolve into registers of correct type

JDK-8238932

Invalid tier1_gc_1 test group definition

JDK-8238960

linux-i586 builds are inconsistent as the newly build jdk is not able to reserve enough space for object heap

JDK-8239005

[TESTBUG] test/hotspot/jtreg/runtime/StackGuardPages/TestStackGuardPages.java: exeinvoke.c: must initialize static state before calling do_overflow()

JDK-8239081

Shenandoah: Consolidate C1 LRB and native barriers

JDK-8239142

C2’s UseUniqueSubclasses optimization is broken for array accesses

JDK-8239354

Shenandoah: minor enhancements to traversal GC

JDK-8239456

vtable stub generation: assert failure (code size estimate)

JDK-8239787

AArch64: String.indexOf may incorrectly handle empty strings

JDK-8239798

SSLSocket closes socket both socket endpoints on a SocketTimeoutException

JDK-8239852

java/util/concurrent tests fail with -XX:+VerifyGraphEdges: assert(!VerifyGraphEdges) failed: verification should have failed

JDK-8239868

Shenandoah: ditch C2 node limit adjustments

JDK-8239904

Shenandoah: accumulated penalties should not be over 100% of capacity

JDK-8239915

Zero VM crashes when handling dynamic constant

JDK-8239931

[win][x86] vtable stub generation: assert failure (code size estimate) follow-up

JDK-8240069

Shenandoah: turn more flags diagnostic

JDK-8240070

Shenandoah: remove obsolete ShenandoahCommonGCStateLoads

JDK-8240076

Shenandoah: pacer should cover reset and preclean phases

JDK-8240215

Shenandoah: remove ShenandoahAllocationTrace

JDK-8240216

Shenandoah: remove ShenandoahTerminationTrace

JDK-8240217

Shenandoah: remove ShenandoahEvacAssist

JDK-8240220

IdealLoopTree::dump_head predicate printing is broken

JDK-8240286

[TESTBUG] Test command error in hotspot/jtreg/compiler/loopopts/superword/SumRedAbsNeg_Float.java

JDK-8240511

Shenandoah: parallel safepoint workers count should be ParallelGCThreads

JDK-8240534

Shenandoah: ditch debug safepoint timeout adjustment

JDK-8240589

OtherRegionsTable::_num_occupied not updated correctly

JDK-8240629

argfiles parsing broken for argfiles with comment cross 4096 bytes chunk

JDK-8240671

Shenandoah: refactor ShenandoahPhaseTimings

JDK-8240749

Shenandoah: refactor ShenandoahUtils

JDK-8240750

Shenandoah: remove leftover files and mentions of ShenandoahAllocTracker

JDK-8240868

Shenandoah: remove CM-with-UR piggybacking cycles

JDK-8240948

Shenandoah: cleanup not-forwarded-objects paths after JDK-8240868

JDK-8240972

macOS codesign fail on macOS 10.13.5 or older

JDK-8241296

Segfault in JNIHandleBlock::oops_do()

JDK-8241445

Fix copyright in test/jdk/tools/launcher/ArgFileSyntax.java

JDK-8241568

(fs) UserPrincipalLookupService.lookupXXX failure with IOE “Operation not permitted”

JDK-8241586

compiler/cpuflags/TestAESIntrinsicsOnUnsupportedConfig.java fails on aarch64

JDK-8228867

Fix mistakes in FX API docs

JDK-8239109

Update SQLite to version 3.31.1

JDK-8236798

Enhance FX scripting support

ON THIS PAGE