2. Attention
•Depends on OpenJDK project.
•This slide provides only the
summary for LT. Something
may have been changed until
General Availability is released.
•Drunken Speaker, Drunken LT.
Please, don’t be serious :p
http://openjdk.java.net/projects/jdk9/ (31/Jul/2015)
3. Who am I
•KUBOTA Yuji (@sugarlife)
•icedtea committer
(HeapStats)
•OpenJDK Contributor
•JavaOne Speaker
•Hard-hearing person
4. JDK9 Schedule
•2015/12/10: Feature Complete
• : Many tests
•2016/07/21: Final Release
Candidate
•2016/09/22: General Availability
http://openjdk.java.net/projects/jdk9/
5. What features will come?
102: Process API Updates
110: HTTP 2 Client
143: Improve Contended Locking
158: Unified JVM Logging
165: Compiler Control
193: Variable Handles
197: Segmented Code Cache
199: Smart Java Compilation, Phase Two
201: Modular Source Code
211: Elide Deprecation Warnings on Import Statements
212: Resolve Lint and Doclint Warnings
213: Milling Project Coin
214: Remove GC Combinations Deprecated in JDK 8
215: Tiered Attribution for javac
216: Process Import Statements Correctly
217: Annotations Pipeline 2.0
219: Datagram Transport Layer Security (DTLS)
220: Modular Run-Time Images
221: Simplified Doclet API
222: jshell: The Java Shell (Read-Eval-Print Loop)
223: New Version-String Scheme
224: HTML5 Javadoc
226: UTF-8 Property Files
227: Unicode 7.0
228: Add More Diagnostic Commands
229: Create PKCS12 Keystores by Default
230: Microbenchmark Suite
231: Remove Launch-Time JRE Version Selection
232: Improve Secure Application Performance
233: Generate Run-Time Compiler Tests Automatically
235: Test Class-File Attributes Generated by javac
236: Parser API for Nashorn
237: Linux/AArch64 Port
240: Remove the JVM TI hprof Agent
241: Remove the jhat Tool
243: Java-Level JVM Compiler Interface
244: TLS Application-Layer Protocol Negotiation Extension
245: Validate JVM Command-Line Flag Arguments
246: Leverage CPU Instructions for GHASH and RSA
247: Compile for Older Platform Versions
248: Make G1 the Default Garbage Collector
249: OCSP Stapling for TLS
250: Store Interned Strings in CDS Archives
251: Multi-Resolution Images
252: Use CLDR Locale Data by Default
253: Prepare JavaFX UI Controls & CSS APIs for Modularization
254: Compact Strings
255: Merge Selected Xerces 2.11.0 Updates into JAXP
256: BeanInfo Annotations
257: Update JavaFX/Media to Newer Version of GStreamer
258: HarfBuzz Font-Layout Engine
6. What features will come?
102: Process API Updates
110: HTTP 2 Client
143: Improve Contended Locking
158: Unified JVM Logging
165: Compiler Control
193: Variable Handles
197: Segmented Code Cache
199: Smart Java Compilation, Phase Two
201: Modular Source Code
211: Elide Deprecation Warnings on Import Statements
212: Resolve Lint and Doclint Warnings
213: Milling Project Coin
214: Remove GC Combinations Deprecated in JDK 8
215: Tiered Attribution for javac
216: Process Import Statements Correctly
217: Annotations Pipeline 2.0
219: Datagram Transport Layer Security (DTLS)
220: Modular Run-Time Images
221: Simplified Doclet API
222: jshell: The Java Shell (Read-Eval-Print Loop)
223: New Version-String Scheme
224: HTML5 Javadoc
226: UTF-8 Property Files
227: Unicode 7.0
228: Add More Diagnostic Commands
229: Create PKCS12 Keystores by Default
230: Microbenchmark Suite
231: Remove Launch-Time JRE Version Selection
232: Improve Secure Application Performance
233: Generate Run-Time Compiler Tests Automatically
235: Test Class-File Attributes Generated by javac
236: Parser API for Nashorn
237: Linux/AArch64 Port
240: Remove the JVM TI hprof Agent
241: Remove the jhat Tool
243: Java-Level JVM Compiler Interface
244: TLS Application-Layer Protocol Negotiation Extension
245: Validate JVM Command-Line Flag Arguments
246: Leverage CPU Instructions for GHASH and RSA
247: Compile for Older Platform Versions
248: Make G1 the Default Garbage Collector
249: OCSP Stapling for TLS
250: Store Interned Strings in CDS Archives
251: Multi-Resolution Images
252: Use CLDR Locale Data by Default
253: Prepare JavaFX UI Controls & CSS APIs for Modularization
254: Compact Strings
255: Merge Selected Xerces 2.11.0 Updates into JAXP
256: BeanInfo Annotations
257: Update JavaFX/Media to Newer Version of GStreamer
258: HarfBuzz Font-Layout Engine
( ゚д゚ )
7. Give it a once-over!
•This color’s feature is important
for ME who develop the product
depends on JVM.
•This color’s feature is
interesting for someone who
develop java applications.
•Good feature. But not affects on
me.
8. 102: Process API Updates
•Do you want information
about process? ok, here is.
9. 110: HTTP 2 Client
•Do you want API for
HTTP/2 ? ok, here is.
10. 143: Improve Contended Locking
•Good speed for contended
java object monitors.
•JVM will get a better
performance without change
of your codes.
•But, HeapStats (includes
thread monitor) developers
may be required hard work.
11. 158: Unified JVM Logging
•Shall we unify the log format of
JVM: e.g. compiler, gc,
classload, metaspace, etc...
•If you develop log parser, watch it.
•Xlog[:[<what>][:[<output>][:[<decorat
ors>][:<output-options>]]]]
•Xlog:gc=debug:file=gc.log:uptimemi
llis,pids:filecount=5,filesize=1024
12. 165: Compiler Control
•I WANNA CONTROL COMPILER
MORE DETAIL!
•You (probably JVM tester) can
•add some order when specified
method is being compiled (for c1
and c2).
• print assembly, set breakpoint,
enable compile or not, and more.
•change the option sets while run
17. 201: Modular Source Code
•JDK source code into
modules.
•A part of Project Jigsaw.
•If you read OpenJDK source
code, you need to remake
your nautical table :p
18. 211: Elide Deprecation Warnings
on Import Statements
•Lint warnings is cry-wolf?
•javac always show warning
when you import statement
which include a deprecated
method or member.
•So resolve it.
19. 212: Resolve Lint and Doclint
Warnings
•To clean lint and doclint
errors of some JDK
components.
20. 213: Milling Project Coin
•Add language changes.
•@SafeVargs on private methods
• non-overridable executable.
•improve try-with-resource
• allow effectively final variables to
be used as resources.
•Allow diamond with anonymous
classes if the argument type of
the inferred type is denotable.
•and more two coins.
25. 219: Datagram Transport Layer
Security (DTLS)
•API for DTLS 1.0 (RFC 4347)
and DTLS 1.2 (RFC 6347)
26. 220: Modular Run-Time Images
•Restructure the JDK and JRE
to accommodate modules.
•A main part of Project Jigsaw
•Many risks and impacts
•no longer contain the files
• lib/rt.jar, lib/tools.jar, lib/dt.jar,..
•Class loader of some existing
packages will change, and more.
•But very useful for many Dev.
28. 222: jshell: The Java Shell (Read-
Eval-Print Loop)
•No need more Test.java!
•An interactive tool for Java
programming language.
•You can use it already at below.
•https://jdk9.java.net/download/
•@bitter_fox joined this project.
•(Japanese committer)
29. 223: New Version-String Scheme
•Change version-string format.
•Security update 2 times +
Minor update 1 times
•Current
• long: 1.8.0_20-b62
• short:8u20
•Proposed
• long: 9.1.2+62
• short:9.1.2
• $MAJOR.$MINOR.$SECURITY
36. 231: Remove Launch-Time JRE
Version Selection
•Remove forgotten options.
•“-version:” option
•Not “-version” option
•“JRE-Version” manifest entry
at jar file.
37. 232: Improve Secure Application
Performance
•Good speed with a security
manager installed.
38. 233: Generate Run-Time
Compiler Tests Automatically
•Generate jtreg-compatible
automatically for openjdk
developers.
•If you want to evaluate JVM
with new CPU instructions,
optimizations, and other
enhancements, generated
tests should be useful.
42. 240: Remove the JVM TI hprof
Agent
•Good bye hprof
•See also (alternatives)
•OProfile
•perf
•YourKit
•SystemTap (for debug)
43. 241: Remove the jhat Tool
•Good bye jhat
•See also (alternatives)
•Eclipse MAT
44. 243: Java-Level JVM Compiler
Interface
•You can trace JVM JIT
activity via this interface.
45. 244: TLS Application-Layer
Protocol Negotiation Extension
•javax.net.ssl package
supports the TLS ALPN.
•This feature relates to
HTTP/2 support (JEP110).
46. 245: Validate JVM Command-
Line Flag Arguments
•For example, some JVM flag
takes an out-of-range value,
and crashes without an
informative error message.
•So fix it.
47. 246: Leverage CPU Instructions
for GHASH and RSA
•Good security with a low
overhead.
48. 246: Leverage CPU Instructions
for GHASH and RSA
•Good security with a low
overhead.
• for SPARC and Intel x64 CPU.
50. 248: Make G1 the Default
Garbage Collector
•Oracle says “G1 is good”.
•Huge impact to a operation
by default JVM options.
•But I think that all listeners
set a configuration to use
specified GC. So this change
does not impact you.
•Really?
52. 250: Store Interned Strings in
CDS Archives
•Interned String will be stored
in Class-Data Sharing when
G1GC used.
•A history of a housing
•Permanent Gen (JDK6)
•Java Heap (JDK7-8)
•Class-Data Sharing (JDK9+G1)