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

Java 17 Release

Java 17 Release

Hendrik Ebbers

September 17, 2021
Tweet

More Decks by Hendrik Ebbers

Other Decks in Programming

Transcript

  1. Java 17
    Das neue LTS Release is da!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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


    • I STARWARS


    • I Hardrock


    • I Dogs

    View Slide

  6. PARTY
    Java 17
    Cyberlan
    d

    View Slide

  7. Wer von euch hat wohl das
    älteste JAVA Programm?


    TagebuchApplet.java


    AWTodo_v45.java

    MyFirstStrutsAction.java
    [email protected]
    https://cyberland.ijug.eu

    View Slide

  8. Heute Abend gehts AB!!1!!


    19:00
    nur echt auf YouTube
    ... wenn YouTube klappt
    *
    *
    https://cyberland.ijug.eu

    View Slide

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

    View Slide

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

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. View Slide

  22. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. Java in a Nutshell

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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


    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  41. OpenJDK

    View Slide

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

    View Slide

  43. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. Java Roadmap

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. Why do I need LTS?

    View Slide

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

    View Slide

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

    View Slide

  75. 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();

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  85. View Slide

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




    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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





    View Slide

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

    View Slide

  99. Other Distributions

    View Slide

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


    • ...

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  104. New features

    View Slide

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

    View Slide

  106. View Slide

  107. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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



    View Slide

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

    View Slide

  118. This is a very very very long gag
    @wol
    fl
    ook
    @hendrikEbbers
    Text Blocks
    void writeHTML() {


    String html = """








    Hello World.








    """;


    writeOutput(html);


    }

    View Slide

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

    View Slide

  120. 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
    *

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  124. Project Skara

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  130. Migrate now

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  134. @wol
    fl
    ook
    @hendrikEbbers
    Check all removed
    modifications

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  144. Next Steps

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  148. Stay safe & healthy

    View Slide

  149. @hendrikEbbers
    dev.karakun.com

    View Slide