SlideShare a Scribd company logo
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
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxMurugesh33
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_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
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptx
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_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

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAlluxio, Inc.
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownloadvrstrong314
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfOrtus Solutions, Corp
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareinfo611746
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAlluxio, Inc.
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfkalichargn70th171
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfMeon Technology
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
 

Recently uploaded (20)

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 

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