Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenJDK Facts

Avatar for Hendrik Ebbers Hendrik Ebbers
September 17, 2021

OpenJDK Facts

Avatar for Hendrik Ebbers

Hendrik Ebbers

September 17, 2021
Tweet

More Decks by Hendrik Ebbers

Other Decks in Technology

Transcript

  1. 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
  2. This is a very very very long gag @hendrikEbbers Hendrik

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

    • History recall • OpenJDK • Java release model • Eclipse Adoptium & others • Migration
  4. 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
  5. 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
  6. 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
  7. 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)
  8. 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
  9. 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
  10. 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...
  11. 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
  12. This is a very very very long gag @hendrikEbbers Java

    in a nutshell Standard APIs Tools JVM
  13. 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
  14. This is a very very very long gag @hendrikEbbers Java

    getting old? OpenJDK 12 Oracle JDK 12 JVM, tools, etc. equals JVM, tools, etc.
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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/
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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)
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. This is a very very very long gag @hendrikEbbers The

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

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

    by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 

  46. 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
  47. 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
  48. 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
  49. This is a very very very long gag @hendrikEbbers Temurin

    by Adoptium • Eclipse Adoptium is the successor of AdoptOpenJDK 
 
 
 https://adoptium.net
  50. 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
  51. 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 ™ ™
  52. The Eclipse Temurin Java runtime builds by Adoptium can not

    be named 'AdoptOpenJDK' since OpenJDK is owned by Oracle ™ ™ ® ™ ™ ®
  53. 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:
  54. 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
  55. 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
  56. This is a very very very long gag @hendrikEbbers Why

    'Temurin' ? TEMURIN • The answer is quite simple: 
 
 
 
 

  57. 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
  58. 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 • ...
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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.
  64. 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
  65. 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
  66. 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)
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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...
  72. 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