Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Develop Modern and Lightweight Cloud Applications with Jakarta EE 10

Develop Modern and Lightweight Cloud Applications with Jakarta EE 10

Jakarta EE 10 is packed with new features for simple development of modern, lightweight enterprise Java applications for the Cloud. The new Jakarta EE Core Profile enables developers to develop microservices with Jakarta EE technologies with runtimes smaller than ever. Jakarta EE Core Profile even makes it possible to compile Jakarta EE applications to native images to reduce the footprint even further.

In this session, we will explore the new features of Jakarta EE 10 in an interactive way packed with live code demos. Among the features we will go through are the new reflection-free programming model introduced in *CDI 4.0 Lite* and the new Java SE Bootstrap API in *Jakarta RESTful Web Services 3.1*. But there will be more, so make sure you join this session to get it all!

We will even take a peek into the looking glass to see what we can expect from Jakarta EE 11.

ivargrimstad

May 04, 2023
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)
    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)
    Jakarta EE 10


    Modern and Lightweight Cloud Applications
    Ivar Grimstad

    Jakarta EE Developer Advocate
    Eclipse Foundation

    View Slide

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

    View Slide

  3. View Slide

  4. 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

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

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

    View Slide

  8. 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

    View Slide

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

    View Slide

  10. Other Updates


    • Updates to Lower Level SPIs


    • Jakarta Authorization


    • Jakarta Authentication


    • Foundation for Future Work
    New Authentication Mechanism


    • OpenID Connect

    View Slide

  11. OpenID Connect Authentication Mechanism
    @OpenIdAuthenticationMechanismDefinition(


    providerURI = "http://oidc-provider",


    clientId = "client",


    clientSecret = "secret",


    redirectURI = "${baseURL}/Callback",


    redirectToOriginalResource = true


    )

    View Slide

  12. 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

    View Slide

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

    View Slide

  14. UUID as Basic Java Type
    @Entity


    public class Item {




    @Id


    @GeneratedValue(strategy=GenerationType.UUID)


    private java.util.UUID id;


    private String description;





    }

    View Slide

  15. 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

    View Slide

  16. COPYRIGHT (C) 2023, 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

  17. @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

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


    Application app = new MyApplication();


    SeBootstrap.start(app);


    }
    DEMO

    View Slide

  19. COPYRIGHT (C) 2023, 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
    Java SE Bootstrap API
    DukesGreeting
    {


    email: “[email protected]",


    message: “Howdy Jakarta EE 9!”


    }
    Jakarta REST
    Jakarta JSON Binding
    RESTEasy 6.10

    View Slide

  20. 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

    View Slide

  21. 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 Core Pro
    fi
    le
    Targeting smaller runtimes!

    View Slide

  22. 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

    View Slide

  23. Jakarta EE 10 Core Pro
    fi
    le Compatible

    View Slide

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

    View Slide

  25. 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
    CDI Lite 4.0

    View Slide

  26. COPYRIGHT (C) 2023, 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

  27. New Extensions API


    “Dynamic” at build time


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

    Removal of Deprecated API parts DEMO

    View Slide

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

    View Slide

  29. complete-duke
    5.1
    complete-duke
    6.2
    Jakarta EE 8 Jakarta EE 9.1
    complete-duke
    7.0
    Jakarta EE 10

    View Slide

  30. complete-duke
    6.2
    Jakarta EE 9.1
    complete-duke
    5.1
    Jakarta EE 8
    complete-duke
    7.0
    Jakarta EE 10

    View Slide

  31. 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.*

    View Slide

  32. javax.* -> jakarta.*

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. View Slide

  37. 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 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

  38. DukesDB
    DukesRepository
    DukesService
    DukesGreeting
    DukesExtension
    {


    email: “[email protected]",


    message: “Howdy Jakarta EE 10!”


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


    Duke says: Hi there!


    ***********************
    Jakarta JSON Binding

    View Slide

  39. 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 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

  40. complete-duke
    5.1
    Jakarta EE 8
    complete-duke
    6.2
    Jakarta EE 9.1
    complete-duke
    7.0
    Jakarta EE 10
    core-duke
    27.0.0
    Jakarta EE 10

    Core Pro
    fi
    le

    View Slide

  41. DukesDB
    DukesRepository
    DukesService
    DukesGreeting
    DukesExtension
    {


    email: “[email protected]",


    message: “Howdy Jakarta EE 10!”


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


    Duke says: Hi there!


    ***********************
    Jakarta JSON Binding

    View Slide

  42. DukesService
    DukesGreeting
    DukesExtension
    {


    email: “[email protected]",


    message: “Howdy Jakarta EE 10!”


    }
    Jakarta REST
    Jakarta CDI
    Jakarta CDI
    ***********************


    Duke says: Hi there!


    ***********************
    Jakarta JSON Binding
    Build Compatible Extension

    View Slide

  43. 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

    View Slide

  44. 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
    Starting NOW!

    View Slide

  45. 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

    View Slide

  46. 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

    View Slide

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

    View Slide

  48. @ConfigProperty


    private String place;

    View Slide

  49. COPYRIGHT (C) 2023, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)
    Jakarta MVC
    Standardizes the action-based model-view-controller pattern
    https://jakarta.ee/speci
    fi
    cations/mvc/

    View Slide

  50. @Controller


    @View(“hello.jsp”)


    public void hello()


    model.put(“Hello Duke!”);


    }

    View Slide

  51. COPYRIGHT (C) 2023, 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/
    NEW

    View Slide

  52. COPYRIGHT (C) 2023, 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/
    NEW

    View Slide

  53. COPYRIGHT (C) 2023, 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

    View Slide

  54. 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

  55. View Slide

  56. 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

    View Slide

  57. 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

    View Slide

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

    View Slide

  59. 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

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

    View Slide

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

    View Slide

  62. 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.*

    View Slide