SlideShare a Scribd company logo
1 of 26
Download to read offline
Josh Juneau - 1/26/2024
Migrating to Jakarta EE 10
Whirlwind Tour of Jakarta EE 10
About Me
• Software Engineer
• Database Administrator
• Author, Blogger, Podcaster
• Apache NetBeans Committer
• JCP and Jakarta EE Ambassadors
Overview
What will we cover?
• What has changed from Jakarta EE 8 through Jakarta EE 10
• Demonstrate some great features of Jakarta EE 10
• How to update projects from Jakarta EE 8 to Jakarta EE 10
• What is coming in the next release
Changes in Jakarta EE
Updates from Jakarta EE 8 through Jakarta EE 10
• Java EE open sourced to the Eclipse Foundation -> Jakarta EE
• Jakarta EE 8 aligned with Java EE 8
• Jakarta EE 9 - Namespace changes from javax.* to jakarta.*
• Java SE 11 available in Jakarta EE 9.1+
• Jakarta EE 10 - Java SE 17
• Many new features!
Getting Started with Jakarta EE 10
• Download Jakarta EE 10 compatible container
• Payara 6
• Glass
fi
sh 7
• Declare Maven dependencies within the project POM
fi
le
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>10.0.0</version>
<scope>provided</scope>
</dependency>
What is New in Jakarta EE 10?
Why should I upgrade?
• Modern APIs for development of REST services and front ends
• Java SE 17 support…must use Java SE 11 or later
• Pro
fi
le Changes in Jakarta EE 10
• Web Pro
fi
le: Added concurrency and resource management
• (New) Core Pro
fi
le: Targets small runtimes, including only speci
fi
cations that
target web service development
• Full Platform: 22 of 30 speci
fi
cations updated; 1 new speci
fi
cation
What’s New in Jakarta EE 10
Concurrency
• Now included in Web Pro
fi
le
• Asynchronous methods
• Context changes including propagation to parallel streams operations and
ability to reference context from completion stages and completable futures
• Ability to propagate third party context types
• Modernization of APIs
Context Propagation
Concurrency
@ContextServiceDe
fi
nition(
name = "java:app/concurrent/myContext",
propagated = { SECURITY, APPLICATION, VENDOR1_CTX })
@ManagedScheduledExecutorDe
fi
nition(
name = "java:comp/concurrent/myExecutor",
context = "java:app/concurrent/myContext",
maxAsync = 5)
public class MyServlet …
What’s New in Jakarta EE 10
Jakarta Faces
• Scope binding to browser window or tab
• Utilization of @ClientWindowScoped annotation can bind scope of
application to a single browser window or tab
• Automatic extensionless mapping
• No need for providing extensions of .xhtml or other
• Views created in pure Java
• JSP and Managed Beans No Longer Supported
What’s New in Jakarta EE 10
CDI
• Empty beans.xml marked as implicit bean archive
• Bean-discovery-mode default to “annotated”
• New jakarta.enterprise:jakarta.enterprise.lang-model API
• Java Platform Module System module-info.class
fi
les added to artifacts
• Core Restructured: CDI Full and CDI Lite
• Lite is build-time compatible, utilization of the new
BuildCompatibleExtensions interface
What’s New in Jakarta EE 10
CDI Lite - Contains most of full spec…here is what is missing
• Session and Conversation scoped beans
• Parts of the BeanManager API
• Per-bean archive enablement (decorators, interceptors, alternatives)
• Interceptors bound using @Interceptors
• Explicit bean archives
• @AroundInvoke interceptors declared on target classes
• Portable extensions
• Decorators, specialization, and passivation
What’s New in Jakarta EE 10
Expression Language
• BeanELResolver updates
• LambdaExpressions and Arrays can now be coerced
• Generics now included in API
• MethodReference can now be used to access method details
Spec Overview and What’s New
JSON Binding
Standard binding layer for converting Java objects to/from JSON
• Serialize/deserialize objects to/from JSON
• Mapping of primitive types, serialization of collections and maps
Latest Additions
• Dropping of @JsonbCreator parameters, deprecation of @JsonbProperty.nillable()
• Deserialization of null values to JsonValue.NULL_VALUE
• Support for polymorphic types
• Support for parameter or type annotation usage of JsonbTypeDeserializer and
JsonbTypeAdapter
Spec Overview
JSON Processing
API used to parse, transform, and query JSON data using the object or
streaming model.
Some examples:
• JsonObjectBuilder is used to build a JSON object
• Call upon the Json.createObjectBuilder() method to create a
JsonObjectBuilder
• Similarly, call upon Json.createArrayBuilder() method to create a JsonArray
What’s New in Jakarta EE 10
JSON Processing - Latest Additions
• New APIs introduced for creating JsonValue object from primitive types
• JsonNumber, JsonString, JsonArray, JsonObject
• Standard property added to handle duplicate keys:
JsonCon
fi
g.KEY_STRATEGY
• Clari
fi
ed behavior of JsonObjectBuilder.build() and JsonGenerator.close()
Example
JSON Processing - Example of Pointer and Patch
JSON Pointer and JSON Patch
● JSON Pointer allows one to point to a particular element within a JSON Structure
● Utilize JSON Patch to replace a speci
fi
ed value within a JSON document with another value.
● Editing/Transformation Operations Added to the JSON Object Model
● JSON de
fi
nes only two data structures: Objects, Arrays
● JSON de
fi
ne seven value types: String, number, object, array, true, false, null
•
Spec Overview
Security
Standard Security Provided
● Ability to apply across multiple identity stores: Database, LDAP, Embedded
● Annotations for ease of development
● Remembers caller (cookie, identity store)
● Group to Role Mapping
● Standard expression language accessors
● Simpli
fi
ed HttpAuthenticationMechanism interface with three default
implementations:
- Basic, form, LDAP
What’s New in Jakarta EE 10
Security
• OpenID Connect Authentication
• New wrappers for HttpAuthenticationMechanism and IdentityStore
What’s New in Jakarta EE 10
Jakarta REST - Latest Additions
• Better JSONB Alignment
• @Context is deprecated
• Automatic provider extension loading
• Support for Multipart/Form Data
• Jakarta.ws.rs.core.EntityPart
• Default Exception Mapper if one is not provided
Strategies for Upgrade to Jakarta EE 10
• Manual Upgrade
• Use of Utilities
• Eclipse Transformer
• Payara
• OpenRewrite and WindUp
• Tomcat Migrator
• IDE (IntelliJ Upgrade Utility)
Manually Upgrading Application
• Modify POM dependencies
• Modify XML
fi
les with Jakarta EE 10 schema updates
• Make namespace adjustments to Java imports
• Modify XHTML
fi
les with Jakarta EE 10 namespace updates
• Address any code changes that need to be made (annotations, rewrite to use
newer APIs)
• Recompile and Deploy to Jakarta EE 10 compatible container
Using Utilities
• Eclipse Transformer
• Payara Upgrade Advisor
• mvn
fi
sh.payara.advisor:advisor-maven-plugin:1.0:advise
• Tomcat Migrator:
• https://github.com/apache/tomcat-jakartaee-migration
• java -jar jakartaee-migration-*-shaded.jar ReservationsEE8
ReservationsEE10
Documentation and Resources
• OmniFish Migration Examples:
• https://github.com/OmniFish-EE/upgrading-jakarta-ee-applications
• Payara Upgrade Advisor
• mvn
fi
sh.payara.advisor:advisor-maven-plugin:1.0:advise
What is Coming In Jakarta EE 11?
Jakarta EE 11 Due - Targeted June/July 2024
• Support for Java Records
• Support for Virtual Threads
• Jakarta Data 1.0
• Java SE 21 Support
Questions?
• Twitter: @javajuneau
• Mastodon: @javajuneau@fosstodon.org
• GitHub: https://github.com/juneau001

More Related Content

Similar to Migrating to Jakarta EE 10

Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Kile Niklawski
 
Java 8 in Anger (QCon London)
Java 8 in Anger (QCon London)Java 8 in Anger (QCon London)
Java 8 in Anger (QCon London)Trisha Gee
 
Java 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceJava 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceTrisha Gee
 
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptLecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptKalsoomTahir2
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)Kevin Sutter
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewKevin Sutter
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Rohit Kelapure
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC vipin kumar
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroOndrej Mihályi
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyJakarta_EE
 
Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oraclemfrancis
 

Similar to Migrating to Jakarta EE 10 (20)

Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
Java 8 in Anger (QCon London)
Java 8 in Anger (QCon London)Java 8 in Anger (QCon London)
Java 8 in Anger (QCon London)
 
Java 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceJava 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx France
 
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptLecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overview
 
70487.pdf
70487.pdf70487.pdf
70487.pdf
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
JSF2
JSF2JSF2
JSF2
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 Galaxy
 
Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oracle
 

More from Josh Juneau

Jakarta EE Recipes
Jakarta EE RecipesJakarta EE Recipes
Jakarta EE RecipesJosh Juneau
 
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJosh Juneau
 
Jakarta EE 8: Overview of Features
Jakarta EE 8: Overview of FeaturesJakarta EE 8: Overview of Features
Jakarta EE 8: Overview of FeaturesJosh Juneau
 
Lightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileLightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileJosh Juneau
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 RecipesJosh Juneau
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJosh Juneau
 
Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the HorizonJosh Juneau
 
Java EE 7 Recipes
Java EE 7 RecipesJava EE 7 Recipes
Java EE 7 RecipesJosh Juneau
 
Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014Josh Juneau
 

More from Josh Juneau (9)

Jakarta EE Recipes
Jakarta EE RecipesJakarta EE Recipes
Jakarta EE Recipes
 
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech Talk
 
Jakarta EE 8: Overview of Features
Jakarta EE 8: Overview of FeaturesJakarta EE 8: Overview of Features
Jakarta EE 8: Overview of Features
 
Lightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileLightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfile
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVC
 
Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the Horizon
 
Java EE 7 Recipes
Java EE 7 RecipesJava EE 7 Recipes
Java EE 7 Recipes
 
Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014
 

Recently uploaded

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Migrating to Jakarta EE 10

  • 1. Josh Juneau - 1/26/2024 Migrating to Jakarta EE 10 Whirlwind Tour of Jakarta EE 10
  • 2. About Me • Software Engineer • Database Administrator • Author, Blogger, Podcaster • Apache NetBeans Committer • JCP and Jakarta EE Ambassadors
  • 3. Overview What will we cover? • What has changed from Jakarta EE 8 through Jakarta EE 10 • Demonstrate some great features of Jakarta EE 10 • How to update projects from Jakarta EE 8 to Jakarta EE 10 • What is coming in the next release
  • 4. Changes in Jakarta EE Updates from Jakarta EE 8 through Jakarta EE 10 • Java EE open sourced to the Eclipse Foundation -> Jakarta EE • Jakarta EE 8 aligned with Java EE 8 • Jakarta EE 9 - Namespace changes from javax.* to jakarta.* • Java SE 11 available in Jakarta EE 9.1+ • Jakarta EE 10 - Java SE 17 • Many new features!
  • 5. Getting Started with Jakarta EE 10 • Download Jakarta EE 10 compatible container • Payara 6 • Glass fi sh 7 • Declare Maven dependencies within the project POM fi le <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>10.0.0</version> <scope>provided</scope> </dependency>
  • 6. What is New in Jakarta EE 10? Why should I upgrade? • Modern APIs for development of REST services and front ends • Java SE 17 support…must use Java SE 11 or later • Pro fi le Changes in Jakarta EE 10 • Web Pro fi le: Added concurrency and resource management • (New) Core Pro fi le: Targets small runtimes, including only speci fi cations that target web service development • Full Platform: 22 of 30 speci fi cations updated; 1 new speci fi cation
  • 7.
  • 8. What’s New in Jakarta EE 10 Concurrency • Now included in Web Pro fi le • Asynchronous methods • Context changes including propagation to parallel streams operations and ability to reference context from completion stages and completable futures • Ability to propagate third party context types • Modernization of APIs
  • 9. Context Propagation Concurrency @ContextServiceDe fi nition( name = "java:app/concurrent/myContext", propagated = { SECURITY, APPLICATION, VENDOR1_CTX }) @ManagedScheduledExecutorDe fi nition( name = "java:comp/concurrent/myExecutor", context = "java:app/concurrent/myContext", maxAsync = 5) public class MyServlet …
  • 10. What’s New in Jakarta EE 10 Jakarta Faces • Scope binding to browser window or tab • Utilization of @ClientWindowScoped annotation can bind scope of application to a single browser window or tab • Automatic extensionless mapping • No need for providing extensions of .xhtml or other • Views created in pure Java • JSP and Managed Beans No Longer Supported
  • 11. What’s New in Jakarta EE 10 CDI • Empty beans.xml marked as implicit bean archive • Bean-discovery-mode default to “annotated” • New jakarta.enterprise:jakarta.enterprise.lang-model API • Java Platform Module System module-info.class fi les added to artifacts • Core Restructured: CDI Full and CDI Lite • Lite is build-time compatible, utilization of the new BuildCompatibleExtensions interface
  • 12. What’s New in Jakarta EE 10 CDI Lite - Contains most of full spec…here is what is missing • Session and Conversation scoped beans • Parts of the BeanManager API • Per-bean archive enablement (decorators, interceptors, alternatives) • Interceptors bound using @Interceptors • Explicit bean archives • @AroundInvoke interceptors declared on target classes • Portable extensions • Decorators, specialization, and passivation
  • 13. What’s New in Jakarta EE 10 Expression Language • BeanELResolver updates • LambdaExpressions and Arrays can now be coerced • Generics now included in API • MethodReference can now be used to access method details
  • 14. Spec Overview and What’s New JSON Binding Standard binding layer for converting Java objects to/from JSON • Serialize/deserialize objects to/from JSON • Mapping of primitive types, serialization of collections and maps Latest Additions • Dropping of @JsonbCreator parameters, deprecation of @JsonbProperty.nillable() • Deserialization of null values to JsonValue.NULL_VALUE • Support for polymorphic types • Support for parameter or type annotation usage of JsonbTypeDeserializer and JsonbTypeAdapter
  • 15. Spec Overview JSON Processing API used to parse, transform, and query JSON data using the object or streaming model. Some examples: • JsonObjectBuilder is used to build a JSON object • Call upon the Json.createObjectBuilder() method to create a JsonObjectBuilder • Similarly, call upon Json.createArrayBuilder() method to create a JsonArray
  • 16. What’s New in Jakarta EE 10 JSON Processing - Latest Additions • New APIs introduced for creating JsonValue object from primitive types • JsonNumber, JsonString, JsonArray, JsonObject • Standard property added to handle duplicate keys: JsonCon fi g.KEY_STRATEGY • Clari fi ed behavior of JsonObjectBuilder.build() and JsonGenerator.close()
  • 17. Example JSON Processing - Example of Pointer and Patch JSON Pointer and JSON Patch ● JSON Pointer allows one to point to a particular element within a JSON Structure ● Utilize JSON Patch to replace a speci fi ed value within a JSON document with another value. ● Editing/Transformation Operations Added to the JSON Object Model ● JSON de fi nes only two data structures: Objects, Arrays ● JSON de fi ne seven value types: String, number, object, array, true, false, null •
  • 18. Spec Overview Security Standard Security Provided ● Ability to apply across multiple identity stores: Database, LDAP, Embedded ● Annotations for ease of development ● Remembers caller (cookie, identity store) ● Group to Role Mapping ● Standard expression language accessors ● Simpli fi ed HttpAuthenticationMechanism interface with three default implementations: - Basic, form, LDAP
  • 19. What’s New in Jakarta EE 10 Security • OpenID Connect Authentication • New wrappers for HttpAuthenticationMechanism and IdentityStore
  • 20. What’s New in Jakarta EE 10 Jakarta REST - Latest Additions • Better JSONB Alignment • @Context is deprecated • Automatic provider extension loading • Support for Multipart/Form Data • Jakarta.ws.rs.core.EntityPart • Default Exception Mapper if one is not provided
  • 21. Strategies for Upgrade to Jakarta EE 10 • Manual Upgrade • Use of Utilities • Eclipse Transformer • Payara • OpenRewrite and WindUp • Tomcat Migrator • IDE (IntelliJ Upgrade Utility)
  • 22. Manually Upgrading Application • Modify POM dependencies • Modify XML fi les with Jakarta EE 10 schema updates • Make namespace adjustments to Java imports • Modify XHTML fi les with Jakarta EE 10 namespace updates • Address any code changes that need to be made (annotations, rewrite to use newer APIs) • Recompile and Deploy to Jakarta EE 10 compatible container
  • 23. Using Utilities • Eclipse Transformer • Payara Upgrade Advisor • mvn fi sh.payara.advisor:advisor-maven-plugin:1.0:advise • Tomcat Migrator: • https://github.com/apache/tomcat-jakartaee-migration • java -jar jakartaee-migration-*-shaded.jar ReservationsEE8 ReservationsEE10
  • 24. Documentation and Resources • OmniFish Migration Examples: • https://github.com/OmniFish-EE/upgrading-jakarta-ee-applications • Payara Upgrade Advisor • mvn fi sh.payara.advisor:advisor-maven-plugin:1.0:advise
  • 25. What is Coming In Jakarta EE 11? Jakarta EE 11 Due - Targeted June/July 2024 • Support for Java Records • Support for Virtual Threads • Jakarta Data 1.0 • Java SE 21 Support
  • 26. Questions? • Twitter: @javajuneau • Mastodon: @javajuneau@fosstodon.org • GitHub: https://github.com/juneau001