Gunnar Morling

Gunnar Morling

Random Musings on All Things Software Engineering

Gunnar Morling

Gunnar Morling

Random Musings on All Things Software Engineering

Projects

Posted at Jan 20, 2024

I have contributed to a wide range of open-source projects over the last years. Here’s a selection of projects I have been involved with.

1BRC 1️⃣🐝🏎️

The One Billion Row Challenge, or 1BRC for short, is a fun exploration of how quickly 1B rows from a text file can be aggregated with Java. It is a coding challenge I ran in January 2024, which provided an opportunity to learn about modern Java APIs, SIMD, and high-performance programming techniques to hundreds of developers. Focussed on Java originally, 1BRC garnered a huge interest from folks in other eco-systems as well.

Debezium

Debezium is a platform for change data capture; it lets you stream changes out of different databases such as Postgres, MySQL, MongoDB and SQL Server into Apache Kafka. I was the lead of the Debezium project for several years.

Quarkus

Quarkus is a "Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards". My contributions to Quarkus are centered around its extension for Kafka Streams, which I initially created.

JfrUnit

JfrUnit is a JUnit extension for asserting JDK Flight Recorder events. It comes handy for ensuring the right custom JFR events are emitted by a JVM-based library or application as well as for identifying potential performance regressions by tracking JFR events for memory allocation, network I/O, etc.

JFR Analytics

JFR Analytics is an exploration for running analytics on JDK Flight Recorder recordings. It lets you use SQL to identify things like classloader leaks or thread leaks, allocation-heavy methods in your program, and more.

kcctl 🧸

kcctl is a command-line client for working with Kafka Connect, allowing to examine the state of the Connect cluster and individual connectors, register and start/stop connectors, etc. It is based on Quarkus and provided as a native binary for Linux, macOS, and Windows via GraalVM.

ModiTect, Layrry, and Deptective

ModiTect is a family of Maven and Gradle plug-ins around the Java Module System, e.g. for creating module descriptors and building modular runtime images via jlink. Layrry is an API and launcher for modularized Java applications, leveraging the Java Module System’s notion of module layers, e.g. allowing to work with multiple versions of one dependency. Deptective is a plug-in for the Java compiler (javac) for enforcing package dependencies within Java projects based on a declarative architecture definition.

MapStruct

MapStruct is a compile-time code generator for bean-to-bean mappings. Based on annotated Java interfaces, MapStruct generates mapping code that it is fully type-safe and very efficient by avoiding any usage of reflection. I was the creator and initial project lead of MapStruct.

Bean Validation and Hibernate Validator

Bean Validation is a Java specification which lets you express constraints on object models via annotations. Originally developed at the JCP, it’s now part of the Jakarta EE umbrella at the Eclipse foundation. I have been the spec lead for Bean Validation 2.0 (JSR 380) and the lead of the reference implementation Hibernate Validator.

Other Hibernate Projects

As part of the Hibernate team, I’ve contributed to different projects such as Hibernate OGM (an effort to access NoSQL stores with JPA), Hibernate Search (full-text search for domain models based on Apache Lucene and Elasticsearch) and Hibernate ORM.