![Page 1: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/1.jpg)
![Page 2: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/2.jpg)
Upgrading Past Java 9 Sounds Scary…and I don’t want to pay for Java
![Page 3: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/3.jpg)
Super happy with Java 8, thanks
![Page 4: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/4.jpg)
![Page 5: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/5.jpg)
![Page 6: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/6.jpg)
![Page 7: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/7.jpg)
![Page 8: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/8.jpg)
![Page 9: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/9.jpg)
![Page 10: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/10.jpg)
![Page 11: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/11.jpg)
![Page 12: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/12.jpg)
Starting with Java 11, Oracle will provide JDK releases under the open source GNU General Public License v2, with the Classpath Exception (GPLv2+CPE), and under a commercial license for those using the Oracle JDK as part of an Oracle product or service, or who do not wish to use open source software. This… replaces the historical “BCL” license, which had a combination of free and paid commercial terms.
Donald Smith, Sr. Director of Product Management (June 2018)
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-
for-java-11-and-later
![Page 13: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/13.jpg)
That sounds frightening, and overly complicated. Talk us through it.
The Lego Batman Movie
![Page 14: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/14.jpg)
That sounds frightening, and overly complicated. Talk us through it.
The Lego Batman Movie
![Page 15: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/15.jpg)
https://flic.kr/p/8xhk74
![Page 16: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/16.jpg)
From Java 11 forward, Oracle JDK builds and OpenJDK builds will be essentially identical.
Donald Smith, Sr. Director of Product Management (Sept 2018)
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-
for-java-11-and-later
![Page 17: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/17.jpg)
https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html
![Page 18: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/18.jpg)
![Page 19: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/19.jpg)
![Page 22: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/22.jpg)
![Page 23: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/23.jpg)
Language features
![Page 24: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/24.jpg)
JShell
![Page 25: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/25.jpg)
JShell
![Page 26: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/26.jpg)
JShell
![Page 27: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/27.jpg)
var
![Page 28: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/28.jpg)
var
![Page 29: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/29.jpg)
var
![Page 30: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/30.jpg)
var
![Page 31: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/31.jpg)
var
![Page 32: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/32.jpg)
var
![Page 33: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/33.jpg)
Convenience Factory Methods for Collections
![Page 34: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/34.jpg)
Convenience Factory Methods for Collections
![Page 35: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/35.jpg)
Convenience Factory Methods for Collections
![Page 36: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/36.jpg)
Convenience Factory Methods for Collections
![Page 37: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/37.jpg)
Collecting to Unmodifable Collections
items.stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toUnmodifiableList());
![Page 38: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/38.jpg)
New Methods on Stream API
items.stream().takeWhile(user -> user.count() < maxCount).forEach(user -> position.incrementAndGet());
![Page 39: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/39.jpg)
Predicate.not()
![Page 40: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/40.jpg)
New Methods on Optional
![Page 42: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/42.jpg)
Multi Release Jar Files
![Page 43: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/43.jpg)
Jigsaw
![Page 44: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/44.jpg)
Java Module System
![Page 45: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/45.jpg)
Java Module System
![Page 46: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/46.jpg)
JLink
![Page 47: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/47.jpg)
And in the future?
![Page 49: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/49.jpg)
• JEP 302: Lambda Leftovers (including underscore for param)
• JEP 305: Pattern Matching (Preview)
• Data Classes for Java
• Project Amber
• Valhalla
• Loom
And in the future?
![Page 50: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/50.jpg)
![Page 51: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/51.jpg)
Performance
![Page 52: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/52.jpg)
Memory Usage
![Page 53: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/53.jpg)
• Java 9: JEP 248: G1 the Default GC
• Java 10: JEP 307: Parallel Full GC for G1
• Java 11: JEP 318: Epsilon (Experimental)
• Java 11: JEP 333: ZGC (Experimental)
Garbage Collectors
![Page 54: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/54.jpg)
• Java 9: JEP 248: G1 the Default GC
• Java 10: JEP 307: Parallel Full GC for G1
• Java 11: JEP 318: Epsilon (Experimental)
• Java 11: JEP 333: ZGC (Experimental)
• Java 12: JEP 189: Shenandoah (Experimental)
• Java 12: More Updates to G1
• Java 12: More Improvements to ZGC
Garbage Collectors
![Page 55: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/55.jpg)
Cost
£$€
![Page 56: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/56.jpg)
Catch the 6 month release train
![Page 57: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/57.jpg)
If It Hurts, Do It More Frequently, and Bring the Pain Forward
An idea from Extreme Programming (XP)
Continuous Delivery – Jez Humble & Dave Farley
![Page 58: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/58.jpg)
![Page 59: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/59.jpg)
Modularity?
![Page 60: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/60.jpg)
Missing classes / methods
![Page 61: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/61.jpg)
![Page 62: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/62.jpg)
Run on updated JDK
It might “just work”
![Page 63: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/63.jpg)
Address compiler warnings
…they are there for a reason
![Page 64: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/64.jpg)
Update your dependencies
And add new ones
![Page 65: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/65.jpg)
Update your build tool
Maven and Gradle work with Java 12
![Page 66: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/66.jpg)
Compile against updated JDK
…and start using the shiny new features
![Page 67: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/67.jpg)
![Page 68: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/68.jpg)
Java Is Changing
…fast
![Page 69: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/69.jpg)
Modern Java Can Help You
Performance, cost, maintenance…
![Page 70: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/70.jpg)
Upgrade Now And Reduce Future Pain
…and keep upgrading, at least in CI
![Page 71: Upgrading Past Java 9 Sounds Scary - QCon London 2020...•Java 9: JEP 248: G1 the Default GC •Java 10: JEP 307: Parallel Full GC for G1 •Java 11: JEP 318: Epsilon (Experimental)](https://reader030.vdocuments.mx/reader030/viewer/2022041017/5eca7af170d22a6dae5269ef/html5/thumbnails/71.jpg)