$30 off During Our Annual Pro Sale. View Details »

OpenJDK Facts

OpenJDK Facts

Hendrik Ebbers

September 17, 2021
Tweet

More Decks by Hendrik Ebbers

Other Decks in Technology

Transcript

  1. OpenJDK Facts

    View Slide

  2. 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

    View Slide

  3. This is a very very very long gag
    @hendrikEbbers
    Hendrik Ebbers
    • I (and collect) boardgames


    • I STARWARS


    • I Hardrock


    • I Dogs

    View Slide

  4. This is a very very very long gag
    @hendrikEbbers
    Content
    • History recall


    • OpenJDK


    • Java release model


    • Eclipse Adoptium & others


    • Migration

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. 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

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. 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)

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. OpenJDK

    View Slide

  15. 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...

    View Slide

  16. View Slide

  17. 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

    View Slide

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

    View Slide

  19. 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

    View Slide

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

    View Slide

  21. 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

    View Slide

  22. 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

    View Slide

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

    View Slide

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

    View Slide

  25. 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

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 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/

    View Slide

  31. View Slide

  32. View Slide

  33. 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

    View Slide

  34. 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

    View Slide

  35. 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

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

  38. 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)

    View Slide

  39. 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

    View Slide

  40. 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

    View Slide

  41. 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

    View Slide

  42. Java Roadmap

    View Slide

  43. 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

    View Slide

  44. 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

    View Slide

  45. 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

    View Slide

  46. 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

    View Slide

  47. 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

    View Slide

  48. 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

    View Slide

  49. 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

    View Slide

  50. 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

    View Slide

  51. 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

    View Slide

  52. 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

    View Slide

  53. 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

    View Slide

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

    View Slide

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

    View Slide

  56. View Slide

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




    View Slide

  58. 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

    View Slide

  59. 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

    View Slide

  60. 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

    View Slide

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



    https://adoptium.net

    View Slide

  62. 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

    View Slide

  63. 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
    ™ ™

    View Slide

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

    ™ ®

    View Slide

  65. 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:

    View Slide

  66. 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

    View Slide

  67. 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

    View Slide

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





    View Slide

  69. 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

    View Slide

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

    View Slide

  71. Other Distributions

    View Slide

  72. 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


    • ...

    View Slide

  73. 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

    View Slide

  74. 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

    View Slide

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

    View Slide

  76. Migrate now

    View Slide

  77. 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

    View Slide

  78. 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

    View Slide

  79. 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.

    View Slide

  80. 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


    View Slide

  81. 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

    View Slide

  82. 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)

    View Slide

  83. 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

    View Slide

  84. 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

    View Slide

  85. @hendrikEbbers
    Check all removed
    modifications

    View Slide

  86. 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

    View Slide

  87. 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

    View Slide

  88. 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...

    View Slide

  89. 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

    View Slide

  90. Stay safe & healthy

    View Slide

  91. @hendrikEbbers
    dev.karakun.com

    View Slide