© Copyright Azul Systems 2017
© Copyright Azul Systems 2015
@speakjava
JDK 9: Mission Accomplished
What Next For Java?
Simon Ritter
Deputy CTO, Azul Systems
1
© Copyright Azul Systems 2017
JDK 9
© Copyright Azul Systems 2017
JDK 9: Big And Small Changes
3
© Copyright Azul Systems 2017
Java Platform Module System
 The core Java libraries are now a set of modules
– 97 modules for JDK, 28 of which are Java SE
– No more rt.jar or tools.jar files
 Most internal APIs are now encapsulated
– sun.misc.Unsafe, etc.
– Numerous libraries and frameworks use internal APIs
 Module path used to locate modules
– Separate and distinct from classpath
4
© Copyright Azul Systems 2017
JDK 9 And Compatibility
5
"Clean applications that just depend on java.se
should just work" - Oracle
The java.se.ee module is not included on the
modulepath for javac or the JVM by default
© Copyright Azul Systems 2017
JPMS And Existing Applications
 Initially, leave everything on the classpath
 Anything on the classpath is in the unnamed module
– All packages are exported
– The unnamed module depends on all modules
 Migrate to modules as required
– Try automatic modules
– Move existing jar files from classpath to modulepath
6
© Copyright Azul Systems 2017
Breaking Encapsulation
 "The Big Kill Switch" to turn off encapsulation
– --illegal-access
 permit: Warning for first use of an encapsulated API
 warn: Warning for every use of an encapsulated API
 debug: Warning and stack trace for every use
 deny: No access to encapsulated APIs
7
© Copyright Azul Systems 2017
Breaking Encapsulation
 Allowing direct access to encapsulated APIs
– --add-exports
 Allowing reflective access to encapsulated APIs
– --add-opens
8
--add-exports java.management/com.sun.jmx.remote.internal=mytest
--add-exports java.management/sun.management=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
© Copyright Azul Systems 2017
jlink: The Java Linker (JEP 282)
9
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
© Copyright Azul Systems 2017
The Implications Of jlink
 "Write once, run anywhere"
– Long term Java slogan, mainly held true
 jlink generated runtime may not include all Java SE
modules
– But is still a conformant Java implementation
– To be conformant:
 It must include the java.base module
 If other modules are included, all transitive module dependencies
must also be included
– Defined as a closed implementation
© Copyright Azul Systems 2017
JDK Development Changes
© 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
13
© Copyright Azul Systems 2017
OpenJDK: More Open Source
 Oracle will open-source closed-source parts of the JDK
– Flight recorder
– Mission control
 The goal is for there to be no functional difference between
an Oracle binary and a binary built from OpenJDK source
– Targeted for completion late 2018
14
© Copyright Azul Systems 2017
JDK Version Numbering
 New scheme introduced in JDK 9 (JEP 223)
– JDK ${MAJOR}.${MINOR}.${SECURITY}
– Semantic versioning
– Easier to understand by humans and computers
15
© Copyright Azul Systems 2017
JDK Version Numbering
 New proposal for subsequent releases
– JDK ${YEAR}.${MONTH}
 JDK 18.3, JDK 18.9, etc.
– Same concept as used by Ubuntu
– Many people not happy about this
16
© Copyright Azul Systems 2017
JDK Version Numbering
 New, new scheme. Just proposed
– $FEATURE.$INTERIM.$UPDATE.$EMERG
– FEATURE: Was MAJOR, i.e. 10, 11, etc.
– INTERIM: Was MINOR. Reserved for future use
– UPDATE: Was SECURITY, but with different incrementing rule
– EMERG: Emergency update outside planned schedule
17
© Copyright Azul Systems 2017
Availability Of JDK Updates
 Oracle are 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
18
© Copyright Azul Systems 2017
Deprecated in JDK 9: Soon To Go
 Applets as a deployment mechanism
 CMS garbage collector
 Java policy tool, jconsole, Doclet API, other small things
 java.se.ee meta-module
 java.corba
 java.transaction
 java.activation
 java.xml.bind
 java.xml.ws
 java.xml.ws.annotation
19
© Copyright Azul Systems 2017
Oracle Binaries
 Until now released under Oracle Binary Code License
– Have to accept to download
– Classic "field-of-use" restriction
 Moving forward
– Binaries available under GPLv2 with CPE
– No more 32-bit binaries
– No more ARM binaries
– Windows, Linux, Mac and Solaris SPARC only
 All 64-bit
20
© Copyright Azul Systems 2017
JDK.${NEXT}
© Copyright Azul Systems 2017
JDK 18.3 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
22
© Copyright Azul Systems 2017
JDK 18.3 10 (Current)
 JEP 286: Local variable type inference
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
 A few small API changes
– New replace method in java.util.Properties
– New toString method in java.util.concurrent.FutureTask
– Two new methods in java.lang.StackWalker.StackFrame
– Four new methods in java.util.concurrent.locks.StampedLock
23
© Copyright Azul Systems 2017
Longer Term JDK Futures
© Copyright Azul Systems 2017
Interesting Future JEPs
 JEP 304: GC Interface
– Internal JVM interface to allow easy change of GC
– Nice for us at Azul
 JEP 305: Pattern matching
– Type test and switch statement support to start
 JEP 310: Application class data sharing (CDS)
– Extend CDS to include application classes as well as JDK
 JEP 312: Thread-local handshakes
– JVM ability to stop individual threads
– Lower latency
25
© Copyright Azul Systems 2017
Project Amber
 JEP 286: Local variable type inference
– Already included in JDK 10
 JEP 301: Enhanced enums
– Generic enums
– Sharper type-checking of constants
 JEP 302: Lambda leftovers
– Underscores for unused parameters
– Shadowing of Lambda parameters
– Better disambiguation of functional expressions
26
© Copyright Azul Systems 2017
Project Valhalla
 Value types in Java
 Why do we need them?
27
Identity leads to pointers
Pointers lead to indirection
Indirection leads to suffering
(of performance)
© Copyright Azul Systems 2017
Project Valhalla
 Java has:
– Primitives: for performance
– Objects: for encapsulation, polymorphism, inheritance, OO
 Problem is where we want to use primitives but can't
– ArrayList<int> won't work
– ArrayList<Integer> requires boxing and unboxing,
object creation, heap overhead, indirection reference
28
© Copyright Azul Systems 2017
Project Valhalla
 Value types
 "Codes like a class, works like a primitive"
– Can have methods and fields
– Can implement interfaces
– Can use encapsulation
– Can be generic
29
© Copyright Azul Systems 2017
Project Panama
 Interconnecting JVM and native code
– Native function calls from JVM (C, C++)
– Native data access from JVM or inside JVM heap
– Header file API extraction tools
– Native library management APIs
– Class and method resolution “hooks”
– Native-oriented JIT optimizations
30
© Copyright Azul Systems 2017
Project Loom
 Further work on making concurrent programming simpler
 Threads are too heavyweight
– Too much interaction with operating system
 Loom will introduce fibres
– JVM level threads (remember green threads?)
– Add continuations to the JVM
– Use the ForkJoinPool scheduler
– Much lighter weight than threads
 Less memory
 Close to zero overhead for task switching
31
© Copyright Azul Systems 2017
Conclusions
© Copyright Azul Systems 2017
Java Continues Moving Forward
 JDK 9 is out
– But not an LTS
– JPMS may require changes to existing applications
 Faster Java releases
– Feature release every 6 months, LTS every 3 years
– OpenJDK binaries under GPLv2 with CPE license
 Lots of ideas to improve Java
– Value types, better JNI, better type inference
– Many smaller things
33
© 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
34
www.zulu.org/download
© Copyright Azul Systems 2017
© Copyright Azul Systems 2015
@speakjava
Thank you!
Simon Ritter
Deputy CTO, Azul Systems
35

More Related Content

PPTX
JDK 9: The Start of a New Future for Java
PPTX
JDK 9 and JDK 10 Deep Dive
PPTX
JDK 9: Migrating Applications
PPTX
JDK 9: Big Changes To Make Java Smaller
PPTX
Is An Agile Standard Possible For Java?
PPTX
JDK 9 Deep Dive
PPTX
55 New Features in JDK 9
PPTX
JDK 9, 10, 11 and Beyond
JDK 9: The Start of a New Future for Java
JDK 9 and JDK 10 Deep Dive
JDK 9: Migrating Applications
JDK 9: Big Changes To Make Java Smaller
Is An Agile Standard Possible For Java?
JDK 9 Deep Dive
55 New Features in JDK 9
JDK 9, 10, 11 and Beyond

What's hot (20)

PPTX
What's New in Java 9
PPTX
JDK 9: 55 New Features
PPTX
JDK 9: Big Changes To Make Java Smaller
PPTX
Java Support: What's changing
PPTX
Building a Brain with Raspberry Pi and Zulu Embedded JVM
PPTX
Moving Towards JDK 12
PDF
JDK-9: Modules and Java Linker
PDF
Oracle Keynote from JMagghreb 2014
PPTX
Modularization With Project Jigsaw in JDK 9
PDF
Java: Create The Future Keynote
PPTX
Java 9 Modularity and Project Jigsaw
PPTX
Java Is Still Free
PPTX
The latest features coming to Java 12
PPTX
JDK 14 Lots of New Features
PPSX
Java 9 and the impact on Maven Projects (JavaOne 2016)
PDF
Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller
PDF
Pitfalls of migrating projects to JDK 9
PPTX
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
PPTX
Modern Java Workshop
PDF
Preparing your code for Java 9
What's New in Java 9
JDK 9: 55 New Features
JDK 9: Big Changes To Make Java Smaller
Java Support: What's changing
Building a Brain with Raspberry Pi and Zulu Embedded JVM
Moving Towards JDK 12
JDK-9: Modules and Java Linker
Oracle Keynote from JMagghreb 2014
Modularization With Project Jigsaw in JDK 9
Java: Create The Future Keynote
Java 9 Modularity and Project Jigsaw
Java Is Still Free
The latest features coming to Java 12
JDK 14 Lots of New Features
Java 9 and the impact on Maven Projects (JavaOne 2016)
Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller
Pitfalls of migrating projects to JDK 9
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modern Java Workshop
Preparing your code for Java 9
Ad

Similar to JDK 9: Mission Accomplished. What Next For Java? (20)

PPTX
55 New Features in JDK 9
PPTX
JDK 9, 10, 11 and Beyond
PPTX
Is Java Still Free?
PPTX
Project Jigsaw in JDK9
PPTX
55 New Features in Java SE 8
PDF
Contributing to JDK Mission Control
PDF
SOA & WebLogic - Lift & Shift to the Cloud
PPT
Java8 - Under the hood
PDF
Java SE 8
PPTX
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
PPTX
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
PDF
Voxxed Days Thessaloniki 2016 - Keynote - JDK 9 : Big Changes To Make Java Sm...
PDF
Modules all the way down: OSGi and the Java Platform Module System
PDF
Project Jigsaw in JDK 9: Modularity Comes To Java
PDF
What's New in the JVM in Java 8?
PDF
What's New in the JVM in Java 8?
PDF
Spring Boot 3 And Beyond
PPTX
Learning ASP.NET 5 and MVC 6
PDF
Java 8 Overview
PPTX
PaaS on Openstack
55 New Features in JDK 9
JDK 9, 10, 11 and Beyond
Is Java Still Free?
Project Jigsaw in JDK9
55 New Features in Java SE 8
Contributing to JDK Mission Control
SOA & WebLogic - Lift & Shift to the Cloud
Java8 - Under the hood
Java SE 8
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
Voxxed Days Thessaloniki 2016 - Keynote - JDK 9 : Big Changes To Make Java Sm...
Modules all the way down: OSGi and the Java Platform Module System
Project Jigsaw in JDK 9: Modularity Comes To Java
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
Spring Boot 3 And Beyond
Learning ASP.NET 5 and MVC 6
Java 8 Overview
PaaS on Openstack
Ad

More from Simon Ritter (16)

PPTX
Java Pattern Puzzles Java Pattern Puzzles
PPTX
Keeping Your Java Hot by Solving the JVM Warmup Problem
PPTX
Cloud Native Compiler
PPTX
Java On CRaC
PPTX
The Art of Java Type Patterns
PPTX
Modern Java Workshop
PPTX
Java performance monitoring
PPTX
Getting the Most From Modern Java
PPTX
Building a Better JVM
PPTX
Java after 8
PPTX
How to Choose a JDK
PPTX
Java Programming
PPTX
The Latest in Enterprise JavaBeans Technology
PPTX
Developing Enterprise Applications Using Java Technology
PPTX
It's Java, Jim, but not as we know it
PPTX
Whats New For Developers In JDK 9
Java Pattern Puzzles Java Pattern Puzzles
Keeping Your Java Hot by Solving the JVM Warmup Problem
Cloud Native Compiler
Java On CRaC
The Art of Java Type Patterns
Modern Java Workshop
Java performance monitoring
Getting the Most From Modern Java
Building a Better JVM
Java after 8
How to Choose a JDK
Java Programming
The Latest in Enterprise JavaBeans Technology
Developing Enterprise Applications Using Java Technology
It's Java, Jim, but not as we know it
Whats New For Developers In JDK 9

Recently uploaded (20)

PPTX
Tech Workshop Escape Room Tech Workshop
PDF
AI Guide for Business Growth - Arna Softech
PDF
Microsoft Office 365 Crack Download Free
PPTX
CNN LeNet5 Architecture: Neural Networks
PDF
Salesforce Agentforce AI Implementation.pdf
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PPTX
"Secure File Sharing Solutions on AWS".pptx
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PPTX
Computer Software - Technology and Livelihood Education
PPTX
Introduction to Windows Operating System
PPTX
assetexplorer- product-overview - presentation
PDF
Autodesk AutoCAD Crack Free Download 2025
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
Time Tracking Features That Teams and Organizations Actually Need
Tech Workshop Escape Room Tech Workshop
AI Guide for Business Growth - Arna Softech
Microsoft Office 365 Crack Download Free
CNN LeNet5 Architecture: Neural Networks
Salesforce Agentforce AI Implementation.pdf
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Topaz Photo AI Crack New Download (Latest 2025)
Patient Appointment Booking in Odoo with online payment
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
Oracle Fusion HCM Cloud Demo for Beginners
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
"Secure File Sharing Solutions on AWS".pptx
Why Generative AI is the Future of Content, Code & Creativity?
Computer Software - Technology and Livelihood Education
Introduction to Windows Operating System
assetexplorer- product-overview - presentation
Autodesk AutoCAD Crack Free Download 2025
Monitoring Stack: Grafana, Loki & Promtail
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Time Tracking Features That Teams and Organizations Actually Need

JDK 9: Mission Accomplished. What Next For Java?

  • 1. © Copyright Azul Systems 2017 © Copyright Azul Systems 2015 @speakjava JDK 9: Mission Accomplished What Next For Java? Simon Ritter Deputy CTO, Azul Systems 1
  • 2. © Copyright Azul Systems 2017 JDK 9
  • 3. © Copyright Azul Systems 2017 JDK 9: Big And Small Changes 3
  • 4. © Copyright Azul Systems 2017 Java Platform Module System  The core Java libraries are now a set of modules – 97 modules for JDK, 28 of which are Java SE – No more rt.jar or tools.jar files  Most internal APIs are now encapsulated – sun.misc.Unsafe, etc. – Numerous libraries and frameworks use internal APIs  Module path used to locate modules – Separate and distinct from classpath 4
  • 5. © Copyright Azul Systems 2017 JDK 9 And Compatibility 5 "Clean applications that just depend on java.se should just work" - Oracle The java.se.ee module is not included on the modulepath for javac or the JVM by default
  • 6. © Copyright Azul Systems 2017 JPMS And Existing Applications  Initially, leave everything on the classpath  Anything on the classpath is in the unnamed module – All packages are exported – The unnamed module depends on all modules  Migrate to modules as required – Try automatic modules – Move existing jar files from classpath to modulepath 6
  • 7. © Copyright Azul Systems 2017 Breaking Encapsulation  "The Big Kill Switch" to turn off encapsulation – --illegal-access  permit: Warning for first use of an encapsulated API  warn: Warning for every use of an encapsulated API  debug: Warning and stack trace for every use  deny: No access to encapsulated APIs 7
  • 8. © Copyright Azul Systems 2017 Breaking Encapsulation  Allowing direct access to encapsulated APIs – --add-exports  Allowing reflective access to encapsulated APIs – --add-opens 8 --add-exports java.management/com.sun.jmx.remote.internal=mytest --add-exports java.management/sun.management=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED
  • 9. © Copyright Azul Systems 2017 jlink: The Java Linker (JEP 282) 9 Modular run-time image …confbin jlink $ jlink --modulepath $JDKMODS --addmods java.base –output myimage $ myimage/bin/java –-list-modules java.base@9 jmods
  • 10. © 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
  • 11. © Copyright Azul Systems 2017 The Implications Of jlink  "Write once, run anywhere" – Long term Java slogan, mainly held true  jlink generated runtime may not include all Java SE modules – But is still a conformant Java implementation – To be conformant:  It must include the java.base module  If other modules are included, all transitive module dependencies must also be included – Defined as a closed implementation
  • 12. © Copyright Azul Systems 2017 JDK Development Changes
  • 13. © 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 13
  • 14. © Copyright Azul Systems 2017 OpenJDK: More Open Source  Oracle will open-source closed-source parts of the JDK – Flight recorder – Mission control  The goal is for there to be no functional difference between an Oracle binary and a binary built from OpenJDK source – Targeted for completion late 2018 14
  • 15. © Copyright Azul Systems 2017 JDK Version Numbering  New scheme introduced in JDK 9 (JEP 223) – JDK ${MAJOR}.${MINOR}.${SECURITY} – Semantic versioning – Easier to understand by humans and computers 15
  • 16. © Copyright Azul Systems 2017 JDK Version Numbering  New proposal for subsequent releases – JDK ${YEAR}.${MONTH}  JDK 18.3, JDK 18.9, etc. – Same concept as used by Ubuntu – Many people not happy about this 16
  • 17. © Copyright Azul Systems 2017 JDK Version Numbering  New, new scheme. Just proposed – $FEATURE.$INTERIM.$UPDATE.$EMERG – FEATURE: Was MAJOR, i.e. 10, 11, etc. – INTERIM: Was MINOR. Reserved for future use – UPDATE: Was SECURITY, but with different incrementing rule – EMERG: Emergency update outside planned schedule 17
  • 18. © Copyright Azul Systems 2017 Availability Of JDK Updates  Oracle are 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 18
  • 19. © Copyright Azul Systems 2017 Deprecated in JDK 9: Soon To Go  Applets as a deployment mechanism  CMS garbage collector  Java policy tool, jconsole, Doclet API, other small things  java.se.ee meta-module  java.corba  java.transaction  java.activation  java.xml.bind  java.xml.ws  java.xml.ws.annotation 19
  • 20. © Copyright Azul Systems 2017 Oracle Binaries  Until now released under Oracle Binary Code License – Have to accept to download – Classic "field-of-use" restriction  Moving forward – Binaries available under GPLv2 with CPE – No more 32-bit binaries – No more ARM binaries – Windows, Linux, Mac and Solaris SPARC only  All 64-bit 20
  • 21. © Copyright Azul Systems 2017 JDK.${NEXT}
  • 22. © Copyright Azul Systems 2017 JDK 18.3 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 22
  • 23. © Copyright Azul Systems 2017 JDK 18.3 10 (Current)  JEP 286: Local variable type inference var list = new ArrayList<String>(); // infers ArrayList<String> var stream = list.stream(); // infers Stream<String>  A few small API changes – New replace method in java.util.Properties – New toString method in java.util.concurrent.FutureTask – Two new methods in java.lang.StackWalker.StackFrame – Four new methods in java.util.concurrent.locks.StampedLock 23
  • 24. © Copyright Azul Systems 2017 Longer Term JDK Futures
  • 25. © Copyright Azul Systems 2017 Interesting Future JEPs  JEP 304: GC Interface – Internal JVM interface to allow easy change of GC – Nice for us at Azul  JEP 305: Pattern matching – Type test and switch statement support to start  JEP 310: Application class data sharing (CDS) – Extend CDS to include application classes as well as JDK  JEP 312: Thread-local handshakes – JVM ability to stop individual threads – Lower latency 25
  • 26. © Copyright Azul Systems 2017 Project Amber  JEP 286: Local variable type inference – Already included in JDK 10  JEP 301: Enhanced enums – Generic enums – Sharper type-checking of constants  JEP 302: Lambda leftovers – Underscores for unused parameters – Shadowing of Lambda parameters – Better disambiguation of functional expressions 26
  • 27. © Copyright Azul Systems 2017 Project Valhalla  Value types in Java  Why do we need them? 27 Identity leads to pointers Pointers lead to indirection Indirection leads to suffering (of performance)
  • 28. © Copyright Azul Systems 2017 Project Valhalla  Java has: – Primitives: for performance – Objects: for encapsulation, polymorphism, inheritance, OO  Problem is where we want to use primitives but can't – ArrayList<int> won't work – ArrayList<Integer> requires boxing and unboxing, object creation, heap overhead, indirection reference 28
  • 29. © Copyright Azul Systems 2017 Project Valhalla  Value types  "Codes like a class, works like a primitive" – Can have methods and fields – Can implement interfaces – Can use encapsulation – Can be generic 29
  • 30. © Copyright Azul Systems 2017 Project Panama  Interconnecting JVM and native code – Native function calls from JVM (C, C++) – Native data access from JVM or inside JVM heap – Header file API extraction tools – Native library management APIs – Class and method resolution “hooks” – Native-oriented JIT optimizations 30
  • 31. © Copyright Azul Systems 2017 Project Loom  Further work on making concurrent programming simpler  Threads are too heavyweight – Too much interaction with operating system  Loom will introduce fibres – JVM level threads (remember green threads?) – Add continuations to the JVM – Use the ForkJoinPool scheduler – Much lighter weight than threads  Less memory  Close to zero overhead for task switching 31
  • 32. © Copyright Azul Systems 2017 Conclusions
  • 33. © Copyright Azul Systems 2017 Java Continues Moving Forward  JDK 9 is out – But not an LTS – JPMS may require changes to existing applications  Faster Java releases – Feature release every 6 months, LTS every 3 years – OpenJDK binaries under GPLv2 with CPE license  Lots of ideas to improve Java – Value types, better JNI, better type inference – Many smaller things 33
  • 34. © 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 34 www.zulu.org/download
  • 35. © Copyright Azul Systems 2017 © Copyright Azul Systems 2015 @speakjava Thank you! Simon Ritter Deputy CTO, Azul Systems 35

Editor's Notes

  • #26: JEP 312: Global safepoint