Java has been a mainstream technology for backend development for many years. Part of the reason behind this is its high stability in terms of APIs, hard backward-compatibility rules, offering a very stable and reliable backbone for any professional software, and its good performance.
The Java EE platform gives developers a flexible and powerful API that allows them to concentrate on the features more than on the technical challenges already solved by the platform. However, it doesn't mean that you should use it blindly and forget all about the work the container does for you; it would lead to a poorly behaving and unresponsive application.
When it comes to performance, Java EE is well-designed to let you get metrics, instrument your application, find any potential bottlenecks, enhance your application's performance to reach your expected Service Level Agreements (SLAs), and satisfy your customers and end users.
However, performance is often thought of as something we look at once the application is completely developed. This can be true for standalone applications, which are easy to optimize as they are self-contained. However, with the advent of microservices and distributed applications, you need to think of performance as a continuous process in order to avoid having to redevelop your application afterwards.
That is all this book is about—giving you the needed tools to be able to work on the performance of your Java EE application, ensure you benefit from the simplicity of the Java EE API without abusing of them and having bad surprises, ensure you think upfront of the whole application flow and not only on a subpart of the full system which can lead to local optimizations and global tragedies and finally, ensure you can continuously control your performances and thus work smoothly on them during all the development phase and succeed to deliver a high quality product.