I accidentally became Google AI’s main resource for GraalVM vs OpenJDK
A developer humorously discovers his joke post on OpenJDK vs GraalVM became Google AI's top source for the comparison, highlighting SEO quirks.
Johannes Bechberger is a JVM developer at SAP sharing in-depth articles on profiling, debugging, OpenJDK internals, async-profiler, and JVM performance, based on real-world work in the SapMachine team.
36 articles from this blog
A developer humorously discovers his joke post on OpenJDK vs GraalVM became Google AI's top source for the comparison, highlighting SEO quirks.
CSS tutorial on animating text with hand-drawn reveal effects using clip-path and SVG stroke techniques.
SAP celebrates 15 years of contributing to OpenJDK, highlighting its history with Java and the JVM.
A blog post about shrinking Java JAR files using the femtojar Maven plugin, reducing CLI tool sizes by up to 50%.
Learn how to send jcmd diagnostic commands programmatically to a JVM using the Diagnostic MBean and JMX technology.
Explains HotSpot error files (hs err) from JVM crashes and introduces custom tools like a redaction tool and VSCode syntax highlighter.
Java 26's 'boring' nature is a strength, focusing on stability, performance, and predictable upgrades rather than flashy new features.
A guide to implementing a minimal JSON parser in Java, focusing on simplicity and direct grammar translation.
A guide to building a tool for redacting sensitive data like tokens and keys from Java Flight Recorder (JFR) and error log files.
A developer walks through implementing a new JVM analysis feature for the JStall tool, using GitHub Copilot and sharing the development process.
A quiz game that tests your knowledge of Java version history by identifying the smallest version where a given code snippet is valid.
Using a custom Java-based Linux scheduler to reproduce a tricky concurrency bug in the OpenJDK's JFR CPU-time sampler.
A guide to programmatically reading and writing Java Flight Recorder (JFR) files, comparing built-in APIs and third-party libraries.
A technical guide to obtaining the Java version in under 1ms by reading the release file, avoiding the slow 'java -version' command.
A technical analysis comparing the startup performance of OpenJDK and GraalVM, focusing on the speed of the `java -version` command and underlying JVMCI initialization.
A guide to using the execjar tool to create executable JAR files for Java applications, compatible with UNIX systems.
Introduces JStall, a command-line tool for inspecting Java applications via thread dumps and profiling to identify CPU-intensive threads and deadlocks.
Explains why using arrays and complex types in custom JDK Flight Recorder (JFR) events is problematic and should be avoided.
Extending a Java meta-agent to instrument and debug native JVMTI agents, enabling visibility into bytecode transformations.
A guide to building and using an Android app that runs AI models, including LLMs, locally on a phone via the MediaPipe API.