Discovering Java 11

In the previous chapter, we explored the newly-implemented time-based versioning system for the Java platform. We also learned, at a high-level, the changes introduced in Java 9, 10, and 11, also referred to as versions 9, 18.3, and 18.9 respectively. Java 9's most significant change was the introduction of modularity based on Project Jigsaw and included additional changes focusing on the Java Shell, controlling external process, garbage collection, JHM, and more. Key features of Java 10 were covered, including local variable type inference, JDK consolidation, garbage collection, application class-data sharing (CDS), root certificates, and more. Changes introduced in Java 11 included dynamic class-file constants, garbage collection, local variable type inference for Lambdas and more.

In this chapter, we will look at several internal changes introduced to the Java platform, including changes from Java 9, 10, and 11. Java 9 represented a major release to the Java platform; Java 10 and 11 were timed-releases. Collectively, these releases consisted of a large number of internal changes, representing a tremendous set of new possibilities for Java developers, some stemming from developer requests, others from Oracle-inspired enhancements. 

In this chapter, we will review 29 of the most important changes. Each change is related to a JDK Enhancement Proposal (JEP). JEPs are indexed and housed at openjdk.java.net/jeps/0. You can visit this link for additional information on each JEP.

The JEP program is part of Oracle's support for open source, open innovation, and open standards. While other open source Java projects can be found, OpenJDK is the only one supported by Oracle.

In this chapter, we will cover the following:

  • Improved contended locking [JEP 143]
  • Segmented code cache [JEP 197]
  • Smart Java compilation, phase two [JEP 199]
  • Resolving lint and doclint warnings [JEP 212]
  • Tiered attribution for Javac [JEP 215]
  • Annotations pipeline 2.0 [JEP 217]
  • New version-string scheme [JEP 223]
  • Generating runtime compiler tests automatically [JEP 233]
  • Testing class-file attributes generated by Javac [JEP 235]
  • Storing interned strings in CDS archives [JEP 250]
  • Preparing JavaFX UI controls and CSS APIs for modularization [JEP 253]
  • Compact strings [JEP 254]
  • Merging selected Xerces 2.11.0 updates into JAXP [JEP 255]
  • Updating JavaFX/Media to the newer version of GStreamer [JEP 257]
  • HarfBuzz font-layout engine [JEP 258]
  • HiDPI graphics on Windows and Linux [JEP 263]
  • Marlin graphics renderer [JEP 265]
  • Unicode 8.0.0 [JEP 267 and JEP 314]
  • Reserved stack areas for critical sections [JEP 270]
  • Dynamic linking of language-defined object models [JEP 276]
  • Additional tests for humongous objects in G1 [JEP 278]
  • Improving test-failure troubleshooting [JEP 279]
  • Optimizing string concatenation [JEP 280]
  • HotSpot C++ unit-test framework [JEP 281]
  • Enabling GTK3 on Linux [JEP 283]
  • New HotSpot build system [JEP 284]
  • Consolidating the JDF Forest into a single repository [JEP 296]
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset