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

Jakarta EE 10 and Beyond

Jakarta EE 10 and Beyond

All you need to know about Jakarta EE 10 and what to expect going forward!

ivargrimstad

April 14, 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 and Beyond
    Ivar Grimstad

    Jakarta EE Developer Advocate
    Eclipse Foundation

    View full-size slide

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

    View full-size slide

  3. 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 full-size slide

  4. 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 full-size slide

  5. May 1, 2022 May 31, 2022 *

    View full-size slide

  6. #JakartaEE COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @ivar_grimstad
    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
    f
    i

    View full-size slide

  7. #JakartaEE COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @ivar_grimstad
    Servlet 6.0
    Server Pages 3.1
    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
    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
    Expression Language 5.0
    Jakarta EE 10 Core Pro
    fi
    le
    Updated
    Not Updated
    New

    View full-size slide

  8. #JakartaEE COPYRIGHT (C) 2020, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @ivar_grimstad
    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
    Expression Language 5.0

    View full-size slide

  9. 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 full-size slide

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

    View full-size slide

  11. 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
    Expression Language 5.0

    View full-size slide

  12. 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 full-size slide

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


    Application app = new MyApplication();


    SeBootstrap.start(app);


    }

    View full-size slide

  14. @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 full-size slide

  15. 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
    Expression Language 5.0

    View full-size slide

  16. 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 features requested by the community
    Jakarta JSON Binding 3.0
    https://jakarta.ee/speci
    fi
    cations/jsonb
    https://jakarta.ee/speci
    fi
    cations/jsonp

    View full-size slide

  17. 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
    Expression Language 5.0

    View full-size slide

  18. 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 full-size slide

  19. Allow @Priority everywhere


    Add @Nullable and @NotNull

    View full-size slide

  20. 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
    Expression Language 5.0

    View full-size slide

  21. 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
    Expression Language 5.0

    View full-size slide

  22. 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 full-size slide

  23. New Extensions API


    “Dynamic” at build time


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

    Removal of Deprecated API parts

    View full-size 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
    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 full-size 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)
    Jakarta Security
    adding features and evolving the API
    https://jakarta.ee/speci
    fi
    cations/security/

    View full-size slide

  26. Other Updates


    • Updates to Lower Level SPIs


    • Jakarta Authorization


    • Jakarta Authentication


    • Foundation for Future Work
    New Authentication Mechanism


    • OpenID Connect

    View full-size 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
    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 full-size slide

  28. UUID as Basic Java Type
    @Entity


    public class Item {




    @ID


    @GeneratedValue(strategy=GenerationType.UUID)


    private java.util.UUID id;


    private String description;





    }

    View full-size slide

  29. 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 full-size slide

  30. 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 full-size 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 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 full-size slide

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

    View full-size slide

  33. 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 full-size slide

  34. 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 full-size slide

  35. javax.* -> jakarta.*

    View full-size slide

  36. javax.* -> jakarta.*

    View full-size 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)
    Demo

    View full-size slide

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

    View full-size slide

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


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

    View full-size 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)
    Transformation

    View full-size slide

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

    View full-size slide

  42. 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 full-size slide

  43. 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 full-size slide

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

    View full-size slide

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

    View full-size 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)
    Jakarta EE 11


    API source level: Java SE 17
    API binary level: Java SE 17
    TCK run with: Java SE 17+
    App Developers (YOU) can use Java SE 21 features if you like!!
    Speculations

    View full-size slide

  47. 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
    Standarizes portable con
    fi
    guration from environment-aware sources
    https://jakarta.ee/speci
    fi
    cations/con
    fi
    g/

    View full-size slide

  48. @ConfigProperty


    private String place;

    View full-size 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)
    Jakarta MVC
    Standardizes the action-based model-view-controller pattern
    https://jakarta.ee/speci
    fi
    cations/mvc/

    View full-size slide

  50. @Controller


    @View(“hello.jsp”)


    public void hello()


    model.put(“Hello Duke!”);


    }

    View full-size 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)
    Jakarta NoSQL
    Standardizes integration with NoSQL databases
    https://jakarta.ee/speci
    fi
    cations/nosql/

    View full-size slide

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

    View full-size 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)
    Jakarta Commons
    Shared space for the community to de
    fi
    ne utilities, annotations and APIs
    https://jakarta.ee/speci
    fi
    cations/
    Proposal

    View full-size 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)
    Jakarta Data
    Standardizes the repository pattern for data access
    https://jakarta.ee/speci
    fi
    cations/
    Discussions Going

    View full-size 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 full-size slide

  56. 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 full-size slide

  57. Jakarta EE 10 Platform
    Updated
    Not Updated
    New
    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
    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 full-size slide

  58. 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
    Expression Language 5.0

    View full-size slide

  59. 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 full-size slide

  60. 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 full-size slide

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

    View full-size 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 full-size slide