Release of Java SE 27 and OpenJDK 27

After six months of development, Oracle has released Java SE 27 (Java Platform, Standard Edition 27), with the open project OpenJDK serving as its reference implementation. Except for the removal of some deprecated features, Java SE 27 maintains backward compatibility with previous versions of the Java platform—most projects previously written in Java will run seamlessly on the new version. Ready-to-install builds of Java SE 27 (JDK, JRE, and Server JRE) are prepared for Linux (x86_64, AArch64), Windows (x86_64), and macOS (x86_64, AArch64). The reference implementation of Java SE 27 developed under the OpenJDK project is fully open under the GPLv2 license with GNU ClassPath exceptions that allow dynamic linking with commercial products.

Java SE 27 is categorized as a release with a standard support period, with updates being released until the next version comes out. For long-term support (LTS), Java SE 25, Java SE 21, or Java SE 17 should be used, with updates available until 2033, 2031, and 2029 respectively (public updates until September 2030, 2028, and 2026). Extended support for the LTS branch of Java SE 8 will last until 2030, while Java SE 11 will be supported until 2032.

Among the changes in Java SE 27 (1, 2, 3, 4):

  • By default, the G1 (Garbage-First) garbage collector is enabled for all environments, which was previously used for server systems. G1 is optimized for use on multiprocessor systems with large memory and balances predictability of latencies with high throughput. During operation, G1 divides memory into many small regions and first cleans those regions with more unused objects and fewer actively used data.
  • In HotSpot JVM, compact object headers are enabled by default. The header size on 64-bit systems has been reduced from 96 to 64 bits, which has decreased memory consumption and increased the likelihood of data fitting into the processor cache. In SPECjbb2015 tests, memory consumption decreased by 22%, CPU load was reduced by 8%, and the number of garbage collection operations was reduced by 15%. During JSON parser testing, the test execution time was reduced by 10%.
  • The implementation of TLS 1.3 has included support for hybrid key agreement schemes that combine the ML-KEM (CRYSTALS-Kyber) algorithm, resistant to quantum computer attacks, with classical algorithms based on elliptic curves ECDHE: X25519MLKEM768 (ECDHE with curve X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE with curve secp256r1 + ML-KEM-768), and SecP384r1MLKEM1024 (ECDHE with curve secp384r1 + ML-KEM-1024). In the javax.net API.ssl These schemes are enabled by default and do not require changes to the applications for implementation.
  • The JDK Flight Recorder (JFR) toolkit, used for monitoring, profiling, and performance diagnostics, has added support for sanitizing the saved diagnostic information, including command line arguments, initial values of environment variables, and system properties. This change helps prevent leaks of sensitive data handled by the profiled process, such as authorization tokens and API access keys passed through environment variables.
  • The third preview version of the Lazy Constants API has been implemented to work with objects that contain immutable data and are treated as constants in the JVM. These objects undergo performance optimizations similar to fields marked with the keyword "final". Unlike "final", the new API separates the creation of constant values from their initialization, ensures that a value can be initialized only once, reduces application startup time, and enables constant-folding optimizations in user code that were previously only used in internal JDK code. class Application { // Was: // static final UserService USERS = new UserService(); // Now it can be: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • In the pattern matching mechanism, a fifth preliminary option for using primitive types (int, byte, char, and other basic types that are not objects) in all kinds of templates, in the "instanceof" operator, and in "switch" blocks is proposed. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • The seventh preview version of the API for structured concurrency has been proposed for testing, simplifying the development of multithreaded applications by handling multiple tasks running in different threads as a single block.
  • The twelfth testing implementation of the Vector API has been introduced, providing functionality for vector computations that utilize vector instructions from x86_64 and AArch64 processors, allowing operations to be applied simultaneously to multiple values (SIMD). Unlike the autovectorization capabilities for scalar operations provided by the HotSpot JIT compiler, the new API offers explicit control over vectorization for parallel data processing.
  • The third preview version of the API for encoding and decoding objects with cryptographic keys, certificates, and certificate revocation lists using the PEM (Privacy-Enhanced Mail) format is now available.

Additionally, it is worth noting the release of the platform update for creating applications with the JavaFX 27 graphical user interface. The comprehensive GraalVM 27, supporting the execution of applications in JavaScript (Node.js), Python, Ruby, R, any JVM languages (Java, Scala, Clojure, Kotlin), and languages for which LLVM bitcode can be generated (C, C++, Rust), is also expected to be released in the coming hours.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster