40
Trisha Gee (@trisha_gee) Developer & Technical Advocate, JetBrains Java 9 in Anticipation: Features and Tooling

Java 9 Functionality and Tooling

Embed Size (px)

Citation preview

Page 1: Java 9 Functionality and Tooling

Trisha Gee (@trisha_gee)Developer & Technical Advocate, JetBrains

Java 9 in Anticipation: Features and Tooling

Page 2: Java 9 Functionality and Tooling

Safe Harbour

Blah blah, don’t rely on anything I’m saying, I’m not committing to anything, estimates are hard, things change, this is just what’s in our head right now, no promises. OK? kthxbai

Page 3: Java 9 Functionality and Tooling

Java 9

Page 4: Java 9 Functionality and Tooling

Jigsaw, yay!

Page 5: Java 9 Functionality and Tooling

But it might break everything…

Page 6: Java 9 Functionality and Tooling

…and I don’t need it anyway.

Page 7: Java 9 Functionality and Tooling

So, thanks but no thanks. I’ll wait for Value Types.

Page 8: Java 9 Functionality and Tooling

Java 9 is so much more than Jigsaw

Page 9: Java 9 Functionality and Tooling

102: Process API Updates110: HTTP 2 Client143: Improve Contended Locking158: Unified JVM Logging165: Compiler Control193: Variable Handles197: Segmented Code Cache199: Smart Java Compilation, Phase Two200: The Modular JDK201: Modular Source Code211: Elide Deprecation Warnings on Import Statements212: Resolve Lint and Doclint Warnings213: Milling Project Coin214: Remove GC Combinations Deprecated in JDK 8215: Tiered Attribution for javac216: Process Import Statements Correctly217: Annotations Pipeline 2.0219: Datagram Transport Layer Security (DTLS)220: Modular Run-Time Images221: Simplified Doclet API222: jshell: The Java Shell (Read-Eval-Print Loop)223: New Version-String Scheme224: HTML5 Javadoc225: Javadoc Search226: UTF-8 Property Files227: Unicode 7.0228: Add More Diagnostic Commands229: Create PKCS12 Keystores by Default231: Remove Launch-Time JRE Version Selection232: Improve Secure Application Performance233: Generate Run-Time Compiler Tests Automatically235: Test Class-File Attributes Generated by javac236: Parser API for Nashorn237: Linux/AArch64 Port238: Multi-Release JAR Files240: Remove the JVM TI hprof Agent241: Remove the jhat Tool243: Java-Level JVM Compiler Interface244: TLS Application-Layer Protocol Negotiation Extension245: Validate JVM Command-Line Flag Arguments246: Leverage CPU Instructions for GHASH and RSA247: Compile for Older Platform Versions248: Make G1 the Default Garbage Collector249: OCSP Stapling for TLS250: Store Interned Strings in CDS Archives251: Multi-Resolution Images252: Use CLDR Locale Data by Default253: Prepare JavaFX UI Controls & CSS APIs for Modularization254: Compact Strings255: Merge Selected Xerces 2.11.0 Updates into JAXP256: BeanInfo Annotations257: Update JavaFX/Media to Newer Version of GStreamer258: HarfBuzz Font-Layout Engine259: Stack-Walking API260: Encapsulate Most Internal APIs261: Module System262: TIFF Image I/O263: HiDPI Graphics on Windows and Linux264: Platform Logging API and Service265: Marlin Graphics Renderer266: More Concurrency Updates267: Unicode 8.0268: XML Catalogs269: Convenience Factory Methods for Collections270: Reserved Stack Areas for Critical Sections271: Unified GC Logging272: Platform-Specific Desktop Features273: DRBG-Based SecureRandom Implementations274: Enhanced Method Handles275: Modular Java Application Packaging276: Dynamic Linking of Language-Defined Object Models277: Enhanced Deprecation278: Additional Tests for Humongous Objects in G1279: Improve Test-Failure Troubleshooting280: Indify String Concatenation281: HotSpot C++ Unit-Test Framework282: jlink: The Java Linker283: Enable GTK 3 on Linux284: New HotSpot Build System285: Spin-Wait Hints287: SHA-3 Hash Algorithms288: Disable SHA-1 Certificates289: Deprecate the Applet API290: Filter Incoming Serialization Data292: Implement Selected ECMAScript 6 Features in Nashorn294: Linux/s390x Port295: Ahead-of-Time Compilation297: Unified arm32/arm64 Port298: Remove Demos and Samples

Page 10: Java 9 Functionality and Tooling

Free Lunch!• Better Use of Memory• Better Performance of: • Locking• Secure Apps• Graphics

• Better Use of Hardware• Better Documentation• Prettier Graphics (Windows and Linux)• Faster Compilation

Page 11: Java 9 Functionality and Tooling

Compiling with Java 9

Page 12: Java 9 Functionality and Tooling
Page 14: Java 9 Functionality and Tooling

Your code might break!Try it out now to find out sooner, not later

Page 15: Java 9 Functionality and Tooling

• 214: Remove Deprecated GC Combinations• 231: Remove Launch-Time JRE Version Selection• 240: Remove the JVM TI hprof Agent• 241: Remove the jhat Tool• 260: Encapsulate Most Internal APIs• 289: Deprecate the Applet API• 298: Remove Demos and Samples

Going Away

Page 16: Java 9 Functionality and Tooling

• 158: Unified JVM Logging• 223: New Version-String Scheme• 245: Validate JVM Command-Line Flag Arguments• 248: Make G1 the Default Garbage Collector• 271: Unified GC Logging

Possible Unexpected Behaviour

Page 17: Java 9 Functionality and Tooling

Jigsaw

Page 18: Java 9 Functionality and Tooling

• Generation of module-info.java• Syntax support for module-info.java• Code completion in module-info.java• Compilation of multi-module projects• Quick fixes to add requires statements

IntelliJ IDEA 2017.1

Page 19: Java 9 Functionality and Tooling

• Automatic generation of module-info.java• IntelliJ IDEA module structure recognised on

import• JLink artifacts

IntelliJ IDEA 2017.?

Page 21: Java 9 Functionality and Tooling

Easy to Use Features

Page 22: Java 9 Functionality and Tooling

New Methods on the Streams API

Page 23: Java 9 Functionality and Tooling

269: Convenience Factory Methods for Collections

Page 24: Java 9 Functionality and Tooling

213: Milling Project CoinPrivate Methods on Interfaces

Page 25: Java 9 Functionality and Tooling

277: Updated Deprecation

Page 26: Java 9 Functionality and Tooling

102: Process API Updates

Page 27: Java 9 Functionality and Tooling

266: More Concurrency Updates

Page 28: Java 9 Functionality and Tooling

JShell (repl)

Page 31: Java 9 Functionality and Tooling

Interesting Tidbits

Page 32: Java 9 Functionality and Tooling

263: HiDPI graphics on Windows

Page 33: Java 9 Functionality and Tooling

224: HTML5 Javadoc

Page 34: Java 9 Functionality and Tooling

225: Javadoc search

Page 35: Java 9 Functionality and Tooling

248: Default Garbage Collector is now G1

Page 36: Java 9 Functionality and Tooling

In Summary

Page 37: Java 9 Functionality and Tooling

Java 9 is more than Jigsaw

Page 38: Java 9 Functionality and Tooling

There’s quite a lot to gain

Page 39: Java 9 Functionality and Tooling

Better to find the pain sooner than later

Page 40: Java 9 Functionality and Tooling

http://bit.ly/j9IntelliJ

@trisha_gee