Slide 1

Slide 1 text

Ivar Grimstad
 Jakarta EE Developer Advocate Eclipse Foundation Jakarta EE Guide for Spring Developers Emily Jiang
 Cloud Native Architect and Advocate, STSM, IBM

Slide 2

Slide 2 text

@ivar_grimstad https://github.com/ivargrimstad https://www.linkedin.com/in/ivargrimstad @[email protected] ivargrimstad_of fi cial

Slide 3

Slide 3 text

@emilyfhjiang https://github.com/Emily-Jiang https://www.linkedin.com/in/emilyfhjiang @[email protected]

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Speci fi cation Document API TCK Final Speci fi cation Compatible Implementation(s) Speci fi

Slide 6

Slide 6 text

Jakarta EE 10 Web Pro fi Jakarta EE 10 Platform Updated Not Updated New Authorization 2.1 Activation 2.1 Batch 2.1 Connectors 2.1 Mail 2.1 Messaging 3.1 Enterprise Beans 4.0 RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0

Slide 7

Slide 7 text

Jakarta EE 10 Core Pro fi Jakarta EE 10 Web Pro fi le Updated Not Updated New RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0

Slide 8

Slide 8 text

Jakarta EE 10 Core Pro fi le Updated Not Updated New RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0

Slide 9

Slide 9 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 10 API source level: Java SE 11 API binary level: Java SE 11 TCK run with: Java SE 11+17 App Developers (YOU) can use Java SE 17 features if you like!!

Slide 10

Slide 10 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) How is this Relevant to ?

Slide 11

Slide 11 text

javax.* -> jakarta.*

Slide 12

Slide 12 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) builds on

Slide 13

Slide 13 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) javax.* -> jakarta.*

Slide 14

Slide 14 text

Authorization 2.1 Activation 2.1 Batch 2.1 Connectors 2.1 Mail 2.1 Messaging 3.1 Enterprise Beans 4.0 RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0 Jakarta EE 10 Web Pro fi le Updated Not Updated New

Slide 15

Slide 15 text

Hibernate ORM

Slide 16

Slide 16 text

UUID as Basic Java Type @Entity public class Item { @Id @GeneratedValue(strategy=GenerationType.UUID) private java.util.UUID id; private String description; … }

Slide 17

Slide 17 text

Authorization 2.1 Activation 2.1 Batch 2.1 Connectors 2.1 Mail 2.1 Messaging 3.1 Enterprise Beans 4.0 RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0 Jakarta EE 10 Platform Updated Not Updated New

Slide 18

Slide 18 text

Hibernate Validator

Slide 19

Slide 19 text

Authorization 2.1 Activation 2.1 Batch 2.1 Connectors 2.1 Mail 2.1 Messaging 3.1 Enterprise Beans 4.0 RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0 Jakarta EE 10 Platform Updated Not Updated New

Slide 20

Slide 20 text

Eclipse Jetty Apache Tomcat

Slide 21

Slide 21 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Demo

Slide 22

Slide 22 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) New Spring App Scenario 1

Slide 23

Slide 23 text

Spring Boot 3 + Tomcat 9 duke-spring Spring Boot 3 + Tomcat 10 duke-spring

Slide 24

Slide 24 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Upgrade Spring App Scenario 2

Slide 25

Slide 25 text

Spring Boot 2 Spring Boot 3 duke-boot duke-boot

Slide 26

Slide 26 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) javax.* -> jakarta.*

Slide 27

Slide 27 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) IDE

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

docs.openrewrite.org/recipes/java/migrate/jakarta

Slide 30

Slide 30 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1. Update Spring version in pom.xml 2. Update Jakarta EE version in pom.xml 3. Fix the imports 
 
 
 
 https://github.com/ivargrimstad/jakartaee-spring

Slide 31

Slide 31 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Upgrade Spring App Scenario 3 with Dependencies

Slide 32

Slide 32 text

Spring Boot 2 duke-boot duke-dep Spring Boot 3 duke-boot duke-dep

Slide 33

Slide 33 text

duke-dep Source

Slide 34

Slide 34 text

Spring Boot 2 duke-boot duke-dep Spring Boot 3 duke-boot duke-dep 2.0 1.0

Slide 35

Slide 35 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1. Update Spring version in pom.xml 2. Update Jakarta EE version in pom.xml 3. Fix the imports 4. Repeat for Dependencies 
 
 
 https://github.com/ivargrimstad/jakartaee-spring

Slide 36

Slide 36 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Upgrade Spring App Scenario 4 with External Dependencies

Slide 37

Slide 37 text

Spring Boot 2 duke-boot duke-dep duke-lib Spring Boot 3 duke-boot duke-dep duke-lib

Slide 38

Slide 38 text

Source duke-dep Source duke-lib

Slide 39

Slide 39 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Transformation

Slide 40

Slide 40 text

Eclipse Transformer Apache Tomcat Migration Tool b.com/eclipse/transformerhttps://tomcat.apache.org/download-migration.cgi

Slide 41

Slide 41 text

Spring Boot 2 duke-boot duke-dep duke-lib Spring Boot 3 duke-boot duke-dep duke-lib 2.0 1.0 2.0 1.0

Slide 42

Slide 42 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1. Update Spring version in pom.xml 2. Update Jakarta EE version in pom.xml 3. Fix the imports 4. Repeat for Dependencies 5. Transform Libraries if necessary 
 
 https://github.com/ivargrimstad/jakartaee-spring

Slide 43

Slide 43 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Additional Migration Steps

Slide 44

Slide 44 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1. Update Spring version in pom.xml 2. Update Jakarta EE version in pom.xml 3. Fix the imports 4. Repeat for Dependencies 5. Transform Libraries if necessary 6. Rename properties pre fi xed with javax 7. Verify data and dynamic content https://github.com/ivargrimstad/jakartaee-spring

Slide 45

Slide 45 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Open Liberty

Slide 46

Slide 46 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Why is Spring Boot and Open Liberty a Good Combination?

Slide 47

Slide 47 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Open Liberty supports Spring Boot 1.5, 2.0

Slide 48

Slide 48 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Open Liberty 23.0.0.8-beta supports Spring Boot 3.0 https://openliberty.io/blog/2023/08/03/23.0.0.8-beta.html

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Demo

Slide 52

Slide 52 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Beyond 10

Slide 53

Slide 53 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 Coming H1, 2024

Slide 54

Slide 54 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Release Cadence

Slide 55

Slide 55 text

COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Data Standardizes the repository pattern for data access https://jakarta.ee/speci fi cations/ NEW in Jakarta EE 11

Slide 56

Slide 56 text

COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta NoSQL Standardizes integration with NoSQL databases https://jakarta.ee/speci fi cations/nosql/ Standalone

Slide 57

Slide 57 text

COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta RPC Standardizes gRPC within Jakarta EE https://jakarta.ee/speci fi cations/rpc/ Standalone

Slide 58

Slide 58 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 API source level: Java SE 17 or 21 API binary level: Java SE 17 or 21 TCK run with: Java SE 21 Work in Progress

Slide 59

Slide 59 text

COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Summary

Slide 60

Slide 60 text

Jakarta EE 10 Platform Updated Not Updated New Authorization 2.1 Activation 2.1 Batch 2.1 Connectors 2.1 Mail 2.1 Messaging 3.1 Enterprise Beans 4.0 RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0 Servlet 6.0 Server Pages 3.1 Expression Language 5.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.0 WebSocket 2.1 Enterprise Beans Lite 4.0 Persistence 3.1 Transactions 2.0 Managed Beans 2.0 CDI 4.0 Authentication 3.0 Concurrency 3.0 Security 3.0 Bean Validation 3.0

Slide 61

Slide 61 text

Jakarta EE 10 Core Pro fi le Updated Not Updated New RESTful Web Services 3.1 JSON Processing 2.1 JSON Binding 3.0 Annotations 2.1 CDI Lite 4.0 Interceptors 2.1 Dependency Injection 2.0

Slide 62

Slide 62 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) How is Relevant to

Slide 63

Slide 63 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) builds on

Slide 64

Slide 64 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) javax.* -> jakarta.*

Slide 65

Slide 65 text

COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1. Update Spring version in pom.xml 2. Update Jakarta EE version in pom.xml 3. Fix the imports 4. Repeat for Dependencies 5. Transform Libraries if necessary 6. Rename properties pre fi xed with javax 7. Verify data and dynamic content https://github.com/ivargrimstad/jakartaee-spring

Slide 66

Slide 66 text

Jakarta EE https://jakarta.ee Jakartablogs
 https://jakartablogs.ee/ Ivar’s Hashtag Jakarta EE https://www.agilejava.eu/category/jakarta-ee/ Demo Code https://github.com/ivargrimstad/jakartaee-spring

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

Jakarta EE Overview Course available on