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

Choosing the Right Java Version & Strategy

Choosing the Right Java Version & Strategy

With Chandra Guntur

Jeanne Boyarsky

September 19, 2019
Tweet

More Decks by Jeanne Boyarsky

Other Decks in Programming

Transcript

  1. @CGuntur
    @JeanneBoyarsky
    Choosing the Right
    Java Vendor & Strategy
    Jeanne Boyarsky & Chandra Guntur

    Oracle Code One (9/19/19)

    DEV1969

    speakerdeck.com/boyarsky

    speakerdeck.com/cguntur
    1

    View Slide

  2. @CGuntur
    @JeanneBoyarsky
    About Us
    • 3 Java 8 cert books
    • Java 11 cert books coming soon
    • CodeRanch moderator
    2
    • JCP EC rep for BNY Mellon
    • Contributor to eclipse-collections
    • Code Katas
    • Java Champions
    • Combined 35 years Java development
    • Leaders of NYJavaSIG
    • Blog & Tweet regularly

    View Slide

  3. @CGuntur
    @JeanneBoyarsky
    Thursday Recommendations
    3
    Time Title Speaker(s)
    11:15-12:00
    JVM Comparison: Benchmark
    Performance of Different JDK/
    JVM Combos
    Donald Raab &
    Chandra Guntur
    10:00-10:45 Do it yourself collections Nikhil Nanivadekar
    12:15-1:00
    Making Java a First Class
    Citizen with ML
    Moderated by Frank Greco

    with 

    IBM, Oracle, Amazon & Azul
    3:15-4:00
    Java 13: Shaping the Future of
    Java, Faster
    Sharat Chander &
    Aurelio Garcia-Riberyo

    View Slide

  4. @CGuntur
    @JeanneBoyarsky 4
    JAVA 8 JAVA 11
    . . .

    View Slide

  5. @CGuntur
    @JeanneBoyarsky
    Agenda
    • History/Evolution

    • Release cycles

    • Support

    • Java Distros

    • Our favorite new features
    5

    View Slide

  6. @CGuntur
    @JeanneBoyarsky
    History
    6
    Java 8
    2014
    Hi Oracle
    2010
    Java 7
    2011
    Til Java 6
    1996-2006
    Java 9
    2017

    View Slide

  7. @CGuntur
    @JeanneBoyarsky
    Java School Report Card
    Features
    Developer Community
    A+
    B
    Predictability of Release
    Frequency of Release
    F
    D
    < 2014

    View Slide

  8. @CGuntur
    @JeanneBoyarsky
    JDK School Report Card
    Polyglot Programming
    Scalability & Performance
    B
    A
    Predictability of Release
    Frequency of Release
    F
    D
    2014-2018

    View Slide

  9. @CGuntur
    @JeanneBoyarsky
    With New Release Model
    Agile
    Developer Community
    A+
    A
    Predictability of Release
    Frequency of Release
    A
    A
    2019+

    View Slide

  10. @CGuntur
    @JeanneBoyarsky
    Agenda
    • History/Evolution

    • Release cycles
    • Support

    • Java Distros

    • Our favorite new features
    10

    View Slide

  11. @CGuntur
    @JeanneBoyarsky
    OpenJDK Release Cadence
    11
    March
    2018
    Sept
    2018
    March
    2019
    Sept
    2019
    March
    2020
    Sept
    2020
    March
    2021
    Sept
    2021
    Java 10 Java 12 Java 13 Java 14 Java 15 Java 16
    Java 11 Java 17
    6 months
    18 months (3 years)

    View Slide

  12. @CGuntur
    @JeanneBoyarsky
    OpenJDK 11 Stewardship
    12
    Oracle
    Red Hat
    Sept
    2018
    March
    2019
    Sept
    2019
    March
    2020
    Java 12 Java 13
    Java 11
    Java 11

    View Slide

  13. @CGuntur
    @JeanneBoyarsky
    Oracle Java Release Support
    13
    Sept
    2018
    March
    2019
    Sept
    2019
    March
    2020
    Java 11
    Open JDK
    (Reference
    Implementation)
    Oracle JDK
    (Standard
    Implementation)
    Java 11
    Java 12 Java 13
    Sept
    2021
    Java 12 Java 13

    View Slide

  14. @CGuntur
    @JeanneBoyarsky
    LTS JDK Releases
    14
    March
    2018
    Sept
    2018
    March
    2019
    Sept
    2019
    March
    2020
    Sept
    2020
    March
    2021
    Sept
    2021
    Java 11 Java 17
    6 months 18 months (3 years)

    View Slide

  15. @CGuntur
    @JeanneBoyarsky
    Quiz Time
    15

    View Slide

  16. @CGuntur
    @JeanneBoyarsky
    Quiz #1
    Once Java 13 comes out, what does Oracle issue patches for?
    16
    Oracle JDK 11

    OpenJDK 13

    Oracle JDK 13

    View Slide

  17. @CGuntur
    @JeanneBoyarsky
    Quiz #2
    How long will Oracle issue Java 13 patches?
    17
    6 months

    View Slide

  18. @CGuntur
    @JeanneBoyarsky
    Quiz #3
    What is the next LTS version after Java 11?
    18
    Java 17

    View Slide

  19. @CGuntur
    @JeanneBoyarsky
    Quiz #4
    How long can Java 8 be used in production for free?
    19
    Forever

    View Slide

  20. @CGuntur
    @JeanneBoyarsky
    Agenda
    • History/Evolution

    • Release cycles

    • Support

    • Java Distros

    • Our favorite new features
    20

    View Slide

  21. @CGuntur
    @JeanneBoyarsky
    Java is Still Free
    • Oracle JDK - Personal use under OTN

    • OpenJDK - Reference Implementation

    • Many vendors under GPL w/CPE

    When you have 20-30 minutes:
    21
    Free
    https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244

    View Slide

  22. @CGuntur
    @JeanneBoyarsky
    What is Support?
    22
    Patches/Updates Ask a Question

    View Slide

  23. @CGuntur
    @JeanneBoyarsky
    LTS vs MTS
    23
    LTS (Long Term
    Support)
    MTS (Medium Term
    Support)
    Java Versions Java 8, 11, 17 …
    Java 13, 15 

    between Java 11 & 17
    Vendors Many (including Azul) Azul (Enterprise)
    Support length 8+ years
    Supported for 18
    months after latest LTS.

    View Slide

  24. @CGuntur
    @JeanneBoyarsky
    Oracle Support
    24
    Non-commercial Enterprise
    OTN Support
    Premier Support
    Extended Support
    Sustaining Support

    View Slide

  25. @CGuntur
    @JeanneBoyarsky
    Oracle Support
    25
    Support Updates/Patches
    OTN Support No at-will
    Premier Support Yes 5 years
    Extended Support Yes 8+ years
    Sustaining Support Yes Indefinitely

    View Slide

  26. @CGuntur
    @JeanneBoyarsky
    Notable 3 Cloud Vendors
    26
    AdoptOpenJDK ?

    View Slide

  27. @CGuntur
    @JeanneBoyarsky
    Quiz Time
    27

    View Slide

  28. @CGuntur
    @JeanneBoyarsky
    Quiz
    Can a developer expect support for a OTN download?
    28
    No

    View Slide

  29. @CGuntur
    @JeanneBoyarsky
    Agenda
    • History/Evolution

    • Release cycles

    • Support

    • Java Distros

    • Our favorite new features
    29

    View Slide

  30. @CGuntur
    @JeanneBoyarsky 30
    AdoptOpenJDK
    Versions
    Supported By IBM, jClarity (Microsoft?) & several others
    Support Model
    LTS Support for 8 until Sep. 2023
    LTS Support for 11 until Sep. 2022
    Compatibility Test
    Update Policy Quarterly
    AdoptOpenJDK
    12 + every 6 months
    8 11
    AQA Compliant
    https://adoptopenjdk.net/

    View Slide

  31. @CGuntur
    @JeanneBoyarsky 31
    Amazon Corretto
    Versions
    Supported By Amazon
    Support Model
    LTS Support for 8 until Jun. 2023
    LTS Support for 11 until Aug. 2024
    Compatibility Test
    Update Policy Quarterly
    Amazon Corretto
    https://aws.amazon.com/corretto/
    + future LTS
    8 11
    TCK/JCK Compliant

    View Slide

  32. @CGuntur
    @JeanneBoyarsky 32
    Azul Zulu/Zing
    Versions
    Supported By Azul
    Support Model
    LTS Support for 8 until Mar. 2025
    LTS Support for 11 until Sep. 2026
    MTS Support ($$$) 1.5 years for 2 versions after latest LTS
    Compatibility Test
    Update Policy Quarterly
    Azul Zulu & Zing
    https://www.azul.com/products/zulu-enterprise/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  33. @CGuntur
    @JeanneBoyarsky 33
    BellSoft Liberica
    Versions
    Supported By BellSoft
    Support Model
    LTS Support for 8 until Jan. 2026
    LTS Support for 11 until Mar. 2027
    Compatibility Test
    Update Policy Quarterly
    BellSoft Liberica
    https://bell-sw.com/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  34. @CGuntur
    @JeanneBoyarsky 34
    IBM JDK
    Versions
    Supported By IBM
    Support Model
    LTS Support for 8 until Apr. 2022
    LTS Support for 11 - Not Published
    Compatibility Test
    Update Policy Quarterly
    IBM JDK
    https://developer.ibm.com/javasdk/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  35. @CGuntur
    @JeanneBoyarsky 35
    OpenJDK
    Versions
    Supported By Oracle (for 6 months) » RedHat (for 8,11)
    Support Model - per distro provider/vendor -
    Compatibility Test
    Update Policy Quarterly
    OpenJDK
    https://openjdk.java.net/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  36. @CGuntur
    @JeanneBoyarsky 36
    SAPMachine
    Versions
    Supported By SAP
    Support Model
    LTS Support for 8 - No distro (started with Java 10)
    LTS Support for 11 until Sep. 2022
    LTS Support for 4 years
    Compatibility Test
    Update Policy Quarterly
    SapMachine
    https://sap.github.io/SapMachine/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  37. @CGuntur
    @JeanneBoyarsky 37
    Oracle JDK
    Versions
    Supported By Oracle
    Support Model
    Patches for each major version for 6 months
    Commercial support levels (Slide 25)
    Compatibility Test
    Update Policy Quarterly
    Oracle JDK
    https://www.java.com/
    TCK/JCK Compliant
    12 + every 6 months
    8 11

    View Slide

  38. @CGuntur
    @JeanneBoyarsky
    Choosing a Strategy
    38
    Pros Cons
    Stay on Java 8
    Existing skills
    Reflection easier
    Nearing end of support
    life (EOSL)
    Current release Latest features Upgrade every 6 months
    Use latest LTS
    (Java 11)
    Many of the new
    features
    Migration cost

    View Slide

  39. @CGuntur
    @JeanneBoyarsky
    Agenda
    • History/Evolution

    • Release cycles

    • Support

    • Java Distros

    • Our favorite new features
    39

    View Slide

  40. @CGuntur
    @JeanneBoyarsky
    Single-File Source-Code
    40
    $> java Unicode.java
    Compiles in memory
    Java 11
    JEP-330

    View Slide

  41. @CGuntur
    @JeanneBoyarsky
    Garbage Collection
    • Experimental ZGC (JEP 333) 

    http://openjdk.java.net/jeps/333

    • No-Op Epsilon GC (JEP 318)

    http://openjdk.java.net/jeps/318

    41
    Java 11

    View Slide

  42. @CGuntur
    @JeanneBoyarsky
    Compact Number Formatting
    42
    Java 12
    $> java --source 12 TwitterStats.java ~ 76.1K impressions & 2.01 thousand followers
    JDK-8188147

    View Slide

  43. @CGuntur
    @JeanneBoyarsky
    Switch Expressions
    43
    Java 12
    (preview)
    $> java --source 12 --enable-preview Quarter.java --> Q3
    JEP-325

    View Slide

  44. @CGuntur
    @JeanneBoyarsky
    Switch Expressions
    44
    Java 13
    (preview)
    $> java --source 13 --enable-preview Quarter.java --> Q3
    JEP-354

    View Slide

  45. @CGuntur
    @JeanneBoyarsky
    Raw String Literals
    45
    Java 13
    (preview)
    $> java --source 13 --enable-preview XmlTest.java
    JEP-326

    View Slide

  46. @CGuntur
    @JeanneBoyarsky
    Notable JVMs
    46
    Name
    Vendor/
    Maintainer
    Zulu Azul Systems
    OpenJ9 IBM
    Hotspot Oracle
    Free/Open Source
    Name
    Vendor/
    Maintainer
    Zing Azul Systems
    GraalVM Oracle
    JamaicaVM aicas
    Commercial/Proprietary

    View Slide

  47. @CGuntur
    @JeanneBoyarsky 47
    Questions?

    View Slide