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

OpenJDK Facts

OpenJDK Facts

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