Johannes Bechberger
OpenJDK developer at SAP SE
Karlsruhe, Germany
Actions
Johannes Bechberger is a JVM developer working on profilers and their underlying technology in the SapMachine team at SAP. This includes improvements to async-profiler and its ecosystem, a website to view the different JFR event types, and improvements to the FirefoxProfiler, making it usable in the Java world. He started at SAP in 2022 after two years of research studies at the KIT in Java security analyses. His work today comprises many open-source contributions and his blog, where he regularly writes on in-depth profiling and debugging topics. He also works on hello-ebpf, the first eBPF library for Java.
Since 2023, he's been touring Europe's Java User Groups and conferences, like JavaZone and Devoxx Belgium, to speak on various topics.
Area of Expertise
Topics
Sound of Scheduling: Writing Linux Schedulers in Java with eBPF
eBPF is transforming Linux system capabilities, enabling the extension of the kernel with custom process schedulers, firewalls, and more. Thanks to Java's recent native integration and a bit of compiler magic, we can now create these extensions directly in Java — and that's exactly what this talk is all about.
We'll cover the fundamentals of eBPF and scheduling and how to implement a custom scheduler in Java. The session will showcase a scheduler that visualizes scheduling through sound — each process is mapped to a musical note, offering a fun and intuitive way to understand system activity. You’ll even get the chance to control the scheduling yourself using a MIDI keyboard.
Join us to learn how to craft small eBPF programs in Java that you'll really like the sound of.
From Idea to JEP: An OpenJDK Developer's Journey to Improve Profiling
Have you ever wondered how profiling, like JFR, works in OpenJDK and how we can improve it? In this talk, I'll take you on my three-year journey to improve profiling, especially method sampling, with OpenJDK: from the initial ideas and problems of existing approaches to my different draft implementations and JEP versions, with all the setbacks and friends I made along the way. It's a story of blood, sweat, and C++.
Build a lightning fast Firewall with Java & eBPF
eBPF is buzzing all over the cloud native world, as the cutting-edge technology reshaping the way we understand performance, security, and observability within kernel space. Java, with its recent strides in modernization and optimization, from enhancing startup times to facilitating native execution and advancing machine learning applications, stands at the cusp of this transformative era.
Join us in this journey, where we will embark on an ambitious challenge to build a high-throughput firewall leveraging the combined power of eBPF and Java. We'll start with a deep dive into eBPF's capabilities for kernel-level packet manipulation, then transition to how Java's latest advancements, particularly through Project Panama, enable seamless native code invocation and interoperability. Our focus will then converge to a hands-on demonstration of building a simple firewall using eBPF and Java, integrating kernel-level operations with high-level programming for real-time performance enhancements.
Attendees will gain practical insights into deploying eBPF programs from Java using the hello-ebpf library, managing packet flows efficiently, and implementing firewall rules with precision, leveraging the strengths of both worlds.
Writing a Linux scheduler in Java with eBPF
Sched_ext allows you to write a Linux scheduler with eBPF. Now that it finally comes to the mainline kernel, we want to make it accessible to a new group of people: Java developers. With our prototypical hello-ebpf library, it's now possible to write Linux schedulers and more using Java.
Join me in learning about sched_ext and how to write a basic scheduler implementation in "pure" Java.
DIY Python Debugger
Debuggers are indispensable tools for all Python developers, empowering them to conquer bugs and unravel complex systems. But have you ever wondered how they work? Curious about the implementation of features like conditional breakpoints and single stepping? About the changes that Python 3.12 brought and how they will improve debugging?
Join me for a talk in which we create our own debugger with conditional breakpoints, single stepping, and a Python-based debugging shell and learn a lot about debuggers along the way.
Debugging Unveiled: Exploring Debugger Internals and Hidden Gems
Debuggers are indispensable tools for Java developers, empowering them to conquer bugs and unravel complex systems. But have you ever wondered how they work under the hood? Curious about the implementation of features like conditional breakpoints and remote debugging? Wondering about all the cool features in modern IDEs, how they are implemented, and how IDEs even communicate with your JVM?
Join me for a deep dive into debuggers, unlocking their secrets and hidden gems to maximize their potential.
Instrument to Remove: Using Java agents for fun and profit
Have you ever written a Java agent? This talk will give you an introduction into writing small custom Java agents to create profilers or help with dead code removal.
I'll present you with all the techniques to write a Java agent and javassist based instrumentation code to find unused classes and dependencies in your project. Knowing which classes and dependencies are not used in your application can save you from considering the bugs and problems in these dependencies and classes if you remove them, helping to guard against supply chain attacks.
Java agents and instrumentation of a few lines of code can save you a lot of effort and implementing them is great fun :)
Unleash the power of Open-Source Java Profilers
Profilers help to analyze performance bottlenecks of your application - if you know which to use and how to work with them.
There are many open-source profilers, like async-profiler or JMC. This talk will give you insights into these tools, focusing on understanding the basic concepts of profiling like flame graphs, the usage of async-profiler and JMC, and the advantages and disadvantages of the different tools. Ending with tips for a successful profiling work flow.
Write your own Java Profiler in 240 lines of pure Java
Profilers help to analyze performance bottlenecks of your application if you know how to use them. To get to grips with profilers, it helps to understand how they work: Profilers aren't rocket science. A usable Java profiler can be written in 240 lines of pure Java code, helping you to fix performance issues and add custom features fast.
This talk will give the fundamentals of Java profiling and how Java profilers typically work, followed by a detailed explanation of how to develop a functioning profiler in a few lines of Java code. This talk will also explain how you can use it in production to analyze performance issues and show briefly how to work with a widely used open-source profiler that is based on the same principles.
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top