SlideShare a Scribd company logo
© Copyright Azul Systems 2019
© Copyright Azul Systems 2015
@speakjava
Is Java Still Free?
Simon Ritter
Deputy CTO, Azul Systems
1
© Copyright Azul Systems 2019 2
© Copyright Azul Systems 2019 3
More than just another Java release
The last major Java release
© Copyright Azul Systems 2019 4
© Copyright Azul Systems 2019
OpenJDK
 OpenJDK project hosts the source code for the reference
implementation of the Java SE specification
– As defined by the relevant JSR under the JCP
 To use Java, you need a binary distribution
– Can be built straight from OpenJDK
– Does not have to be (IBM J9, Azul Zing)
– Must pass the TCK to be compliant
5
© Copyright Azul Systems 2019
Moving Java Forward Faster
© Copyright Azul Systems 2019
OpenJDK: New Release Model
 A new version of the JDK will be released every six months
– March and September
– Started last year with JDK 10 and JDK 11
– Continuing this year with JDK 12 and JDK 13
 OpenJDK development will be more agile
– Previous target was a release every two years
 Features will be included only when ready
– Targeted for a release when feature complete
7
© Copyright Azul Systems 2019
Long Term Support Releases
 Long term support for all releases is not practical
– One Long Term Support (LTS) release every three years
– For the Oracle JDK
 JDK 8 was classified as an LTS release
 Last JDK 8 public update last month for commercial users
 Non-commercial users get updates until December 2020
 JDK 11 is an LTS release
 JDK 9 and JDK 10 are feature releases
 Updated only until next release
8
© Copyright Azul Systems 2019
Oracle JDK Binaries
 Traditional Oracle branded binary (java.oracle.com)
– Oracle Binary Code License (FoU restrictions)
 New OpenJDK binary (jdk.java.net)
– GPLv2 with CPE license (no restrictions)
– Security and bug fix updates only for six months
 Only until next JDK release
 Two scheduled updates
9
© Copyright Azul Systems 2019
Converged Binaries
Oracle JDK
OpenJDK
Java SE
JDK 10 and earlier
Java SE
OpenJDK
& Oracle JDK
JDK 11 and later
© Copyright Azul Systems 2019
Converged Binaries (JDK 11)
 Some closed-source parts of the JDK will be open-sourced
– Flight recorder
– Mission control
– Others
 Other closed-source parts will be removed
– Browser Plugin
– Java Web Start
– JavaFX
11
© Copyright Azul Systems 2019
JDK 9 Onwards And Compatibility
12
"Clean applications that just depend on java.se
should just work" - Oracle
© Copyright Azul Systems 2019
JDK 9: The Clean Up Starts
 JDK 9 was a significant change for Java
– Deprecated APIs were removed for the first time
 Six methods and one class
 JDK 10 removed 1 package, 6 classes, 9 methods and 1 field
– Redundant features eliminated
 jhat tool, JVM TI hprof agent
 Numerous deprecated GC options removed
 More features will be removed in the future
 CMS GC, Nashorn and Pack200 all deprecated. Others?
13
© Copyright Azul Systems 2019
JDK 11: Modules Removed
– The java.se.ee aggregator-module has been removed
 java.corba
 java.transaction
 java.activation
 java.xml.bind
 java.xml.ws
 java.xml.ws.annotation
14
© Copyright Azul Systems 2019
Command Line -XX Flags
 Big changes
 JDK 9
– Removed 187, added 123
 JDK 10
– Removed 36, added 26
 JDK 11
– Removed 27, added 53
15
chriswhocodes.com/hotspot_option_differences.html
© Copyright Azul Systems 2019
Compatibility Not Guaranteed
 New versions of Java may include breaking changes
– Anything for removal will be deprecated first
– Minimum of one release warning
 Could be only six months
16
© Copyright Azul Systems 2019
Understanding Oracle Updates
 Oracle provides two versions of an update
 CPU = Critical Patch Update
– Odd-numbered updates
– Security fixes only
 PSU = Patch Set Update
– Even-numbered updates
– Security fixes plus bug fixes
17
CPU
PSU
© Copyright Azul Systems 2019
Java Updates
 Oracle JDK binary has LTS versions (JDK 11, 17, etc.)
– Oracle OpenJDK does not
 Oracle JDK 11 was released under a different license
– Free for development and testing
– Requires a Java SE subscription for use in production
 Oracle OpenJDK binaries only updated for six months
 JDK 8 can be used indefinitely for free
– But without any further security patches and bug fixes
18
© Copyright Azul Systems 2019
OpenJDK Updates
 Oracle will only upstream changes to current project
– This is currently JDK 12 (JDK 11 updates have finished)
 Oracle have resigned the lead of both OpenJDK 8 and 11
– Andrew Haley of Red Hat has taken over this
– He is also project lead of OpenJDK 7
– Azul are project lead of OpenJDK 6
 OpenJDK versions will only contain updates if someone
backports them from the current release
– This will become increasingly hard for older versions
19
© Copyright Azul Systems 2019
Java Binaries
© Copyright Azul Systems 2019
JDK Binaries
 Oracle JDK
 Oracle OpenJDK JDK
 Red Hat (RHEL and Windows)
 Linux distro packages
 Bellsoft Liberica
 AdoptOpenJDK
 Amazon Corretto
21
© Copyright Azul Systems 2019
Zulu Java
 Azul’s binary distribution of OpenJDK
– Passes all TCK tests
 JDK 6, 7, 8, 9, 10 and 11 available
 Wide platform support:
– Intel 64-bit Windows, Mac, Linux
– Intel 32-bit Windows and Linux
– ARM 32 and 64-bit
– PowerPC
22
www.azul.com/downloads/zulu
© Copyright Azul Systems 2019
Zulu Extended Support
 Backporting of bug fixes and security patches from
supported OpenJDK release
 Zulu 8 supported until March 2026
 LTS releases have 9 years active + 2 years passive support
 Medium Term Support releases
– Two interim releases between LTS releases (9, 13, 15...)
– Bridge to LTS releases
– Supported until 18 months after next LTS release
23
© Copyright Azul Systems 2019
Azul Zulu Extended (Passive)
Commercial Support
2020 2021
8(LTS)
19
18
17(LTS)
16
15
14
13
12
11(LTS)
10
9
7(LTS)
2017 2018
Oracle Publicly available binaries
(unsupported)
14
13
12
11(LTS)
10
9
8(LTS)
7(LTS)
Oracle Commercial
Support
Oracle Extended
Commercial Support
Azul Zulu
Community Builds
20222019
Azul Zulu Production
Commercial Support
2023 2024
19
18
17(LTS)
16
15
Azul Zulu MTS
Support
Bridge to next LTS
Azul Zulu LTS Support
8 years active
JavaSEVersionJava SE Lifecycle: 5+ Years
© Copyright Azul Systems 2019 25
© Copyright Azul Systems 2019
Adding New Features To Java
 Traditionally, Java developed through JCP
– Java Specification Requests (JSR)
– JSR has Expert Group
 Develops specification
– JSR delivers
 Specification
 Reference Implementation
 TCK
© Copyright Azul Systems 2019
Adding New features To Java
 JDK Enhancement Proposals (JEPs)
– More open way to develop the JDK
 Initially used for later updates (u20 and u40) of JDK 8
– Any committer in OpenJDK can submit a JEP
– Intended to provide a roadmap for feature development
 At least three years into the future
– Features
 Two or more weeks of engineering effort
 Significant change to JDK or OpenJDK infrastructure
 High demand from users
© Copyright Azul Systems 2019
JEPs: Detailed Process
© Copyright Azul Systems 2019 29
© Copyright Azul Systems 2019
Java Platform Module System (JPMS)
 Hybrid development
– JSR 376 (Started November, 2014)
– JEP 220: Modular runtime images
– JEP 260: Encapsulate most internal APIs
– JEP 261: Module system
30
© Copyright Azul Systems 2019
jlink: The Java Linker (JEP 282)
$ jlink --module-path $JDKMODS:$MYMODS 
--addmods com.azul.zapp –-output myimage
$ myimage/bin/java –-list-modules
java.base@9
java.logging@9
java.sql@9
java.xml@9
com.azul.zapp@1.0
com.azul.zoop@1.0
com.azul.zeta@1.0
myimage
…confbin
jlink
lib
© Copyright Azul Systems 2019
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
32
© Copyright Azul Systems 2019
Local Variable Type Inference (JEP 286)
 Java gets var
33
var userList = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
for (var name : userList) { // infers String
...
}
for (var i; i < 10; i++) { // infers int
...
}
© Copyright Azul Systems 2019
var: Reserved Type (Not Keyword)
var var = new ValueAddedReseller();
public class var {
public var(String x) {
...
}
}
public class Var {
public Var(String x) {
...
}
}
© Copyright Azul Systems 2019
Application Class Data Sharing (JEP 310)
 When the JVM starts it loads application classes
– Builds internal data structures
 This must be repeated whenever the application restarts
 Application Class Data sharing changes this
– Start application
– Write internal data structures to file
– Restart application with saved file
– Map into memory and eliminate class loading overhead
– Multiple JVMs for app, one memory mapped file
© Copyright Azul Systems 2019
Selected JDK 10 JEPs
 307: Parallel Full GC for G1
 317: Experimental Java-based JIT compiler, Graal
 316: Heap allocation on alternative devices (Intel)
 304: Garbage Collector Interface (Red Hat)
36
© Copyright Azul Systems 2019
JDK 11
 17 JEPs
 3 from outside Oracle
– JEP 318: Epsilon garbage collector (Red Hat)
– JEP 315: Improve Aarch64 intrinsics (Red Hat)
– JEP 331: Low overhead heap profiling (Google)
37
© Copyright Azul Systems 2019
327: Unicode 10 Support
 8,518 new characters (seriously)
– Bitcoin symbol
– Nishu
– Soyombo, Zanabazar Square
 The long awaited (?) Colbert emoji
38
© Copyright Azul Systems 2019
Other JDK 11 JEPs
 181: Nest-based Access Control
 309: Dynamic Class-file constants
 321: HTTP client
 330: Launch single file source code
 333: ZGC: Experimental low-latency collector
39
© Copyright Azul Systems 2019
What Will Be in JDK 12?
© Copyright Azul Systems 2019
JEP 325: Switch Expressions (Preview)
41
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException("Huh?: " + day); };
© Copyright Azul Systems 2019
JEP 325: Switch Expressions
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("Huh?: " + day);
};
© Copyright Azul Systems 2019
Other JDK 12 JEPs
 189: Shenandoah GC (Experimental)
 G1 GC updates
– 344: Abortable mixed collections
– 346: Return unused committed memory
 334: JVM constant API
 230: Microbenchmark suite
 341: Default CDS archive
© Copyright Azul Systems 2019
Longer Term JDK Futures
© Copyright Azul Systems 2019
Project Amber
 Simplifying Java language syntax
 JEP 302: Lambda leftovers
– Single underscore for unused parameters
 JEP 326: Raw string literals
– Use single backquote
– `c:Userssimon`
– ```A string with a `` in it```
45
© Copyright Azul Systems 2019
JEP 305: Pattern Matching
 Type test and switch statement support to start
46
String formatted;
switch (obj) {
case Integer i: formatted = String.format("int %d", i); break;
case Byte b: formatted = String.format("byte %d", b); break;
case Long l: formatted = String.format("long %d", l); break;
case Double d: formatted = String.format("double %f", d);
break;
case String s: formatted = String.format("String %s", s); break
default: formatted = obj.toString();
}
© Copyright Azul Systems 2019
Summary
© Copyright Azul Systems 2019
Java Is Still Free
 Free as in beer
– Several options for free and commercially supported JDK
– Evaluate what you need and which ones fit
 Free as in speech
– OpenJDK and JEPs enable more contributions
– Not just Oracle
 Keeping Java popular and relevant
48
© Copyright Azul Systems 2019
© Copyright Azul Systems 2015
@speakjava
Thank You!
Simon Ritter
Deputy CTO, Azul Systems
49

More Related Content

PPTX
Java Is Still Free
PPTX
Java Support: What's changing
PPTX
JDK 9 Deep Dive
PPTX
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
PDF
Embedded Webinar #12 “GloDroid or Boosting True Open Source Android Stack Dev...
PDF
2018 10-oracle-java-licensing-update-support-changes
PPTX
Java11 terms of_use
PDF
Java 40 versions_sgp
Java Is Still Free
Java Support: What's changing
JDK 9 Deep Dive
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Embedded Webinar #12 “GloDroid or Boosting True Open Source Android Stack Dev...
2018 10-oracle-java-licensing-update-support-changes
Java11 terms of_use
Java 40 versions_sgp

Similar to Is Java Still Free? (20)

PPTX
Moving Towards JDK 12
PPTX
JDK 9, 10, 11 and Beyond
PPTX
JDK 9, 10, 11 and Beyond
PPTX
How to Choose a JDK
PPTX
JDK 9: Mission Accomplished. What Next For Java?
PPTX
JDK 9: The Start of a New Future for Java
PPTX
Keeping Up with Java: Look at All These New Features!
PDF
Whats new in Java 9,10,11,12
PPTX
55 New Features in JDK 9
PPTX
Java and OpenJDK: disecting the ecosystem
PPTX
JDK 9: 55 New Features
PDF
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
PDF
Haj 4344-java se 9 and the application server-1
PPTX
55 New Features in JDK 9
PPTX
JDK 9: Migrating Applications
PDF
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
PDF
JavaFest. Денис Макогон. 6 заблуждений относительно современной Java
PDF
Above and Beyond JDK 9, 10, 11, 12... - Branko Mihaljević and Martin Žagar on...
PDF
OpenJDK-Zulu talk at JEEConf'14
Moving Towards JDK 12
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
How to Choose a JDK
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: The Start of a New Future for Java
Keeping Up with Java: Look at All These New Features!
Whats new in Java 9,10,11,12
55 New Features in JDK 9
Java and OpenJDK: disecting the ecosystem
JDK 9: 55 New Features
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Haj 4344-java se 9 and the application server-1
55 New Features in JDK 9
JDK 9: Migrating Applications
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaFest. Денис Макогон. 6 заблуждений относительно современной Java
Above and Beyond JDK 9, 10, 11, 12... - Branko Mihaljević and Martin Žagar on...
OpenJDK-Zulu talk at JEEConf'14
Ad

More from Simon Ritter (19)

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
Modern Java Workshop
PPTX
Getting the Most From Modern Java
PPTX
Building a Better JVM
PPTX
JDK 14 Lots of New Features
PPTX
Java after 8
PPTX
Java Programming
PPTX
The Latest in Enterprise JavaBeans Technology
PPTX
Developing Enterprise Applications Using Java Technology
PPTX
JDK 9 and JDK 10 Deep Dive
PPTX
Building a Brain with Raspberry Pi and Zulu Embedded JVM
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
Modern Java Workshop
Getting the Most From Modern Java
Building a Better JVM
JDK 14 Lots of New Features
Java after 8
Java Programming
The Latest in Enterprise JavaBeans Technology
Developing Enterprise Applications Using Java Technology
JDK 9 and JDK 10 Deep Dive
Building a Brain with Raspberry Pi and Zulu Embedded JVM
It's Java, Jim, but not as we know it
Whats New For Developers In JDK 9
Ad

Recently uploaded (20)

PPTX
assetexplorer- product-overview - presentation
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Digital Strategies for Manufacturing Companies
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
medical staffing services at VALiNTRY
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Nekopoi APK 2025 free lastest update
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
assetexplorer- product-overview - presentation
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Which alternative to Crystal Reports is best for small or large businesses.pdf
Design an Analysis of Algorithms II-SECS-1021-03
Why Generative AI is the Future of Content, Code & Creativity?
wealthsignaloriginal-com-DS-text-... (1).pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Digital Strategies for Manufacturing Companies
Softaken Excel to vCard Converter Software.pdf
medical staffing services at VALiNTRY
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Navsoft: AI-Powered Business Solutions & Custom Software Development
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Odoo Companies in India – Driving Business Transformation.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Nekopoi APK 2025 free lastest update
Reimagine Home Health with the Power of Agentic AI​
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf

Is Java Still Free?

  • 1. © Copyright Azul Systems 2019 © Copyright Azul Systems 2015 @speakjava Is Java Still Free? Simon Ritter Deputy CTO, Azul Systems 1
  • 2. © Copyright Azul Systems 2019 2
  • 3. © Copyright Azul Systems 2019 3 More than just another Java release The last major Java release
  • 4. © Copyright Azul Systems 2019 4
  • 5. © Copyright Azul Systems 2019 OpenJDK  OpenJDK project hosts the source code for the reference implementation of the Java SE specification – As defined by the relevant JSR under the JCP  To use Java, you need a binary distribution – Can be built straight from OpenJDK – Does not have to be (IBM J9, Azul Zing) – Must pass the TCK to be compliant 5
  • 6. © Copyright Azul Systems 2019 Moving Java Forward Faster
  • 7. © Copyright Azul Systems 2019 OpenJDK: New Release Model  A new version of the JDK will be released every six months – March and September – Started last year with JDK 10 and JDK 11 – Continuing this year with JDK 12 and JDK 13  OpenJDK development will be more agile – Previous target was a release every two years  Features will be included only when ready – Targeted for a release when feature complete 7
  • 8. © Copyright Azul Systems 2019 Long Term Support Releases  Long term support for all releases is not practical – One Long Term Support (LTS) release every three years – For the Oracle JDK  JDK 8 was classified as an LTS release  Last JDK 8 public update last month for commercial users  Non-commercial users get updates until December 2020  JDK 11 is an LTS release  JDK 9 and JDK 10 are feature releases  Updated only until next release 8
  • 9. © Copyright Azul Systems 2019 Oracle JDK Binaries  Traditional Oracle branded binary (java.oracle.com) – Oracle Binary Code License (FoU restrictions)  New OpenJDK binary (jdk.java.net) – GPLv2 with CPE license (no restrictions) – Security and bug fix updates only for six months  Only until next JDK release  Two scheduled updates 9
  • 10. © Copyright Azul Systems 2019 Converged Binaries Oracle JDK OpenJDK Java SE JDK 10 and earlier Java SE OpenJDK & Oracle JDK JDK 11 and later
  • 11. © Copyright Azul Systems 2019 Converged Binaries (JDK 11)  Some closed-source parts of the JDK will be open-sourced – Flight recorder – Mission control – Others  Other closed-source parts will be removed – Browser Plugin – Java Web Start – JavaFX 11
  • 12. © Copyright Azul Systems 2019 JDK 9 Onwards And Compatibility 12 "Clean applications that just depend on java.se should just work" - Oracle
  • 13. © Copyright Azul Systems 2019 JDK 9: The Clean Up Starts  JDK 9 was a significant change for Java – Deprecated APIs were removed for the first time  Six methods and one class  JDK 10 removed 1 package, 6 classes, 9 methods and 1 field – Redundant features eliminated  jhat tool, JVM TI hprof agent  Numerous deprecated GC options removed  More features will be removed in the future  CMS GC, Nashorn and Pack200 all deprecated. Others? 13
  • 14. © Copyright Azul Systems 2019 JDK 11: Modules Removed – The java.se.ee aggregator-module has been removed  java.corba  java.transaction  java.activation  java.xml.bind  java.xml.ws  java.xml.ws.annotation 14
  • 15. © Copyright Azul Systems 2019 Command Line -XX Flags  Big changes  JDK 9 – Removed 187, added 123  JDK 10 – Removed 36, added 26  JDK 11 – Removed 27, added 53 15 chriswhocodes.com/hotspot_option_differences.html
  • 16. © Copyright Azul Systems 2019 Compatibility Not Guaranteed  New versions of Java may include breaking changes – Anything for removal will be deprecated first – Minimum of one release warning  Could be only six months 16
  • 17. © Copyright Azul Systems 2019 Understanding Oracle Updates  Oracle provides two versions of an update  CPU = Critical Patch Update – Odd-numbered updates – Security fixes only  PSU = Patch Set Update – Even-numbered updates – Security fixes plus bug fixes 17 CPU PSU
  • 18. © Copyright Azul Systems 2019 Java Updates  Oracle JDK binary has LTS versions (JDK 11, 17, etc.) – Oracle OpenJDK does not  Oracle JDK 11 was released under a different license – Free for development and testing – Requires a Java SE subscription for use in production  Oracle OpenJDK binaries only updated for six months  JDK 8 can be used indefinitely for free – But without any further security patches and bug fixes 18
  • 19. © Copyright Azul Systems 2019 OpenJDK Updates  Oracle will only upstream changes to current project – This is currently JDK 12 (JDK 11 updates have finished)  Oracle have resigned the lead of both OpenJDK 8 and 11 – Andrew Haley of Red Hat has taken over this – He is also project lead of OpenJDK 7 – Azul are project lead of OpenJDK 6  OpenJDK versions will only contain updates if someone backports them from the current release – This will become increasingly hard for older versions 19
  • 20. © Copyright Azul Systems 2019 Java Binaries
  • 21. © Copyright Azul Systems 2019 JDK Binaries  Oracle JDK  Oracle OpenJDK JDK  Red Hat (RHEL and Windows)  Linux distro packages  Bellsoft Liberica  AdoptOpenJDK  Amazon Corretto 21
  • 22. © Copyright Azul Systems 2019 Zulu Java  Azul’s binary distribution of OpenJDK – Passes all TCK tests  JDK 6, 7, 8, 9, 10 and 11 available  Wide platform support: – Intel 64-bit Windows, Mac, Linux – Intel 32-bit Windows and Linux – ARM 32 and 64-bit – PowerPC 22 www.azul.com/downloads/zulu
  • 23. © Copyright Azul Systems 2019 Zulu Extended Support  Backporting of bug fixes and security patches from supported OpenJDK release  Zulu 8 supported until March 2026  LTS releases have 9 years active + 2 years passive support  Medium Term Support releases – Two interim releases between LTS releases (9, 13, 15...) – Bridge to LTS releases – Supported until 18 months after next LTS release 23
  • 24. © Copyright Azul Systems 2019 Azul Zulu Extended (Passive) Commercial Support 2020 2021 8(LTS) 19 18 17(LTS) 16 15 14 13 12 11(LTS) 10 9 7(LTS) 2017 2018 Oracle Publicly available binaries (unsupported) 14 13 12 11(LTS) 10 9 8(LTS) 7(LTS) Oracle Commercial Support Oracle Extended Commercial Support Azul Zulu Community Builds 20222019 Azul Zulu Production Commercial Support 2023 2024 19 18 17(LTS) 16 15 Azul Zulu MTS Support Bridge to next LTS Azul Zulu LTS Support 8 years active JavaSEVersionJava SE Lifecycle: 5+ Years
  • 25. © Copyright Azul Systems 2019 25
  • 26. © Copyright Azul Systems 2019 Adding New Features To Java  Traditionally, Java developed through JCP – Java Specification Requests (JSR) – JSR has Expert Group  Develops specification – JSR delivers  Specification  Reference Implementation  TCK
  • 27. © Copyright Azul Systems 2019 Adding New features To Java  JDK Enhancement Proposals (JEPs) – More open way to develop the JDK  Initially used for later updates (u20 and u40) of JDK 8 – Any committer in OpenJDK can submit a JEP – Intended to provide a roadmap for feature development  At least three years into the future – Features  Two or more weeks of engineering effort  Significant change to JDK or OpenJDK infrastructure  High demand from users
  • 28. © Copyright Azul Systems 2019 JEPs: Detailed Process
  • 29. © Copyright Azul Systems 2019 29
  • 30. © Copyright Azul Systems 2019 Java Platform Module System (JPMS)  Hybrid development – JSR 376 (Started November, 2014) – JEP 220: Modular runtime images – JEP 260: Encapsulate most internal APIs – JEP 261: Module system 30
  • 31. © Copyright Azul Systems 2019 jlink: The Java Linker (JEP 282) $ jlink --module-path $JDKMODS:$MYMODS --addmods com.azul.zapp –-output myimage $ myimage/bin/java –-list-modules java.base@9 java.logging@9 java.sql@9 java.xml@9 com.azul.zapp@1.0 com.azul.zoop@1.0 com.azul.zeta@1.0 myimage …confbin jlink lib
  • 32. © Copyright Azul Systems 2019 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 32
  • 33. © Copyright Azul Systems 2019 Local Variable Type Inference (JEP 286)  Java gets var 33 var userList = new ArrayList<String>(); // infers ArrayList<String> var stream = list.stream(); // infers Stream<String> for (var name : userList) { // infers String ... } for (var i; i < 10; i++) { // infers int ... }
  • 34. © Copyright Azul Systems 2019 var: Reserved Type (Not Keyword) var var = new ValueAddedReseller(); public class var { public var(String x) { ... } } public class Var { public Var(String x) { ... } }
  • 35. © Copyright Azul Systems 2019 Application Class Data Sharing (JEP 310)  When the JVM starts it loads application classes – Builds internal data structures  This must be repeated whenever the application restarts  Application Class Data sharing changes this – Start application – Write internal data structures to file – Restart application with saved file – Map into memory and eliminate class loading overhead – Multiple JVMs for app, one memory mapped file
  • 36. © Copyright Azul Systems 2019 Selected JDK 10 JEPs  307: Parallel Full GC for G1  317: Experimental Java-based JIT compiler, Graal  316: Heap allocation on alternative devices (Intel)  304: Garbage Collector Interface (Red Hat) 36
  • 37. © Copyright Azul Systems 2019 JDK 11  17 JEPs  3 from outside Oracle – JEP 318: Epsilon garbage collector (Red Hat) – JEP 315: Improve Aarch64 intrinsics (Red Hat) – JEP 331: Low overhead heap profiling (Google) 37
  • 38. © Copyright Azul Systems 2019 327: Unicode 10 Support  8,518 new characters (seriously) – Bitcoin symbol – Nishu – Soyombo, Zanabazar Square  The long awaited (?) Colbert emoji 38
  • 39. © Copyright Azul Systems 2019 Other JDK 11 JEPs  181: Nest-based Access Control  309: Dynamic Class-file constants  321: HTTP client  330: Launch single file source code  333: ZGC: Experimental low-latency collector 39
  • 40. © Copyright Azul Systems 2019 What Will Be in JDK 12?
  • 41. © Copyright Azul Systems 2019 JEP 325: Switch Expressions (Preview) 41 int numLetters; switch (day) { case MONDAY: case FRIDAY: case SUNDAY: numLetters = 6; break; case TUESDAY: numLetters = 7; break; case THURSDAY: case SATURDAY: numLetters = 8; break; case WEDNESDAY: numLetters = 9; break; default: throw new IllegalStateException("Huh?: " + day); };
  • 42. © Copyright Azul Systems 2019 JEP 325: Switch Expressions int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; default -> throw new IllegalStateException("Huh?: " + day); };
  • 43. © Copyright Azul Systems 2019 Other JDK 12 JEPs  189: Shenandoah GC (Experimental)  G1 GC updates – 344: Abortable mixed collections – 346: Return unused committed memory  334: JVM constant API  230: Microbenchmark suite  341: Default CDS archive
  • 44. © Copyright Azul Systems 2019 Longer Term JDK Futures
  • 45. © Copyright Azul Systems 2019 Project Amber  Simplifying Java language syntax  JEP 302: Lambda leftovers – Single underscore for unused parameters  JEP 326: Raw string literals – Use single backquote – `c:Userssimon` – ```A string with a `` in it``` 45
  • 46. © Copyright Azul Systems 2019 JEP 305: Pattern Matching  Type test and switch statement support to start 46 String formatted; switch (obj) { case Integer i: formatted = String.format("int %d", i); break; case Byte b: formatted = String.format("byte %d", b); break; case Long l: formatted = String.format("long %d", l); break; case Double d: formatted = String.format("double %f", d); break; case String s: formatted = String.format("String %s", s); break default: formatted = obj.toString(); }
  • 47. © Copyright Azul Systems 2019 Summary
  • 48. © Copyright Azul Systems 2019 Java Is Still Free  Free as in beer – Several options for free and commercially supported JDK – Evaluate what you need and which ones fit  Free as in speech – OpenJDK and JEPs enable more contributions – Not just Oracle  Keeping Java popular and relevant 48
  • 49. © Copyright Azul Systems 2019 © Copyright Azul Systems 2015 @speakjava Thank You! Simon Ritter Deputy CTO, Azul Systems 49

Editor's Notes

  • #10: FoU = Field of Use. restriction prevented people using Java in embedded applications without buying a license. CPE = Classpath Exception. Eliminates the problem of the GPL license being viral, which would require you to make the source code for your application available.
  • #12: Late 2018 probably means JDK 11, which comes out in September. The idea of eliminating differences is so that the two binaries from Oracle (reference last slide) will be functionaly the same.
  • #47: JEP 312: Global safepoint