Oracle pours a mug o' Java 11 for its addicts, tips pot of Binary Code License down the sink
Our programming language is still number one, insists database goliath
Oracle on Tuesday delivered Java 11, in keeping with the six-month release cadence adopted a year ago with Java 9. It is the first "Long Term Support" (LTS) release, intended for Java users who prioritize stability over Zuckerbergian fast movement and breakage.
Oracle said it will offer commercial support for Java 11 for at least eight more years. The next LTS release, Java 17, is planned for September 2021, assuming civilization is still functioning at that point.
After January 2019, Oracle will no longer provide free updates to Java 8, which means shifting to a supported version of Java, relying on OS vendors to provide Java patches, paying a third-party for support, building the OpenJDK on your own, or getting builds from AdoptOpenJDK.
Java 11 brings with it a new license that replaces the Binary Code License for Oracle Java SE technologies ("BCL") that has covered Java usage for more than a decade.
"Oracle provides the JDK not only under the Oracle OpenJDK release using the open source GNU General Public License v2, with the Classpath Exception (GPLv2+CPE), but also under a commercial license for those using the Oracle JDK as part of an Oracle product or service, or who do not wish to use open source software," explained Sharat Chander, director of Java SE management, in a blog post.
Over the summer, Oracle introduced a new subscription model for Java SE, one of four Java editions (the others being Java EE, Java ME, and JavaFX). Server and Cloud deployments cost $25 per processor per month, and Desktop instances cost $2.50 per user per month, with volume discounts available.
That means those wishing to use Java SE without fees should use either the Oracle OpenJDK build under GPLv2+CE or an OpenJDK binary from other OpenJDK provider like Azul, IBM, or Red Hat, among others.
Java 11 includes 17 notable features and changes:
- JEP 181: Nest-Based Access Control
- JEP 309: Dynamic Class-File Constants
- JEP 315: Improve Aarch64 Intrinsics
- JEP 318: Epsilon: A No-Op Garbage Collector
- JEP 320: Remove the Java EE and CORBA Modules
- JEP 321: HTTP Client (Standard)
- JEP 323: Local-Variable Syntax for Lambda Parameters
- JEP 324: Key Agreement with Curve25519 and Curve448
- JEP 327: Unicode 10
- JEP 328: Flight Recorder
- JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
- JEP 330: Launch Single-File Source-Code Programs
- JEP 331: Low-Overhead Heap Profiling
- JEP 332: Transport Layer Security (TLS) 1.3
- JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
- JEP 336: Deprecate the Pack200 Tools and API
Among the improvements, JEP 323: Local-Variable Syntax for Lambda Parameters, allows the
var keyword, introduced in Java 10 as a way to declare local variables with implicit rather than explicit typing, to be used when declaring the parameters of implicitly typed lambda expressions:
(var x, var y) -> x.process(y) // implicit typed lambda expression
Apparently, one advantage arising from this change is that type annotations can be applied succinctly to these parameters.
The HTTP Client API, introduced in Java 9 and enhanced in Java 10, has been made better still, with the latest implementation being fully asynchronous – the previous HTTP/1.1 implementation was blocking. It supports HTTP/2 and WebSocket.
Java 11 also includes a minimal implementation of version 1.3 of the Transport Layer Security (TLS) Protocol (RFC 8446).
There are a handful of useful language additions like new string methods for removing empty spaces –
strip(), stripLeading(), stripTrailing() – and determining whether a string is empty or not –
isBlank(). Several self-explanatory file utility methods –
isSameFile() – show up in Java 11 too.
"With 12 million developers worldwide running Java, Java continues to be the #1 programming language of choice by software programmers," said Chander, perhaps unaware that others say as much about Python. "And as Java 11 demonstrates, through continued thoughtful planning and ecosystem involvement, the Java platform is well-positioned for modern development and growth in the cloud."
If only Oracle could say as much about its cloud growth, or lack thereof. ®