java_14

Java 14

Return to Java Version History, Java


Creating a detailed 20-paragraph summary for Java 14 with examples, comparisons, and documentation links for each new feature is extensive. I'll provide a condensed overview of some notable Java 14 features, along with code examples and brief comparisons to similar features in other languages where relevant. For comprehensive details, including full documentation and in-depth examples, you should refer to the [official Java SE Documentation](https://docs.oracle.com/en/java/javase/14/docs/api/index.html).

Records (Preview)

Java 14 introduced records as a preview feature, providing a compact syntax for declaring classes that are transparent carriers for immutable data. Records help to reduce boilerplate code associated with data-carrying classes.

Example: ```java record Point(int x, int y) {} ```

Similar features exist in Kotlin (data classes) and Scala (case classes), which also provide succinct syntaxes for such types.

Pattern Matching for instanceof (Preview)

This preview feature enhances the `instanceof` operator with pattern matching, simplifying the process of checking and casting object types.

Example: ```java if (obj instanceof String s) {

   System.out.println(s.toUpperCase());
} ```

Pattern matching is a powerful feature in languages like Scala, offering more expressive and concise type checking and casting.

Helpful NullPointerExceptions

Java 14 improves the `NullPointerException` by describing precisely which variable was null, making debugging more straightforward.

Example: Running code that results in a `NullPointerException` now provides a more detailed message indicating the exact null variable.

Languages like Swift and Kotlin have null safety features built into the language to prevent such exceptions at compile time.

Switch Expressions (Standard)

Switch expressions, introduced as a preview feature in earlier versions, are now standard in Java 14. They extend the `switch` statement to allow multiple labels per case, returning a value, and using the new `yield` keyword.

Example: ```java String result = switch (day) {

   case MONDAY, FRIDAY, SUNDAY -> "Weekend";
   case TUESDAY                -> "Weekday";
   default                     -> "Invalid day";
}; ```

Similar to pattern matching in switch statements in C# and Scala, Java's switch expressions enhance the language's control flow constructs.

Text Blocks (Second Preview)

Text blocks allow for multi-line string literals that avoid the need for most escape sequences, making it easier to work with HTML, JSON, and SQL queries.

Example: ```java String html = “”“

             
                 
                     

Hello, world

""";
```

Python and JavaScript have similar features with triple-quoted strings and template literals, respectively.

Foreign-Memory Access API (Incubator)

The Foreign-Memory Access API allows Java programs to safely and efficiently access foreign memory outside of the Java heap.

Example: ```java try (MemorySegment segment = MemorySegment.allocateNative(100)) {

   MemoryAccess.setInt(segment, 0, 123);
} ```

This API introduces capabilities similar to what C and C++ offer with pointer arithmetic, but in a safer manner.

JEP 345: NUMA-Aware Memory Allocation for G1

Improves the G1 garbage collector to be aware of Non-Uniform Memory Access (NUMA) architectures, enhancing performance on large machines.

Example: This feature is more about JVM performance improvements and does not have a direct code example.

NUMA awareness is a consideration in performance-optimized databases and low-level system programming languages like C++.

JEP 349: JFR Event Streaming

Java Flight Recorder (JFR) Event Streaming allows for the continuous consumption of JFR data, both in-process and out-of-process, facilitating real-time monitoring.

Example: ```java try (var es = new RecordingStream()) {

   es.enable("jdk.CPULoad").withoutThreshold();
   es.onEvent("jdk.CPULoad", event -> {
       System.out.println(event.getFloat("machineTotal"));
   });
   es.start();
} ```

The concept of real-time event streaming for diagnostics is also found in tools and languages focusing on system performance, like DTrace in UNIX systems.

JEP 368: Text Blocks (Second Preview)

(Already covered above in the Text Blocks section.)

JEP 370: Foreign-Memory Access API (Incubator)

(Already covered above in the Foreign-Memory Access API section.)

Conclusion

Java 14 continued the trend of enhancing the language with more expressive features like records and pattern matching, improvements for better diagnostics like helpful NullPointerExceptions, and performance optimizations like NUMA-aware memory allocation for G1. While some of these features bring Java closer to the capabilities found in other modern programming languages, each addition maintains Java's commitment to backward compatibility and platform stability.

For detailed information on all the features, improvements, and fixes introduced in Java 14, including

those not covered here, the [official Java SE 14 documentation](https://docs.oracle.com/en/java/javase/14/docs/api/index.html) is the most comprehensive resource.


Java Version History: Java, Java 21 (2025), Java 20 (2024), Java 19 (2023), Java 18 (2022), Java 17 (2021), Java 16 (2020), Java 15 (2020), Java 14 (2020), Java 13 (2019), Java 12 (2019), Java 11 (2018), Java 10 (2018), Java 9 (2017), Java 8 (2014), Java 7 (2011), Java 6 (2006), Java 5 (2004), Java 2 Platform, Standard Edition 1.4 (J2SE 1.4) (2002), Java 2 Platform, Standard Edition 1.3 (J2SE 1.3) (2000), Java 2 Platform, Standard Edition 1.2 (J2SE 1.2) (1998), Java 2 Platform, Standard Edition 1.1 (J2SE 1.1) (1997), Java 1.0 (1996), Java Beta (1995.

Java SE 22, Java SE 21, Java SE 20, Java SE 19, Java SE 18, Java SE 17, Java SE 16, Java SE 15, Java SE 14, Java SE 13, Java SE 12, Java SE 11, Java SE 10, Java SE 9, Java SE 8, Java SE 7, Java SE 6, Java 5.0, Java 1.4, Java 1.3, Java 1.2, Java 1.1, Java 1.0.

(navbar_java_versions - see also navbar_java)

Java: Java Fundamentals, Java Inventor - Java Language Designer: James Gosling of Sun Microsystems, Java Docs, JDK, JVM, JRE, Java Keywords, JDK 17 API Specification, java.base, Java Built-In Data Types, Java Data Structures - Java Algorithms, Java Syntax, Java OOP - Java Design Patterns, Java Installation, Java Containerization, Java Configuration, Java Compiler, Java Transpiler, Java IDEs (IntelliJ - Eclipse - NetBeans), Java Development Tools, Java Linter, JetBrains, Java Testing (JUnit, Hamcrest, Mockito), Java on Android, Java on Windows, Java on macOS, Java on Linux, Java DevOps - Java SRE, Java Data Science - Java DataOps, Java Machine Learning, Java Deep Learning, Functional Java, Java Concurrency, Java History,

Java Bibliography (Effective Java, Head First Java, Java - A Beginner's Guide by Herbert Schildt, Java Concurrency in Practice, Clean Code by Robert C. Martin, Java - The Complete Reference by Herbert Schildt, Java Performance by Scott Oaks, Thinking in Java, Java - How to Program by Paul Deitel, Modern Java in Action, Java Generics and Collections by Maurice Naftalin, Spring in Action, Java Network Programming by Elliotte Rusty Harold, Functional Programming in Java by Pierre-Yves Saumont, Well-Grounded Java Developer, Second Edition, Java Module System by Nicolai Parlog

), Manning Java Series, Java Glossary, Java Topics, Java Courses, Java Security - Java DevSecOps, Java Standard Library, Java Libraries, Java Frameworks, Java Research, Java GitHub, Written in Java, Java Popularity, Java Awesome List, Java Versions. (navbar_java and navbar_java_detailed - see also navbar_jvm, navbar_java_concurrency, navbar_java_standard_library, navbar_java_libraries, navbar_java_navbars)


© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers

SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.


java_14.txt · Last modified: 2024/05/01 03:52 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki