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)

Cache once

If we look back at our quote manager application, we have the following layers through which a request goes:

  • Servlet
  • JAX-RS
  • Service layer (@Transactional)
  • JPA

You can add some caching (such as JCache, not HTTP, which is more a client data management solution) to all the layers. On the Servlet side, you can cache the responses using the requests as key. In JAX-RS, you can do the same, but in a more business-oriented manner. In the service layer, you can use CDI JCache integration. And in JPA, you can use level 2 caching, which can be implemented with JCache or a provider-specific implementation—this generally just requires configuration to be set up so that the API is not very crucial.

However, if you configure the caching on all layers, it is likely that a part of the cache will be useless, and since all the layers will not have access to the same information...