SlideShare a Scribd company logo
1 of 25
Download to read offline
Migrating Beyond Java 8
1ORACLE CODE ONE 2019
Dalia Abo Sheasha
WebSphere Migration Tools Development Lead
Email: dalia@us.ibm.com
Twitter: @DaliaShea
ORACLE CODE ONE 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)
2
Java 13
Sept2019
ORACLE CODE ONE 2019
Java Timeline (Future )
2014 2017 2018
Sept2018
2019
Sept2017
March2018
Java 11
Java 9
Java 10
Java 12
March2019
March2014
Java 8
2020 2021 2022
Java 14
Java 15
Java 16
Java 17
(LTS)
(LTS)
(LTS)
3
Java 13
Sept2019
4ORACLE CODE ONE 2019
Java 9..13: New Features
Tons of Features!
• ( JDK 9, JDK 10, JDK 11, JDK 12 )
• 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..13: Modularity
5ORACLE CODE ONE 2019
• Java Platform Module System (JPMS)
• Breaks code into modules containing packages
• Applications must declare dependency on modules for access
• Disruptive
• “Kill switch” on by default (currently)
• --illegal-access=permit
Java 9..13: Migration Concerns
6ORACLE CODE ONE 2019
• Removals
• Packages, classes and methods
• Previously deprecated
• General Migration Strategy: Replace
• Not previously deprecated
• General Migration Strategy: Depends…
• Minor behavior changes
• Information Source: Java 9/10/11/12 compatibility guides and release notes (Java 13
coming soon)
7ORACLE CODE ONE 2019
Java 8 -> Java 11
Java 8 -> Java 11: Removed
Packages/Classes
8ORACLE CODE ONE 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 11
Java 8
Java 8 -> Java 11: Removed
Packages/Classes
9ORACLE CODE ONE 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.*
Java 8
Java 11
10ORACLE CODE ONE 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 8 -> Java 11: Removed
Methods
11ORACLE CODE ONE 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 11
Java 8 -> Java 11: Removed
Methods
12ORACLE CODE ONE 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
13ORACLE CODE ONE 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
14ORACLE CODE ONE 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 more…
• Oracle JDK 11 Migration Guide
15ORACLE CODE ONE 2019
Java 11 -> Java 12
Java 11 -> Java 12: Changes
16ORACLE CODE ONE 2019
• Removed Methods:
• java.io.FileInputStream.finalize()
• java.io.FileOutputStream.finalize()
• java.util.zip.ZipFile.finalize()
• java.util.zip.Inflater.finalize()
• java.util.zip.Deflater.finalize()
• Removed Class:
• com.sun.awt.SecurityWarning
• Behavior changes
• user.timezone system property
• java.util.Properties.loadFromXML(java.io.InputStream)
Migration Guide: Oracle JDK 12 Migration Guide
17ORACLE CODE ONE 2019
Java 8 -> Java 11/12
Where do I start?
18ORACLE CODE ONE 2019
Application Binary Scanner Tool
• Download: http://ibm.biz/WAMT4AppBinaries
• Command Line tool (Runs with Java 6 and later)
• Scans application binaries
• Accepts .ear/.war files (and .jar files with --analyzeJavaSE option)
• Flags potential migration issues for a variety of scenarios
• Java SE versions
• On-premise -> Cloud
• Others…
19ORACLE CODE ONE 2019
Demo: Application Binary Scanner Tool
20ORACLE CODE ONE 2019
Application Source Scanner Tool
• Download: http://ibm.biz/WAMT4Eclipse
• 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
21ORACLE CODE ONE 2019
Demo: Application Source Scanner Tool
22ORACLE CODE ONE 2019
Java class dependency analyzer (Jdeps)
• Command utility shipped with JDK
• Various 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
23ORACLE CODE ONE 2019
TL;DR
1. Download the Application Binary scanner: http://ibm.biz/WAMT4AppBinaries
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 --analyzeJavaSE --sourceJava=ibm8 --targetJava=java11
• Command help:
• java -jar binaryAppScanner.jar --help
• java -jar binaryAppScanner.jar --help --analyzeJavaSE
4. Review the report and read the help for each flagged issue to resolve them.
5. (optional) Let me know if it helped….or didn’t! (@DaliaShea)
References/Resources
24ORACLE CODE ONE 2019
• My Blog on adding the Java 11/12 feature to the migration tools: https://developer.ibm.com/tutorials/migration-to-java-11-made-easy/
• Binary Scanner (full link): https://developer.ibm.com/wasdev/downloads/#asset/tools-Migration_Toolkit_for_Application_Binaries
• Tool documentation and videos - see the « additional information » section
• Source Scanner (full link): https://developer.ibm.com/wasdev/downloads/#asset/tools-
WebSphere_Application_Server_Migration_Toolkit
• Tool documentation and videos - see the « additional information » section
• 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/12 support: https://openliberty.io/blog/2019/02/06/java-11.html
25ORACLE CODE ONE 2019
Questions?
Email: dalia@us.ibm.com
Twitter: @DaliaShea

More Related Content

What's hot

Springboot introduction
Springboot introductionSpringboot introduction
Springboot introductionSagar Verma
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack ImplementationMert Çalışkan
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
 
Oracle Application Testing Suite. Competitive Edge
Oracle Application Testing Suite. Competitive EdgeOracle Application Testing Suite. Competitive Edge
Oracle Application Testing Suite. Competitive EdgeMaija Laksa
 
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015Christian Schneider
 
Migrating to java 9 modules
Migrating to java 9 modulesMigrating to java 9 modules
Migrating to java 9 modulesPaul Bakker
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Robert Scholte
 
Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Robert Scholte
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New FeaturesHaim Michael
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawComsysto Reply GmbH
 
Oracle application testing suite (OATS)
Oracle application testing suite (OATS)Oracle application testing suite (OATS)
Oracle application testing suite (OATS)Koushik Arvapally
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian EcosystemAlex Henderson
 

What's hot (20)

Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
 
Attacks on SAP Mobile
Attacks on SAP MobileAttacks on SAP Mobile
Attacks on SAP Mobile
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
Enterprise Java Web Application Frameworks Sample Stack Implementation
Enterprise Java Web Application Frameworks   Sample Stack ImplementationEnterprise Java Web Application Frameworks   Sample Stack Implementation
Enterprise Java Web Application Frameworks Sample Stack Implementation
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
Oracle Application Testing Suite. Competitive Edge
Oracle Application Testing Suite. Competitive EdgeOracle Application Testing Suite. Competitive Edge
Oracle Application Testing Suite. Competitive Edge
 
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
 
Migrating to java 9 modules
Migrating to java 9 modulesMigrating to java 9 modules
Migrating to java 9 modules
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
 
iOS Application Exploitation
iOS Application ExploitationiOS Application Exploitation
iOS Application Exploitation
 
Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New Features
 
PROGRAMMING IN JAVA
PROGRAMMING IN JAVAPROGRAMMING IN JAVA
PROGRAMMING IN JAVA
 
Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project Jigsaw
 
Oracle application testing suite (OATS)
Oracle application testing suite (OATS)Oracle application testing suite (OATS)
Oracle application testing suite (OATS)
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian Ecosystem
 
Java Technology Trends
Java Technology TrendsJava Technology Trends
Java Technology Trends
 
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip KovačekJavantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
 

Similar to Migrating Beyond Java 8

DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DaliaAboSheasha
 
1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptxBhargaviDalal3
 
Object Oriented Programming-JAVA
Object Oriented Programming-JAVAObject Oriented Programming-JAVA
Object Oriented Programming-JAVAHome
 
1java Introduction
1java Introduction1java Introduction
1java IntroductionAdil Jafri
 
Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Ryan Cuprak
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKWolfgang Weigend
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011Arun Gupta
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxMurugesh33
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxMurugesh33
 
Introduction to java
Introduction to java Introduction to java
Introduction to java Java Lover
 
Jozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceJozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceHeather VanCura
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformRajmahendra Hegde
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolutionAtul Sehdev
 
Developing Java Microservices Fast with Open Liberty
Developing Java Microservices Fast with Open LibertyDeveloping Java Microservices Fast with Open Liberty
Developing Java Microservices Fast with Open LibertyYK Chang
 
Introduction to java programming tutorial
Introduction to java programming   tutorialIntroduction to java programming   tutorial
Introduction to java programming tutorialjackschitze
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJoseph Kuo
 

Similar to Migrating Beyond Java 8 (20)

DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11
 
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion MiddlewareAMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
 
Migrating Beyond Java 8
Migrating Beyond Java 8Migrating Beyond Java 8
Migrating Beyond Java 8
 
1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx
 
Java
JavaJava
Java
 
Object Oriented Programming-JAVA
Object Oriented Programming-JAVAObject Oriented Programming-JAVA
Object Oriented Programming-JAVA
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptx
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptx
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
Jozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceJozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 Unconference
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop Platform
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolution
 
Developing Java Microservices Fast with Open Liberty
Developing Java Microservices Fast with Open LibertyDeveloping Java Microservices Fast with Open Liberty
Developing Java Microservices Fast with Open Liberty
 
Introduction to java programming tutorial
Introduction to java programming   tutorialIntroduction to java programming   tutorial
Introduction to java programming tutorial
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of Java
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 

Recently uploaded

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Migrating Beyond Java 8

  • 1. Migrating Beyond Java 8 1ORACLE CODE ONE 2019 Dalia Abo Sheasha WebSphere Migration Tools Development Lead Email: dalia@us.ibm.com Twitter: @DaliaShea
  • 2. ORACLE CODE ONE 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) 2 Java 13 Sept2019
  • 3. ORACLE CODE ONE 2019 Java Timeline (Future ) 2014 2017 2018 Sept2018 2019 Sept2017 March2018 Java 11 Java 9 Java 10 Java 12 March2019 March2014 Java 8 2020 2021 2022 Java 14 Java 15 Java 16 Java 17 (LTS) (LTS) (LTS) 3 Java 13 Sept2019
  • 4. 4ORACLE CODE ONE 2019 Java 9..13: New Features Tons of Features! • ( JDK 9, JDK 10, JDK 11, JDK 12 ) • 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 • …
  • 5. Java 9..13: Modularity 5ORACLE CODE ONE 2019 • Java Platform Module System (JPMS) • Breaks code into modules containing packages • Applications must declare dependency on modules for access • Disruptive • “Kill switch” on by default (currently) • --illegal-access=permit
  • 6. Java 9..13: Migration Concerns 6ORACLE CODE ONE 2019 • Removals • Packages, classes and methods • Previously deprecated • General Migration Strategy: Replace • Not previously deprecated • General Migration Strategy: Depends… • Minor behavior changes • Information Source: Java 9/10/11/12 compatibility guides and release notes (Java 13 coming soon)
  • 7. 7ORACLE CODE ONE 2019 Java 8 -> Java 11
  • 8. Java 8 -> Java 11: Removed Packages/Classes 8ORACLE CODE ONE 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 11 Java 8
  • 9. Java 8 -> Java 11: Removed Packages/Classes 9ORACLE CODE ONE 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.* Java 8 Java 11
  • 10. 10ORACLE CODE ONE 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)
  • 11. Java 8 Java 8 -> Java 11: Removed Methods 11ORACLE CODE ONE 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 11
  • 12. Java 8 -> Java 11: Removed Methods 12ORACLE CODE ONE 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(..)
  • 13. Java 8 -> Java 11: Removed Methods 13ORACLE CODE ONE 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(..)
  • 14. Java 8 -> Java 11: Other Changes 14ORACLE CODE ONE 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 more… • Oracle JDK 11 Migration Guide
  • 15. 15ORACLE CODE ONE 2019 Java 11 -> Java 12
  • 16. Java 11 -> Java 12: Changes 16ORACLE CODE ONE 2019 • Removed Methods: • java.io.FileInputStream.finalize() • java.io.FileOutputStream.finalize() • java.util.zip.ZipFile.finalize() • java.util.zip.Inflater.finalize() • java.util.zip.Deflater.finalize() • Removed Class: • com.sun.awt.SecurityWarning • Behavior changes • user.timezone system property • java.util.Properties.loadFromXML(java.io.InputStream) Migration Guide: Oracle JDK 12 Migration Guide
  • 17. 17ORACLE CODE ONE 2019 Java 8 -> Java 11/12 Where do I start?
  • 18. 18ORACLE CODE ONE 2019 Application Binary Scanner Tool • Download: http://ibm.biz/WAMT4AppBinaries • Command Line tool (Runs with Java 6 and later) • Scans application binaries • Accepts .ear/.war files (and .jar files with --analyzeJavaSE option) • Flags potential migration issues for a variety of scenarios • Java SE versions • On-premise -> Cloud • Others…
  • 19. 19ORACLE CODE ONE 2019 Demo: Application Binary Scanner Tool
  • 20. 20ORACLE CODE ONE 2019 Application Source Scanner Tool • Download: http://ibm.biz/WAMT4Eclipse • 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
  • 21. 21ORACLE CODE ONE 2019 Demo: Application Source Scanner Tool
  • 22. 22ORACLE CODE ONE 2019 Java class dependency analyzer (Jdeps) • Command utility shipped with JDK • Various 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
  • 23. 23ORACLE CODE ONE 2019 TL;DR 1. Download the Application Binary scanner: http://ibm.biz/WAMT4AppBinaries 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 --analyzeJavaSE --sourceJava=ibm8 --targetJava=java11 • Command help: • java -jar binaryAppScanner.jar --help • java -jar binaryAppScanner.jar --help --analyzeJavaSE 4. Review the report and read the help for each flagged issue to resolve them. 5. (optional) Let me know if it helped….or didn’t! (@DaliaShea)
  • 24. References/Resources 24ORACLE CODE ONE 2019 • My Blog on adding the Java 11/12 feature to the migration tools: https://developer.ibm.com/tutorials/migration-to-java-11-made-easy/ • Binary Scanner (full link): https://developer.ibm.com/wasdev/downloads/#asset/tools-Migration_Toolkit_for_Application_Binaries • Tool documentation and videos - see the « additional information » section • Source Scanner (full link): https://developer.ibm.com/wasdev/downloads/#asset/tools- WebSphere_Application_Server_Migration_Toolkit • Tool documentation and videos - see the « additional information » section • 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/12 support: https://openliberty.io/blog/2019/02/06/java-11.html
  • 25. 25ORACLE CODE ONE 2019 Questions? Email: dalia@us.ibm.com Twitter: @DaliaShea