SlideShare una empresa de Scribd logo
1 de 40
© Copyright Azul Systems 2017
© Copyright Azul Systems 2015
@speakjava
55 New Features
In JDK 9
Simon Ritter
Deputy CTO, Azul Systems
1
© Copyright Azul Systems 2017
Major Features
© Copyright Azul Systems 2017
Modularity/Jigsaw
 Standard class libraries modularised (JEP 220)
– rt.jar now 85 modules
 Most internal APIs now encapsulated (JEP 260)
– Some can be used with command line option
– sun.misc.Unsafe
 Modular source code (JEP 201)
– JDK source code re-organised to support modules
– Not the module system
3
© Copyright Azul Systems 2017
jlink: The Java Linker (JEP 282)
4
Modular run-time
image
…confbin
jlink
$ jlink --modulepath $JDKMODS 
--addmods java.base –output myimage
$ myimage/bin/java –listmods
java.base@9.0
© Copyright Azul Systems 2017
jlink: The Java Linker (JEP 282)
$ jlink --modulepath $JDKMODS:$MYMODS 
--addmods com.azul.app –output myimage
$ myimage/bin/java –listmods
java.base@9.0
java.logging@9.0
java.sql@9.0
java.xml@9.0
com.azul.app@1.0
com.azul.zoop@1.0
com.azul.zeta@1.0
Version numbering for
information purposes only
“It is not a goal of the module
system to solve the version-
selection problem”
© Copyright Azul Systems 2017
Factory Methods For Collections (JEP 269)
 Static factory methods on List, Set and Map interfaces
– Create compact, immutable instances
– 0 to 10 element overloaded versions
6
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set = Collections.unmodifiableSet(set);
Set<String> set = Set.of("a", "b", "c");
© Copyright Azul Systems 2017
Stream Enhancements
 dropWhile()/takeWhile()
– Like skip/limit but uses Predicate rather than number
 Improved iterate
– Enables a stream to be more like a for loop
 Parallel Files.lines()
– Memory mapped, divided on line break boundary
 Stream from Optional
– Stream of zero or one elements
7
© Copyright Azul Systems 2017
Multi-Release Jar Files (JEP 238)
 Multiple Java release-specific class files in a single archive
 Enhance jar tool to create multi-release files
 Support multi-release jar files in the JRE
– Classloaders
– JarFile API
 Enhance other tools
– javac, javap, jdeps, etc.
 Also, modular jar files
8
© Copyright Azul Systems 2017
REPL: jshell (JEP 222)
 Read-Eval-Print Loop
– Simple prototyping
9
© Copyright Azul Systems 2017
Concurrency Updates (JEP 266)
 Reactive streams publish-subscribe framework
 Asynchronous, non-blocking
 Flow
– Publisher, Subscriber, Processor, Subscription
 SubmissionPublisher utility class
– Asynchronously issues items to current subscribers
– Implements Flow.Processor
10
© Copyright Azul Systems 2017
Concurrency Updates (JEP 266)
 CompletableFuture additions
– Delays and timeouts
– Better support for sub-classing
– New utility methods
 minimalCompletionStage
 failedStage
 newIncompleteFuture
 failedFuture
11
© Copyright Azul Systems 2017
Enhanced Deprecation (JEP 277)
 We have @deprecated and @Deprecated
– Used to cover too many situations
 New methods in Deprecated annotation
– boolean forRemoval()
 Will this ever be removed?
– String since()
 JDK Version when this was deprecated
 Several @Deprecated tags added
– java.awt.Component.{show(),hide()} removed
12
© Copyright Azul Systems 2017
Milling Project Coin (JEP 213)
 Underscore no longer valid as identifier
– Ready for use in Lambdas
 Private methods in interfaces
– Multiple inheritance of behaviour makes this logical
 Effectively final variables in try-with-resources
– Variables from outside try block
 Allow @SafeVarargs on private instance methods
– In addition to constructors, final and static methods
 Diamond operator with anonymous classes
– Extending type inference further
13
© Copyright Azul Systems 2017
Standards
© Copyright Azul Systems 2017
Updating To Relevant Standards
 Unicode 7.0/8.0 (JEP 227/267)
– 7.0: 2,834 new characters
– 8.0: 7,716 new characters
 PKCS12 key stores by default (JEP 229)
– Move from JKS to PKCS12
 HTML5 javadocs (JEP 224)
– Flashier documentation
 SHA 3 hash algorithms (JEP 287)
– Keeping ahead of the hackers
15
}seriously!
© Copyright Azul Systems 2017
Smaller Features
 UTF-8 property files (JEP 226)
– ResourceBundle API updated to load these files
 DRBG-Based SecureRandom implementations (JEP 273)
– Deterministic Random Bit Generator
 XML Catalog API (JEP 268)
– Supports OASIS XML catalog API v1.1
– For use with JAXP
16
© Copyright Azul Systems 2017
Inside The JVM
© Copyright Azul Systems 2017
Default Collector: G1 (JEP 248)
 G1 now mature in development
 Designed as low-pause collector
 Concurrent class unloading (JEP 156) JDK8u40
– Useful enhancement to improve G1
 Still falls back to full compacting collection
– Pause times proportional to heap size
– Use Zing from Azul for truly pauseless
18
© Copyright Azul Systems 2017
Better String Performance
 Compact strings (JEP 254)
– Improve the space efficiency of the String class
– Not using alternative encodings
 Store interned strings in CDS archive (JEP 250)
– Share String and char[] objects between JVMs
 Indify String concatenation (JEP 280)
– Change from static String-concatenation bytecode
sequence to invokedynamic
– Allow future performance improvements
19
© Copyright Azul Systems 2017
Marlin Graphics Renderer (JEP 265)
 Replaces Pisces open-source renderer
– Comparable performance to closed-source Ductus
20
© Copyright Azul Systems 2017
Smaller Features
 Improve contended locking (JEP 143)
– Field reordering/cache line alignment
 Leverage CPU instructions for GHASH and RSA (JEP 246)
– 34-150x better performance (for certain tests)
 Update JavaFX to newer version of GStreamer (JEP 257)
– Media class
– Better security, stability and performance
21
© Copyright Azul Systems 2017
Smaller Features
 Segmented Code Cache (JEP 197)
– Separate non-method, profiled and non-profiled code
 Unified JVM logging (JEP 158)
– Common logging system for all components of JVM
 Unified GC logging (JEP 271)
– Re-implement GC logging using unified JVM logging
22
© Copyright Azul Systems 2017
Specialised
© Copyright Azul Systems 2017
Spin-Wait Hints (JEP 285)
 Proposed by Azul
– We rock!
 A new method for Thread class
– onSpinWait()
 Enables the x86 PAUSE instruction to be used from Java
code
– If available
– Ignored otherwise
– Improved performance for things like Disruptor
24
© Copyright Azul Systems 2017
Variable Handles (JEP 193)
 Replacement for parts of sun.misc.Unsafe
 Fence operations
– Fine grained memory control
– Atomic operations on object fields and array elements
 VarHandle
– compareAndExchange(), compareAndSet()
– getAndAdd(), getAndSet()
– acquireFence(), releaseFence()
25
© Copyright Azul Systems 2017
Enhanced Method Handles (JEP 274)
 Support for
– loops
– try/finally blocks
 Better argument handling
– Spreading
– Collection
– Folding
 More lookup functions
– Non-abstract methods in interfaces, classes
26
© Copyright Azul Systems 2017
Smaller Features
 Compiler control (JEP 165)
– Control of C1/C2 JIT, not javac
– Directive file
– Runtime changes via jcmd
 Process API updates (JEP 102)
– Native process (Process/ProcessHandle)
– More information: pid, arguments, start time, CPU usage,
name
– Control subject to security manager permissions
27
© Copyright Azul Systems 2017
Housekeeping
© Copyright Azul Systems 2017
New Version String Format (JEP 223)
 Old
– Limited update release/Critical patch update (CPU)
– JDK 8u121 or jdk1.8.0_u121
– Which has more patches, JDK 7u55 or JDK 7u60?
 New
– JDK $MAJOR.$MINOR.$SECURITY.$PATCH
– Easy to understand by humans and apps
– Semantic versioning
29
© Copyright Azul Systems 2017
JDK/JRE File Structure (JEP 220)
30
bin
Pre-JDK 9 JDK 9
lib
tools.jar
jre
bin
rt.jar
lib
libconfbin
jre directory
tools.jar
rt.jar
© Copyright Azul Systems 2017
Smaller Features
 Searchable API documentation (JEP 225)
– Finally! Java API docs enter the 21st century
 Annotations pipeline 2.0 (JEP 217)
– Repeating, type and Lambda annotations in JDK 8
– Redesign of javac annotation pipeline
 Parser API for Nashorn (JEP 236)
– API for Nashorn abstract tree syntax
31
© Copyright Azul Systems 2017
General Clean Up
 Disable SHA-1 certificates (JEP 288)
– Mostly
 In some situations SHA-1 certs. will still be accepted
 Deprecate the Applet API (JEP 289)
– Not many people still use this
32
© Copyright Azul Systems 2017
Removed From JDK 9
 Six deprecated APIs (JEP 162)
– ActionListeners in Pack200 and LogManager
 JRE version selection command line option (JEP 231)
– -version: no longer accepted
 Demos and samples (JEP 298)
– Out-of-date, unmaintained
33
© Copyright Azul Systems 2017
Removed From JDK 9
 JVM TI hprof agent (JEP 240)
– Only ever intended as a demo of JVM TI
– Useful features now in other tools (like jmap)
 Remove the jhat tool (JEP 241)
– Experimental tool added in JDK 6
– Unsupported
– Better heap visualisation tools available
34
© Copyright Azul Systems 2017
Removed GC Options (JEP 214)
 Deprecated in JDK 8 (JEP 173)
35
DefNew + CMS : -XX:-UseParNewGC -XX:+UseConcMarkSweepGC
ParNew + SerialOld : -XX:+UseParNewGC
ParNew + iCMS : -Xincgc
ParNew + iCMS : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC
DefNew + iCMS : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC
-XX:-UseParNewGC
CMS foreground : -XX:+UseCMSCompactAtFullCollection
CMS foreground : -XX:+CMSFullGCsBeforeCompaction
CMS foreground : -XX:+UseCMSCollectionPassing
© Copyright Azul Systems 2017
Incubator Modules (JEP 11)
 Develop APIs without making them part of the standard
– At least not straight away
 Allow developers to “kick the tyres”
– Not always possible to get a new API right first time
 Move from incubator to full module
– Becomes part of the standard
 JDK 9 only has one incubator: HTTP/2 (JEP 110)
 Some concerns about fragmentation
--do-not-resolve-by-default
36
© Copyright Azul Systems 2017
Summary
© Copyright Azul Systems 2017
JDK 9
 Big new feature is modularity
– Covers numerous different areas
– Modules, jink, jmods, etc.
 Smaller developer features
– New APIs for streams
– Reactive API
– REPL/jshell
 Many smaller performance/standards features
 Time to start testing, if you’re not already
38
© Copyright Azul Systems 2017
Zulu Java
 Azul’s binary distribution of OpenJDK
– Passes all TCK tests
– Multi-platform (Windows, Linux, Mac)
– FREE!
 Happy to sell you support, including older versions
 JDK 6, 7, 8 and 9 (Early Access)
39
www.zulu.org/download
© Copyright Azul Systems 2017
© Copyright Azul Systems 2015
@speakjava
Questions
Simon Ritter
Deputy CTO, Azul Systems
40

Más contenido relacionado

La actualidad más candente

Building a Brain with Raspberry Pi and Zulu Embedded JVM
Building a Brain with Raspberry Pi and Zulu Embedded JVMBuilding a Brain with Raspberry Pi and Zulu Embedded JVM
Building a Brain with Raspberry Pi and Zulu Embedded JVMSimon Ritter
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondSimon Ritter
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12Simon Ritter
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Simon Ritter
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java WorkshopSimon Ritter
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Simon Ritter
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Robert Scholte
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawComsysto Reply GmbH
 
JDK 14 Lots of New Features
JDK 14 Lots of New FeaturesJDK 14 Lots of New Features
JDK 14 Lots of New FeaturesSimon Ritter
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12NexSoftsys
 
Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9Pavel Bucek
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in actionMarco Molteni
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Marco Antonio Maciel
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 

La actualidad más candente (20)

Building a Brain with Raspberry Pi and Zulu Embedded JVM
Building a Brain with Raspberry Pi and Zulu Embedded JVMBuilding a Brain with Raspberry Pi and Zulu Embedded JVM
Building a Brain with Raspberry Pi and Zulu Embedded JVM
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
JDK 9 Deep Dive
JDK 9 Deep DiveJDK 9 Deep Dive
JDK 9 Deep Dive
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9
 
Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project Jigsaw
 
JDK 14 Lots of New Features
JDK 14 Lots of New FeaturesJDK 14 Lots of New Features
JDK 14 Lots of New Features
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12
 
Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in action
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 

Destacado

Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8Simon Ritter
 
It's Java Jim, But Not As We Know It!
It's Java Jim, But Not As We Know It!It's Java Jim, But Not As We Know It!
It's Java Jim, But Not As We Know It!Simon Ritter
 
Project Jigsaw in JDK9
Project Jigsaw in JDK9Project Jigsaw in JDK9
Project Jigsaw in JDK9Simon Ritter
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerSimon Ritter
 
Lambdas Hands On Lab
Lambdas Hands On LabLambdas Hands On Lab
Lambdas Hands On LabSimon Ritter
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)Nam Hyeonuk
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기duriepark 유현석
 
Project Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaProject Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaC4Media
 
AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0CTruncer
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017John Maeda
 
25 Discovery Call Questions
25 Discovery Call Questions25 Discovery Call Questions
25 Discovery Call QuestionsHubSpot
 
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...HubSpot
 
HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot
 
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...HubSpot
 
Add the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonAdd the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonHubSpot
 
What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)Rudy De Busscher
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)Chang-Hwan Han
 

Destacado (19)

Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8Lessons Learnt With Lambdas and Streams in JDK 8
Lessons Learnt With Lambdas and Streams in JDK 8
 
It's Java Jim, But Not As We Know It!
It's Java Jim, But Not As We Know It!It's Java Jim, But Not As We Know It!
It's Java Jim, But Not As We Know It!
 
Project Jigsaw in JDK9
Project Jigsaw in JDK9Project Jigsaw in JDK9
Project Jigsaw in JDK9
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java Smaller
 
Lambdas Hands On Lab
Lambdas Hands On LabLambdas Hands On Lab
Lambdas Hands On Lab
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기
 
Project Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To JavaProject Jigsaw in JDK 9: Modularity Comes To Java
Project Jigsaw in JDK 9: Modularity Comes To Java
 
AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0AntiVirus Evasion Reconstructed - Veil 3.0
AntiVirus Evasion Reconstructed - Veil 3.0
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
25 Discovery Call Questions
25 Discovery Call Questions25 Discovery Call Questions
25 Discovery Call Questions
 
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
 
HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot Diversity Data 2016
HubSpot Diversity Data 2016
 
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
 
Add the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonAdd the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-Thon
 
What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
 
What's New in Java SE 9
What's New in Java SE 9What's New in Java SE 9
What's New in Java SE 9
 

Similar a 55 New Features in JDK 9

55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9VMware Tanzu
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Anna Shymchenko
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondSimon Ritter
 
Frontend JS workflow - Gulp 4 and the like
Frontend JS workflow - Gulp 4 and the likeFrontend JS workflow - Gulp 4 and the like
Frontend JS workflow - Gulp 4 and the likeDamien Seguin
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8Simon Ritter
 
Graphite & Metrictank - Meetup Tel Aviv Yafo
Graphite & Metrictank - Meetup Tel Aviv YafoGraphite & Metrictank - Meetup Tel Aviv Yafo
Graphite & Metrictank - Meetup Tel Aviv YafoDieter Plaetinck
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?Azul Systems Inc.
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?Azul Systems, Inc.
 
Online patching ebs122_aioug_appsdba_nov2017
Online patching ebs122_aioug_appsdba_nov2017Online patching ebs122_aioug_appsdba_nov2017
Online patching ebs122_aioug_appsdba_nov2017pasalapudi
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynoteSuyash Joshi
 
Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Dmitry Chuyko
 
Java History - MyExamCloud Presentation
Java History - MyExamCloud PresentationJava History - MyExamCloud Presentation
Java History - MyExamCloud PresentationGanesh P
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
[Strukelj] Why will Java 7.0 be so cool
[Strukelj] Why will Java 7.0 be so cool[Strukelj] Why will Java 7.0 be so cool
[Strukelj] Why will Java 7.0 be so cooljavablend
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"GlobalLogic Ukraine
 

Similar a 55 New Features in JDK 9 (20)

55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
Frontend JS workflow - Gulp 4 and the like
Frontend JS workflow - Gulp 4 and the likeFrontend JS workflow - Gulp 4 and the like
Frontend JS workflow - Gulp 4 and the like
 
Java SE 8 & EE 7 Launch
Java SE 8 & EE 7 LaunchJava SE 8 & EE 7 Launch
Java SE 8 & EE 7 Launch
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8
 
Graphite & Metrictank - Meetup Tel Aviv Yafo
Graphite & Metrictank - Meetup Tel Aviv YafoGraphite & Metrictank - Meetup Tel Aviv Yafo
Graphite & Metrictank - Meetup Tel Aviv Yafo
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Java 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
 
Online patching ebs122_aioug_appsdba_nov2017
Online patching ebs122_aioug_appsdba_nov2017Online patching ebs122_aioug_appsdba_nov2017
Online patching ebs122_aioug_appsdba_nov2017
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynote
 
PROSE
PROSEPROSE
PROSE
 
Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Compile ahead of time. It's fine?
Compile ahead of time. It's fine?
 
Java History - MyExamCloud Presentation
Java History - MyExamCloud PresentationJava History - MyExamCloud Presentation
Java History - MyExamCloud Presentation
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
[Strukelj] Why will Java 7.0 be so cool
[Strukelj] Why will Java 7.0 be so cool[Strukelj] Why will Java 7.0 be so cool
[Strukelj] Why will Java 7.0 be so cool
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 
App container rkt
App container rktApp container rkt
App container rkt
 

Más de Simon Ritter

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native CompilerSimon Ritter
 
The Art of Java Type Patterns
The Art of Java Type PatternsThe Art of Java Type Patterns
The Art of Java Type PatternsSimon Ritter
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java WorkshopSimon Ritter
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoringSimon Ritter
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern JavaSimon Ritter
 
Building a Better JVM
Building a Better JVMBuilding a Better JVM
Building a Better JVMSimon Ritter
 
How to Choose a JDK
How to Choose a JDKHow to Choose a JDK
How to Choose a JDKSimon Ritter
 
The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologySimon Ritter
 
Developing Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologyDeveloping Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologySimon Ritter
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?Simon Ritter
 
Java Is Still Free
Java Is Still FreeJava Is Still Free
Java Is Still FreeSimon Ritter
 
Java Support: What's changing
Java Support:  What's changingJava Support:  What's changing
Java Support: What's changingSimon Ritter
 
It's Java, Jim, but not as we know it
It's Java, Jim, but not as we know itIt's Java, Jim, but not as we know it
It's Java, Jim, but not as we know itSimon Ritter
 
Whats New For Developers In JDK 9
Whats New For Developers In JDK 9Whats New For Developers In JDK 9
Whats New For Developers In JDK 9Simon Ritter
 
Streams: The Good, The Bad And The Ugly
Streams: The Good, The Bad And The UglyStreams: The Good, The Bad And The Ugly
Streams: The Good, The Bad And The UglySimon Ritter
 

Más de Simon Ritter (18)

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native Compiler
 
Java On CRaC
Java On CRaCJava On CRaC
Java On CRaC
 
The Art of Java Type Patterns
The Art of Java Type PatternsThe Art of Java Type Patterns
The Art of Java Type Patterns
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
 
Building a Better JVM
Building a Better JVMBuilding a Better JVM
Building a Better JVM
 
Java after 8
Java after 8Java after 8
Java after 8
 
How to Choose a JDK
How to Choose a JDKHow to Choose a JDK
How to Choose a JDK
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans Technology
 
Developing Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologyDeveloping Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java Technology
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?
 
Java Is Still Free
Java Is Still FreeJava Is Still Free
Java Is Still Free
 
Java Support: What's changing
Java Support:  What's changingJava Support:  What's changing
Java Support: What's changing
 
It's Java, Jim, but not as we know it
It's Java, Jim, but not as we know itIt's Java, Jim, but not as we know it
It's Java, Jim, but not as we know it
 
Whats New For Developers In JDK 9
Whats New For Developers In JDK 9Whats New For Developers In JDK 9
Whats New For Developers In JDK 9
 
Streams: The Good, The Bad And The Ugly
Streams: The Good, The Bad And The UglyStreams: The Good, The Bad And The Ugly
Streams: The Good, The Bad And The Ugly
 

Último

Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Último (20)

Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

55 New Features in JDK 9

  • 1. © Copyright Azul Systems 2017 © Copyright Azul Systems 2015 @speakjava 55 New Features In JDK 9 Simon Ritter Deputy CTO, Azul Systems 1
  • 2. © Copyright Azul Systems 2017 Major Features
  • 3. © Copyright Azul Systems 2017 Modularity/Jigsaw  Standard class libraries modularised (JEP 220) – rt.jar now 85 modules  Most internal APIs now encapsulated (JEP 260) – Some can be used with command line option – sun.misc.Unsafe  Modular source code (JEP 201) – JDK source code re-organised to support modules – Not the module system 3
  • 4. © Copyright Azul Systems 2017 jlink: The Java Linker (JEP 282) 4 Modular run-time image …confbin jlink $ jlink --modulepath $JDKMODS --addmods java.base –output myimage $ myimage/bin/java –listmods java.base@9.0
  • 5. © Copyright Azul Systems 2017 jlink: The Java Linker (JEP 282) $ jlink --modulepath $JDKMODS:$MYMODS --addmods com.azul.app –output myimage $ myimage/bin/java –listmods java.base@9.0 java.logging@9.0 java.sql@9.0 java.xml@9.0 com.azul.app@1.0 com.azul.zoop@1.0 com.azul.zeta@1.0 Version numbering for information purposes only “It is not a goal of the module system to solve the version- selection problem”
  • 6. © Copyright Azul Systems 2017 Factory Methods For Collections (JEP 269)  Static factory methods on List, Set and Map interfaces – Create compact, immutable instances – 0 to 10 element overloaded versions 6 Set<String> set = new HashSet<>(); set.add("a"); set.add("b"); set.add("c"); set = Collections.unmodifiableSet(set); Set<String> set = Set.of("a", "b", "c");
  • 7. © Copyright Azul Systems 2017 Stream Enhancements  dropWhile()/takeWhile() – Like skip/limit but uses Predicate rather than number  Improved iterate – Enables a stream to be more like a for loop  Parallel Files.lines() – Memory mapped, divided on line break boundary  Stream from Optional – Stream of zero or one elements 7
  • 8. © Copyright Azul Systems 2017 Multi-Release Jar Files (JEP 238)  Multiple Java release-specific class files in a single archive  Enhance jar tool to create multi-release files  Support multi-release jar files in the JRE – Classloaders – JarFile API  Enhance other tools – javac, javap, jdeps, etc.  Also, modular jar files 8
  • 9. © Copyright Azul Systems 2017 REPL: jshell (JEP 222)  Read-Eval-Print Loop – Simple prototyping 9
  • 10. © Copyright Azul Systems 2017 Concurrency Updates (JEP 266)  Reactive streams publish-subscribe framework  Asynchronous, non-blocking  Flow – Publisher, Subscriber, Processor, Subscription  SubmissionPublisher utility class – Asynchronously issues items to current subscribers – Implements Flow.Processor 10
  • 11. © Copyright Azul Systems 2017 Concurrency Updates (JEP 266)  CompletableFuture additions – Delays and timeouts – Better support for sub-classing – New utility methods  minimalCompletionStage  failedStage  newIncompleteFuture  failedFuture 11
  • 12. © Copyright Azul Systems 2017 Enhanced Deprecation (JEP 277)  We have @deprecated and @Deprecated – Used to cover too many situations  New methods in Deprecated annotation – boolean forRemoval()  Will this ever be removed? – String since()  JDK Version when this was deprecated  Several @Deprecated tags added – java.awt.Component.{show(),hide()} removed 12
  • 13. © Copyright Azul Systems 2017 Milling Project Coin (JEP 213)  Underscore no longer valid as identifier – Ready for use in Lambdas  Private methods in interfaces – Multiple inheritance of behaviour makes this logical  Effectively final variables in try-with-resources – Variables from outside try block  Allow @SafeVarargs on private instance methods – In addition to constructors, final and static methods  Diamond operator with anonymous classes – Extending type inference further 13
  • 14. © Copyright Azul Systems 2017 Standards
  • 15. © Copyright Azul Systems 2017 Updating To Relevant Standards  Unicode 7.0/8.0 (JEP 227/267) – 7.0: 2,834 new characters – 8.0: 7,716 new characters  PKCS12 key stores by default (JEP 229) – Move from JKS to PKCS12  HTML5 javadocs (JEP 224) – Flashier documentation  SHA 3 hash algorithms (JEP 287) – Keeping ahead of the hackers 15 }seriously!
  • 16. © Copyright Azul Systems 2017 Smaller Features  UTF-8 property files (JEP 226) – ResourceBundle API updated to load these files  DRBG-Based SecureRandom implementations (JEP 273) – Deterministic Random Bit Generator  XML Catalog API (JEP 268) – Supports OASIS XML catalog API v1.1 – For use with JAXP 16
  • 17. © Copyright Azul Systems 2017 Inside The JVM
  • 18. © Copyright Azul Systems 2017 Default Collector: G1 (JEP 248)  G1 now mature in development  Designed as low-pause collector  Concurrent class unloading (JEP 156) JDK8u40 – Useful enhancement to improve G1  Still falls back to full compacting collection – Pause times proportional to heap size – Use Zing from Azul for truly pauseless 18
  • 19. © Copyright Azul Systems 2017 Better String Performance  Compact strings (JEP 254) – Improve the space efficiency of the String class – Not using alternative encodings  Store interned strings in CDS archive (JEP 250) – Share String and char[] objects between JVMs  Indify String concatenation (JEP 280) – Change from static String-concatenation bytecode sequence to invokedynamic – Allow future performance improvements 19
  • 20. © Copyright Azul Systems 2017 Marlin Graphics Renderer (JEP 265)  Replaces Pisces open-source renderer – Comparable performance to closed-source Ductus 20
  • 21. © Copyright Azul Systems 2017 Smaller Features  Improve contended locking (JEP 143) – Field reordering/cache line alignment  Leverage CPU instructions for GHASH and RSA (JEP 246) – 34-150x better performance (for certain tests)  Update JavaFX to newer version of GStreamer (JEP 257) – Media class – Better security, stability and performance 21
  • 22. © Copyright Azul Systems 2017 Smaller Features  Segmented Code Cache (JEP 197) – Separate non-method, profiled and non-profiled code  Unified JVM logging (JEP 158) – Common logging system for all components of JVM  Unified GC logging (JEP 271) – Re-implement GC logging using unified JVM logging 22
  • 23. © Copyright Azul Systems 2017 Specialised
  • 24. © Copyright Azul Systems 2017 Spin-Wait Hints (JEP 285)  Proposed by Azul – We rock!  A new method for Thread class – onSpinWait()  Enables the x86 PAUSE instruction to be used from Java code – If available – Ignored otherwise – Improved performance for things like Disruptor 24
  • 25. © Copyright Azul Systems 2017 Variable Handles (JEP 193)  Replacement for parts of sun.misc.Unsafe  Fence operations – Fine grained memory control – Atomic operations on object fields and array elements  VarHandle – compareAndExchange(), compareAndSet() – getAndAdd(), getAndSet() – acquireFence(), releaseFence() 25
  • 26. © Copyright Azul Systems 2017 Enhanced Method Handles (JEP 274)  Support for – loops – try/finally blocks  Better argument handling – Spreading – Collection – Folding  More lookup functions – Non-abstract methods in interfaces, classes 26
  • 27. © Copyright Azul Systems 2017 Smaller Features  Compiler control (JEP 165) – Control of C1/C2 JIT, not javac – Directive file – Runtime changes via jcmd  Process API updates (JEP 102) – Native process (Process/ProcessHandle) – More information: pid, arguments, start time, CPU usage, name – Control subject to security manager permissions 27
  • 28. © Copyright Azul Systems 2017 Housekeeping
  • 29. © Copyright Azul Systems 2017 New Version String Format (JEP 223)  Old – Limited update release/Critical patch update (CPU) – JDK 8u121 or jdk1.8.0_u121 – Which has more patches, JDK 7u55 or JDK 7u60?  New – JDK $MAJOR.$MINOR.$SECURITY.$PATCH – Easy to understand by humans and apps – Semantic versioning 29
  • 30. © Copyright Azul Systems 2017 JDK/JRE File Structure (JEP 220) 30 bin Pre-JDK 9 JDK 9 lib tools.jar jre bin rt.jar lib libconfbin jre directory tools.jar rt.jar
  • 31. © Copyright Azul Systems 2017 Smaller Features  Searchable API documentation (JEP 225) – Finally! Java API docs enter the 21st century  Annotations pipeline 2.0 (JEP 217) – Repeating, type and Lambda annotations in JDK 8 – Redesign of javac annotation pipeline  Parser API for Nashorn (JEP 236) – API for Nashorn abstract tree syntax 31
  • 32. © Copyright Azul Systems 2017 General Clean Up  Disable SHA-1 certificates (JEP 288) – Mostly  In some situations SHA-1 certs. will still be accepted  Deprecate the Applet API (JEP 289) – Not many people still use this 32
  • 33. © Copyright Azul Systems 2017 Removed From JDK 9  Six deprecated APIs (JEP 162) – ActionListeners in Pack200 and LogManager  JRE version selection command line option (JEP 231) – -version: no longer accepted  Demos and samples (JEP 298) – Out-of-date, unmaintained 33
  • 34. © Copyright Azul Systems 2017 Removed From JDK 9  JVM TI hprof agent (JEP 240) – Only ever intended as a demo of JVM TI – Useful features now in other tools (like jmap)  Remove the jhat tool (JEP 241) – Experimental tool added in JDK 6 – Unsupported – Better heap visualisation tools available 34
  • 35. © Copyright Azul Systems 2017 Removed GC Options (JEP 214)  Deprecated in JDK 8 (JEP 173) 35 DefNew + CMS : -XX:-UseParNewGC -XX:+UseConcMarkSweepGC ParNew + SerialOld : -XX:+UseParNewGC ParNew + iCMS : -Xincgc ParNew + iCMS : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC DefNew + iCMS : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC -XX:-UseParNewGC CMS foreground : -XX:+UseCMSCompactAtFullCollection CMS foreground : -XX:+CMSFullGCsBeforeCompaction CMS foreground : -XX:+UseCMSCollectionPassing
  • 36. © Copyright Azul Systems 2017 Incubator Modules (JEP 11)  Develop APIs without making them part of the standard – At least not straight away  Allow developers to “kick the tyres” – Not always possible to get a new API right first time  Move from incubator to full module – Becomes part of the standard  JDK 9 only has one incubator: HTTP/2 (JEP 110)  Some concerns about fragmentation --do-not-resolve-by-default 36
  • 37. © Copyright Azul Systems 2017 Summary
  • 38. © Copyright Azul Systems 2017 JDK 9  Big new feature is modularity – Covers numerous different areas – Modules, jink, jmods, etc.  Smaller developer features – New APIs for streams – Reactive API – REPL/jshell  Many smaller performance/standards features  Time to start testing, if you’re not already 38
  • 39. © Copyright Azul Systems 2017 Zulu Java  Azul’s binary distribution of OpenJDK – Passes all TCK tests – Multi-platform (Windows, Linux, Mac) – FREE!  Happy to sell you support, including older versions  JDK 6, 7, 8 and 9 (Early Access) 39 www.zulu.org/download
  • 40. © Copyright Azul Systems 2017 © Copyright Azul Systems 2015 @speakjava Questions Simon Ritter Deputy CTO, Azul Systems 40

Notas del editor

  1. forRemoval - Interesting. Tri-state (i.e. it may not be present on the annotation).
  2. Unicode 7: Lots of emojis, the Ruble symbol and Manat from Azerbaijan Unicode 8: Cherokee (lower case) some African languages and more emojis
  3. XML catalog is a document describing a mapping between extenal entity references and locallly cached equivalents. (Useful for things like DTDs)
  4. Concurrent class unloading means not having to do a full GC to unload classes Making G1 default may affect thruput Higher resource requirements Reasons to
  5. CDS = Class Data Sharing
  6. Segmented code cache to improve performance and allow future developments (Sumatra and the use of GPUs)
  7. MethodHandles utility class loop, countedLoop, whileLoop, tryFinally static methods spreading - arg array to individual args Collection - args to arg array Folding - Pre-prasing of arguments