▶Book Description
While writing an application, performance is paramount. Performance tuning for real-world applications often involves activities geared toward detecting bottlenecks. The recent release of Spring 5.0 brings major advancements in the rich API provided by the Spring framework, which means developers need to master its tools and techniques to achieve high performance applications.
Hands-On High Performance with Spring 5 begins with the Spring framework's core features, exploring the integration of different Spring projects. It proceeds to evaluate various Spring specifications to identify those adversely affecting performance. You will learn about bean wiring configurations, aspect-oriented programming, database interaction, and Hibernate to focus on the metrics that help identify performance bottlenecks. You will also look at application monitoring, performance optimization, JVM internals, and garbage collection optimization. Lastly, the book will show you how to leverage the microservice architecture to build a high performance and resilient application.
By the end of the book, you will have gained an insight into various techniques and solutions to build and troubleshoot high performance Spring-based applications.
▶What You Will Learn
⦁ Master programming best practices and performance improvement with bean wiring
⦁ Analyze the performance of various AOP implementations
⦁ Explore database interactions with Spring to optimize design and configuration
⦁ Solve Hibernate performance issues and traps
⦁ Leverage multithreading and concurrent programming to improve application performance
⦁ Gain a solid foundation in JVM performance tuning using various tools
⦁ Learn the key concepts of the microservice architecture and how to monitor them
⦁ Perform Spring Boot performance tuning, monitoring, and health checks
▶Key Features
⦁ Understand common performance pitfalls and improve your application's performance
⦁ Build and deploy strategies for complex applications using the microservice architecture
⦁ Understand internals of JVM - the core of all Java Runtime Environments
▶Who This Book Is For
This book is suitable for Spring developers who would like to build high-performance applications and have more control over their application's performance in production and development. This book requires developers to have some familiarity with Java, Maven, and Eclipse.
▶What this book covers
⦁ Chapter 1, Exploring Spring Concepts, focuses on gaining a clear understanding of the core features of Spring Framework. It briefly outlines the Spring modules and explores the integration of different Spring projects, and gives a clear explanation of the Spring IoC container. It ends by introducing the new features of Spring 5.0.
⦁ Chapter 2, Spring Best Practices and Bean Wiring Configurations, explores different bean wiring configurations with Java, XML, and annotations. The chapter also helps us learn different best practices when it comes to bean wiring configuration. It also helps us understand performance assessment with different configurations, as well as DI pitfalls.
⦁ Chapter 3, Tuning Aspect-Oriented Programming, explores the concepts of the Spring Aspect- Oriented Programming (AOP) module and its various terminologies. It also covers the concept of proxy. It ends by going through the best practices for achieving quality and performance with the Spring AOP module.
⦁ Chapter 4, Spring MVC Optimization, starts by giving a clear understanding of the Spring MVC module with different Spring MVC configuration methods. It also covers the concept of asynchronous processing in Spring. Then it explains Spring Security configuration and authentication part with a stateless API. It finishes by going through the monitoring part of Tomcat with JMX, and Spring MVC performance improvements.
⦁ Chapter 5, Understanding Spring Database Interactions, helps us learn about database interaction with Spring Framework. It then walks through Spring transaction management and optimal connection pooling configuration. It ends by going through database design best practices.
⦁ Chapter 6, Hibernate Performance Tuning and Caching, describes some of the advanced ways of accessing the database using ORM frameworks, such as Hibernate. It ends by explaining how we can remove the boilerplate code of implementing the Data Access Object (DAO) interface using Spring Data.
⦁ Chapter 7, Optimizing Spring Messaging, starts by exploring the concepts of messaging in Spring and talks through its advantages. It then walks through the RabbitMQ configuration for using messaging in the Spring application. Finally, it describes the parameters for improving the performance and scalability to maximize throughput.
⦁ Chapter 8, Multithreading and Concurrent Programming, covers the core concepts of Java threads and advanced thread support. It also covers the concept of Java thread pooling to improve performance. Before its close, it will explore Spring transaction management with threads and various best practices for programming threads.
⦁ Chapter 9, Profiling and Logging, focuses on concepts surrounding profiling and logging. This chapter starts by defining profiling and logging and how they are useful for assessing application performance. In the latter part of the chapter, the focus will be on learning about software tools that can be used to study application performance.
⦁ Chapter 10, Application Performance Optimization, focuses on optimizing application performance. It also covers details for identifying the symptoms of performance issues, the performance tuning life cycle, and JMX support in Spring.
⦁ Chapter 11, Inside JVM, walks through the insides of JVM and tuning JVM to achieve high performance. It also covers the topics related to memory leaks and common misunderstandings related to garbage collection, before moving onto different garbage collection methods and discussion of their importance.
⦁ Chapter 12, Spring Boot Microservice Performance Tuning, covers the concept of Spring Boot microservices and their performance tuning. It also clearly describes how to use actuators and health checks in order to monitor Spring Boot applications. It also covers the different techniques in order to tune the performance of Spring Boot applications.