Liberica JDK 13.0.1 for Embedded Release Notes
The full version string for this binary release of OpenJDK is 13.0.1+9, and the version number is 13.0.1.
Liberica JDK 13.0.1 for Embedded
Liberica is a certified, Java SE 13.0.1-compliant distribution of OpenJDK 13.0.1 which works on 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.
- Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.
Please refer to the Oracle JDK 13.0.1 release notes for further information on JDK 13.0.1 features. This document further outlines the peculiarities of Liberica distribution as compared to Oracle JDK 11 distribution.
Supported Embedded configurations
Liberica is tested and certified on Raspberry Pi 2 & 3 running the following OSes:
- Raspbian OS (armhf)
- OpenSUSE (armv8)
It is also known to work with Debian (armhf) and Ubuntu (armhf).
Liberica JDK 13.0.1 distribution
Liberica JDK 13.0.1 for Embedded are distributed as .rpm, .deb and .tar.gz packages. Please select the one which is most appropriate for your purposes.
Liberica 13.0.1 introduced all new features supported by OpenJDK https://www.oracle.com/technetwork/java/javase/13all-relnotes-5461743.html.
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 13.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.
Please refer to the following wiki for more information.
Device IO API for the Raspberry Pi
Liberica JDK 13.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.
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.
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
|8185898||setRequestProperty(key, null) results in HTTP header without colon in request|
|8191521||handle long relative path specified in -Xbootclasspath/a on windows|
|8209790||SA tools not providing option to connect to debug server|
|8209901||Canonical file handling|
|8212328||Exceptional throw cases|
|8212970||TZ database in “vanguard” format support|
|8213429||Windows file handling redux|
|8213431||Improve file protocol handling|
|8213432||Better copies of CopiesList|
|8215367||Better Collection of References|
|8216381||More limited privilege usage|
|8217563||Improve realm maintenance|
|8217676||Upgrade libpng to 1.6.37|
|8218573||Better socket support|
|8218863||Better endpoint checks|
|8218873||Improve JSSE endpoint checking|
|8218876||Improve PNG support options|
|8218877||Help transform transformers|
|8219082||jdk/jfr/event/runtime/TestShutdownEvent.java failed in validateStackTrace()|
|8219775||Certificate validation improvements|
|8220186||Improve use of font temporary files|
|8220302||Better Kerberos ccache handling|
|8220517||Enhanced GIF support|
|8221345||Better Poly1305 support|
|8221497||Optional Panes in Swing|
|8221858||Build Better Processes|
|8222108||Reduce minRefreshTime for updating remote printer list on Windows|
|8222678||Improve TLS negotiation|
|8222684||Better support for patterns|
|8222690||Better Glyph Images|
|8222968||ByteArrayPublisher is not thread-safe resulting in broken re-use of HttpRequests|
|8223326||Regression introduced by CPU sync: java.security.AccessControlException: access denied (“java.net.NetPermission” “setSocketImpl”)|
|8223505||Better pattern compilation|
|8223518||Unexpected exception in jjs|
|8223869||Problem list java/awt/FontMetrics/MaxAdvanceIsMax.java on more platforms|
|8223886||Add in font table referene|
|8223892||Improved handling of jar files|
|8224025||Fix for JDK-8220302 is not complete|
|8224062||Improve String index handling|
|8224505||TestQuotedLogOutput failure after ProcessBuilder changes|
|8224532||Better Path supports|
|8224915||Better serial attributes|
|8225286||Better rendering of native glyphs|
|8225292||Better Graphics2D drawing|
|8225298||Improve TLS connection support|
|8225425||java.lang.UnsatisfiedLinkError: net.dll: Can’t find dependent libraries|
|8225505||ctrl-F1 does not show the tooltip of a menu item (JMenuItems)|
|8225597||Enhance font glyph mapping|
|8226530||ZipFile reads wrong entry size from ZIP64 entries|
|8226543||Reduce GC pressure during message digest calculations in password-based encryption|
|8226765||Commentary on Javadoc comments|
|8227171||provide function names in native stack trace on aix with xlc16|
|8227201||Bump version string for 13.0.1|
|8227230||Backout JDK-8215367 from update releases|
|8227435||Perf::attach() should not throw a java.lang.Exception|
|8227594||sadebugd/DebugdConnectTest.java fails due to “java.rmi.NotBoundException: SARemoteDebugger”|
|8227601||Better collection of references|
|8227662||freetype seeks to index at the end of the font data|
|8227757||Add ‘ga’ mercurial tags to the CPU19_10 source forests|
|8228649||[PPC64] SA reads wrong slots from interpreter frames|
|8228711||Path rendered incorrectly when it goes outside the clipping region|
|8228825||Enhance ECDSA operations|
|8229002||Shenandoah: Missing node types in ShenandoahLoadReferenceBarrier::needs_barrier_impl()|
|8229118||[TESTBUG] serviceability/sa/ClhsdbFindPC fails on AArch64|
|8229182||runtime/containers/docker/TestMemoryAwareness.java test fails on SLES12|
|8229242||JDK 13.0.1 L10n resource files update msgdrop 10|
|8229284||jdk/internal/platform/cgroup/TestCgroupMetrics.java fails for - memory:getMemoryUsage|
|8229706||java/net/MulticastSocket/NoLoopbackPackets.java fails on some AIX machines|
|8229773||Resolve permissions for code source URLs lazily|
|8229800||WindowsServerCore 1809 does not provide d2d1.dll library required by awt.dll|
|8229872||(fs) Increase buffer size used with getmntent|
|8229887||(zipfs) zip file corruption when replacing an existing STORED entry|
|8229925||[s390, PPC64] Exception check missing in interpreter|
|8230110||TestLinkageErrorInGenerateOopMap times out|
|8230115||Problemlist JFR TestNetworkUtilization test|
|8230303||JDB hangs when running monitor command|
|8230425||Shenandoah forces +UseNUMAInterleaving even after explicitly disabled|
|8230565||ZGC: Redesign C2 load barrier to expand on the MachNode level|
|8230646||Epsilon does not extend TLABs to max size|
|8230666||Exclude serviceability/sa/TestInstanceKlassSize.java on linuxppc64 and linuxppc64le|
|8230728||Thin stroked shapes are not rendered if affine transform has flip bit|
|8230782||Robot.createScreenCapture() fails if “awt.robot.gtk” is set to false|
|8230850||Test sun/tools/jcmd/TestProcessHelper.java fails intermittently|
|8230943||False deadlock detection with -XX:+CIPrintCompileQueue after JDK-8163511|
|8231098||(tz) Upgrade time-zone data to tzdata2019c|
|8231197||Shenandoah: JVMTI heap walking cleanup crashes with NULL forwardee|
|8231405||[Shenandoah] guarantee(d != NULL) failed: Null dominator info|
|8231583||Shenandoah: Fix register clash in SBSA::resolve_forwarding_pointer() borrowing|
|8231770||Test java/util/zip/FlaterTest.java fails with -Xcheck:jni|
|8231887||ComodoCA.java fails because certificate was revoked|
|8227402||Improve XSLT processing|