Speaker Details

Francesco Nigro
Red Hat
I've been working for many years in the computer field. In the last +10 years I've cultivated a strong passion in Java development and the under the hood details of OpenJDK, recently joined by C and (x86) ASM.Big fan of DDD (Domain Driven Design) world, I've developed several Event-Sourcing high performance solutions in the medical and IoT field.I'm an active member of various online communities on performance (https://groups.google.com/forum/#!forum/mechanical-sympathy), Principal (Software) Performance Engineer and Performance Lead for Red Hat on Quarkus, Red Hat Top Inventor (2019).I've collaborated to different projects related high-performance computing both as committer and contributors eg Quarkus, Vert-x, Netty committer, JCTools author, PMC of ActiveMQ Apache Artemis (Messaging Broker), HdrHistogram, JGroups-raft, ...
In this session, we will explore how seemingly insignificant and often overlooked details in our code can significantly impact software performance, especially regarding concurrency. A two-decade-old JVM bug, initially discovered within Quarkus, is not a concern limited solely to low-level programmers; instead, it is a potential issue that could affect any codebase. 
We will provide a comprehensive explanation of this problem, detailing how we identified and successfully addressed it in Drools, one of the most widely-used rule engines in the Java ecosystem. We will also introduce specific tools that every developer can employ to enhance their code's performance. Lastly, we’ll analyze the new features of Java 21 to see if they’re affected by the same problem.
How many times have you implemented a clever performance improvement, and maybe put it in production, because it seemed the right thing™ to do, without even measuring the actual consequences of your change? And even if you are measuring, are you using the right tools and interpreting the results correctly? During this workshop we will use a real-world example, the new virtual threads friendly Jackson objects pool used in Quarkus, to demonstrate how through incremental steps we measured and improved its performances in a highly concurrent environment. We will illustrate how we used JMH for this purpose, explaining why it is the only reliable tool to be used when benchmarking Java applications, how to avoid the most common pitfalls and how to leverage its features to develop meaningful and useful benchmarks.