Classic Layout

The Files in JDK 21

As Java developers, we all have it installed on our computer: the Java Development Kit, also known as the JDK. I remember putting the first version on a few floppy disks back in 1995. Since then it has grown multiple times. In this article, we’ll explore the files of the JDK. For this article, Eclipse Temurin JDK 21 for Windows …

Read More »

Level-up your Java Debugging Skills with on-demand Debugging

Debugging is one of the most common tasks in software development, so one would assume that all features of debuggers have ample coverage in tutorials and guides. Yet there are three hidden gems of the Java Debugging (JDWP) agent that allow you to delay the start of the debugging session until… you gave orders via jcmd (onjcmd=y option) the program …

Read More »

Foojay Podcast #31: Report of Devoxx ’23 in Belgium

The first week of October, the 20th edition of Devoxx took place in Antwerp, Belgium. Over 3000 Java developers, speakers, and enthusiasts gathered to share their knowledge and learn from each other. I got the opportunity to walk around with a microphone and talk to visitors and speakers. Not all of them, as there were just too many people and …

Read More »

Book review: “Get Your Hands Dirty on Clean Architecture – Second Edition”

Clean Architecture helps us ensure a solid foundation for our applications, and helps keep our code organized and maintainable. Furthermore when properly applied it helps keep ones team on the same page and ensures our applications stay robust and flexible over time. Of course there are a lot of pitfalls to take into account, and a lot of pros/cons to …

Read More »

Patterns For The Design Of Microservices – Part 1

Design patterns plays a pivotal role in designing and solving the commonly occurring problems in software application. It is guiding principle or template to the solve any designing problems. It applies to the Microservices architectural style as well. These patterns provide a structured approach to designing and implementing Microservice architectures, ensuring scalability, maintainability, and reusability. By adhering to these design …

Read More »

FEPCOS-J (2) – Declaratively compose networked systems in Java

FEPCOS-J implements a model-based Java language extension that provides the annotation @Part, which enables a developer to declaratively compose networked systems. This post introduces the concept and gives you an example of how to use it. Please help me to make FEPCOS-J a Free/Libre and Open-Source Software (FLOSS). Introduction FEPCOS-J arises in the frame of the FEPCOS-Project [1], which aims …

Read More »

State of the Software Supply Chain Report: Key Takeaways for Java Developers

Software Supply Chains and Open Source Maven Central hits 1 Trillion downloads Open source adoption continues to grow, with Java (Maven) being a significant ecosystem. The report indicates that Java projects and their versions have seen substantial growth. a 28% year-over-year increase in total projects available on Maven Central – hitting the amazing 1 Trillion download number. Log4Shell is still …

Read More »

Send Your Logs To Loki

One of my current talks focuses on Observability in general and Distributed Tracing in particular, with an OpenTelemetry implementation. In the demo, I show how you can see the traces of a simple distributed system consisting of: the Apache APISIX API Gateway, a Kotlin app with Spring Boot, a Python app with Flask, and a Rust app with Axum. Earlier …

Read More »

Changes Included in the Stable release 23.08 of Azul Zulu Prime Builds of OpenJDK

The latest Long Term Support (LTS) version of OpenJDK was released on September 19, 2023. Below is an overview of all the combined improvements in the latest Azul Prime Builds of OpenJDK, stable release, 23.08.01.0. Azul Platform Prime is a modern, TCK-compliant Java platform based on OpenJDK. It provides consistently low response latency of your Java workloads, higher total throughput …

Read More »

How to Diagnose and Mitigate Pinning in Java’s Virtual Thread Execution

In our last article, we highlighted the impressive performance gains achieved through the use of virtual threads. However, upon diving deeper into the code, we discovered an issue caused by the jsoup library: a phenomenon known as pinning. But before we delve into solutions, let’s take a moment to understand what pinning actually is. What is Pinning? In the context …

Read More »