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)

Writing performance tests – the pitfalls

Performance tests have some challenges you need to take into account when you write your tests to avoid having a lot of false positive results (not passing tests where the performance is actually acceptable).

The most common issues you will encounter are:

  • How to manage the external systems: We know that external systems are very important in applications today, but it is not always trivial to have them during tests.
  • How to be deterministic: Continuous integration/test platforms are often shared. How do you ensure you have the resources needed in order to have a deterministic execution time and to not be slown down, as another build is using all the available resources?
  • How to handle the infrastructure: To do an end-to-end test, you need multiple injectors (clients) and probably multiple backend servers. How do you ensure you have...