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.
Applied Domain-Driven Design Blueprints for Jakarta EE
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
reza_rahman@lycos.com
@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)