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

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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/

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide