SlideShare a Scribd company logo
Migrating to Java 11
1DEVNEXUS 2019
Dalia Abo Sheasha
WebSphere Migration Tools Development Lead
Email: dalia@us.ibm.com
Twitter: @DaliaShea
Agenda
2DEVNEXUS 2019
• Background
• Java 9/10/11: New Features
• Java 8 -> Java 11: Migration Concerns
• Removed Packages/Classes/Methods
• Migration Tools
DEVNEXUS 2019
Java Timeline (Current)
2012 2014 2017 2018 2019
Sept2017
Java 9
March2018
Java 10
Java 12
March2019
July2011
Java 7 (LTS)
March2014
Java 8 (LTS)
Sept2018
Java 11 (LTS)
DEVNEXUS 2019
Java Timeline (Future )
2014 2017 2018
Sept2018
2019Sept2017
March2018
Java 11
Java 9
Java 10
Java 12
March2019
March2014
Java 8
2020 2021 2022
Java 13
Java 14
Java 15
Java 16
Java 17
(LTS)
(LTS)
(LTS)
5DEVNEXUS 2019
Java 9/10/11: New Features
Tons of Features!
• ( JDK 9, JDK 10, JDK 11 )
• var for local variables (JEP 286)
• Launch Single-File Source-Code Programs
(JEP 330)
• New methods in several classes (Optional,
Collection, etc)
• TLS 1.3
• …
Java 9/10/11: Modularity
6DEVNEXUS 2019
• Java Platform Module System (JPMS)
• Breaks code into modules containing packages
• Applications must declare dependency on modules for access
• Very disruptive
• “Kill switch” on by default (currently)
• --illegal-access=permit
7DEVNEXUS 2019
Java 8 -> Java 11
Java 8 -> Java 11: Migration Concerns
8DEVNEXUS 2019
• Removals
• Packages, classes and methods
• Previously deprecated
• General Migration Strategy: Replace
• Not previously deprecated
• General Migration Strategy: Depends…
• Behavior changes
• Information Source: Java 9/10/11 compatibility guides and release notes
Java 8 -> Java 11: Removed
Packages/Classes
9DEVNEXUS 2019
Removed Security classes:
• com.sun.security.auth.PolicyFile
• com.sun.security.auth.SolarisNumericGroupPrincipal
• com.sun.security.auth.SolarisNumericUserPrincipal
• com.sun.security.auth.SolarisPrincipal
• com.sun.security.auth.X500Principal
• com.sun.security.auth.callback.DialogCallbackHandler
• com.sun.security.auth.module.SolarisLoginModule
• com.sun.security.auth.module.SolarisSystem
• javax.security.auth.Policy
Java 8
Java 11
Java 8 -> Java 11: Removed
Packages/Classes
10DEVNEXUS 2019
Removed AWT APIs:
• java.awt.peer.*
• java.awt.dnd.peer.*
• com.sun.awt.AWTUtilities
Removed DOM APIs:
• com.sun.java.browser.plugin2.DOM
• sun.plugin.dom.DOMObject
Removed Misc:
• com.sun.image.codec.jpeg.*
• com.sun.xml.internal.bind.*
11DEVNEXUS 2019
Java 8 -> Java 11: Removed Java EE Modules
java.activation
javax.activation
java.corba
javax.rmi
javax.rmi.CORBA
org.omg.CORBA
org.omg.CORBA_2_3
org.omg.CORBA_2_3.portable
org.omg.CORBA.*
org.omg.CosNaming
...
org.omg.PortableInterceptor
org.omg.PortableInterceptor.*
org.omg.PortableServer
org.omg.PortableServer.*
org.omg.SendingContext
org.omg.stub.java.rmi
java.transaction
javax.transaction
java.xml.bind
javax.xml.bind
javax.xml.bind.annotation
javax.xml.bind.annotation.adapters
javax.xml.bind.attachment
javax.xml.bind.helpers
javax.xml.bind.util
java.xml.ws
javax.jws
javax.jws.soap
javax.xml.soap
javax.xml.ws
javax.xml.ws.handler
javax.xml.ws.handler.soap
javax.xml.ws.http
javax.xml.ws.soap
javax.xml.ws.spi
javax.xml.ws.spi.http
javax.xml.ws.wsaddressing
java.xml.ws.annotation
javax.annotation
Option 1: package your own dependencies
Option 2: rely on the app server to provide them (OpenLiberty with Java 11)
Java 8 -> Java 11: Removed
Methods
12DEVNEXUS 2019
Removed java.lang.SecurityManager
Methods:
• java.lang.SecurityManager.checkAwtEventQueueAccess
• java.lang.SecurityManager.checkSystemClipboardAccess
• java.lang.SecurityManager.checkMemberAccess
• java.lang.SecurityManager.checkTopLevelWindow
• java.lang.SecurityManager.classDepth
• java.lang.SecurityManager.classLoaderDepth
• java.lang.SecurityManager.currentClassLoader
• java.lang.SecurityManager.currentLoadedClass
• java.lang.SecurityManager.getInCheck
• java.lang.SecurityManager.inClass
• java.lang.SecurityManager.inClassLoader
Java 8
Java 11
Java 8 -> Java 11: Removed
Methods
13DEVNEXUS 2019
Removed java.lang.Thread
Methods:
• java.lang.Thread.destroy()
• java.lang.Thread.stop(java.lang.Throwable)
Removed java.lang.Runtime
Methods:
• java.lang.Runtime.getLocalizedInputStream
• java.lang.Runtime.getLocalizedOutputStream
• java.lang.Runtime.runFinalizersOnExit
Removed java.lang.System Method:
• java.lang.System.runFinalizersOnExit
Java 8 -> Java 11: Removed
Methods
14DEVNEXUS 2019
Removed java.util.logging.LogManager
Methods:
• java.util.logging.LogManager.addPropertyChangeListener
• java.util.logging.LogManager.removePropertyChangeListener
Removed
java.util.jar.Pack200.Packer/Unpacker
Methods:
• java.util.jar.Pack200.Packer.addPropertyChangeListener
• java.util.jar.Pack200.Packer.removePropertyChangeListener
• java.util.jar.Pack200.Unpacker.addPropertyChangeListener
• java.util.jar.Pack200.Unpacker.removePropertyChangeListener
Java 8 -> Java 11: Other
Changes
15DEVNEXUS 2019
Technology Removal:
• Java Web Start
• JavaFX (separate product)
Other Removals:
• @jdk.Exported
• netdoc protocol handler
Behavior changes
• java.lang.Class.getAnnotation()
• java.nio.channels.DatagramChannel.send()
And much more…
• Oracle JDK 11 Migration Guide
16DEVNEXUS 2019
Java 8 -> Java 11
Where do I start?
17DEVNEXUS 2019
Application Binary Scanner Tool
• Download: https://developer.ibm.com/wasdev/downloads/#asset/tools-
Migration_Toolkit_for_Application_Binaries
• Command Line tool (Runs with Java 7 and later)
• Scans application binaries
• Accepts .ear/.war files (and .jar files with --analyze option)
• No app server required
• Flags potential migration issues for a variety of scenarios
• Java SE versions
• On-premise -> Cloud
• Others…
18DEVNEXUS 2019
Demo: Application Binary Scanner Tool
19DEVNEXUS 2019
Application Source Scanner Tool
• Download: https://developer.ibm.com/wasdev/downloads/#asset/tools-
WebSphere_Application_Server_Migration_Toolkit
• Eclipse Plugin
• Scans application source code
• Flags potential migration issues for a variety of scenarios including Java SE versions
• Click-and-go to affected code line
• Documentation
• See Chapter 3-4 for installation details
20DEVNEXUS 2019
Demo: Application Source Scanner Tool
21DEVNEXUS 2019
Java class dependency analyzer (Jdeps)
• Command utility shipped with JDK
• Multiple Options
• Migration Relevant Option: -jdkinternals
• Accepts jars, class files, directories
• Binary scanner and source scanner will recommend if applicable
• Limitations
• Subset of removed APIs
• No method removal flagging
• Java version specific (i.e. running Jdeps shipped with Java 8 is different than Java 11)
• Documentation
22DEVNEXUS 2019
TL;DR
1. Download the Binary scanner:
https://developer.ibm.com/wasdev/downloads/#asset/tools-
Migration_Toolkit_for_Application_Binaries
2. Follow the prompts to install the jar.
3. Run the binary scanner against your application binaries. Here is my command:
java -jar binaryAppScanner.jar C:AppsMyApplication.war --sourceAppServer=liberty --
targetAppServer=liberty --sourceJava=ibm8 --targetJava=openjdk11
• Command help:
• java -jar binaryAppScanner.jar --help
• java -jar binaryAppScanner.jar --help --analyze
4. Review the report and read the help for each flagged issue to resolve them.
References/Resources
23DEVNEXUS 2019
• My Blog on adding the Java 11 feature to the migration tools (https://developer.ibm.com/tutorials/migration-to-java-11-
made-easy/)
• Binary Scanner – see the Additional information section (https://developer.ibm.com/wasdev/downloads/#asset/tools-
Migration_Toolkit_for_Application_Binaries)
• Source Scanner – see the Additional information section (https://developer.ibm.com/wasdev/downloads/#asset/tools-
WebSphere_Application_Server_Migration_Toolkit)
• Oracle Java SE Support Roadmap (https://www.oracle.com/technetwork/java/java-se-support-roadmap.html)
• Oracle JDK Migration Guide (https://docs.oracle.com/en/java/javase/11/migrate/index.html)
• AdoptOpenJDK (https://adoptopenjdk.net)
• Migrating from Oracle Java to AdoptOpenJDK (https://adoptopenjdk.net/MigratingtoAdoptOpenJDKfromOracleJava.pdf)
• AWT peer removals (http://mail.openjdk.java.net/pipermail/awt-dev/2015-February/008924.html)
• Andy Guibert’s blog on OpenLiberty Java 11 support (https://openliberty.io/blog/2019/02/06/java-11.html)
24DEVNEXUS 2019
Questions?
Email: dalia@us.ibm.com
Twitter: @DaliaShea

More Related Content

What's hot (20)

PPTX
Introduction to Aspect Oriented Programming
Amir Kost
 
PDF
Camel Day Italy 2021 - What's new in Camel 3
Claus Ibsen
 
PDF
Building blocks of Angular
Knoldus Inc.
 
PDF
Java modules
Rory Preddy
 
PPTX
Angular Unit Testing
Alessandro Giorgetti
 
PDF
Introduction to gradle
NexThoughts Technologies
 
PPTX
Heap and stack space in java
Talha Ocakçı
 
PPTX
Java constructors
QUONTRASOLUTIONS
 
PPTX
Angular Unit Testing
Shailendra Chauhan
 
PDF
Spring Security
Knoldus Inc.
 
PPTX
Spring Security Framework
Jayasree Perilakkalam
 
PDF
GraalVM Native Images by Oleg Selajev @shelajev
Oracle Developers
 
PPT
Java Presentation
pm2214
 
PDF
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Claus Ibsen
 
PPT
Command Pattern
Geoff Burns
 
PPTX
How to select the right automated testing tool
Katalon Studio
 
PPTX
Core java
Shivaraj R
 
ODP
Java 9 Features
NexThoughts Technologies
 
PPT
Introduction to Java Programming, Basic Structure, variables Data type, input...
Mr. Akaash
 
Introduction to Aspect Oriented Programming
Amir Kost
 
Camel Day Italy 2021 - What's new in Camel 3
Claus Ibsen
 
Building blocks of Angular
Knoldus Inc.
 
Java modules
Rory Preddy
 
Angular Unit Testing
Alessandro Giorgetti
 
Introduction to gradle
NexThoughts Technologies
 
Heap and stack space in java
Talha Ocakçı
 
Java constructors
QUONTRASOLUTIONS
 
Angular Unit Testing
Shailendra Chauhan
 
Spring Security
Knoldus Inc.
 
Spring Security Framework
Jayasree Perilakkalam
 
GraalVM Native Images by Oleg Selajev @shelajev
Oracle Developers
 
Java Presentation
pm2214
 
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Claus Ibsen
 
Command Pattern
Geoff Burns
 
How to select the right automated testing tool
Katalon Studio
 
Core java
Shivaraj R
 
Java 9 Features
NexThoughts Technologies
 
Introduction to Java Programming, Basic Structure, variables Data type, input...
Mr. Akaash
 

Similar to DevNexus 2019: Migrating to Java 11 (20)

PDF
Migrating Beyond Java 8
DaliaAboSheasha
 
PDF
Migrating Beyond Java 8
DaliaAboSheasha
 
PDF
Migrating Beyond Java 8
DaliaAboSheasha
 
PDF
Migrate Early, Migrate Often: JDK release cadence strategies
DanHeidinga
 
PDF
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Java11 terms of_use
Maksym Govorischev
 
PDF
JavaOne 2016: Life after Modularity
DanHeidinga
 
PDF
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
PDF
The Diabolical Developer's Guide to Surviving Java 9
jClarity
 
PDF
Java 11 OMG
Hendrik Ebbers
 
PDF
Java Desktop 2019
Hendrik Ebbers
 
PDF
Whats new in Java 9,10,11,12
Rory Preddy
 
PPTX
JDK 9, 10, 11 and Beyond
Simon Ritter
 
PDF
JDK versions and OpenJDK
Wolfgang Weigend
 
PPTX
The Next Generation of Java — Oleksandr Navka
GlobalLogic Ukraine
 
PDF
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
How and why to upgrade to java 16 or 17
Johan Janssen
 
PPTX
Java Is Still Free
Simon Ritter
 
PDF
It's a jdk jungle out there - JDK 11 and OpenJDK 11
Wolfgang Weigend
 
PDF
Above and Beyond JDK 9, 10, 11, 12... - Branko Mihaljević and Martin Žagar on...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Migrating Beyond Java 8
DaliaAboSheasha
 
Migrating Beyond Java 8
DaliaAboSheasha
 
Migrating Beyond Java 8
DaliaAboSheasha
 
Migrate Early, Migrate Often: JDK release cadence strategies
DanHeidinga
 
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Java11 terms of_use
Maksym Govorischev
 
JavaOne 2016: Life after Modularity
DanHeidinga
 
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
The Diabolical Developer's Guide to Surviving Java 9
jClarity
 
Java 11 OMG
Hendrik Ebbers
 
Java Desktop 2019
Hendrik Ebbers
 
Whats new in Java 9,10,11,12
Rory Preddy
 
JDK 9, 10, 11 and Beyond
Simon Ritter
 
JDK versions and OpenJDK
Wolfgang Weigend
 
The Next Generation of Java — Oleksandr Navka
GlobalLogic Ukraine
 
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
How and why to upgrade to java 16 or 17
Johan Janssen
 
Java Is Still Free
Simon Ritter
 
It's a jdk jungle out there - JDK 11 and OpenJDK 11
Wolfgang Weigend
 
Above and Beyond JDK 9, 10, 11, 12... - Branko Mihaljević and Martin Žagar on...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Ad

Recently uploaded (20)

PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PPTX
Build a Custom Agent for Agentic Testing.pptx
klpathrudu
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PPTX
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
PDF
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Build a Custom Agent for Agentic Testing.pptx
klpathrudu
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Ad

DevNexus 2019: Migrating to Java 11

  • 1. Migrating to Java 11 1DEVNEXUS 2019 Dalia Abo Sheasha WebSphere Migration Tools Development Lead Email: [email protected] Twitter: @DaliaShea
  • 2. Agenda 2DEVNEXUS 2019 • Background • Java 9/10/11: New Features • Java 8 -> Java 11: Migration Concerns • Removed Packages/Classes/Methods • Migration Tools
  • 3. DEVNEXUS 2019 Java Timeline (Current) 2012 2014 2017 2018 2019 Sept2017 Java 9 March2018 Java 10 Java 12 March2019 July2011 Java 7 (LTS) March2014 Java 8 (LTS) Sept2018 Java 11 (LTS)
  • 4. DEVNEXUS 2019 Java Timeline (Future ) 2014 2017 2018 Sept2018 2019Sept2017 March2018 Java 11 Java 9 Java 10 Java 12 March2019 March2014 Java 8 2020 2021 2022 Java 13 Java 14 Java 15 Java 16 Java 17 (LTS) (LTS) (LTS)
  • 5. 5DEVNEXUS 2019 Java 9/10/11: New Features Tons of Features! • ( JDK 9, JDK 10, JDK 11 ) • var for local variables (JEP 286) • Launch Single-File Source-Code Programs (JEP 330) • New methods in several classes (Optional, Collection, etc) • TLS 1.3 • …
  • 6. Java 9/10/11: Modularity 6DEVNEXUS 2019 • Java Platform Module System (JPMS) • Breaks code into modules containing packages • Applications must declare dependency on modules for access • Very disruptive • “Kill switch” on by default (currently) • --illegal-access=permit
  • 8. Java 8 -> Java 11: Migration Concerns 8DEVNEXUS 2019 • Removals • Packages, classes and methods • Previously deprecated • General Migration Strategy: Replace • Not previously deprecated • General Migration Strategy: Depends… • Behavior changes • Information Source: Java 9/10/11 compatibility guides and release notes
  • 9. Java 8 -> Java 11: Removed Packages/Classes 9DEVNEXUS 2019 Removed Security classes: • com.sun.security.auth.PolicyFile • com.sun.security.auth.SolarisNumericGroupPrincipal • com.sun.security.auth.SolarisNumericUserPrincipal • com.sun.security.auth.SolarisPrincipal • com.sun.security.auth.X500Principal • com.sun.security.auth.callback.DialogCallbackHandler • com.sun.security.auth.module.SolarisLoginModule • com.sun.security.auth.module.SolarisSystem • javax.security.auth.Policy Java 8 Java 11
  • 10. Java 8 -> Java 11: Removed Packages/Classes 10DEVNEXUS 2019 Removed AWT APIs: • java.awt.peer.* • java.awt.dnd.peer.* • com.sun.awt.AWTUtilities Removed DOM APIs: • com.sun.java.browser.plugin2.DOM • sun.plugin.dom.DOMObject Removed Misc: • com.sun.image.codec.jpeg.* • com.sun.xml.internal.bind.*
  • 11. 11DEVNEXUS 2019 Java 8 -> Java 11: Removed Java EE Modules java.activation javax.activation java.corba javax.rmi javax.rmi.CORBA org.omg.CORBA org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CORBA.* org.omg.CosNaming ... org.omg.PortableInterceptor org.omg.PortableInterceptor.* org.omg.PortableServer org.omg.PortableServer.* org.omg.SendingContext org.omg.stub.java.rmi java.transaction javax.transaction java.xml.bind javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml.bind.helpers javax.xml.bind.util java.xml.ws javax.jws javax.jws.soap javax.xml.soap javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.ws.spi.http javax.xml.ws.wsaddressing java.xml.ws.annotation javax.annotation Option 1: package your own dependencies Option 2: rely on the app server to provide them (OpenLiberty with Java 11)
  • 12. Java 8 -> Java 11: Removed Methods 12DEVNEXUS 2019 Removed java.lang.SecurityManager Methods: • java.lang.SecurityManager.checkAwtEventQueueAccess • java.lang.SecurityManager.checkSystemClipboardAccess • java.lang.SecurityManager.checkMemberAccess • java.lang.SecurityManager.checkTopLevelWindow • java.lang.SecurityManager.classDepth • java.lang.SecurityManager.classLoaderDepth • java.lang.SecurityManager.currentClassLoader • java.lang.SecurityManager.currentLoadedClass • java.lang.SecurityManager.getInCheck • java.lang.SecurityManager.inClass • java.lang.SecurityManager.inClassLoader Java 8 Java 11
  • 13. Java 8 -> Java 11: Removed Methods 13DEVNEXUS 2019 Removed java.lang.Thread Methods: • java.lang.Thread.destroy() • java.lang.Thread.stop(java.lang.Throwable) Removed java.lang.Runtime Methods: • java.lang.Runtime.getLocalizedInputStream • java.lang.Runtime.getLocalizedOutputStream • java.lang.Runtime.runFinalizersOnExit Removed java.lang.System Method: • java.lang.System.runFinalizersOnExit
  • 14. Java 8 -> Java 11: Removed Methods 14DEVNEXUS 2019 Removed java.util.logging.LogManager Methods: • java.util.logging.LogManager.addPropertyChangeListener • java.util.logging.LogManager.removePropertyChangeListener Removed java.util.jar.Pack200.Packer/Unpacker Methods: • java.util.jar.Pack200.Packer.addPropertyChangeListener • java.util.jar.Pack200.Packer.removePropertyChangeListener • java.util.jar.Pack200.Unpacker.addPropertyChangeListener • java.util.jar.Pack200.Unpacker.removePropertyChangeListener
  • 15. Java 8 -> Java 11: Other Changes 15DEVNEXUS 2019 Technology Removal: • Java Web Start • JavaFX (separate product) Other Removals: • @jdk.Exported • netdoc protocol handler Behavior changes • java.lang.Class.getAnnotation() • java.nio.channels.DatagramChannel.send() And much more… • Oracle JDK 11 Migration Guide
  • 16. 16DEVNEXUS 2019 Java 8 -> Java 11 Where do I start?
  • 17. 17DEVNEXUS 2019 Application Binary Scanner Tool • Download: https://developer.ibm.com/wasdev/downloads/#asset/tools- Migration_Toolkit_for_Application_Binaries • Command Line tool (Runs with Java 7 and later) • Scans application binaries • Accepts .ear/.war files (and .jar files with --analyze option) • No app server required • Flags potential migration issues for a variety of scenarios • Java SE versions • On-premise -> Cloud • Others…
  • 18. 18DEVNEXUS 2019 Demo: Application Binary Scanner Tool
  • 19. 19DEVNEXUS 2019 Application Source Scanner Tool • Download: https://developer.ibm.com/wasdev/downloads/#asset/tools- WebSphere_Application_Server_Migration_Toolkit • Eclipse Plugin • Scans application source code • Flags potential migration issues for a variety of scenarios including Java SE versions • Click-and-go to affected code line • Documentation • See Chapter 3-4 for installation details
  • 20. 20DEVNEXUS 2019 Demo: Application Source Scanner Tool
  • 21. 21DEVNEXUS 2019 Java class dependency analyzer (Jdeps) • Command utility shipped with JDK • Multiple Options • Migration Relevant Option: -jdkinternals • Accepts jars, class files, directories • Binary scanner and source scanner will recommend if applicable • Limitations • Subset of removed APIs • No method removal flagging • Java version specific (i.e. running Jdeps shipped with Java 8 is different than Java 11) • Documentation
  • 22. 22DEVNEXUS 2019 TL;DR 1. Download the Binary scanner: https://developer.ibm.com/wasdev/downloads/#asset/tools- Migration_Toolkit_for_Application_Binaries 2. Follow the prompts to install the jar. 3. Run the binary scanner against your application binaries. Here is my command: java -jar binaryAppScanner.jar C:AppsMyApplication.war --sourceAppServer=liberty -- targetAppServer=liberty --sourceJava=ibm8 --targetJava=openjdk11 • Command help: • java -jar binaryAppScanner.jar --help • java -jar binaryAppScanner.jar --help --analyze 4. Review the report and read the help for each flagged issue to resolve them.
  • 23. References/Resources 23DEVNEXUS 2019 • My Blog on adding the Java 11 feature to the migration tools (https://developer.ibm.com/tutorials/migration-to-java-11- made-easy/) • Binary Scanner – see the Additional information section (https://developer.ibm.com/wasdev/downloads/#asset/tools- Migration_Toolkit_for_Application_Binaries) • Source Scanner – see the Additional information section (https://developer.ibm.com/wasdev/downloads/#asset/tools- WebSphere_Application_Server_Migration_Toolkit) • Oracle Java SE Support Roadmap (https://www.oracle.com/technetwork/java/java-se-support-roadmap.html) • Oracle JDK Migration Guide (https://docs.oracle.com/en/java/javase/11/migrate/index.html) • AdoptOpenJDK (https://adoptopenjdk.net) • Migrating from Oracle Java to AdoptOpenJDK (https://adoptopenjdk.net/MigratingtoAdoptOpenJDKfromOracleJava.pdf) • AWT peer removals (http://mail.openjdk.java.net/pipermail/awt-dev/2015-February/008924.html) • Andy Guibert’s blog on OpenLiberty Java 11 support (https://openliberty.io/blog/2019/02/06/java-11.html)