33
Dan Heidinga Eclipse OpenJ9 Project Lead Interpreter Lead, IBM Runtimes @danheidinga DanHeidinga Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer @t_mammarella theresa-m

Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

  • Upload
    others

  • View
    32

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Dan HeidingaEclipse OpenJ9 Project LeadInterpreter Lead, IBM Runtimes

@danheidingaDanHeidinga

Migrate early, migrate often!JDK release cadence strategies

Theresa MammarellaEclipse OpenJ9 Software Developer

@t_mammarellatheresa-m

Page 2: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ Theresa Mammarella

§ Software developer on Runtimes at IBM, OpenJ9

§ Computer Engineering at University of British Columbia

2

Who am I?

Page 3: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

3

Important disclaimers

§ THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.

§ WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

§ ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES.

§ ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.

§ IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.

§ IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.

§ NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:– CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS

OR THEIR SUPPLIERS AND/OR LICENSORS

Page 4: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ The brave new world of Java

§ Always be migrating

§ Continuous migration strategies

4

Outline

Page 5: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

5

Historical Java release model

2005 2010 2015 2020 2025

Java 6

Java 7

Java 8

6 years, 4 months

3 years, 9 months

8 years, 6 months

Page 6: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Java 9 (09/2017)

Java 10 (03/2018)

Java 11 (09/2018)

Java 12 (03/2019)

Java 17 (09/2021)

6

Brave new world

Page 7: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

7

•Author(s): Videoplasty.com•Man on a Treadmill Cartoon.svg from Wikimedia Commons

•License: Creative Commons Attribution-ShareAlike 4.0

Page 8: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Java 9 (09/2017)

Java 10 (03/2018)

Java 11 (09/2018)

Java 12 (03/2019)

Java 17 (09/2021)

8

6 month release cadence

Page 9: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

LTS = Long Term Support?

9

Page 10: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Java 9 (09/2017)

Java 10 (03/2018)

Java 11LTS

(09/2018)

Java 12 (03/2019)

Java 17LTS

(09/2021)

10

LTS: up to the community

Page 11: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Prebuilt OpenJDK binaries

adoptopenjdk.net

Docker Hub

hub.docker.com/u/adoptopenjdk

11

Page 12: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

12

… bugs will be fixed on a “best effort” basis …

… for higher levels of assurance you should contact commercial companies offering support …

Support Levels

Page 13: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

13

IBM Support for OpenJDK with Eclipse OpenJ9

LoopBack

IBM Foundation Supportfor Runtimes• Language Runtime• Developer and Monitoring tools• Docker and Kubernetes support

IBM Advanced Support for Runtime Frameworks• Web Frameworks• Key module dependencies*

WITH

generator-nodeserver generator-swiftserver

* Supported module list is expected to grow over time.

Page 14: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

“eat the elephant a bite at a time”

§ The gap between LTS releases is HUGE§ How can an application keep up?

–Move to a stable base–Track changes in 6 month pieces

14

Always be migrating

Page 15: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

“the best time to plant a tree is either 20 years ago or today”

§ Migration 6-7-8 is mostly smooth

§ Java 8 is the oldest stable base you should use, support through 2025

§ By not upgrading you are leaving performance improvements on the table!

15

Migrate to a stable base: Java 8

Page 16: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Major ecosystem changes!

§ Java Platform Module System makes internal APIs inaccessible

§ API elements are deprecated for removal (Java EE, Corba and more)

§ Version system has changed, URLClassLoader is replaced, Etc.

16

Track future changes: Java 9

Page 17: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

@Deprecated§ Element is dangerous or a better alternative exists, use is discouraged

@Deprecated(since="9")§ Since(): Release in which API element was deprecated

@Deprecated(since="1.4", forRemoval=true)§ forRemoval(): Marked true if API element will be removed in a future release

17

JEP 277: Enhanced Deprecation

Page 18: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

18

Continuous integration pipeline

Setup(Java 8)

Build(Java 8)

Test(Java 8)

Page 19: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ Pay attention to warnings! § Fixing them gets you clean on the current release§ Treat warnings as errors so build will fail if warnings are present

19

javac warnings

javac -Werror

Page 20: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

20

Continuous migration strategiesSetup

(Java 8)Build

(Java 8)Test

(Java 8)

Build(Java 11)

Setup(Java 11)

Test(Java 11)

Page 21: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

21

Continuous migration strategies

Setup Build TestMigration checks

Page 22: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

JDEPS = Java Class Dependency Analyzer§ Java 8+ JDKs§ Analyzes the dependencies by class or package (default) level§ Not just for migrating to modularity!

22

jdeps Overview

Page 23: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

23

Demogithub.com/theresa-m/migrateearly-demo

hub.docker.com/u/adoptopenjdk

Page 24: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

24

jdeps docker stage

Setup Build TestMigration checks

Page 25: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ Java 9+ JDKs§ Scans jar/class files to identify deprecated API elements§ Deprecated elements may cause behavioral issues or be removed

25

jdeprscan Overview

Page 26: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

26

Demogithub.com/theresa-m/migrateearly-demo

hub.docker.com/u/adoptopenjdk

Page 27: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

27

Continuous migration strategies

Setup Build Testjdeps jdeprscan

Page 28: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

28

Multi-release JAR files§ Java 9+ SDKs§ Enables JAR files to support multiple Java versions§ Combination of shared and version specific classes

sun.misc.Unsafe to java.lang.invoke.VarHandle

Page 29: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

29

Multi-release JAR files

DemoApp.jar• migrate

• early• Demo.class• DemoRunnable.class

• META-INF• MANIFEST.MF

Page 30: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

30

Multi-release JAR files

MultiReleaseDemoApp.jar• migrate

• early• Demo.class• VersionedCode.class• DemoRunnable.class

• META-INF• MANIFEST.MF

• versions• 9

• VersionedCode.class

DemoApp.jar• migrate

• early• Demo.class• DemoRunnable.class

• META-INF• MANIFEST.MF

Page 31: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ Expect to run parallel CI pipeline at least once every 6 months

§ Run jdeps & jdeprscan as part of every build to prevent new regressions

§ Use multi-release jars if no workaround for current and latest versions

31

Summarize the strategies

Page 32: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

§ The Java ecosystem is delivering innovation faster than ever before!

§ The free lunch is over. Migrate early, migrate often

§ Even on an LTS, use the JDK tools to prepare for the next migration

32

Key points to take away

Page 33: Migrate early, migrate often! JDK release cadence strategies · Migrate early, migrate often! JDK release cadence strategies Theresa Mammarella Eclipse OpenJ9 Software Developer

Evaluate the Sessions

-1 0 +1Sign in and vote at eclipsecon.org