SlideShare a Scribd company logo
1 of 48
55 New Features in JDK 9
Simon Ritter, Deputy CTO, Azul Systems
@speakjava
1
© Copyright Azul Systems 2017
Major Features
© Copyright Azul Systems 2017
Modularity/Jigsaw
 Standard class libraries modularised (JEP 220)
– JDK now 94 modules (Java SE is 36)
 Most internal APIs now encapsulated (JEP 260)
– sun.misc.Unsafe
– Some can be used with command line options
 --add-exports
 --add-opens
 Modular source code (JEP 201)
– JDK source code re-organised to support modules
– Not the module system
3
© Copyright Azul Systems 2017
Modularity/Jigsaw
 Compatability is an issue
– Mostly for libraries and frameworks
– Which most people use
– Override encapsulation of private APIs
 Leave everything on classpath to start with
 “Big kill switch” now has options
– Turns off encapsulation completely by default
– --illegal-access={permit,warn,debug,deny}
4
© Copyright Azul Systems 2017
jlink: The Java Linker (JEP 282)
5
Modular run-time
image
…confbin
jlink
$ jlink --modulepath $JDKMODS 
--addmods java.base –output myimage
$ myimage/bin/java –-list-modules
java.base@9
jmods
© Copyright Azul Systems 2017
jlink: The Java Linker (JEP 282)
$ jlink --module-path $JDKMODS:$MYMODS 
--addmods com.azul.app –-output myimage
$ myimage/bin/java –-list-modules
java.base@9
java.logging@9
java.sql@9
java.xml@9
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
– Plus varargs version for arbitary number of elements
7
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 element
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
9
© Copyright Azul Systems 2017
REPL: jshell (JEP 222)
 Read-Eval-Print Loop
– Simple prototyping
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
11
© Copyright Azul Systems 2017
Concurrency Updates (JEP 266)
 CompletableFuture additions
– Delays and timeouts
– Better support for sub-classing
– New static utility methods
 minimalCompletionStage
 failedStage
 newIncompleteFuture
 failedFuture
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
 jdeprscan command to produce report
13
© Copyright Azul Systems 2017
Milling Project Coin (JEP 213)
 Single 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
14
© 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
16
}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
17
© 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
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
20
© Copyright Azul Systems 2017
Marlin Graphics Renderer (JEP 265)
 Replaces Pisces open-source renderer
– Comparable performance to closed-source Ductus
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)
– Up to 150x better performance (for specific tests)
 Update JavaFX to newer version of GStreamer (JEP 257)
– Media class
– Better security, stability and performance
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
– Many command line options changed
23
© 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
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()
26
© Copyright Azul Systems 2017
AOT Compilation (JEP 295)
 Experimental feature in JDK 9
– -XX:+UnlockExperimentalVMOptions
– Only the java.base module has AOT version
 jaotc command
– jaotc --output libMyStuff.so MyStuff.jar
 JVM uses AOT code to replace interpreted
– Can recompile with C1 to collect further profiling data
– Recompile with C2 for optimum performance
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
28
© Copyright Azul Systems 2017
Housekeeping
© Copyright Azul Systems 2017
New Version String Format (JEP 223)
 Old
– Limited update release/Critical patch update (CPU)
– Download: Java SE 8u131, java -version: jdk1.8.0_131
– Which has more patches, JDK 7u55 or JDK 7u60?
 New
– JDK $MAJOR.$MINOR.$SECURITY.$PATCH
– Easy to understand by humans and apps
– Semantic versioning
30
© Copyright Azul Systems 2017
New Version String Format (JEP 223)
 Old
– Limited update release/Critical patch update (CPU)
– Download: Java SE 8u131, java -version: jdk1.8.0_131
– Which has more patches, JDK 7u55 or JDK 7u60?
 New, new
– JDK $YEAR.$MONTH
– New 6 month release cadence, Mar/Sep
– Next version would be JDK 18.3, then 18.9
31
© Copyright Azul Systems 2017
JDK Version Numbering
 New, new scheme. Just proposed JEP 322
– $FEATURE.$INTERIM.$UPDATE.$PATCH
– FEATURE: Was MAJOR, i.e. 10, 11, etc.
– INTERIM: Was MINOR. Always zero, reserved for future use
– UPDATE: Was SECURITY, but with different incrementing rule
– PATCH: Emergency update outside planned schedule
32
© Copyright Azul Systems 2017
JDK/JRE File Structure (JEP 220)
33
bin
Pre-JDK 9 JDK 9
lib
tools.jar
jre
bin
rt.jar
lib
libconfbin
jre directory
tools.jar
rt.jar
jmods
© 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
– Nashorn implements ECMAScript 5.1 spec.
34
© 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
35
© Copyright Azul Systems 2017
Removed From JDK 9
 Six deprecated APIs (JEP 162)
– {Add,Remove}ActionListener
– Pack200, Unpack200 and LogManager
 com.sun.security.auth.callback.DialogCallbackHandle
r
– Part of JAAS
 JRE version selection command line option (JEP 231)
– -version:release no longer accepted
– -version still works
 Demos and samples (JEP 298)
– Out-of-date, unmaintained 36
© 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
37
© Copyright Azul Systems 2017
Removed GC Options (JEP 214)
 Deprecated in JDK 8 (JEP 173)
38
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
What Next?
© Copyright Azul Systems 2017
OpenJDK: New Release Model
 A new version of the JDK will be released every six months
– March and September
– Starting next year
 OpenJDK development will be more agile
– Previous target was a release every two years
 Three and a half years between JDK 8 and JDK 9
 Features will be included only when ready
– Targeted for a release when feature complete
– Not targeted at specific release when started
40
© Copyright Azul Systems 2017
Availability Of JDK Updates
 Oracle is switching to a long term support (LTS) model
 LTS release will have 3 years of public updates
– JDK 8 has been classified as an LTS release
 It will have updates for more than 3 years
– Next LTS release will be September, 2018
 Non-LTS releases are "Feature Releases"
– JDK 9 is a feature release
– Public updates only until next feature release
 JDK 9 public updates end in March, 2018
 No overlap of support
41
© Copyright Azul Systems 2017
JDK 10
 JSR 383 submitted and expert group formed
– Lead by Brian Goetz
– Oracle, IBM, Red Hat, SAP and Azul (Me)
 Schedule approved
– Development complete: 14/12/17
– Release candidate: 22/2/18
– General Availability: 20/3/18
 Early draft review already published
42
© Copyright Azul Systems 2017
JDK 10
 Several JEPs proposed to target
– 304: GC interface
– 307: Fully parallel G1
– 310: Application class-data sharing
– 316: Heap allocation on alternative devices
 JEP 286: Local variable type inference
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
43
© Copyright Azul Systems 2017
JDK 11
 JSR 384 recently submitted to JCP
 Expert group being formed
– Likely to be the same as JSR 383 (and JSR 379)
 More of a rolling JSR
 JEPs proposed so far
– 318: Epsilon GC
– 309: Dynamic class file constants
44
© Copyright Azul Systems 2017
Summary
© 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
46
www.zulu.org/download
© Copyright Azul Systems 2017
JDK 9
 Big new feature is modularity
– Covers numerous different areas
– Modules, jink, etc.
 Smaller developer features
– New APIs for streams
– Reactive API
– REPL/jshell
 Many smaller performance/standards features
 Test with JDK 9, consider deployment options
47
Learn More. Stay Connected.
48
#springone@s1p

More Related Content

What's hot

Oracle Flex ASM - What’s New and Best Practices by Jim Williams
Oracle Flex ASM - What’s New and Best Practices by Jim WilliamsOracle Flex ASM - What’s New and Best Practices by Jim Williams
Oracle Flex ASM - What’s New and Best Practices by Jim WilliamsMarkus Michalewicz
 
Oracle Database Performance Tuning Concept
Oracle Database Performance Tuning ConceptOracle Database Performance Tuning Concept
Oracle Database Performance Tuning ConceptChien Chung Shen
 
MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)Kenny Gryp
 
OpenStack Development Using devstack
OpenStack Development Using devstackOpenStack Development Using devstack
OpenStack Development Using devstackmestery
 
Enterprise managerclodcontrolinstallconfiguration emc12c
Enterprise managerclodcontrolinstallconfiguration emc12cEnterprise managerclodcontrolinstallconfiguration emc12c
Enterprise managerclodcontrolinstallconfiguration emc12cRakesh Gujjarlapudi
 
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community) [발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community) 동현 김
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Red Hat Developers
 
Oracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cOracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cTrivadis
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법Open Source Consulting
 
Oracle Database Management Basic 1
Oracle Database Management Basic 1Oracle Database Management Basic 1
Oracle Database Management Basic 1Chien Chung Shen
 
[Open infra] how to calculate the cloud system operating rate
[Open infra] how to calculate the cloud system operating rate[Open infra] how to calculate the cloud system operating rate
[Open infra] how to calculate the cloud system operating rateNalee Jang
 
Oracle 11G SCAN: Concepts and Implementation Experience Sharing
Oracle 11G SCAN: Concepts and Implementation Experience SharingOracle 11G SCAN: Concepts and Implementation Experience Sharing
Oracle 11G SCAN: Concepts and Implementation Experience SharingYury Velikanov
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialKenny Gryp
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at NuxeoNuxeo
 
Etcd- Mission Critical Key-Value Store
Etcd- Mission Critical Key-Value StoreEtcd- Mission Critical Key-Value Store
Etcd- Mission Critical Key-Value StoreCoreOS
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadWASdev Community
 
OpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf TutorialOpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf TutorialSaju Madhavan
 

What's hot (20)

Oracle Flex ASM - What’s New and Best Practices by Jim Williams
Oracle Flex ASM - What’s New and Best Practices by Jim WilliamsOracle Flex ASM - What’s New and Best Practices by Jim Williams
Oracle Flex ASM - What’s New and Best Practices by Jim Williams
 
Oracle Database Performance Tuning Concept
Oracle Database Performance Tuning ConceptOracle Database Performance Tuning Concept
Oracle Database Performance Tuning Concept
 
MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)
 
OpenStack Development Using devstack
OpenStack Development Using devstackOpenStack Development Using devstack
OpenStack Development Using devstack
 
Enterprise managerclodcontrolinstallconfiguration emc12c
Enterprise managerclodcontrolinstallconfiguration emc12cEnterprise managerclodcontrolinstallconfiguration emc12c
Enterprise managerclodcontrolinstallconfiguration emc12c
 
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community) [발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
[발표자료] 오픈소스 Pacemaker 활용한 zabbix 이중화 방안(w/ Zabbix Korea Community)
 
Smooth as Silk Exadata Patching
Smooth as Silk Exadata PatchingSmooth as Silk Exadata Patching
Smooth as Silk Exadata Patching
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
Oracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cOracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12c
 
ASM
ASMASM
ASM
 
Geode on Docker
Geode on DockerGeode on Docker
Geode on Docker
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
 
Oracle Database Management Basic 1
Oracle Database Management Basic 1Oracle Database Management Basic 1
Oracle Database Management Basic 1
 
[Open infra] how to calculate the cloud system operating rate
[Open infra] how to calculate the cloud system operating rate[Open infra] how to calculate the cloud system operating rate
[Open infra] how to calculate the cloud system operating rate
 
Oracle 11G SCAN: Concepts and Implementation Experience Sharing
Oracle 11G SCAN: Concepts and Implementation Experience SharingOracle 11G SCAN: Concepts and Implementation Experience Sharing
Oracle 11G SCAN: Concepts and Implementation Experience Sharing
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Etcd- Mission Critical Key-Value Store
Etcd- Mission Critical Key-Value StoreEtcd- Mission Critical Key-Value Store
Etcd- Mission Critical Key-Value Store
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 Instead
 
OpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf TutorialOpenStack DevStack Configuration localrc local.conf Tutorial
OpenStack DevStack Configuration localrc local.conf Tutorial
 

Similar to 55 New Features in JDK 9

JDK 9: 55 New Features
JDK 9: 55 New FeaturesJDK 9: 55 New Features
JDK 9: 55 New FeaturesSimon Ritter
 
55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9Simon Ritter
 
JDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaJDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaSimon Ritter
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?Simon Ritter
 
JDK 9: Migrating Applications
JDK 9: Migrating ApplicationsJDK 9: Migrating Applications
JDK 9: Migrating ApplicationsSimon 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
 
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
 
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.
 
[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
 
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
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Kevin Sutter
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?Simon Ritter
 
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
 
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
 

Similar to 55 New Features in JDK 9 (20)

JDK 9: 55 New Features
JDK 9: 55 New FeaturesJDK 9: 55 New Features
JDK 9: 55 New Features
 
55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9
 
JDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaJDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for Java
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?
 
JDK 9: Migrating Applications
JDK 9: Migrating ApplicationsJDK 9: Migrating Applications
JDK 9: Migrating Applications
 
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, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
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?
 
[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 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
 
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"
 
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
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?
 
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 ...
 
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
 
GlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and FutureGlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and Future
 
ch22.ppt
ch22.pptch22.ppt
ch22.ppt
 

More from VMware Tanzu

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptxVMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchVMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishVMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - FrenchVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerVMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsVMware Tanzu
 

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 

55 New Features in JDK 9

  • 1. 55 New Features in JDK 9 Simon Ritter, Deputy CTO, Azul Systems @speakjava 1
  • 2. © Copyright Azul Systems 2017 Major Features
  • 3. © Copyright Azul Systems 2017 Modularity/Jigsaw  Standard class libraries modularised (JEP 220) – JDK now 94 modules (Java SE is 36)  Most internal APIs now encapsulated (JEP 260) – sun.misc.Unsafe – Some can be used with command line options  --add-exports  --add-opens  Modular source code (JEP 201) – JDK source code re-organised to support modules – Not the module system 3
  • 4. © Copyright Azul Systems 2017 Modularity/Jigsaw  Compatability is an issue – Mostly for libraries and frameworks – Which most people use – Override encapsulation of private APIs  Leave everything on classpath to start with  “Big kill switch” now has options – Turns off encapsulation completely by default – --illegal-access={permit,warn,debug,deny} 4
  • 5. © Copyright Azul Systems 2017 jlink: The Java Linker (JEP 282) 5 Modular run-time image …confbin jlink $ jlink --modulepath $JDKMODS --addmods java.base –output myimage $ myimage/bin/java –-list-modules java.base@9 jmods
  • 6. © Copyright Azul Systems 2017 jlink: The Java Linker (JEP 282) $ jlink --module-path $JDKMODS:$MYMODS --addmods com.azul.app –-output myimage $ myimage/bin/java –-list-modules java.base@9 java.logging@9 java.sql@9 java.xml@9 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”
  • 7. © 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 – Plus varargs version for arbitary number of elements 7 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");
  • 8. © 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 element 8
  • 9. © 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 9
  • 10. © Copyright Azul Systems 2017 REPL: jshell (JEP 222)  Read-Eval-Print Loop – Simple prototyping 10
  • 11. © 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 11
  • 12. © Copyright Azul Systems 2017 Concurrency Updates (JEP 266)  CompletableFuture additions – Delays and timeouts – Better support for sub-classing – New static utility methods  minimalCompletionStage  failedStage  newIncompleteFuture  failedFuture 12
  • 13. © 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  jdeprscan command to produce report 13
  • 14. © Copyright Azul Systems 2017 Milling Project Coin (JEP 213)  Single 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 14
  • 15. © Copyright Azul Systems 2017 Standards
  • 16. © 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 16 }seriously!
  • 17. © 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 17
  • 18. © Copyright Azul Systems 2017 Inside The JVM
  • 19. © 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 19
  • 20. © 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 20
  • 21. © Copyright Azul Systems 2017 Marlin Graphics Renderer (JEP 265)  Replaces Pisces open-source renderer – Comparable performance to closed-source Ductus 21
  • 22. © 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) – Up to 150x better performance (for specific tests)  Update JavaFX to newer version of GStreamer (JEP 257) – Media class – Better security, stability and performance 22
  • 23. © 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 – Many command line options changed 23
  • 24. © Copyright Azul Systems 2017 Specialised
  • 25. © 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 25
  • 26. © 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() 26
  • 27. © Copyright Azul Systems 2017 AOT Compilation (JEP 295)  Experimental feature in JDK 9 – -XX:+UnlockExperimentalVMOptions – Only the java.base module has AOT version  jaotc command – jaotc --output libMyStuff.so MyStuff.jar  JVM uses AOT code to replace interpreted – Can recompile with C1 to collect further profiling data – Recompile with C2 for optimum performance 27
  • 28. © 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 28
  • 29. © Copyright Azul Systems 2017 Housekeeping
  • 30. © Copyright Azul Systems 2017 New Version String Format (JEP 223)  Old – Limited update release/Critical patch update (CPU) – Download: Java SE 8u131, java -version: jdk1.8.0_131 – Which has more patches, JDK 7u55 or JDK 7u60?  New – JDK $MAJOR.$MINOR.$SECURITY.$PATCH – Easy to understand by humans and apps – Semantic versioning 30
  • 31. © Copyright Azul Systems 2017 New Version String Format (JEP 223)  Old – Limited update release/Critical patch update (CPU) – Download: Java SE 8u131, java -version: jdk1.8.0_131 – Which has more patches, JDK 7u55 or JDK 7u60?  New, new – JDK $YEAR.$MONTH – New 6 month release cadence, Mar/Sep – Next version would be JDK 18.3, then 18.9 31
  • 32. © Copyright Azul Systems 2017 JDK Version Numbering  New, new scheme. Just proposed JEP 322 – $FEATURE.$INTERIM.$UPDATE.$PATCH – FEATURE: Was MAJOR, i.e. 10, 11, etc. – INTERIM: Was MINOR. Always zero, reserved for future use – UPDATE: Was SECURITY, but with different incrementing rule – PATCH: Emergency update outside planned schedule 32
  • 33. © Copyright Azul Systems 2017 JDK/JRE File Structure (JEP 220) 33 bin Pre-JDK 9 JDK 9 lib tools.jar jre bin rt.jar lib libconfbin jre directory tools.jar rt.jar jmods
  • 34. © 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 – Nashorn implements ECMAScript 5.1 spec. 34
  • 35. © 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 35
  • 36. © Copyright Azul Systems 2017 Removed From JDK 9  Six deprecated APIs (JEP 162) – {Add,Remove}ActionListener – Pack200, Unpack200 and LogManager  com.sun.security.auth.callback.DialogCallbackHandle r – Part of JAAS  JRE version selection command line option (JEP 231) – -version:release no longer accepted – -version still works  Demos and samples (JEP 298) – Out-of-date, unmaintained 36
  • 37. © 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 37
  • 38. © Copyright Azul Systems 2017 Removed GC Options (JEP 214)  Deprecated in JDK 8 (JEP 173) 38 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
  • 39. © Copyright Azul Systems 2017 What Next?
  • 40. © Copyright Azul Systems 2017 OpenJDK: New Release Model  A new version of the JDK will be released every six months – March and September – Starting next year  OpenJDK development will be more agile – Previous target was a release every two years  Three and a half years between JDK 8 and JDK 9  Features will be included only when ready – Targeted for a release when feature complete – Not targeted at specific release when started 40
  • 41. © Copyright Azul Systems 2017 Availability Of JDK Updates  Oracle is switching to a long term support (LTS) model  LTS release will have 3 years of public updates – JDK 8 has been classified as an LTS release  It will have updates for more than 3 years – Next LTS release will be September, 2018  Non-LTS releases are "Feature Releases" – JDK 9 is a feature release – Public updates only until next feature release  JDK 9 public updates end in March, 2018  No overlap of support 41
  • 42. © Copyright Azul Systems 2017 JDK 10  JSR 383 submitted and expert group formed – Lead by Brian Goetz – Oracle, IBM, Red Hat, SAP and Azul (Me)  Schedule approved – Development complete: 14/12/17 – Release candidate: 22/2/18 – General Availability: 20/3/18  Early draft review already published 42
  • 43. © Copyright Azul Systems 2017 JDK 10  Several JEPs proposed to target – 304: GC interface – 307: Fully parallel G1 – 310: Application class-data sharing – 316: Heap allocation on alternative devices  JEP 286: Local variable type inference var list = new ArrayList<String>(); // infers ArrayList<String> var stream = list.stream(); // infers Stream<String> 43
  • 44. © Copyright Azul Systems 2017 JDK 11  JSR 384 recently submitted to JCP  Expert group being formed – Likely to be the same as JSR 383 (and JSR 379)  More of a rolling JSR  JEPs proposed so far – 318: Epsilon GC – 309: Dynamic class file constants 44
  • 45. © Copyright Azul Systems 2017 Summary
  • 46. © 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 46 www.zulu.org/download
  • 47. © Copyright Azul Systems 2017 JDK 9  Big new feature is modularity – Covers numerous different areas – Modules, jink, etc.  Smaller developer features – New APIs for streams – Reactive API – REPL/jshell  Many smaller performance/standards features  Test with JDK 9, consider deployment options 47
  • 48. Learn More. Stay Connected. 48 #springone@s1p

Editor's Notes

  1. for loop syntax: initialiser, termination condition, interation action.
  2. forRemoval - Interesting. Tri-state (i.e. it may not be present on the annotation).
  3. Unicode 7: Lots of emojis, the Ruble symbol and Manat from Azerbaijan Unicode 8: Cherokee (lower case) some African languages and more emojis
  4. XML catalog is a document describing a mapping between extenal entity references and locallly cached equivalents. (Useful for things like DTDs)
  5. 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
  6. CDS = Class Data Sharing CDS = Class Data Sharing CDS = Class Data Sharing CDS = Class Data Sharing
  7. Segmented code cache to improve performance and allow future developments (Sumatra and the use of GPUs)