You’re Running Java Apps Wrong: Why Simply java -jar Is Not Enough

Most teams run Java apps with a simple java -jar app.jar and call it a day. But the JVM is a powerful runtime with a huge set of production features that can improve performance, startup time, memory usage, diagnostics, observability, and overall stability. In this livestream, Catherine is joined by Bruno Borges, Principal Product Manager at Microsoft, to discuss why the default way of running JVM-based applications is often not enough for real production workloads. We’ll explore which JVM settings, runtime features, and deployment practices can help you get more out of your Java apps without blindly throwing more CPU and memory at the problem. Try out jaz: https://learn.microsoft.com/en-us/jav... Connect with Bruno:   / brunocborges   00:00 – Welcome & Introductions 00:35 – What Does Microsoft Have to Do with Java? 04:07 – The Problem with java -jar in Production 06:18 – JVM Default Ergonomics: Why 25% Heap Is a Problem 09:36 – Introducing Jaz: A Smarter JVM Launcher 12:57 – Jaz Is an Abstraction — and That's the Point 14:02 – Real Data: 20% of Production Workloads Misconfigured 17:01 – Q&A: Can Java Achieve Sub-Millisecond Latency? 18:49 – Q&A: Is It Safe to Change JVM Defaults Without Looking at Code? 21:22 – Which JVM Metrics to Check First 23:46 – Diagnostics & Observability: JFR, VisualVM, GC Toolkit 24:29 – Can AI Tune the JVM? 26:32 – Fast Startup + Low Latency + High Throughput: All Three? 27:41 – Project Leyden, AppCDS & AOT Caching Explained 30:10 – Kubernetes: CPU Boost at Startup 37:14 – The Hardcoded Xmx Problem & How Jaz Solves It 42:55 – Benchmark Results: Jaz vs. java -jar 47:16 – Jaz Roadmap: AppCDS, AI-Driven Tuning, Project Leyden 48:30 – Live Demo: java -jar vs. jaz Side by Side 55:35 – Better JVM Settings = Stop Throwing Money at Replicas 59:04 – The Developer's Role in the AI Era 1:02:24 – Rapid-Fire Round with Bruno 1:03:57 – Wrap-Up