Book Image

Java EE 8 High Performance

By : Romain Manni-Bucau
Book Image

Java EE 8 High Performance

By: Romain Manni-Bucau

Overview of this book

The ease with which we write applications has been increasing, but with this comes the need to address their performance. A balancing act between easily implementing complex applications and keeping their performance optimal is a present-day need. In this book, we explore how to achieve this crucial balance while developing and deploying applications with Java EE 8. The book starts by analyzing various Java EE specifications to identify those potentially affecting performance adversely. Then, we move on to monitoring techniques that enable us to identify performance bottlenecks and optimize performance metrics. Next, we look at techniques that help us achieve high performance: memory optimization, concurrency, multi-threading, scaling, and caching. We also look at fault tolerance solutions and the importance of logging. Lastly, you will learn to benchmark your application and also implement solutions for continuous performance evaluation. By the end of the book, you will have gained insights into various techniques and solutions that will help create high-performance applications in the Java EE 8 environment.
Table of Contents (12 chapters)

Java EE and the resources

With Java EE, you will likely have a lot of volatile objects (with a short lifespan) that are bound to a request. If we take QuoteResource, we will first allocate our JSON model, then our entity model, and so on. All these instances will be needed for the request only and nothing more. Thus, the garbage collector will quickly collect them. The garbage collector is quite good for such dynamic applications. However, it doesn't mean that we do not have long living instances. Even without an application cache, the server caches a lot of metadata to ensure that it works and runs fast. One example is the CDI container, which will keep the metadata of all the beans in the memory to make sure that it can create them when requested by the application. This takes memory and will never be released until the application is not deployed. This means that by tuning...