Slide 1

Slide 1 text

Java 17 Das neue LTS Release is da!

Slide 2

Slide 2 text

Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Slide 3

Slide 3 text

This is a very very very long gag @wol fl ook @hendrikEbbers Wolfgang Weigend • Wolfgang Weigend • Master Principal Solution Engineer • Global Java Team • Java Technology & GraalVM 
 Architecture

Slide 4

Slide 4 text

This is a very very very long gag @wol fl ook @hendrikEbbers Hendrik Ebbers • Karakun Co-Founder • Founder of JUG Dortmund • JSR EG member • JavaOne Rockstar, Java Champion • AdoptOpenJDK / Adoptium TSC member

Slide 5

Slide 5 text

This is a very very very long gag @wol fl ook @hendrikEbbers Hendrik Ebbers • I (and collect) boardgames • I STARWARS • I Hardrock • I Dogs

Slide 6

Slide 6 text

PARTY Java 17 Cyberlan d

Slide 7

Slide 7 text

Wer von euch hat wohl das älteste JAVA Programm? TagebuchApplet.java AWTodo_v45.java 
 MyFirstStrutsAction.java [email protected] https://cyberland.ijug.eu

Slide 8

Slide 8 text

Heute Abend gehts AB!!1!! 19:00 nur echt auf YouTube ... wenn YouTube klappt * * https://cyberland.ijug.eu

Slide 9

Slide 9 text

https://www.menti.com/gn91fpftpx Mach mit und gewinne exklusiven SWAG Nicht Hendrik! Das Shirt meinen wir! The voting code 8616 0213

Slide 10

Slide 10 text

This is a very very very long gag @wol fl ook @hendrikEbbers Content • History recall • OpenJDK • Java release model • Java Features • Migration • Future of OpenJDK

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

This is a very very very long gag @wol fl ook @hendrikEbbers The wild 90th • "Oak" (Object Application Kernel) / "The Green Project" was developed in 1992 • This project evolved to Java in 1995 • The Duke was already the 
 mascot for the 
 Green Project

Slide 15

Slide 15 text

This is a very very very long gag @wol fl ook @hendrikEbbers The fi rst Java years • Java versions 1 till 6 were released at SUN • Java 1 was released 1996 • Java 6 was released 2006 • In 1998 the JCP (Java Community 
 Process) was formed

Slide 16

Slide 16 text

This is a very very very long gag @wol fl ook @hendrikEbbers The takeover • In 2009 SUN was bought by Oracle • The Java community was really 
 afraid about this move • Mostly no-one associated Oracle with 
 open source

Slide 17

Slide 17 text

JavaOne 2009 “Based on the foundation created here at Sun, we have invested heavily, and I think 
 we’re going to continue to invest and accelerate our investment”

Slide 18

Slide 18 text

JavaOne 2009 “Our whole next generation of business applications is built entirely on Java”

Slide 19

Slide 19 text

JavaOne 2009 “Java was a very attractive platform for us because it was open, and it allowed us to extend the platform”

Slide 20

Slide 20 text

27th of January 2010 “Java is going to grow”

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

This is a very very very long gag @wol fl ook @hendrikEbbers Java getting old? • Big plans at SUN • Realisation at Oracle splitter in 2 
 releases • JDK 7 (Security) • JDK 8 (Lambdas & Streams)

Slide 24

Slide 24 text

This is a very very very long gag @wol fl ook @hendrikEbbers Not your daddies Java • Functional programming FTW • Lambdas & Streams everywhere • Modularization of the JDK • Modularization of libs & apps • Keep up with the languages Dad Duke 2005

Slide 25

Slide 25 text

This is a very very very long gag @wol fl ook @hendrikEbbers The last years • Oracle managed to provide 
 major updates of Java • Continued to evolve Java by the JCP • Not everything is perfect but 
 much better than it was expected

Slide 26

Slide 26 text

This is a very very very long gag @wol fl ook @hendrikEbbers Java History Milestones Java initiated as research project at Sun Java powers the web; bundled with the Netscape browser Java becomes #1 programming language for enterprise applications Sun open sources Java 1991 1995 1999 2006 Java 7 – extending JVM to dynamic programming languages Java 9 – modular Java Java 14 and Java 15 2011 2017 2020 Oracle acquires Sun 2009 Java 10 – start of predictable release cadence 2018

Slide 27

Slide 27 text

Java in a Nutshell

Slide 28

Slide 28 text

This is a very very very long gag @wol fl ook @hendrikEbbers Java in a nutshell Standard APIs Tools JVM

Slide 29

Slide 29 text

This is a very very very long gag @wol fl ook @hendrikEbbers The JVM • The "heart" of the Java platform • De fi nition of Java language features • De fi nition of Java runtime • Since 2000 just-in-time-compilation (HotSpot)

Slide 30

Slide 30 text

This is a very very very long gag @wol fl ook @hendrikEbbers The standard APIs • Java Class Library (JCL) is a set of dynamically loadable libraries • Will be called at runtime • Almost entirely written in Java (some JNI calls to hardware & OS)

Slide 31

Slide 31 text

This is a very very very long gag @wol fl ook @hendrikEbbers The standard APIs • Since Java 9 the standard APIs are separated in several modules java.se java.sql.rowset java.sql java.xml java.base java.logging java.instrument java.datatransfer java.scripting java.prefs java.desktop java.xml.crypto java.compiler java.rmi java.naming java.security.sasl java.management java.security.jgss

Slide 32

Slide 32 text

This is a very very very long gag @wol fl ook @hendrikEbbers The (evil) private APIs • Java contains some private Java APIs • This APIs should not be used in framework / application code • Private APIs can be changed at anytime

Slide 33

Slide 33 text

This is a very very very long gag @wol fl ook @hendrikEbbers The (evil) private APIs • Some rules about private APIs • Do not use anything besides the java.* package • Swing and Graphics2D is located in the javax.* package • JavaFX is located in the javafx.* package

Slide 34

Slide 34 text

This is a very very very long gag @wol fl ook @hendrikEbbers The (evil) private APIs • JDK 9 till JDK 15 defaults to --illegal-access=warn • JDK 16 defaults to --illegal-access=deny • JDK 17 disables permit, warn & debug values for illegal- access option • It is still possible to use --add-opens or the Add-Opens manifest attribute

Slide 35

Slide 35 text

This is a very very very long gag @wol fl ook @hendrikEbbers The tools • Each Java distribution contains a large set of tools • Some are part of OpenJDK • Some are vendor speci fi c

Slide 36

Slide 36 text

This is a very very very long gag @wol fl ook @hendrikEbbers The tools • Basic tools like the java or javac command are part of each JDK distribution • Oracle added several tools to its Java distribution that are not part of OpenJDK • All this tools were developed closed source at Oracle

Slide 37

Slide 37 text

This is a very very very long gag @wol fl ook @hendrikEbbers The tools • A good example is "Java WebStart" • WebStart was never part of OpenJDK and therefore was never part of OpenJDK builds • WebStart was only delivered with Oracle JDK builds

Slide 38

Slide 38 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle JDK & OpenJDK OpenJDK 8 JVM, tools, etc. JVM, tools, etc. Exclusive Oracle stu f eg. Flight recorder WebStart Mission Control Oracle JDK 8

Slide 39

Slide 39 text

This is a very very very long gag @wol fl ook @hendrikEbbers Java getting old? OpenJDK 12 Oracle JDK 12 JVM, tools, etc. equals JVM, tools, etc.

Slide 40

Slide 40 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle JDK & OpenJDK • Oracle wants to have the content of Oracle JDK (more or less) be equal to OpenJDK • Therefore Oracle contributed some of the previews content of Oracle JDK to OpenJDK • Tools like Flight Recorder were open sourced

Slide 41

Slide 41 text

OpenJDK

Slide 42

Slide 42 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK • Java has been open sourced 
 in 2006 • SUN derived OpenJDK from 
 SunJDK as a vendor JDK • Oracle JDK is derived from OpenJDK • Oracle took over the work at 
 OpenJDK and many companies 
 followed...

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Groups & Projects Core Libraries Group 2D Graphics Group HotSpot Group OpenJFX Project JDK Project Panama Project

Slide 45

Slide 45 text

This is a very very very long gag @wol fl ook @hendrikEbbers Contribution to OpenJDK • Since OpenJDK is an open source project everybody can contribute • Both individuals and companies contribute to OpenJDK • Oracle still does over 75% of all contributions for the OpenJDK

Slide 46

Slide 46 text

This is a very very very long gag @wol fl ook @hendrikEbbers Contribution to OpenJDK • Happily more and more people of the Java community contribute to OpenJDK • Sadly Good tutorials and 'Getting started' guides are missing We are working on that issue

Slide 47

Slide 47 text

This is a very very very long gag @wol fl ook @hendrikEbbers Companies that contributed in 11

Slide 48

Slide 48 text

This is a very very very long gag @wol fl ook @hendrikEbbers Companies that contributed in 16

Slide 49

Slide 49 text

This is a very very very long gag @wol fl ook @hendrikEbbers Companies that contribute • Alibaba • Amazon • Ampere Computing • ARM • Azul • Bellsoft • DataDog • Google • Huawai • IBM • Intel • JetBrains • Linaro • Longsoon • Microdoc • Microsoft • NTT Data • Qualcomm DCT • RedHat • SAP • Tencent • Twitter

Slide 50

Slide 50 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Distributionen Azul Zulu Oracle JDK Amazon Coretto AdoptOpenJDK Bellsoft Liberica Red Hat Upstream Adoptium Temurin

Slide 51

Slide 51 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle Contributor Agreement • The following organizations and individuals have signed the OpenJDK Community TCK Agreement (OCTLA) and been granted access to the JCK * * * TCK - Test Compatibility Kit JCK - Java Compatibility Kit

Slide 52

Slide 52 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK and Java Ownership • Java is a registered trademark of Oracle • OpenJDK is named independently • Access to the TCK is restricted • TCK access requires to sign the OCTLA

Slide 53

Slide 53 text

This is a very very very long gag @wol fl ook @hendrikEbbers OCTLA Signatories List (Java 9+) • Amazon.com Services, Inc. • Ampere Computing LLC • Azul Systems, Inc. • BellSoft • Canonical • Eclipse.org Foundation • The FreeBSD Foundation • Fujitsu Limited • Fujitsu Technology Solutions GmbH • Greg Lewis • Hewlett Packard Enterprise • J-Class Solutions, Inc. • JetBrains s.r.o. • Loongson Technology Co., Ltd. • Marvell Semiconductor Inc. • MicroDoc Software GmbH • Microsoft • NCIT UNIPRO, LLC. • OpenLogic, Inc. • Red Hat • Sage Embedded Software LLC • SAP • SUSE Linux GmbH • Tencent Technology (Shenzhen) Co Ltd • Twitter • VMWare • Waratek Limited

Slide 54

Slide 54 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK and Java Ownership • OpenJDK or substantially projects only • OCTLA did not allow to disclose TCK information to Non-OCTLA licensees • OCTLA is not a trademark license • OpenJDK could be used according to the OpenJDK Trademark Notice

Slide 55

Slide 55 text

Java Roadmap

Slide 56

Slide 56 text

This is a very very very long gag @wol fl ook @hendrikEbbers The classical Java releases • Up until Java 8 we had a fl exible release train for Java • A new major version was released "when it's done" • This ended in delays and a a big bundle of new features per release

Slide 57

Slide 57 text

This is a very very very long gag @wol fl ook @hendrikEbbers The classical Java releases • A version was available for several years • Normally a version received updates even after the next version was released • Commercial LTS support was provided by Oracle for legacy projects

Slide 58

Slide 58 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle Java roadmap 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 Java 6 Java 7 Java 8 Free

Slide 59

Slide 59 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle Java roadmap 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 Java 6 Java 7 Java 8 Free Commercial

Slide 60

Slide 60 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train • Beginning with Java 9 Oracle announced the new release train • More fl exible with fi xed release dates • A feature will be released "when it's done" • Shorter lifetime of Java versions

Slide 61

Slide 61 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 2018 2019 2020 Java 8 Basic version LTS version

Slide 62

Slide 62 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 2018 2019 2020 Java 8 free version commercial version Some vendors provide LTS for production only by support subscription

Slide 63

Slide 63 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train free version Preferred for LTS Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 2018 2019 2020 Java 8 Java 15 Java 16 Java 17 Java 18 Java 19 Java 20 Java 21 Java 22 2021 2022 2023 Java 23 Java 24 Java 25 2024

Slide 64

Slide 64 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train (Oracle) • Starting with Java 11 Oracle provides 2 Java builds • Oracle JDK is the commercial distribution • Oracle OpenJDK builds still provided under GPL with classpath exception

Slide 65

Slide 65 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle JDK distribution Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 Java 15 2018 2019 2020 Java 8 Free Commercial LTS Not Free in Prod

Slide 66

Slide 66 text

This is a very very very long gag @wol fl ook @hendrikEbbers Oracle OpenJDK distribution Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 Java 15 2018 2019 2020 Java 8 Free

Slide 67

Slide 67 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train • At the end the OpenJDK only de fi nes the major releases • Every vendor can provide distributions, LTS and support based on individual needs • Azul for example provides Medium-Term-Support (MTS) for some versions like Java 13 or 15

Slide 68

Slide 68 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train • Next to the new timeline the new release model added some additional points • Deprecated code was removed from Java • @Deprecated has additional information

Slide 69

Slide 69 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train A value of true indicates intent to remove the annotated program element in a future version. @Deprecated(forRemoval = true)

Slide 70

Slide 70 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train • Several APIs were already removed between Java 8 and Java 11: • CORBA • JAXB • Java Enterprise Annotations

Slide 71

Slide 71 text

This is a very very very long gag @wol fl ook @hendrikEbbers The new release train • Since Java will become more fl exible the users of Java need to become more fl exible, too • Based on the changes dependencies and application code need to be checked for a new version • Updates should be done more often

Slide 72

Slide 72 text

Why do I need LTS?

Slide 73

Slide 73 text

This is a very very very long gag @wol fl ook @hendrikEbbers Security issues • The main reason for updates are security updates • Java contains security vulnerabilities • Several exploitable security issues are fi xed each year

Slide 74

Slide 74 text

This is a very very very long gag @wol fl ook @hendrikEbbers Security issues • About 100 exploitable security issues were fi xed in 2018 Jul 2018 Oct 2017 Jan 2018 Apr 2018 40 20 60 Okt 2018 Exploit not published Exploit is available

Slide 75

Slide 75 text

This is a very very very long gag @wol fl ook @hendrikEbbers Security issues • Let's Hack if(isJava6BeforeUpdate32()) { callExploitCve2013XXXX(); } else if(isJava7BeforeUpdate10) { callExploitCve2013YYYY(); } SecurityManager.setSecurityManager(null); copyMyBadByteArrayToExeInTempFolder(); executeExeInTempFolder();

Slide 76

Slide 76 text

This is a very very very long gag @wol fl ook @hendrikEbbers Security issues • The main reason for updates are security updates • Java contains security vulnerabilities • Several exploitable security issues are fi xed each year More Information: https://bit.ly/2XfI0c4

Slide 77

Slide 77 text

This is a very very very long gag @wol fl ook @hendrikEbbers Commercial support • Several companies offer commercial support for Java • Normally this contains LTS versions of speci fi c Java versions • All companies share [more or less] the same work fl ow

Slide 78

Slide 78 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow • Let's have a look how such issues are fi xed in Java • Since the OpenJDK is the open source repository of Java the issues will normally be fi xed here

Slide 79

Slide 79 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow OpenJDK New feature Security fi x

Slide 80

Slide 80 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow 8 9 OpenJDK New feature Security fi x

Slide 81

Slide 81 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow 8 9 OpenJDK New feature Security fi x Public (free) lifetime of Java 8

Slide 82

Slide 82 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow 8 9 Vendor B Vendor A OpenJDK New feature Security fi x

Slide 83

Slide 83 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow 8 9 Vendor B Vendor A OpenJDK Commercial LTS support for Java 8 New feature Security fi x

Slide 84

Slide 84 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Work fl ow 8 9 Vendor B Vendor A OpenJDK New feature Security fi x Commercial LTS support for Java 8

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

This is a very very very long gag @wol fl ook @hendrikEbbers Temurin by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 


Slide 87

Slide 87 text

This is a very very very long gag @wol fl ook @hendrikEbbers Temurin by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 • Adoptium is top level project of Eclipse Foundation

Slide 88

Slide 88 text

This is a very very very long gag @wol fl ook @hendrikEbbers Temurin by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 • Adoptium WG is based on leaders of the ecosystem

Slide 89

Slide 89 text

This is a very very very long gag @wol fl ook @hendrikEbbers Temurin by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 • Eclipse Adoptium provides an OpenJDK distribution • That distribution is called Temurin

Slide 90

Slide 90 text

This is a very very very long gag @wol fl ook @hendrikEbbers Temurin by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 https://adoptium.net

Slide 91

Slide 91 text

This is a very very very long gag @wol fl ook Temurin by Adoptium OpenJDK Sources Temurin Installer Binaries / Distribution ci.adoptopenjdk.net (ci.adoptium.net in near future) adoptium.net github.com/adoptium/installer github.com/adoptium/jdk github.com/adoptium/jdk8u Build / CI Infrastructure github.com/adoptium/temurin8-binaries/releases github.com/adoptium/temurin11-binaries/releases github.com/adoptium/temurin16-binaries/releases github.com/adoptium/temurin17-binaries/releases Platform Builds AQAvit github.com/adoptium/temurin-build github.com/adoptium/aqa-tests * * Redirect to

Slide 92

Slide 92 text

This is a very very very long gag @wol fl ook @hendrikEbbers Why not 'Eclipse AdoptOpenJDK' ? • The answer is quite simple: 
 
 
 
 
 • The Eclipse Foundation trademarks all names and 'AdoptOpenJDK' is just not trademark able OpenJDK Java ™ ™

Slide 93

Slide 93 text

This is a very very very long gag @wol fl ook @hendrikEbbers Just call the distro 'Adoptium' ... • NO! Adoptium is much more than 'just the binaries': AQAVIT is the quality and runtime branding evaluation project for Java SE runtimes and associated technology. Any Java runtime Open source AQAVIT test & benchmark suite Enterprise ready runtime https://bit.ly/3nnLVi7 More Info:

Slide 94

Slide 94 text

This is a very very very long gag @wol fl ook @hendrikEbbers Just call the distro 'Adoptium' ... • NO! Adoptium is much more than 'just the binaries': We want to create a good landing page for OpenJDK and Java Newcomer

Slide 95

Slide 95 text

This is a very very very long gag @wol fl ook @hendrikEbbers Just call the distro 'Adoptium' ... • NO! We want to be convenient: 
 
 Like ___________ provides ___________ the Adoptium project provides Temurin Azul Systems Zulu Amazon Coretto Bellsoft Liberica Oracle Oracle JDK

Slide 96

Slide 96 text

This is a very very very long gag @wol fl ook @hendrikEbbers Just call the distro 'Adoptium' ... • NO! Adoptium is much more than 'just the binaries': Community

Slide 97

Slide 97 text

This is a very very very long gag @wol fl ook @hendrikEbbers Why 'Temurin' ? TEMURIN • The answer is quite simple: 
 
 
 
 


Slide 98

Slide 98 text

This is a very very very long gag @wol fl ook • The answer is quite simple: 
 
 
 
 
 @hendrikEbbers Why 'Temurin' ? N N N N O H3 C CH3 CH3 O N N N N O H3 C CH3 CH3 O CH3 O Caffeine Temurin

Slide 99

Slide 99 text

Other Distributions

Slide 100

Slide 100 text

This is a very very very long gag @wol fl ook @hendrikEbbers Other distributions • Several companies provide OpenJDK based distributions based on different reasons: • Some wants to sell LTS support • Some wants to provide it bundled with products • Some wants to use it in the company cloud • ...

Slide 101

Slide 101 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK Distributionen Azul Zulu Oracle JDK Amazon Coretto AdoptOpenJDK Bellsoft Liberica Red Hat Upstream Adoptium Temurin

Slide 102

Slide 102 text

This is a very very very long gag @wol fl ook @hendrikEbbers Other distributions • It is really hard to choose a distribution... • Adoptium tries to help the user by providing a marketplace • The Adoptium marketplace will only contain distributions that are TCK and AQAvit approved

Slide 103

Slide 103 text

This is a very very very long gag @wol fl ook @hendrikEbbers Adoptium Marketplace Mockup

Slide 104

Slide 104 text

New features

Slide 105

Slide 105 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK Features • All features of new Java releases are de fi ned by JDK Enhancement Proposals (JEP) of the OpenJDK • De fi nitions of JEPs and the feature lists of a Java release can be found at the OpenJDK • JEP URL: https://openjdk.java.net/jeps/395 • Release URL: https://openjdk.java.net/projects/jdk/16/

Slide 106

Slide 106 text

No content

Slide 107

Slide 107 text

No content

Slide 108

Slide 108 text

This is a very very very long gag @wol fl ook @hendrikEbbers JEP De fi nitions • The JEP de fi nition and work fl ow is de fi ned by JEPs: • JEP 0 contains an up-to-date index of all JEPs • JEP 1 & JEP 2 de fi nes the content and work fl ows of JEPs • JEP 3 de fi nes the release process of the JDK

Slide 109

Slide 109 text

This is a very very very long gag @wol fl ook @hendrikEbbers JEP Work fl ow

Slide 110

Slide 110 text

This is a very very very long gag @wol fl ook @hendrikEbbers JEP De fi nitions • A Java release can contain JEPs as previews or in incubator mode: • JEP 11 de fi nes incubator mode • JEP 12 de fi nes preview mode

Slide 111

Slide 111 text

This is a very very very long gag @wol fl ook @hendrikEbbers Preview Features $ javac HelloWorld.java 
 
 $ javac --release 14 --enable-preview HelloWorld.java $ java --enable-preview HelloWorld Enable all preview features of JDK 14 Run with all preview features of JDK 14

Slide 112

Slide 112 text

This is a very very very long gag @wol fl ook @hendrikEbbers JEP Count by Release Java 8 Java 9 Java 11 Java 12 Java13 Java 14 Java 15 0 10 20 30 40 50 60 70 80 90 100 50+ 90+ 17 8 5 16 14 3+ years per release 6 month per release Java 16 17 Java 17 14

Slide 113

Slide 113 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 12 Features • 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) • 230: Microbenchmark Suite • 325: Switch Expressions (Preview) • 334: JVM Constants API • 340: One AArch64 Port, Not Two • 341: Default CDS Archives • 344: Abortable Mixed Collections for G1 • 346: Promptly Return Unused Committed Memory from G1

Slide 114

Slide 114 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 13 Features • 350: Dynamic CDS Archives • 351: ZGC: Uncommit Unused Memory • 353: Reimplement the Legacy Socket API • 354: Switch Expressions (Preview) • 355: Text Blocks (Preview)

Slide 115

Slide 115 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 14 Features • 305: Pattern Matching for instanceof (Preview) • 343: Packaging Tool (Incubator) • 345: NUMA-Aware Memory Allocation for G1 • 349: JFR Event Streaming • 352: Non-Volatile Mapped Byte Buffers • 358: Helpful NullPointerExceptions • 359: Records (Preview) • 361: Switch Expressions (Standard) • 362: Deprecate the Solaris and SPARC Ports • 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector • 364: ZGC on macOS • 365: ZGC on Windows • 366: Deprecate the ParallelScavenge + SerialOld GC Combination • 367: Remove the Pack200 Tools and API • 368: Text Blocks (Second Preview) • 370: Foreign-Memory Access API (Incubator)

Slide 116

Slide 116 text

This is a very very very long gag @wol fl ook @hendrikEbbers Helpful NullPointerExceptions Exception in thread "main" java.lang.NullPointerException: Cannot assign field "i" because "a" is null at Prog.main(Prog.java:5) Exception in thread "main" java.lang.NullPointerException: Cannot read field "c" because "a.b" is null at Prog.main(Prog.java:5) •

Slide 117

Slide 117 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 15 Features • 339: Edwards-Curve Digital Signature Algorithm (EdDSA) • 360: Sealed Classes (Preview) • 371: Hidden Classes • 372: Remove the Nashorn JavaScript Engine • 373: Reimplement the Legacy DatagramSocket API • 374: Disable and Deprecate Biased Locking • 375: Pattern Matching for instanceof (Second Preview) • 377: ZGC: A Scalable Low-Latency Garbage Collector • 378: Text Blocks • 379: Shenandoah: A Low-Pause-Time Garbage Collector • 381: Remove the Solaris and SPARC Ports • 383: Foreign-Memory Access API (Second Incubator) • 384: Records (Second Preview) • 385: Deprecate RMI Activation for Removal

Slide 118

Slide 118 text

This is a very very very long gag @wol fl ook @hendrikEbbers Text Blocks void writeHTML() { String html = """

Hello World.

"""; writeOutput(html); }

Slide 119

Slide 119 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 16 Features • 394: Pattern Matching for instanceof • 395: Records • 376: ZGC: Concurrent Thread-Stack Processing • 387: Elastic Metaspace • 380: Unix-Domain Socket Channels • 392: Packaging Tool • 396: Strongly Encapsulate JDK Internals by Default • 390: Warnings for Value-Based Classes • 397: Sealed Classes (Second Preview) • 338: Vector API (Incubator) • 389: Foreign Linker API (Incubator) • 393: Foreign-Memory Access API (Third Incubator) • 347: Enable C++14 Language Features • 357: Migrate from Mercurial to Git • 369: Migrate to GitHub • 386: Alpine Linux Port • 388: Windows/AArch64 Port

Slide 120

Slide 120 text

This is a very very very long gag @wol fl ook @hendrikEbbers Vector API a = b + c * z[i+0] a b c z[i+0] d = e + f * z[i+1] d e f z[i+1] r = s + t * z[i+2] r s t z[i+2] u = v + w * z[i+3] u v w z[i+3] Old approach With Vector API = + SIMD * SIMD four multiplications four additions four assignments One SIMD multiplications One SIMD additions One assignments * * SIMD = Single Instruction Multiple Data *

Slide 121

Slide 121 text

This is a very very very long gag @wol fl ook @hendrikEbbers JDK 17 Features • 409: Sealed Classes • 406: Pattern Matching for Switch (Preview) • 356: Enhanced Pseudo-Random Number Generators • 382: New macOS Rendering Pipeline • 415: Context-Speci fi c Deserialization Filters • 412: Foreign Function & Memory API (Incubator) • 414: Vector API (Second Incubator) • 403: Strongly Encapsulate JDK Internals • 306: Restore Always-Strict Floating-Point Semantics • 411: Deprecate the Security Manager for Removal • 398: Deprecate the Applet API for Removal • 407: Remove RMI Activation • 410: Remove the Experimental AOT and JIT Compiler • 391: macOS/AArch64 Port

Slide 122

Slide 122 text

This is a very very very long gag @wol fl ook @hendrikEbbers New macOS Rendering Pipeline • Implement a Java 2D internal rendering pipeline for macOS using the Apple Metal API • Alternative to the existing pipeline, which uses the deprecated Apple OpenGL API Apple deprecated the OpenGL rendering library in September 2018

Slide 123

Slide 123 text

This is a very very very long gag @wol fl ook @hendrikEbbers macOS/AArch64 Port • Apple has announced a long-term plan to transition their line of Macintosh computers from x64 to AArch64 (ARM) • Native support added to OpenJDK Apple M1 chip for example No Rosetta 2 usage anymore

Slide 124

Slide 124 text

Project Skara

Slide 125

Slide 125 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK at Git • JavaFX was the fi rst project of the OpenJDK that has been migrated to git & GitHub • With project Skara the OpenJDK is moved to git & GitHub https://github.com/openjdk/jfx

Slide 126

Slide 126 text

This is a very very very long gag @wol fl ook @hendrikEbbers OpenJDK at Git • Since OpenJDK projects are now hosted at GitHub contribution is super easy • Every GitHub user can create a PR (+ some paperwork to have you checked as a valid OpenJDK commiter)

Slide 127

Slide 127 text

This is a very very very long gag @wol fl ook @hendrikEbbers All OS Builds with GitHub Actions • OpenJDK projects already use GitHub Actions for CI tasks • Automatically build and test JavaFX on all 3 big operation systems for each pull request https://github.com/openjdk/jfx/pull/619/checks

Slide 128

Slide 128 text

This is a very very very long gag @wol fl ook @hendrikEbbers Issue tracker is still untouched • The Java issue tracker has not changed with project Skara • OpenJDK Bug Tracker is still Jira based on not directly writeable by endusers

Slide 129

Slide 129 text

This is a very very very long gag @wol fl ook @hendrikEbbers Issue tracker is still untouched • Oracle provides hard to handle solution • If you want to follow me 
 (Hendrik) down the rabbit hole: 
 
 https://bit.ly/3nnJdsX

Slide 130

Slide 130 text

Migrate now

Slide 131

Slide 131 text

This is a very very very long gag @wol fl ook @hendrikEbbers Migrating to JDK 17 • Oracle provides a migration guide: • Signi fi cant Changes in the JDK • Preparing For Migration • Migrating From JDK 8 to Later JDK Releases https://docs.oracle.com/en/java/javase/17/migrate/index.html https://bit.ly/3k224YD

Slide 132

Slide 132 text

This is a very very very long gag @wol fl ook @hendrikEbbers Migrating to JDK 17 • Download JDK 17 • Run your program before recompiling • Update 3rd-party libraries • Compile your application if needed • Run jdeps on your code

Slide 133

Slide 133 text

This is a very very very long gag @wol fl ook @hendrikEbbers Check removed APIs • The Java Version Almanac contains all information that you need • Open source service by Mark Hoffmann • Support any 2 releases https://javaalmanac.io/jdk/17/apidiff/11/ https://bit.ly/3z2Bqmv

Slide 134

Slide 134 text

@wol fl ook @hendrikEbbers Check all removed modifications

Slide 135

Slide 135 text

This is a very very very long gag @wol fl ook @hendrikEbbers Missing tools • You might miss some tools • WebStart and Applet support is gone • Check open source solution at openwebstart.com

Slide 136

Slide 136 text

This is a very very very long gag @wol fl ook @hendrikEbbers Deprecated for Removal in 17 • Applet API (JEP 398) • No Web browser supports Applets anymore • Security Manager (JEP 411) • Was used extensively for running applets in a sandbox • Not been the primary means of securing client-side Java code for many years • Rarely been used to secure server-side Java code

Slide 137

Slide 137 text

This is a very very very long gag @wol fl ook @hendrikEbbers Removed in JDK 17 • RMI Activation (JEP 407) • Deprecated for removal since JDK 15 • Experimental AOT and JIT Compiler (JEP 410) • AOT was an experimental feature shipped introduced with JDK 9 • GraalVM JIT Compiler was an experimental feature introduced with JDK 10 • Was not included with JDK 16

Slide 138

Slide 138 text

This is a very very very long gag @wol fl ook @hendrikEbbers JavaFX Migration • JavaFX was part of Java 8 binaries by several vendors like Oracle or Azul • For Java 11 the best practice is to handle JavaFX like any other dependency • Good tutorials for Maven & Gradle can be found at https://openjfx.io/openjfx-docs/ https://bit.ly/2XdV41D

Slide 139

Slide 139 text

This is a very very very long gag @wol fl ook @hendrikEbbers Check for usage of private API • We can't say that often enough • Check your code for any usage • Many online resources for individual issues ... or consultancy

Slide 140

Slide 140 text

This is a very very very long gag @wol fl ook @hendrikEbbers Migrating to a different Vendor • Maybe you want to migrate to a different OpenJDK based distribution • Since all are based on OpenJDK and mostly all are TCK checked a switch should be super easy... you do Have a support subscription for Java versions in production ? As you can imagine there are exceptions...

Slide 141

Slide 141 text

This is a very very very long gag @wol fl ook @hendrikEbbers Migrating to a different Vendor • There are still some minor differences distributions • As an example Oracle JDK uses a different font in Swing than the OpenJDK does • Adoptium provides an migration guide: 
 https://adoptium.net/migration.html https://bit.ly/3tBroI1

Slide 142

Slide 142 text

This is a very very very long gag @wol fl ook @hendrikEbbers Modular Development with JDK 17

Slide 143

Slide 143 text

This is a very very very long gag @wol fl ook @hendrikEbbers Additional resources • You can fi nd many good resources online • ... sadly not all are 100% correct • Good starting points: https://docs.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11 https://bit.ly/3tBroI1 https://nipafx.dev/java-11-migration-guide/ https://bit.ly/3C3aTY9

Slide 144

Slide 144 text

Next Steps

Slide 145

Slide 145 text

This is a very very very long gag @wol fl ook @hendrikEbbers GraalVM GraalVM Community is available for free for any use. It is built from the GraalVM sources available on GitHub. We provide pre-built binaries for Linux/ X86, Linux/ARM, macOS, and Windows platforms on x86 64-bit systems. Support for the Windows and Linux/ARM platforms, and the Python, Ruby and R languages is experimental. Note GraalVM Community Edition contains significant technology from other projects including OpenJDK and Node.js which are not maintained by the GraalVM community. GraalVM Enterprise Edition is recommended for production applications. GraalVM Enterprise provides additional performance, security, and scalability relevant for running applications in production. You can get a version of GraalVM Enterprise that is free for evaluation and developing new applications via the Oracle Technology Network (OTN), or a commercially licensed version for production use via the Oracle Store. We provide binaries for Linux, macOS, and Windows platforms on x86 64-bit systems. Support for the Windows and Linux/ARM platforms, and the Python, Ruby and R languages is experimental. Enterprise Edition Community Edition

Slide 146

Slide 146 text

This is a very very very long gag @wol fl ook @hendrikEbbers GraalVM • Unlike OpenJDK the GraalVM is a full Oracle product • BUT: GraalVM is open source • BUT: GraalVM community edition is available • BUT: Advisory Board contains multiple companies https://www.graalvm.org/community/advisory-board/

Slide 147

Slide 147 text

This is a very very very long gag @wol fl ook @hendrikEbbers Key Java Platform Investments • Security & Vulnerability • Approachability & Continued language enhancements • Cloud Containers & Observability • Data optimization & Density • Predictability at Scale • Performance & Ef fi ciency • Hardware Acceleration (GPU, NVM, etc.)

Slide 148

Slide 148 text

Stay safe & healthy

Slide 149

Slide 149 text

@hendrikEbbers dev.karakun.com