foojay

AsyncGetCallTrace Reworked: Frame by Frame with an Iterative Touch!

AsyncGetCallTrace is an API to obtain the top n Java frames of a thread asynchronously in a signal handler. This API is widely used but has its problems, see JEP 435 and my various articles on Foojay.io. My original approach with my JEP proposal was to build a replacement of the API, which could be used as a drop-in for …

Read More »

Working with GitLab Merge Requests in IntelliJ IDEA

In this tutorial, we will take a look at working with GitLab Merge Requests inside IntelliJ IDEA. When reviewing Merge Requests in a web interface, we don’t have the same support that our IDE gives us, like syntax highlighting and the context within which the code was written. IntelliJ IDEA has support for reviewing and merging GitLab Merge Requests. These …

Read More »

Observing Java Applications Running via Docker Compose Using OpenTelemetry

An easy non-obtrusive way to collect data about your dockerized app without changing your existing docker-compose.yml or docker files! This is just a neat trick that I discovered when I was trying to collect OTEL data about my application which was running via Docker Compose. I was trying to understand more about the code using tracing. However, I definitely didn’t want to modify …

Read More »

We All Grow Older, But Do Our Projects Really Have To?

We have all likely worked on a project, that has grown quite “mature” over time, who knows we might even have forgotten to keep our dependencies up to date? Mayhap we finally got the green light to move from JDK 8 to 17? This will quite likely entail a lot of library updates, and maybe some interesting changes (cough javax …

Read More »

Starting Apache Kafka – Java Producer & Consumer (Windows 10)

This is part 2 of a two part series on Starting Apache Kafka Server, Configuring Kafka Topic, and Creating a Core Java Based Kafka Consumer, as also a Core Java Based Kafka Producer. All this is demonstrated in step-by-step examples. All of this is for Java v8.0, Apache Kafka v3.4 on Windows 10. Part 1 focused on Kafka Consumer and …

Read More »

Book Review: “OpenJDK Migration for Dummies”

The subject of Java licensing and OpenJDK migration is complex and vital to many software engineers. I am no different. It’s a topic that’s often shrouded in legal jargon and technicalities, making it difficult to approach. “OpenJDK Migration for Dummies” by Simon Ritter offers a fresh perspective, breaking down these challenges into digestible segments. It directly speaks to my core …

Read More »

Preparing for JDK 21: A Comprehensive Overview of Key Features and Enhancements

As we inch closer to the release of JDK 21 in September (next month!), it’s crucial to familiarize ourselves with the transformative features and improvements this version is poised to bring to the Java ecosystem. Let’s embark on a comprehensive tour of the noteworthy changes and enhancements in JDK 21. Revising the Balance of Serviceability and Performance with JEP 451 …

Read More »

The Inner Workings of Safepoints

A Java thread in the JVM regularly checks whether it should do extra work besides the execution of the bytecode. This work is done during so-called safepoints. There are two types of safepoints: local and global. At thread-local safepoints, also known as thread-local handshakes, only the current thread does some work and is therefore blocked from executing the application. At …

Read More »