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

Applied Domain-Driven Design Blueprints for Jakarta EE

Applied Domain-Driven Design Blueprints for Jakarta EE

Domain-Driven Design (DDD) is an architectural approach that strongly focuses on materializing the business domain in enterprise software through disciplined object-oriented analysis. This session demonstrates first-hand how DDD can be elegantly implemented using Jakarta EE via an open source project named Cargo Tracker.

Cargo Tracker maps DDD concepts like entities, value objects, aggregates and repositories to Jakarta EE code examples in a realistic application. We will also see how DDD concepts like the bounded context are invaluable to designing pragmatic microservices.

Reza Rahman

May 04, 2018
Tweet

More Decks by Reza Rahman

Other Decks in Technology

Transcript

  1. COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK IS

    LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 1 Reza Rahman Jakarta EE Ambassador, Author, Blogger, Speaker [email protected] @reza_rahman Applied Domain-Driven Design Blueprints for Jakarta EE
  2. 2 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • J2EE popularized the idea of server-side architectures ◦ J2EE Blueprints (aka “Java Pet Store”) • J2EE Blueprints had profound impact, but not without its problems ◦ Many of the paradigms are alive and well even today ◦ Encumbered by the immaturity of the technology/industry • Domain-Driven Design (DDD) emphasizes a return to the roots of object-oriented analysis and design • Jakarta EE’s lightweight programming model fits DDD philosophy well ◦ The Cargo Tracker project completes the circle The Cargo Tracker Project
  3. 3 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) The Building Blocks
  4. 4 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

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

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

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

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

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

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

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

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

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

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

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

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Mapping DDD to Jakarta EE
  16. 16 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

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

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

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

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

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

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

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

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE + DDD in Action https://eclipse-ee4j.github.io/cargotracker/
  24. 24 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • DDD great architectural blueprint for Java applications • Jakarta EE very natural fit for DDD • Cargo Tracker great place to get started with DDD and Jakarta EE Summary
  25. 25 COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS WORK

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Cargo Tracker ◦ https://eclipse-ee4j.github.io/cargotracker/ • Getting Started with Domain-Driven Design ◦ https://dzone.com/refcardz/getting-started-domain-driven • Domain-Driven Design Quickly ◦ http://www.infoq.com/minibooks/domain-driven-design-quickly • Jakarta EE Tutorial ◦ https://eclipse-ee4j.github.io/jakartaee-tutorial/ • Jakarta EE Examples ◦ https://github.com/eclipse-ee4j/jakartaee-examples/ Resources
  26. Thank you! COPYRIGHT (C) 2021, ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0)