Slide 1

Slide 1 text

OpenJDK Facts

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

This is a very very very long gag @hendrikEbbers Content • History recall • OpenJDK • Java release model • Eclipse Adoptium & others • Migration

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

This is a very very very long gag @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 9

Slide 9 text

This is a very very very long gag @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 10

Slide 10 text

This is a very very very long gag @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 11

Slide 11 text

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

Slide 12

Slide 12 text

This is a very very very long gag @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 13

Slide 13 text

This is a very very very long gag @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 14

Slide 14 text

OpenJDK

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

This is a very very very long gag @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 20

Slide 20 text

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

Slide 21

Slide 21 text

This is a very very very long gag @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 22

Slide 22 text

This is a very very very long gag @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 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

This is a very very very long gag @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 26

Slide 26 text

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

Slide 27

Slide 27 text

This is a very very very long gag @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 28

Slide 28 text

This is a very very very long gag @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 29

Slide 29 text

This is a very very very long gag @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 30

Slide 30 text

This is a very very very long gag @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 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

This is a very very very long gag @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 34

Slide 34 text

This is a very very very long gag @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 35

Slide 35 text

This is a very very very long gag @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 36

Slide 36 text

This is a very very very long gag @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 37

Slide 37 text

This is a very very very long gag @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 38

Slide 38 text

This is a very very very long gag @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 39

Slide 39 text

This is a very very very long gag @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 40

Slide 40 text

This is a very very very long gag @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 41

Slide 41 text

This is a very very very long gag @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 42

Slide 42 text

Java Roadmap

Slide 43

Slide 43 text

This is a very very very long gag @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 44

Slide 44 text

This is a very very very long gag @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 45

Slide 45 text

This is a very very very long gag @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 46

Slide 46 text

This is a very very very long gag @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 47

Slide 47 text

This is a very very very long gag @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 48

Slide 48 text

This is a very very very long gag @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 Java 15

Slide 49

Slide 49 text

This is a very very very long gag @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 Java 15

Slide 50

Slide 50 text

This is a very very very long gag @hendrikEbbers Oracle OpenJDK distribution Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 2018 2019 2020 Java 8 free version commercial version Java 15

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

This is a very very very long gag @hendrikEbbers The new release train 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 53

Slide 53 text

This is a very very very long gag @hendrikEbbers The new release train 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 54

Slide 54 text

This is a very very very long gag @hendrikEbbers The new release train Oracle WTF??? https://www.oracle.com/java/technologies/downloads/

Slide 55

Slide 55 text

This is a very very very long gag @hendrikEbbers The new release train https://www.oracle.com/java/technologies/downloads/

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

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


Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

This is a very very very long gag 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 TCK

Slide 63

Slide 63 text

This is a very very very long gag @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 64

Slide 64 text

The Eclipse Temurin Java runtime builds by Adoptium can not be named 'AdoptOpenJDK' since OpenJDK is owned by Oracle ™ ™ ® ™ ™ ®

Slide 65

Slide 65 text

This is a very very very long gag @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 66

Slide 66 text

This is a very very very long gag @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 67

Slide 67 text

This is a very very very long gag @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 68

Slide 68 text

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


Slide 69

Slide 69 text

This is a very very very long gag • 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 70

Slide 70 text

This is a very very very long gag @hendrikEbbers Eclipse Adoptium Community

Slide 71

Slide 71 text

Other Distributions

Slide 72

Slide 72 text

This is a very very very long gag @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 73

Slide 73 text

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

Slide 74

Slide 74 text

This is a very very very long gag @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 75

Slide 75 text

This is a very very very long gag @hendrikEbbers Adoptium Marketplace Mockup

Slide 76

Slide 76 text

Migrate now

Slide 77

Slide 77 text

This is a very very very long gag @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 78

Slide 78 text

This is a very very very long gag @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 79

Slide 79 text

This is a very very very long gag @hendrikEbbers The (evil) private APIs • Java 17 introduced JEP 403: Strongly Encapsulate JDK Internals • It will no longer be possible to relax the strong encapsulation of internal elements via a single command-line option, as was possible in JDK 9 through JDK 16.

Slide 80

Slide 80 text

This is a very very very long gag @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 81

Slide 81 text

This is a very very very long gag @hendrikEbbers Migrating to JDK 17 • Next to the new timeline the new release model added some additional points • Deprecated code was removed from Java • @Deprecated has additional information

Slide 82

Slide 82 text

This is a very very very long gag @hendrikEbbers Migrating to JDK 17 A value of true indicates intent to remove the annotated program element in a future version. @Deprecated(forRemoval = true)

Slide 83

Slide 83 text

This is a very very very long gag @hendrikEbbers Migrating to JDK 17 • Several APIs were already removed between Java 8 and Java 11: • CORBA • JAXB • Java Enterprise Annotations

Slide 84

Slide 84 text

This is a very very very long gag @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 85

Slide 85 text

@hendrikEbbers Check all removed modifications

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

This is a very very very long gag @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 88

Slide 88 text

This is a very very very long gag @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 89

Slide 89 text

This is a very very very long gag @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 90

Slide 90 text

Stay safe & healthy

Slide 91

Slide 91 text

@hendrikEbbers dev.karakun.com