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)

Logging invocations

Before looking at how to properly integrate loggers into your application using some common patterns, let's see what a logger invocation will trigger.

A simple logger invocation, like logger.info(message) , can be inspected to be represented as equivalent to the following steps:

  • Check if the level of the logger is active; if not, exit
  • Create a log record (set the message and level, initialize the source of the log, class, method, and so on)
  • Check if the message is filtered with a Filter; if the filter filters it, then exit
  • For all handlers, publish the log record to the handler:
    • Check the level of the handler versus the log record level, if not compatible then exit (note: this check is often done multiple times; it is fast because it is just an integer comparison)
    • Format the log record (convert it to a String)
    • Write the formatted message to the actual...