Reduce system complexity in Java with Data-Oriented programming
Channel: SouJava
Date: 2021-04-06

Traditionally in Java, we mix data and code in objects. While being beneficial in some cases, data encapsulation has a tendency towards systems with complex class hierarchies. Moreover, we introduce complex synchronization mechanisms to protect the state of our objects from being mutated or corrupted by other threads, making our code harder to maintain. Over the years many design patterns have been invented to work around this complexity.

Data-Oriented programming is a programming paradigm that inherently reduces system complexity by drawing a clear separation between code and data, and representing data with generic immutable data structures. 

In this talk, we illustrate with practical examples how to apply Data-Oriented programming principles in Java, using smart Java annotations and latest Java features. We show how the application of  Data-Oriented programming principles in a Java production system tends to reduce system complexity and make the system easier to maintain. 

Bio
Yehonathan Sharvit has been working as a software engineer since 2000, programming with C++, Java, Ruby, JavaScript, Clojure and ClojureScript. He currently works as a software architect at Cycognito, building software infrastructures for high scale data pipelines. He shares insights about software at his tech blog, he writes technical books, he speaks at conferences and leads Clojure workshops around the world. He is the author of Data-Oriented programming, published by Manning.