<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/tags/performance/</link><description>Recent content in Performance on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 16 Apr 2026 07:00:00 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/tags/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>Kotlin kontra Java - Part 1 - Ecosystem</title><link>https://javapro-en.svenruppert.com/kotlin-kontra-java-part-1-ecosystem/</link><pubDate>Thu, 16 Apr 2026 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/kotlin-kontra-java-part-1-ecosystem/</guid><description>&lt;p&gt;When you start a new project on the JVM, should you pick Java or Kotlin?&lt;/p&gt;
&lt;p&gt;Kotlin is used by Amazon, Atlassian, Duolingo, Google, JetBrains, Meta, Netflix, Uber and many more. Java is used by, well, &lt;a href="https://blogs.oracle.com/connect/25-years-java-technology-community-family"&gt;„more than 3 billion devices“&lt;/a&gt;. Which one provides the biggest benefit, which one can give us an edge, which one should we pick?&lt;/p&gt;
&lt;p&gt;After 20 years of building systems in Java and 8 years of doing the same in Kotlin, I’ve seen Kotlin earn its reputation as a natural evolution of Java. Rightfully so. Much of what we need can be expressed very cleanly with little verbosity.&lt;/p&gt;</description></item><item><title>Java Performance Optimization with Agentic AI: Autonomous Diagnostics and Actionable Recommendations</title><link>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</link><pubDate>Tue, 07 Apr 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/java-performance-optimization-with-agentic-ai-autonomous-diagnostics-and-actionable-recommendations/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1050952"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Java performance diagnosis in production is manual, slow, and requires deep expertise. You get a Grafana alert, grab a thread dump, download a JFR recording, open it in JDK Mission Control, stare at flamegraphs, correlate with metrics — hours of work per incident. Most teams don&amp;rsquo;t have a dedicated performance engineer, so alerts get ignored or result in generic &amp;ldquo;add more replicas&amp;rdquo; responses.&lt;/p&gt;
&lt;p&gt;We built a system that does this autonomously. When a monitoring alert fires, it collects profiling data and thread dumps, extracts runtime metrics, generates flamegraphs, and sends everything to an AI model that produces a structured performance report — including root cause analysis and concrete code fixes with file paths and line numbers from the actual source repository. The pipeline runs on Kubernetes, triggered by Grafana webhooks, with results stored in Amazon S3.&lt;/p&gt;</description></item><item><title>Virtual Threads, Structured Concurrency and Scoped Values: Putting it all together</title><link>https://javapro-en.svenruppert.com/virtual-threads-structured-concurrency-and-scoped-values-putting-it-all-together/</link><pubDate>Thu, 19 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/virtual-threads-structured-concurrency-and-scoped-values-putting-it-all-together/</guid><description>&lt;p&gt;In this article we are going to discuss Virtual Threads, Structured Concurrency and Scoped Values, the three main features of Project Loom and see how we can put them all together, in a web application. We will create a Spring Boot application and then add these features one by one to see how these features fit together nicely enabling us to write readable concurrent programs.&lt;/p&gt;
&lt;h2 id="what-is-project-loom"&gt;&lt;strong&gt;What is Project Loom?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Project Loom is one of the most important projects at Open JDK. The purpose of Project Loom is to provide high throughput, lightweight concurrency, which is also easy to use. It does so by providing three features: virtual threads, structured concurrency and scoped values. Virtual threads are lightweight, high-throughput threads that scale effortlessly. Structured concurrency is a streamlined approach to managing concurrent tasks as a single unit of work and scoped values are a modern alternative to &lt;code&gt;ThreadLocal&lt;/code&gt;, designed for virtual threads.&lt;/p&gt;</description></item><item><title>the runtime illusion: what Java really runs</title><link>https://javapro-en.svenruppert.com/the-runtime-illusion-what-java-really-runs/</link><pubDate>Wed, 18 Feb 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-runtime-illusion-what-java-really-runs/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/08/bluetab-capabilities-data-ai-products_cmyk300-1024x576.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Java&amp;rsquo;s bytecode is made abstract to be portable and neutral from specific hardware. Yet in production, it performs with the precision of native code. How? The secret lies in the JIT compiler, a near magical blend of static analysis and real-time insights. It reinterprets, restructures and often reinvents the code based on the runtime behaviour. This article traces that silent transformation using the Semeru (OpenJ9) JIT, following a method from source to bytecode to intermediate representation and ultimately to highly optimised machine code. You will be amazed to see how your logic is optimized beyond recognition. What you write is not always what runs, and what runs is often much better version of what you imagined.&lt;/p&gt;</description></item><item><title>Can GenAI Help Reduce Energy Used by Java Code?</title><link>https://javapro-en.svenruppert.com/can-genai-help-reduce-energy-used-by-java-code/</link><pubDate>Fri, 13 Feb 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/can-genai-help-reduce-energy-used-by-java-code/</guid><description>&lt;p&gt;Some recent studies show that IT is emitting &lt;a href="https://www.globenewswire.com/news-release/2022/05/31/2453416/0/en/The-Carbon-Footprint-of-Brands-Online-Advertising-Campaigns-is-Significant-fifty-five-Study-Reveals.html"&gt;more CO2 than civil aviation&lt;/a&gt;! As software developers, there is something we can do: optimising our code. &lt;strong&gt;Making our code run more efficiently should reduce the carbon footprint of IT.&lt;/strong&gt; It will consume less CPU, RAM, disk, and network. Hardware being powered by electricity, these optimisations should reduce our electricity bills and lower emissions due to generation of that electricity. Optimised software also extends hardware lifespan by reducing the need for upgrades, diminishing the embodied carbon from manufacturing and avoiding raw material extraction (e.g., rare earths mining).&lt;/p&gt;</description></item><item><title>Mastering Memory Efficiency with Compact Object Headers in JDK 25</title><link>https://javapro-en.svenruppert.com/mastering-memory-efficiency-with-compact-object-headers-in-jdk-25/</link><pubDate>Tue, 10 Feb 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/mastering-memory-efficiency-with-compact-object-headers-in-jdk-25/</guid><description>&lt;p&gt;Compact Object Headers are introduced in JDK 25 through JEP 519, marking a significant step forward for memory optimization in the JVM. First introduced experimentally in JEP 450 with JDK 24, this feature, authored by Roman Kennke, reduces the per-object memory footprint without slowing down performance. &lt;/p&gt;
&lt;p&gt;The payoff is especially clear in object-heavy workloads and memory-constrained environments, such as those found in containers and cloud-native deployments.&lt;/p&gt;
&lt;p&gt;In JDK 25, Compact Object Headers graduate from experimental to standard. However, they’re not enabled by default. Developers must turn them on using JVM flags to see the benefits.&lt;/p&gt;</description></item><item><title>Houston, we have problems with the queries</title><link>https://javapro-en.svenruppert.com/houston-we-have-problems-with-the-queries/</link><pubDate>Thu, 29 Jan 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/houston-we-have-problems-with-the-queries/</guid><description>&lt;h2 id="introduction"&gt;introduction&lt;/h2&gt;
&lt;p&gt;Most developers build queries to access a relational database, using some ORM in different ways to generate the query automatically or write the query manually. Everything could work in most cases in other environments, but at some point, the query becomes slow, or the application takes more time to execute the same task that it did in the past. At this point, the developers, QA, and many others waste a lot of time understanding the change that produced the problem in the last commits, but why not create a test that detects some issues with performance before they appear?&lt;/p&gt;</description></item><item><title>No Deadlocks in MongoDB: Atomic Documents and Retries with Spring Data MongoDB</title><link>https://javapro-en.svenruppert.com/no-deadlocks-in-mongodb-atomic-documents-and-retries-with-spring-data-mongodb/</link><pubDate>Thu, 18 Dec 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/no-deadlocks-in-mongodb-atomic-documents-and-retries-with-spring-data-mongodb/</guid><description>&lt;p&gt;Deadlocks are frequent in SQL databases, as normalization and two-phase locking (2PL) require locking multiple tables or rows during DML operations. Numerous use cases share them, and transactions might access data in a different order, resulting in circular waits and deadlocks. While databases can detect them, they can&amp;rsquo;t prevent or resolve deadlocks, as the application determines what is run and in what order. The best the database can do is cancel one statement or transaction, and let the application rollback and retry, which can reduce performance as systems wait several seconds before getting notified. As Oracle Database makes clear in the error log: &amp;ldquo;&lt;em&gt;It is a deadlock due to user error in the design of an application or from issuing incorrect ad-hoc SQL&lt;/em&gt;.&amp;rdquo; Most RDBMS use pessimistic locking to avoid conflicts, but deadlocks are unavoidable, and locking can increase latency. For instance, by default, DB2 waits 10 seconds for deadlock detection, SQL Server waits 5 seconds, Oracle waits 3 seconds, and YugabyteDB and PostgreSQL wait 1 second. These delays impact latency, but deadlock prevention remains the application&amp;rsquo;s responsibility. The only way to entirely prevent deadlocks is by avoiding locks altogether, as in MongoDB, which provides lock-free ACID transactions.&lt;/p&gt;</description></item><item><title>Next Generation Caching &amp; In-Memory Searching</title><link>https://javapro-en.svenruppert.com/next-generation-caching-and-in-memory-searching/</link><pubDate>Mon, 28 Jul 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/next-generation-caching-and-in-memory-searching/</guid><description>&lt;h2 id="when-traditional-databases-reach-their-limits"&gt;&lt;strong&gt;When Traditional Databases Reach Their Limits&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Enterprise applications frequently face performance bottlenecks that stem from the underlying persistence layer. Despite decades of database evolution, many core applications still struggle with latency, throughput, and architectural complexity. These issues are particularly evident in systems that depend on complex join operations across multiple tables, need to process unstructured data, or must execute cross-database queries spanning disparate systems to fulfill analytical workflows.&lt;/p&gt;
&lt;p&gt;In such environments, it is common to see a combination of various technologies being deployed in tandem: a traditional relational database, a distributed cache, a NoSQL database, and sometimes a dedicated search server such as Elasticsearch. While each of these systems addresses a specific technical challenge, their co-existence leads to architectural fragmentation, high infrastructure costs, duplicated data models, and increased development and maintenance efforts. Moreover, the overall latency and resource usage often remain suboptimal due to inherent I/O-bound limitations and serialization overheads between systems.&lt;/p&gt;</description></item><item><title>EclipseStore: The Evolution of Java Persistence</title><link>https://javapro-en.svenruppert.com/eclipsestore-the-evolution-of-java-persistence/</link><pubDate>Mon, 12 May 2025 11:24:29 +0000</pubDate><guid>https://javapro-en.svenruppert.com/eclipsestore-the-evolution-of-java-persistence/</guid><description>&lt;p&gt;Database development in Java has always been a challenge, often feeling like a battle against mismatched paradigms. From the start, developers wrestled with complex mappings and performance bottlenecks when integrating Java with databases. EclipseStore, an open-source project under the Eclipse Foundation, was created to change this. Its mission is to deliver a Java-native persistence layer that feels like an integral part of the language, not a workaround for database limitations. By storing Java objects directly, it aims to simplify and accelerate development, aligning persistence with Java’s core strengths.&lt;/p&gt;</description></item><item><title>IBM Architect Mark Stoodley Reveals JVM Optimization Techniques</title><link>https://javapro-en.svenruppert.com/ibm-architect-mark-stoodley-reveals-jvm-optimization-techniques/</link><pubDate>Wed, 07 May 2025 10:17:14 +0000</pubDate><guid>https://javapro-en.svenruppert.com/ibm-architect-mark-stoodley-reveals-jvm-optimization-techniques/</guid><description>&lt;p&gt;Slow Java startups, repeated JIT compilations, high CPU load: these factors are not just performance issues — they also drive up infrastructure costs and increase the energy consumption of applications. At &lt;a href="https://2025.europe.jcon.one/"&gt;&lt;strong&gt;JCON EUROPE 2025&lt;/strong&gt;&lt;/a&gt;, developers will have a rare opportunity: &lt;strong&gt;Mark Stoodley&lt;/strong&gt;, Chief Architect for Java at IBM, travels from Canada to personally lead an exclusive workshop. The title: &lt;strong&gt;“&lt;a href="https://schedule.jcon.one/session/890995"&gt;Ultra Efficient Startup for Production Java Workloads&lt;/a&gt;”&lt;/strong&gt; — a hands-on format demonstrating how to run JVM-based production applications more efficiently, faster, and with lower resource consumption.&lt;/p&gt;</description></item><item><title>Optimizing Java Performance: Caching with Core Java Instead of Complex Frameworks</title><link>https://javapro-en.svenruppert.com/optimizing-java-performance-caching-with-core-java-instead-of-complex-frameworks/</link><pubDate>Mon, 05 May 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/optimizing-java-performance-caching-with-core-java-instead-of-complex-frameworks/</guid><description>&lt;p&gt;Slow Java applications are a well-known problem in many projects: delays caused by ORM, complicated caching structures, and overloaded databases slow down performance. At &lt;a href="https://2025.europe.jcon.one/"&gt;JCON EUROPE 2025&lt;/a&gt;, the two-hour workshop “&lt;a href="https://schedule.jcon.one/?selectedSession=797351"&gt;High-Performance Caching with Pure Java: Supercharge Your Sluggy Database Application&lt;/a&gt;” will show how to specifically solve these problems — exclusively with Core Java, without additional frameworks or cloud services.&lt;/p&gt;
&lt;h2 id="hands-on-caching-and-queries-at-maximum-speed"&gt;Hands-on: Caching and Queries at Maximum Speed&lt;/h2&gt;
&lt;p&gt;Participants will learn how to develop a high-performance caching and query layer themselves — lean, memory-efficient, and directly in Java. The goal is to eliminate typical performance bottlenecks in database-based applications and increase system speed many times over.&lt;/p&gt;</description></item><item><title>Dynamic Caching for Massive Workloads: Pure Java Solutions First-Hand</title><link>https://javapro-en.svenruppert.com/dynamic-caching-for-massive-workloads-pure-java-solutions-first-hand/</link><pubDate>Tue, 29 Apr 2025 08:54:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/dynamic-caching-for-massive-workloads-pure-java-solutions-first-hand/</guid><description>&lt;p&gt;Many Java developers encounter the limitations of traditional caching and database solutions when dealing with large amounts of data and dynamically growing workloads. Heavyweight systems often prevent flexible scaling or unnecessarily increase infrastructure costs.&lt;/p&gt;
&lt;p&gt;The session &lt;strong&gt;&amp;quot;&lt;a href="https://schedule.jcon.one/session/851487"&gt;High-Performance Caching with Pure Java – Part 2: Managing Gigantic Workloads&lt;/a&gt;&amp;quot;&lt;/strong&gt; at JCON EUROPE 2025 presents an approach that does things differently: Instead of complex architectures, this approach relies on pure Java – lean, scalable, and powerfull.&lt;/p&gt;</description></item><item><title>Speed Up Existing Deployments with the Right JVM Features</title><link>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</link><pubDate>Thu, 17 Apr 2025 09:33:21 +0000</pubDate><guid>https://javapro-en.svenruppert.com/speed-up-existing-deployments-with-the-right-jvm-features/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6628huqjF9s&amp;amp;list=PLFeSAZzYdUodZjQy6a3pCBl43UUem8_E3&amp;amp;index=14"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2025/04/Magazin-Artikel-Banner-2-1024x214.jpg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In today&amp;rsquo;s tech landscape, Java applications face a critical challenge. Organizations need to meet growing performance demands while keeping infrastructure costs under control, without costly redevelopment efforts.&lt;/p&gt;
&lt;p&gt;This challenge has intensified with cloud computing adoption. Every millisecond of latency and every megabyte of memory now directly impacts ongoing expenses. The numbers are striking: based on my experience, poorly configured JVMs typically can increase cloud costs by 30-50%. For large enterprises, this represents millions in avoidable expenses.&lt;/p&gt;</description></item><item><title>1 Billion RECORD CHallenge - AI Style</title><link>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</link><pubDate>Thu, 07 Nov 2024 10:05:34 +0000</pubDate><guid>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</guid><description>&lt;p&gt;&lt;strong&gt;Previously …&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I recently &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;wrote&lt;/a&gt; about my experiences with getting AI coding tools to find bugs and write tests.  I picked five different tools. The selection criteria were simple - free or trial with no credit card needed.  I chose three tools designed to help developers and two general-purpose LLMs.  &lt;/p&gt;
&lt;p&gt;I gave them a 1000-line Java program and asked them to do three things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Javadoc to explain what the code did&lt;/li&gt;
&lt;li&gt;Analyse the code for bugs and design weaknesses&lt;/li&gt;
&lt;li&gt;Create Junit testcases that would provide reasonable code coverage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The results were disappointing but, in hindsight, predictable.  Overall, the tools were better at creating documentation than finding bugs and, apart from one, were pretty poor at writing test cases.  &lt;/p&gt;</description></item></channel></rss>