Data-Oriented Programming - Version 1.1

Data-oriented programming models data as data: records for entities and sealed types for alternatives. Combined with pattern matching we can define operations on the data without overloading it with functionality.

In data-oriented programming (DOP), we model data as data and polymorphic behavior with pattern matching. This talk will introduce the concept of DOP and its four principles:

  • model data immutably and transparently
  • model the data, the whole data, and nothing but the data
  • make illegal states unrepresentable
  • separate operations from data

We'll also explore how to use pattern matching as a safe, powerful, and maintainable mechanism for ad-hoc polymorphism on such data that lets us define operations without overloading the types with functionality. The talk ends with a juxtaposition to OOP, so you not only learn how to employ DOP but also when (not).

Slides

Here's the current version of the slides.

I also embedded them below. If they're focussed, you can navigate with arrow keys or swipes (they're two-dimensional, with chapters on the horizontal axis and chapter content layed out vertically). Use Page Up/Down for linearized order and ? for more shortcuts.

Video

Here's a good recording of the talk. I hope you'll like it.

Always embed videos

(and give me a cookie to remember - privacy policy)

Watch on YouTube

Past Presentations

I gave this talk a few times before. See below for links to slides (as they were at that very event), videos, and other information.

2026

Wed, Apr 8th, 19:00 America/ChicagoData-Oriented Programming - Version 1.1
at Java MUG
5445 Legacy Dr, Suite 100, Plano, TX
Tue, Apr 7th, 17:30 America/ChicagoData-Oriented Programming - Version 1.1
at Kansas City JUG
1200 S Mahaffie Cir, Olathe, KS

2025

Thu, Jul 10th, 17:30 Europe/BerlinData-Oriented Programming - Version 1.1
at WeAreDevelopers World Congress
Messe Berlin, South Entrance & CityCube, Stage 8
Mon, Jun 30th, 10:30 Europe/WarsawData-Oriented Programming - Version 1.1
at Code Europe, Cracow
ICE Kraków, Cupertino

2024

Wed, Aug 21st, 18:00 Europe/BerlinData-Oriented Programming in Java (22)
at JUG Stammtisch Göttingen
Prof. Schumann GmbH, Jutta-Limbach-Straße 1
Tue, Jan 23rd, 15:05 Europe/ZurichData-Oriented Programming in Java (21)
at Voxxed Days CERN
CERN (yes, that one!)
Wed, Jan 10th, 18:00 Europe/BerlinData-Oriented Programming in Java (21)
at JUG Bielefeld
Bielefeld, Otto-Brenner-Straße 247, 5. OG

2023

Thu, Nov 30th, 18:00 Europe/BerlinData-Oriented Programming in Java (21)
at JUG Hamburg
Techniker Krankenkasse, Bramfelder Straße 140
Fri, Oct 27th, 12:10 Europe/LisbonData-Oriented Programming in Java (21)
at Porto Tech Hub
Porto Customs, Five9
Tue, Sep 12th, 10:00 Europe/BerlinData-Oriented Programming in Java (21)
at Java Forum Nord
Hannover Congress Centrum, Niedersachsenhalle A
Thu, May 25th, 19:00 Europe/BerlinData-Oriented Programming in Java
at JUG Mannheim
LivePerson Germany GmbH, P3 1-3
Tue, May 23rd, 18:00 Europe/BerlinData-Oriented Programming in Java
at JUG Saar
eurodata AG, Saarbrücken
Thu, Mar 23rd, 14:15 Europe/BucharestData-Oriented Programming in Java (20)
at Voxxed Days Bucharest
Sheraton Bucharest Hotel, Track 1

2022

Wed, Dec 7th, 19:00 Europe/ParisData-Oriented Programming in Java
at ElsassJUG
Sfeir, 1 Av. de l'Europe, Schilitgheim
Tue, Oct 18th, 16:00 America/Los_AngelesPattern Matching in Java (19)
at JavaOne
Caesar's Forum, Room 211
Thu, Oct 6th, 13:20 Europe/WarsawPattern Matching in Java (19)
at infoshare
AmberExpo, Advanced Dev Red
Tue, Sep 27th, 19:15 Europe/BerlinData-Oriented Programming in Java
at Accento @ JUG Karlsruhe
Disy, Zimmerstraße 3, Karlsruhe

2021