It’s Java 20 Release Day! Here’s What’s New

This will be a good day, because it’s Java 20 release day! It’s been six months since Java 19 was released, and so it’s time for another fresh wave of Java features. In this article, we will take you on a tour through all JEPs that come with this release and give you a brief introduction of each one of …

Read More »

Foojay Podcast #16: Welcome to Java 20!

Since 2018, we get a new version of Java every 6 months. Some are long-term supported versions that can be used for many years, while others are only maintained for a short time. Version 20 is such a short-term supported version. So, what new features does this version bring? And why should we use it? And what can we expect …

Read More »

Book Review: “API Design Patterns”

Disclaimer: this post includes affiliate links; I may receive compensation if you purchase the book from the different links provided in this post. This review is about API Design Patterns by JJ Geewax from Manning. I already mentioned how I’m trying to get to speed in the API world: reading books, viewing relevant YouTube videos and reading relevant IETF RFCs. …

Read More »

How to Create SBOMs in Java with Maven and Gradle

When building applications in Java, we highly depend on external libraries and frameworks. And each Java package that is imported likely also depends on more libraries. This means that the amount of Java packages included in your application is often not really transparent. As a developer, these nested (transitive) dependencies create the problem that you probably do not know all …

Read More »

Book review: “Practical Design Patterns for Java Developers”

Hone your software design skills by implementing popular design patterns in Java This book is for sale on Amazon in Kindle and Paperback editions. We’ll start this post with the personal verdict of two avid readers of this book: Frank Delporte’s Verdict I’ve been programming since I was 10y old, but I graduated from film school as a video editor, …

Read More »

Validating Java Profiling APIs

In my last article, I covered a correctness bug in the fundamental Java profiling API AsyncGetCallTrace that I found just by chance. Now the question is: could we find such bugs automatically? Potentially uncovering more bugs or being more confident in the absence of errors. I already wrote code to test the stability of the profiling APIs, testing for the …

Read More »

The Speed Test: Comparing Map.of() and new HashMap() in Java

Java is a popular programming language used for developing a wide range of applications, including web, mobile, and desktop applications. It provides many useful data structures for developers to use in their programs, one of which is the Map interface. The Map interface is used to store data in key-value pairs, making it an essential data structure for many applications. …

Read More »

Efficient Memory Mapping for Terabyte Sparse Files in Java

On Linux, you can create sparse files, where only the pages (of 4 KiB) that are touched utilise either memory or disk space. This allows you to memory map large virtual regions without worrying about wasted memory or disk In this program, you can see it reserves 8 TiB (8,192 GiB) Figure 1. Test 1: Sparse file Tip: x << …

Read More »

How Gradle Works: Inside the Daemon

Previously in the How Gradle Works series: How Gradle Works: Startup This is the second article of the series How Gradle Works. In this article, we’ll explain what happens inside the Gradle Daemon JVM. Why Do We Need Gradle Daemon? In the last article, we mentioned that Gradle starts a Gradle Daemon JVM (“the daemon”) to run the build. The …

Read More »