Upload
trisha-gee
View
552
Download
0
Embed Size (px)
Citation preview
—
Trisha Gee (@trisha_gee)Developer & Technical Advocate, JetBrains
Java 9 in Anticipation: Features 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
Java 9
Jigsaw, yay!
But it might break everything…
…and I don’t need it anyway.
So, thanks but no thanks. I’ll wait for Value Types.
Java 9 is so much more than Jigsaw
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
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
Compiling with Java 9
https://wiki.openjdk.java.net/display/Adoption/JDK+9+Outreach
Your code might break!Try it out now to find out sooner, not later
• 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
• 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
Jigsaw
• 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
• Automatic generation of module-info.java• IntelliJ IDEA module structure recognised on
import• JLink artifacts
IntelliJ IDEA 2017.?
We’d Love Your Helphttps://youtrack.jetbrains.com/issue/IDEA-154240
Easy to Use Features
New Methods on the Streams API
269: Convenience Factory Methods for Collections
213: Milling Project CoinPrivate Methods on Interfaces
277: Updated Deprecation
102: Process API Updates
266: More Concurrency Updates
JShell (repl)
https://java.net/downloads/adoptopenjdk/REPL_Tutorial.pdf
We’d Love Your Helphttps://youtrack.jetbrains.com/issue/IDEA-161611
Interesting Tidbits
263: HiDPI graphics on Windows
224: HTML5 Javadoc
225: Javadoc search
248: Default Garbage Collector is now G1
In Summary
Java 9 is more than Jigsaw
There’s quite a lot to gain
Better to find the pain sooner than later
http://bit.ly/j9IntelliJ
@trisha_gee