Sign in

Johannes Bechberger

@mostlynerdless.de
680 followers 99 following 253 posts

OpenJDK hacker at SapMachine, works on hello-ebpf for fun

PostsRepliesMedia
Johannes Bechberger @mostlynerdless.de · 16/09/2026
☕️ Shape the future of Java. Join us on 1 October in Walldorf for a JCP Community Meetup with talks on Project Valhalla, Value Objects, and Java for AI. Meet Java community members, JCP representatives, and developers — and join the conversation. www.jug-da.de/2026/10/JCP-... #Java #JCP #OpenJDK
030
Johannes Bechberger @mostlynerdless.de · 14/09/2026
The newly released Java 27 seems boring; the JDK only got some new defaults and refinements, but the most consequential change hides beneath the surface. Read all about the newest Java release in my blog post at mostlynerdless.de/blog/2026/09...
mostlynerdless.de
Java 27 is only boring on the surface. - Mostly nerdless
Java 27 seems to be boring; the JDK only got some new defaults, but the most consequential change is the removal of the JVM Compiler Interface.
071
Reposted by Johannes Bechberger
BaselOne @baselone.bsky.social · 11/09/2026
Stop wasting hours on tests that never fail. 🧪 At #BaselOne26, @mostlynerdless.de shows how bytecode instrumentation can identify tests affected by code changes – so relevant tests run first and feedback comes faster. 👉 baselone.org#programm 🎟️ eventfrog.ch/BaselOne26 #BaselOne #SoftwareTesting
BaselOne 2026 session visual for the talk “Stop Wasting Hours on Tests That Never Fail” by Johannes Bechberger. The visual shows his portrait on a purple-to-red gradient background with a stylised Basel skyline. BaselOne takes place on October 14–15, 2026, at Markthalle Basel, Switzerland.
022
Johannes Bechberger @mostlynerdless.de · 08/09/2026
What does GitHub's asset download counter really track? Not the full download, that's for sure. Read about my empirical investigation in my latest blog post: mostlynerdless.de/blog/2026/09...
mostlynerdless.de
What do GitHub download statistics really mean? - Mostly nerdless
What do GitHub release download statistics really count? Not what you assume, learn what I found in my empirical investigation and be confused.
022
Johannes Bechberger @mostlynerdless.de · 01/09/2026
I arrived in Oslo for @javazone.bsky.social and just wanted to say thank you to the organizers, who were able to sort out any issues for the speakers within minutes (I was clumsy). It's the first conference I'll be speaking at as a newly minted Java Champion. Thanks for being awesome.
130
Reposted by Johannes Bechberger
Jean-Philippe Bempel @jpbempel.bsky.social · 19/08/2026
Why is Arrays.fill 265 times slower on G1GC Good article from Krzysztof Ślusarski krzysztofslusarski.github.io/2026/08/19/g...
krzysztofslusarski.github.io
[Java][JVM][Tuning][Profiling][G1][JIT] Why is Arrays.fill 265 times slower on G1GC?
[Java][JVM][Tuning][Profiling][G1][JIT] Why is Arrays.fill 265 times slower on G1GC?
064
Johannes Bechberger @mostlynerdless.de · 31/07/2026
My fun little blog post titled "OpenJDK is faster than GraalVM Java*" became a major source for GoogleAI, and I don't know why: mostlynerdless.de/blog/2026/07...
mostlynerdless.de
I accidentally became Google AI's main resource for GraalVM vs OpenJDK - Mostly nerdless
My fun little blog post titled "OpenJDK is faster than GraalVM Java*", became a major source for GoogleAI, and I don't know why.
130
Johannes Bechberger @mostlynerdless.de · 17/07/2026
Learn how to create a hand-drawn text reveal for header text with CSS and some clip-path magic in this week's blog posts: mostlynerdless.de/blog/2026/07...
mostlynerdless.de
121
Johannes Bechberger @mostlynerdless.de · 07/07/2026
SAP joined the OpenJDK 15 years ago on the 14th of July 2011, contributing many ports, features, and ecosystem improvements. Let's celebrate: https:// mostlynerdless.de/blog/2026/07/07/celebrating-15-years-of-saps-involvement-in-the-openjdk/
mostlynerdless.de
Celebrating 15 years of SAP's involvement in the OpenJDK - Mostly nerdless
SAP joined the OpenJDK 15 years ago on the 14th of July, contributing many ports, features and ecosystem improvements. Let's celebrate.
031
Johannes Bechberger @mostlynerdless.de · 11/05/2026
Want to make vegan waffles that don't rip or stick even when doing large badges on commercial-grade equipment? Here is a recipe that gives you proper heart waffles with inexperienced labor: mostlynerdless.de/blog/2026/05...
mostlynerdless.de
Vegan Waffle Recipe - Mostly nerdless
A vegan waffle recipe for waffles that don't riped apart or stick, using the power of food additives. Made for big events.
000
Johannes Bechberger @mostlynerdless.de · 04/05/2026
I'm looking forward to speaking at this conference (and did you know that bagels came from Krakow?).
031
Johannes Bechberger @mostlynerdless.de · 30/04/2026
Femtojar is a new tool and Maven plugin that reduces the size of your tool's JAR files using ProGuard, Zopfli, and a custom classloader. Read more on it in my latest blog post: mostlynerdless.de/blog/2026/04...
mostlynerdless.de
Honey, I shrank the JARs - Mostly nerdless
Femtojar is a new tool and Maven plugin to reduce the JAR files of your tools using ProGuard, Zopfli and a custom classloader.
021
Johannes Bechberger @mostlynerdless.de · 22/04/2026
Dear bluesky: Does anyone here work at #SAP and want to show off a cool #opensource project they work on (at least partially) on company time? Then please message me, as I'm looking for people to tell cool stories in an SAP internal OSPO meetup in Walldorf. Please share...
A picture of a home-made croissant, which you can enjoy as a speaker at the open-source meetup
353
Johannes Bechberger @mostlynerdless.de · 22/04/2026
I released a new version of ap-loader that wraps the newest async-profiler 4.4 version: github.com/jvm-profilin...
github.com
Release Loader for 4.4 (v13): async-profiler 4.4 · jvm-profiling-tools/ap-loader
ap-loader v13 Fix bug in AsyncProfilerLoader.getVersion() that caused it to return the same version number twice and crash The following is copied from the wrapped async-profiler release by Andre...
030
Johannes Bechberger @mostlynerdless.de · 20/04/2026
JCmd allows you to quickly get information on an existing JVM, like thread-dumps. In this blog post, you'll learn to send commands programmatically: mostlynerdless.de/blog/2026/04...
mostlynerdless.de
Calling jcmd Commands Programmatically - Mostly nerdless
JCmd allows you to quickly get information on an existing JVM, like thread-dumps. In this blog post you'll learn to send commands programmatically.
010
Johannes Bechberger @mostlynerdless.de · 20/04/2026
Honestly, it's surprising how easy it is to port a Java CLI into a tiny web-app with @graalvm.org: parttimenerd.github.io/jhserr/ It is far superior to running the CLI on a webserver, as these leads to all sorts of security problems and also privacy concerns (especially with redaction tools).
parttimenerd.github.io
hs_err Parser — Parse, Redact & Export
031
Johannes Bechberger @mostlynerdless.de · 16/04/2026
A secret: Being able to submit a talk to JPrime on it is a good incentive to implement a feature :)
010
Johannes Bechberger @mostlynerdless.de · 16/04/2026
Ever looked at a HotSpot error file and thought “nope”? I wrote a guide + built a VSCode highlighter and a browser redaction tool (using @graalvm.org). mostlynerdless.de/blog/2026/04...
mostlynerdless.de
On HotSpot Error Files and Useful Tools - Mostly nerdless
Learn all about HotSpot Error Files, a new syntax highlighter for VSCode and a redaction tool running directly in your browser.
073
Johannes Bechberger @mostlynerdless.de · 14/04/2026
I just updated femtocli, my tiny (<50KB) CLI option parsing library. More bug fixes, better type conversions, and documentation: github.com/parttimenerd...
github.com
Release Release 0.4.0 · parttimenerd/femtocli
Added Builtin type converters for short, byte, and char fields ${COMPLETION-CANDIDATES} and ${DEFAULT-VALUE} placeholder expansion in @Parameters descriptions Changed Increased minimal JAR size ...
000
Reposted by Johannes Bechberger
Ana-Maria Mihalceanu @ammbra1508.bsky.social · 02/04/2026
Probably the most cool visual explanation for HTTP/3 in #JDK26 by @lutskedev.bsky.social and Johannes Bechberger 🥳🥳🥳!!! #Java #JEP #VoxxedDaysAmsterdam
1176
Reposted by Johannes Bechberger
Lutske van der Meer @lutskedev.bsky.social · 02/04/2026
Join us today at 13:30 in zaal 11 @amsterdam.voxxeddays.com and hear why @mostlynerdless.de and I think that Java 26 is boring! #VDAMS26
052
Johannes Bechberger @mostlynerdless.de · 17/03/2026
Java 26 is here, but it's boring. Nothing really exciting. But that's a good thing, as the boring stability is what made Java successful (co-written with @lutskedev.bsky.social): mostlynerdless.de/blog/2026/03...
mostlynerdless.de
Java 26 is boring, and that's a good thing - Mostly nerdless
Java 26 is here, but it's boring. Nothing really exciting. But that's a good thing, as the boring stability is what made Java successful.
0148
Johannes Bechberger @mostlynerdless.de · 16/03/2026
Come and win a "Java 26 is boring" t-shirt :)
001
Johannes Bechberger @mostlynerdless.de · 10/03/2026
Parsing JSON is not hard; we can easily build a parser that directly follows a (transformed) JSON grammar, creating femtojson in the process: mostlynerdless.de/blog/2026/03...
mostlynerdless.de
Writing a tiny JSON Parser - Mostly nerdless
Parsing JSON is not hard, we can easily build a parser that directly follows a (transformed) JSON grammar, creating femtojson in the process.
020
Johannes Bechberger @mostlynerdless.de · 26/02/2026
I need your help: If anyone wants to send me an audio snippet saying "Boring" (as in "Java 26 is stable. It's boring."), I would happily accept them. I want to play this audio via a button press during a talk. In other news: I'm speaking at @amsterdam.voxxeddays.com with @lutskedev.bsky.social.
211
Johannes Bechberger @mostlynerdless.de · 24/02/2026
Java Heap Dumps might contain sensitive information; with hprof-redact, you can easily remove it. Learn more in this blog post: mostlynerdless.de/blog/2026/02...
mostlynerdless.de
Redacting Data from Heap Dumps via hprof-redact - Mostly nerdless
Java Heap Dumps might contain sensitive information, with hprof-redact you can easily remove it. Learn more in this blog post.
031
Johannes Bechberger @mostlynerdless.de · 16/02/2026
Command-line parser libraries don't have to be big to support everything you need, like subcommands, validators, and Java-agent-style argument parsing: Introducing femtocli, with a 45KB JAR file. Read more at mostlynerdless.de/blog/2026/02...
mostlynerdless.de
Femtocli: A small but mighty CLI library for small CLI tools in < 45KB - Mostly nerdless
Command-line parser libraries don't have to be big to support everything you need: Introducing femtocli, which is smaller than 45KB.
021
Johannes Bechberger @mostlynerdless.de · 13/02/2026
Redact sensitive data from Java Flight Recorder and JVM crash logs with jfr-redact, a tool for safely sharing profiling and error files: mostlynerdless.de/blog/2026/02...
mostlynerdless.de
Redacting Sensitive Data from Java Flight Recorder Files - Mostly nerdless
Redact sensitive data from Java Flight Recorder and JVM crash logs with jfr-redact, a tool for safely sharing profiling and error files.
073
Johannes Bechberger @mostlynerdless.de · 03/02/2026
Think you really know Java? ☕ Guess the Java version from code snippets in my Java Version Quiz: mostlynerdless.de/java-game/
mostlynerdless.de
Guess the Java version of a code snippet in this fun game
A game that let's you guess the Java version of snippets, from Java 1.0 to Java 25
051
Johannes Bechberger @mostlynerdless.de · 26/01/2026
In this week's blog post, I explain how a chaotic eBPF-based scheduler helps reproduce rare concurrency bugs, illustrated with a real-world OpenJDK case: mostlynerdless.de/blog/2026/01...
openjdk.org
JEP 323: Local-Variable Syntax for Lambda Parameters
020
Johannes Bechberger @mostlynerdless.de · 25/01/2026
A tiny puzzler: Is this valid Java? import java.util.function.Predicate; public class Test { Predicate<String> f = (var a) -> a.isEmpty(); }
110
Johannes Bechberger @mostlynerdless.de · 22/01/2026
I'm looking for suggestions for modern open-source Java applications and libraries for a code analysis project
210
Johannes Bechberger @mostlynerdless.de · 21/01/2026
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...
github.com
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...
022
Johannes Bechberger @mostlynerdless.de · 19/01/2026
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...
mostlynerdless.de
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.
042
Johannes Bechberger @mostlynerdless.de · 14/01/2026
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.com
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
010
Johannes Bechberger @mostlynerdless.de · 14/01/2026
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...
github.com
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...
000
Johannes Bechberger @mostlynerdless.de · 13/01/2026
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.
051
Johannes Bechberger @mostlynerdless.de · 13/01/2026
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
262
Johannes Bechberger @mostlynerdless.de · 12/01/2026
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...
mostlynerdless.de
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.
020
Johannes Bechberger @mostlynerdless.de · 09/01/2026
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...
mostlynerdless.de
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.
194
Johannes Bechberger @mostlynerdless.de · 05/01/2026
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...
mostlynerdless.de
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.
061
Johannes Bechberger @mostlynerdless.de · 04/01/2026
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.
051
Johannes Bechberger @mostlynerdless.de · 30/12/2025
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...
mostlynerdless.de
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?"
11710
Johannes Bechberger @mostlynerdless.de · 12/12/2025
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...
mostlynerdless.de
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.
033
Johannes Bechberger @mostlynerdless.de · 05/12/2025
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...
mostlynerdless.de
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.
000
Johannes Bechberger @mostlynerdless.de · 02/12/2025
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...
localhost:7071/classes of my meta-agent
172
Johannes Bechberger @mostlynerdless.de · 20/11/2025
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...
mostlynerdless.de
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
112
Johannes Bechberger @mostlynerdless.de · 13/11/2025
Having a last name that comes early when sorted alphabetically sometimes has its advantages:
110
Johannes Bechberger @mostlynerdless.de · 13/11/2025
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
021
Johannes Bechberger @mostlynerdless.de · 05/11/2025
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...
mostlynerdless.de
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.
000