What if your Java compiler could prevent invalid object states? See how Data-Oriented Programming uses sealed interfaces and pattern matching to make it a reality.
#1about 2 minutes
Introducing the four principles of data-oriented programming
Data-oriented programming (DOP) is a paradigm that models programs as a series of transformations on data, guided by four key principles.
#2about 5 minutes
Modeling a GitHub crawler page type example
An example of a GitHub crawler is used to explore how to model a complex page data type with various states and required operations.
#3about 2 minutes
Using Java records for immutable and transparent data
Java records are the ideal choice for modeling immutable data, and compact constructors can be used to ensure deep immutability for collection fields.
#4about 3 minutes
Modeling data alternatives using sealed interfaces and records
Sealed interfaces create a closed type hierarchy, allowing you to precisely model "either/or" relationships between different record types representing distinct data states.
#5about 3 minutes
How to make illegal data states unrepresentable
By combining a precise type hierarchy with validation in record constructors, you can prevent the creation of invalid object states within your domain model.
#6about 6 minutes
Separating operations from data using pattern matching
Operations are moved out of data records and implemented externally using switch expressions with pattern matching to deconstruct and act on the data.
#7about 4 minutes
Ensuring maintainability with compiler exhaustiveness checks
Switching over sealed types is safe because the compiler enforces exhaustiveness, issuing a compile error if a new subtype is added but not handled.
#8about 3 minutes
Comparing data-oriented programming to the visitor pattern
Data-oriented programming provides a more ergonomic alternative to the classic visitor pattern and is useful for modeling complex return types.
Related jobs
Jobs that call for the skills explored in this talk.
Modern Java RecordsIn this blog, I will present Records, one of my favorite features of modern Java. Records represent a simplified form of classes whose methods are implicitly derived from the attributes defined as constructor parameters. A record constitutes a collec...
Benedikt Bischof
Using Java 17 latest features in real world projectsWelcome to this issue of the WeAreDevelopers Live Talk series. This article recaps an interesting talk by Ron Veen who introduced the audience to some of the most interesting features that got added to the Java language.About the speaker:Ron is a hig...
From learning to earning
Jobs that call for the skills explored in this talk.