More Than Just Container Images: OCI Registries as Artifact Repositories with ORAS Java

Almost every team today runs a container registry: Artifactory, AWS, Azure, GitHub, GitLab, Harbor, or a self-hosted one. However, many use them only for Docker images. An OCI registry, however, can do more. It stores any type of file, versions them using tags, makes them immutable via digests, and handles authentication and permissions. When I was once again faced with the question of where to store my artifacts and how to distribute them, the usual options came to mind. In the end, I didn’t go with any of them. I used the existing registry and ORAS Java.

Custom Spring Boot Scheduler

With the @Schedule annotation, you can very quickly set up recurring tasks in your Spring Boot application. It’s a bit frustrating, though, that you can only choose between two very limited configuration options. Isn’t there more to Spring Boot than that?

FreshMarker Spring Boot Starter

FreshMarker is a modern Java template engine that offers a clear, type-safe API and a lightweight runtime environment for server-side HTML rendering. This article provides an overview of the FreshMarker Spring Boot Starter. An integration without boilerplate code that integrates FreshMarker into Spring Boot 4 MVC applications, offering automatic configuration, localization-aware template resolution, transparent caching, and a set of clearly defined extension points.

REST endpoints with filters

This article is a slightly updated English version of the article “REST Endpunkte mit Filtern”.

In addition to sorting and pagination, filtering is a fairly common action on REST endpoints. In contrast to the first two, however, there is no adequate solution for filtering in the Spring Boot framework. With little effort, however, this can be elegantly implemented with the Spring Boot tools.

Holidays 1.3.0

One library I really need to get back to working on while on vacation is Holidays. There haven’t been any updates to its content for quite some time. Now I have added the holidays for Poland, the Netherlands, Belgium, and Denmark.

Long Time, No See, Stream Collector Utility

The stream-collector-utilities library has provided several useful collectors for Java 17 up to this point. Since it was starting to show its age, it was time for an overhaul. The library now ships four ready-to-use Gatherers that complement its existing Collector classes. This post walks through each of them.

FreshMarker APT

Sometimes you develop things while on vacation because you’ve always wanted to try them out but don’t really see any practical use for them. That’s the case with FreshMarker APT. APT stands for Annotation Processed Templating and simply means applying the FreshMarker template syntax to Java code in a way similar to String Templates.

ParseContext: Smarter Template Building with Build-Time Knowledge

FreshMarker has always optimised constant expressions during template parsing. The expression 2 + 3 becomes 5 before the first process(…​) call is ever made. That optimisation, however, had a hard boundary: anything involving the ~~ operator, registered formatters, or context-free built-ins was left untouched because the parser had no access to the configuration that governs them. This post describes the ParseContext, a new concept that hands build-time knowledge to the template builders and what that unlocks.