Johannes Bechberger
banner
mostlynerdless.de
Johannes Bechberger
@mostlynerdless.de
OpenJDK hacker at SapMachine, works on hello-ebpf for fun
A tiny puzzler: Is this valid Java?

import java.util.function.Predicate;

public class Test {
Predicate<String> f = (var a) -> a.isEmpty();
}
January 25, 2026 at 12:27 AM
I'm looking for suggestions for modern open-source Java applications and libraries for a code analysis project
January 22, 2026 at 9:15 AM
Async-profiler has released an update that includes native lock profiling and a latency filter. Consequently, ap-loader, which wraps async-profiler in a platform-independent JAR, has also been updated: github.com/jvm-profilin...
Release Loader for 4.3 (v11): Native lock profiling and latency filter · jvm-profiling-tools/ap-loader
ap-loader v11 Fixed JfrSync #25 The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored. v4.3 Features #1547: Native lock...
github.com
January 21, 2026 at 8:50 AM
JFR is great, but do you know how to read and write JFR files programmatically? Learn more in this week's blog post: mostlynerdless.de/blog/2026/01...
Reading and Writing JFR Files Programmatically - Mostly nerdless
JFR is great, but do you know how to read and write JFR files programmatically? Learn more in this week's blog post.
mostlynerdless.de
January 19, 2026 at 7:43 AM
I just released a new version of the cf-cli-java-plugin (github.com/SAP/cf-cli-j...), which solves a rare ssh connection issue by not using the plugin framework to call "cf ssh", but calling it directly via exec.Command
GitHub - SAP/cf-cli-java-plugin: Cloud Foundry CLI Plugin to troubleshoot Java apps
Cloud Foundry CLI Plugin to troubleshoot Java apps - SAP/cf-cli-java-plugin
github.com
January 14, 2026 at 4:17 PM
I have just released version 4.2.1-11 of ap-loader, which combines the 4.2.1 async-profiler maintenance release with a bug fix related to --jfr-sync in ap-loader itself. Get it via Maven or from the GitHub releases: github.com/jvm-profilin...
Release Loader for 4.2.1 (v11): Maintenance release · jvm-profiling-tools/ap-loader
ap-loader v11 Fixed JfrSync #25 The following is copied from the wrapped async-profiler release by Andrei Pangin. The source code linked below should be ignored. v4.2.1 Bug fixes #1599: Workarou...
github.com
January 14, 2026 at 8:00 AM
It will probably be one of the most in-depth views into how a feature turned from idea to code in four years. With all the ups and downs.
Java 25 got a new CPU time profiler, get into the details and the journey to get there in my talk at @jfokus.se early February: jfokus.se
January 13, 2026 at 9:49 AM
Java 25 got a new CPU time profiler, get into the details and the journey to get there in my talk at @jfokus.se early February: jfokus.se
January 13, 2026 at 8:54 AM
After last week's blog post that showed you how OpenJDK is faster than GraalVM, this week you will learn the quickest way to obtain the version of a Java binary (hint: it runs in less than a millisecond): mostlynerdless.de/blog/2026/01...
The Fastest Way to get the Version of a Java Installation - Mostly nerdless
Learn how I built the java-version to replace "java -version" and get you the version of a Java binary in less than a millisecond.
mostlynerdless.de
January 12, 2026 at 8:18 AM
OpenJDK is faster than GraalVM*

It's around twice as fast in one particular area. Read more in my latest tiny blog post at mostlynerdless.de/blog/2026/01...
OpenJDK is faster than GraalVM Java* - Mostly nerdless
OpenJDK is faster than GraalVM in some instances, but maybe it's not important? Discover more in this short blog post.
mostlynerdless.de
January 9, 2026 at 8:11 AM
Discover how to create executables from JAR files using the new execjar project, taking advantage of the fact that JARs are simply ZIP files, in this week's blog post: mostlynerdless.de/blog/2026/01...
How to Build an Executable from a JAR using ExecJAR - Mostly nerdless
Learn how to create executables from JAR using the new execjar project, exploiting the fact that JARs are just ZIP files.
mostlynerdless.de
January 5, 2026 at 9:51 AM
I'm happy that so many people find this helpful tool. I've just released a new version that improves performance and allows you to specify JVMs by part of their name, such as `jstall status plexus` to get the status of all running Maven instances.
I hope I'm not the only one who sometimes wonders: "What is my Java application doing right now?" When you don't see any output. This is where my tiny tool called JStall comes in, as you can read in my blog post at mostlynerdless.de/blog/2025/12...
Quickly Inspect your Java Application with JStall - Mostly nerdless
Learn about JStall, a tool that helps you quickly answer the question: "What is my Java application doing right now?"
mostlynerdless.de
January 4, 2026 at 9:39 AM
I hope I'm not the only one who sometimes wonders: "What is my Java application doing right now?" When you don't see any output. This is where my tiny tool called JStall comes in, as you can read in my blog post at mostlynerdless.de/blog/2025/12...
Quickly Inspect your Java Application with JStall - Mostly nerdless
Learn about JStall, a tool that helps you quickly answer the question: "What is my Java application doing right now?"
mostlynerdless.de
December 30, 2025 at 11:11 AM
In this week's blog post, you'll learn that JFR doesn't like arrays in other complex types as fields in custom JFR events, and what types are supported: mostlynerdless.de/blog/2025/12...
Don't use Arrays or other Complex Types in Custom JFR Events - Mostly nerdless
Learn about arrays and complex types in custom JFR events and about all the supported field types in this weeks blog post.
mostlynerdless.de
December 12, 2025 at 7:49 AM
Discover how to create a Gridfinity chocolate advent calendar and chocolate QR codes in this week's brief blog post: mostlynerdless.de/blog/2025/12...
Creating a Gridfinity Chocolate Advent Calendar - Mostly nerdless
Learn how to create a gridfinity chocolate advent calendar and chocolate QR codes in this weeks short blog post.
mostlynerdless.de
December 5, 2025 at 9:19 AM
I'm happy to announce that my meta-agent (a Java agent that instruments other Java agents) now has a nicer Web UI (thanks @hardcoding.fr):

github.com/parttimenerd...
December 2, 2025 at 3:07 PM
In this week's blog post, I'll showcase how the meta-agent hot-patches the JVM to record the byte-code transformations of native Java agents: mostlynerdless.de/blog/2025/11...
Who instruments the native instrumenters? - Mostly nerdless
In this weeks blog post, I'll show-case how the meta-agent hot-patches the JVM to record the byte-code transformations of native Java agents
mostlynerdless.de
November 20, 2025 at 8:46 AM
Having a last name that comes early when sorted alphabetically sometimes has its advantages:
November 13, 2025 at 7:09 AM
The JFR events collection website has a new home: sap.github.io/jfrevents

Old links will still work and are forwarded to this location.
sap.github.io
November 13, 2025 at 7:06 AM
Running local AI models on Android is easy. In this week's blog post, I showcase my AI server app, which exposes LLMs to Termux and other apps: mostlynerdless.de/blog/2025/11...
Running an LLM on an Android Phone - Mostly nerdless
Running local AI models on Android is easy, in this blog post I show case my AI server app that exposes the LLMs to Termux and other apps.
mostlynerdless.de
November 5, 2025 at 6:26 AM
I just released the newest version of ap-loader, a platform-independent async-profiler wrapper, which is now built on top of async-profiler 4.2: github.com/jvm-profilin...
GitHub - jvm-profiling-tools/ap-loader: Packages async-profiler with binaries for all platforms in a single JAR
Packages async-profiler with binaries for all platforms in a single JAR - jvm-profiling-tools/ap-loader
github.com
October 30, 2025 at 8:25 AM
Learn how to import JFR data into DuckDB, to easily query and analyze your profiling data in this week's blog post: mostlynerdless.de/blog/2025/10...
Making JFR Quack: Importing JFR files into DuckDB - Mostly nerdless
Learn how to import JFR data into DuckDB, to easily query and analyze your profiling data in this weeks blog post.
mostlynerdless.de
October 24, 2025 at 7:48 AM
Learn how to compare objects from JFR recordings in Java and why this is slightly trickier than you might have expected in this week's blog post: mostlynerdless.de/blog/2025/10...
JFR and Equality: A tale of many objects - Mostly nerdless
Learn how to compare objects from JFR recordings in Java and why this is slightly trickier than you might have expected.
mostlynerdless.de
October 10, 2025 at 9:40 AM
Learn how to silence the JFR startup messages and why you see them even with the default warning logging level in this week's blog post: mostlynerdless.de/blog/2025/09...
Silencing JFR's Startup Message - Mostly nerdless
Learn how to disable the JFR startup messages and why you see them even with the default warning logging level.
mostlynerdless.de
September 26, 2025 at 7:07 AM
Reposted by Johannes Bechberger
💪 Monday motivation: We are officially one month away from #P99CONF. eBPF has always been a popular topic, and this year is no exception. Don't miss @tanelpoder.com, @ddelnano.bsky.social, Jake Hillion, and @mostlynerdless.de on October 22-23: www.p99conf.io?latest_sfdc_...

#ScyllaDB
September 22, 2025 at 1:45 PM