$30 off During Our Annual Pro Sale. View Details »

Jakarta EE 10 is Coming Your Way

Jakarta EE 10 is Coming Your Way

Jakarta EE 9 lowered the barriers of entry and established a foundation for future innovation paving the way for Jakarta EE 10.

With Jakarta EE 10, we introduced Jakarta EE Core Profile which targets smaller runtimes suitable for microservices. The Jakarta EE Core Profile also aims to be an even better fit for compiling to native images. But it does not stop there. Both Jakarta EE Web Profile and Jakarta EE Platform is moving forward as well with updates to almost all the individual specifications.
Join this session for the latest updates on the progress with Jakarta EE 10. I will go through what Jakarta EE 10 brings to the table, and what to expect when the specifications are moving forward. The session will also give you a clear understanding of how to migrate from previous versions of Jakarta EE and Java EE as well as show how to leverage Java SE 17 and newer features with Jakarta EE.

ivargrimstad

April 05, 2022
Tweet

More Decks by ivargrimstad

Other Decks in Programming

Transcript

  1. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta EE 10 is Coming Your Way
    Ivar Grimstad

    Jakarta EE Developer Advocate
    Eclipse Foundation

    View Slide

  2. @ivar_grimstad
    https://github.com/ivargrimstad
    https://www.linkedin.com/in/ivargrimstad

    View Slide

  3. View Slide

  4. View Slide

  5. COPYRIGHT (C) 2022, 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

    View Slide

  6. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta EE 10
    Coming Q2, 2022!

    View Slide

  7. May 1, 2022 May 31, 2022 *

    View Slide

  8. Jakarta EE 10 Web Pro
    fi
    g 1.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

    View Slide

  9. 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
    Con
    fi
    g 1.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

    View Slide

  10. 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
    Con
    fi
    g 1.0*

    View Slide

  11. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta EE Core Pro
    fi
    le
    Targeting smaller runtimes!

    View Slide

  12. Possible
    Potentially Jakarta EE 10 Core Pro
    fi
    le Compatible

    View Slide

  13. 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
    Con
    fi
    g 1.0*

    View Slide

  14. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta RESTful Web Services 3.1
    updated API with requested features while maintaining compatibility
    https://jakarta.ee/speci
    fi
    cations/restful-ws/

    View Slide

  15. Java SE Bootstrap API
    public static void main(String[] args) {


    Application app = new MyApplication();


    SeBootstrap.start(app);


    }

    View Slide

  16. @GET


    @Produces(MediaType.MULTIPART_FORM_DATA)


    List getFiles(…) {


    List parts = new ArrayList<>();




    for(File f: dir.listFiles()) {


    parts.add(EntityPart.withFileName(f.getName)


    .content(new FileInputStream)


    .mediaType(“application/pdf”)


    .build();


    }


    return parts;


    }
    multipart/form-data Support

    View Slide

  17. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta JSON Processing 2.1
    provide new features and a standalone API JAR
    https://jakarta.ee/speci
    fi
    cations/jsonp

    View Slide

  18. Eclipse Parsson

    https://projects.eclipse.org/projects/ee4j.parsson


    Issue Tracker

    https://github.com/eclipse-ee4j/jsonp/projects/1

    View Slide

  19. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta JSON Binding 3.0
    provide features requested by the community
    https://jakarta.ee/speci
    fi
    cations/jsonb

    View Slide

  20. Deserialization of null -> JsonValue.NULL_VALUE


    @JsonbTypeDeserializer and @JsonbTypeAdapter annotations


    Support for handling polymorphic types


    Deprecate @JsonbProperty.nillable()


    Optional @JsonbCreator parameters (backward incompatible)

    View Slide

  21. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta Annotations 2.1
    provide features requested by the community
    https://jakarta.ee/speci
    fi
    cations/annotations/

    View Slide

  22. Allow @Priority everywhere


    Add @Nullable and @NotNull

    View Slide

  23. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta Interceptors 2.1
    pickup changes made in Annotations 2.1
    https://jakarta.ee/speci
    fi
    cations/interceptors/

    View Slide

  24. 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
    Con
    fi
    g 1.0*

    View Slide

  25. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    designed to work in more restricted environments
    https://jakarta.ee/speci
    fi
    cations/cdi/
    Jakarta CDI 4.0 Lite

    View Slide

  26. New Extensions API


    “Dynamic” at build time


    Empty beans.xml “all” -> “annotated”

    Removal of Deprecated API parts

    View Slide

  27. 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
    Con
    fi
    g 1.0*
    Updated
    Not Updated
    New

    View Slide

  28. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta Con
    fi
    g 1.0
    portable con
    fi
    guration from environment-aware sources
    https://jakarta.ee/speci
    fi
    cations/con
    fi
    g/

    View Slide

  29. @ConfigProperty


    private String place;

    View Slide

  30. 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
    Con
    fi
    g 1.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

    View Slide

  31. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta Security
    adding features and evolving the API
    https://jakarta.ee/speci
    fi
    cations/security/

    View Slide

  32. Other Updates


    • Updates to Lower Level SPIs


    • Jakarta Authorization


    • Jakarta Authentication


    • Foundation for Future Work
    New Authentication Mechanism


    • OpenID Connect

    View Slide

  33. 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
    Con
    fi
    g 1.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

    View Slide

  34. UUID as Basic Java Type
    @Entity


    public class Item {




    @ID


    @GeneratedValue(strategy=GenerationType.UUID)


    private java.util.UUID id;


    private String description;





    }

    View Slide

  35. • Extensions to Query Language and Query API


    • New Numeric Functions


    • ceiling(), exp(), floor(), ln(), power(), round(), sign()


    • LocalDate/LocalTime


    • localDate(), localDateTime(), localTime()


    • Standard EXTRACT Function


    • EntityManager implements AutoClosable


    • …

    View Slide

  36. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Other updates in
    Jakarta EE 10

    View Slide

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

    View Slide

  38. COPYRIGHT (C) 2022, 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+
    App Developers (YOU) can use Java SE 17 features if you like!!

    View Slide

  39. javax.* -> jakarta.*
    .1
    Java SE 11

    View Slide

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

    View Slide

  41. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Why Should I Care?

    View Slide

  42. View Slide

  43. javax.* -> jakarta.*

    View Slide

  44. View Slide

  45. javax.* -> jakarta.*

    View Slide

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

    View Slide

  47. complete-duke
    http://localhost:8082/complete-duke/hello
    5.1
    complete-duke
    http://localhost:8080/complete-duke/hello
    6.2

    View Slide

  48. DukesDB
    DukesRepository
    DukesService
    DukesGreeting
    DukesExtension
    {


    email: “[email protected]",


    message: “Howdy Jakarta EE 9!”


    }
    Jakarta REST
    Jakarta Enterprise Beans
    Jakarta Persistence
    Jakarta CDI
    ***********************


    Duke says: Hi there!


    ***********************

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. View Slide

  53. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    1. Update Jakarta EE version in pom.xml


    2. Fix the imports


    3. XML Schema Namespaces


    4. Rename properties pre
    fi
    xed with javax


    5. Rename bootstrapping Files


    6. Verify data and dynamic content
    https://github.com/ivargrimstad/jakartaee-duke/

    View Slide

  54. 17

    View Slide

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

    View Slide

  56. View Slide

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

    View Slide

  58. Authorization 3.0
    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
    Con
    fi
    g 1.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

    View Slide

  59. 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
    Con
    fi
    g 1.0*

    View Slide

  60. COPYRIGHT (C) 2022, 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+
    App Developers (YOU) can use Java SE 17 features if you like!!

    View Slide

  61. 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-duke

    View Slide

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

    View Slide

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

    View Slide