Название: Optimizing Cloud Native Java: Practical Techniques for Improving JVM Application Performance, 2nd Edition (Final Release) Автор: Benjamin J. Evans, James Gough Издательство: O’Reilly Media, Inc. Год: 2025 Страниц: 497 Язык: английский Формат: True/Retail PDF, True EPUB (Retail Copy) Размер: 16.4 MB, 10.1 MB
Performance tuning is an experimental science, but that doesn't mean engineers should resort to guesswork and folklore to get the job done. Yet that's often the case. With this practical book, intermediate to advanced Java technologists working with complex platforms will learn how to tune Java cloud applications for performance using a quantitative, verifiable, and repeatable approach.
In response to the ubiquity of cloud computing, this updated edition of Optimizing Cloud Native Java addresses topics that are key to high performance of Java applications in the cloud. Many resources on performance tend to focus on the theory and internals of Java virtual machines, but this book discusses the low-level technical aspects within the context of performance-tuning practicalities and examines a wide range of aspects.
With this book, you will: • Learn how Java principles and technology make the best use of modern hardware, operating systems, and cloud stacks • Examine the pitfalls of measuring Java performance numbers and the drawbacks of microbenchmarking • Understand how to package, deploy, operate, and debug Java/JVM applications in modern cloud environments • Apply emerging observability approaches to obtain deep understanding of cloud native applications • Use Java language performance techniques including concurrent and distributed forms
Optimization is a game of “what,” and “why,” and “where,” but mostly “why.” Why is my application slow? Where is the time being spent? Why are so many resources being consumed? What metrics matter? What problem am I actually trying to solve? Why is this innocent-looking microbenchmark misleading? Why do my users need this?
Many of us are taught how to program Java, but very few of us are taught how to optimize Java. We may not even know that we need to be able to optimize—until we hit a problem. But optimization is important. There’s a saying that “slow is the new down”; outages are terrible, but sluggish performance is expensive, and annoying, and wasteful, and also pretty terrible. There’s also sustainability to think about; in general, optimized software consumes less energy and requires less hardware to run. The digital world has a substantial carbon footprint, but we can reduce that by optimizing.
But people are perhaps the most important reason to optimize. Slow applications frustrate users, and in the worst case, may even drive them—and their business—elsewhere. Studies have found even small deterioration in response times can reduce user satisfaction and retention rates.
So how do we make applications go faster? As Ben and James point out in this book, there are no magic fixes or one-click answers. Ben and James do not give a set of recipes for performance tweaks, for the very good reason that this kind of advice goes very stale, very quickly.
Instead, Ben and James focus on principles and methodologies. They begin by introducing the basic observables of performance: throughput, latency, capacity, utilization, efficiency, scalability, and degradation. It is important to know which of these matter to you, because you cannot optimize them all—or at least, not all at the same time. It’s exceedingly silly to spend time optimizing throughput if your users actually care about latency, or if the main challenge for your business is hardware costs. Performance is about compromise, and about chasing the right rabbit.
Who This Book Is For: Java performance optimization is of interest to several different groups of professionals, not just developers. As such, it is important that we provide on-ramps for people who may be coming from different backgrounds and approaching the subject with a different grounding.
The sorts of jobs that our readers might do include:
- Developers - Application support and operations staff - DevOps engineers - Architects
Each of these groups is likely to have a different focus and take on the material, but they all share a common interest in looking after production business applications in the cloud. They will need to understand the performance behavior of both a single-JVM application and a cloud-deployed, distributed system. In this book we will consider cloud deployments to be public cloud, private cloud, and also a mixture of the two. An awareness of performance methodology and the relevant aspects of statistics is also important, so that observability and other performance data can be accurately analyzed once it has been collected.
It is also to be expected that the majority of people who read this book will have a need for, or at least an interest in, some of the internals of the systems they support. This understanding is often very important when diagnosing certain types of performance problems, as well as being attractive to the intellectually curious engineer.