Cover image for Java EE 7 Performance Tuning and Optimization.
Java EE 7 Performance Tuning and Optimization.
Title:
Java EE 7 Performance Tuning and Optimization.
Author:
Oransa, Osama.
ISBN:
9781782176435
Personal Author:
Physical Description:
1 online resource (555 pages)
Contents:
Java EE 7 Performance Tuning and Optimization -- Table of Contents -- Java EE 7 Performance Tuning and Optimization -- Credits -- About the Author -- Acknowledgments -- About the Reviewers -- www.PacktPub.com -- Support files, eBooks, discount offers, and more -- Why subscribe? -- Free access for Packt account holders -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Getting Started with Performance Tuning -- Understanding the art of performance tuning -- Understanding performance issues -- Classifying performance issues by the discovery phase -- Requirement phase and design-time issues -- Development-time issues -- Testing-time issues -- Production-time issues -- Classifying performance issues by the root phase -- Requirement phase issues -- Design/architecture phase issues -- Development phase issues -- Testing phase issues -- Operational and environmental-specific issues -- Performance-handling tactics -- Proactive measures (preventive) -- Reactive measures (curative) -- Understanding the different layers of an enterprise application -- The three pillars required for performance tuning -- Define the performance process -- Getting ready with the required performance tools -- Being ready to deal with performance issues at any time -- The cycle of learning -- Tuning yourself before tuning the application -- Be a true leader -- Use your power -- Be responsible -- Trust your team -- Keep it simple -- Respect roles and responsibilities -- Understand the application domain and context -- Protect your reputation -- Standalone applications versus web applications -- The standalone application -- Thick client application - client-server model.

Thin client application - web-based model -- Dealing with web applications' performance tuning -- The two dimensions of web applications' performance tuning -- Horizontal dimension (node-to-node) -- Vertical dimension (intranode) -- Exploring vertical dimension nodes in horizontal dimension nodes -- Client side -- Network components -- HTTP servers (web servers) -- Application servers -- Database servers -- Middleware integration servers -- Operating system and hardware -- CPU utilization -- Network traffic -- Memory usage -- Storage I/O performance -- Summary -- 2. Understanding Java Fundamentals -- Discussing the new Java EE 7 features -- Bean Validation 1.1 (JSR 349) -- Java API for JSON processing - JSON-P 1.0 (JSR 353) -- Java API for RESTful web services - JAX-RS 2.0 (JSR 339) -- Java Servlet 3.1 (JSR 340) -- Context and Dependency Injection - CDI 1.1 (JSR 346) -- Interceptors 1.2 (JSR 318) -- Enterprise JavaBeans - EJB 3.2 (JSR 345) -- Java Message Service - JMS 2.0 (JSR 343) -- Concurrency Utilities 1.0 (JSR 236) -- Batch Applications 1.0 (JSR 352) -- Java Persistence APIs - JPA 2.1 (JSR 338) -- JavaServer Faces - JSF 2.2 (JSR 344) -- Expression language 3.0 (JSR 341) -- Java Transaction APIs - JTA 1.2 (JSR 907) -- Java API for WebSocket 1.0 (JSR 356) -- Understanding memory structure in the JVM -- The JVM specifications -- Heap area -- Method area and runtime constant pool -- JVM stack -- Native method stacks (C stacks) -- PC registers -- Memory structure in the Java HotSpot virtual machine -- Generational memory structure -- The Java HotSpot virtual machine generations -- Understanding the Java garbage collection policies -- Different GC options -- Concurrent versus stop-the-world -- Serial versus parallel collector -- Compacting versus non-compacting -- Summary phase -- Compacting phase -- The Garbage-first collector - G1.

Different application scopes -- Understanding concurrency in Java -- Process versus thread -- Exploring an object monitor -- Using the Java concurrency utilities -- Creating a thread pool -- Using explicit locking with the Lock interface -- Concurrent resources and utilities -- The ManagedExecutorService class -- The ManagedScheduledExecutorService class -- The ManagedThreadFactory class -- The important Java EE concurrency features -- The SingleThreadModel interface -- Asynchronous servlet and filter -- The new Java EE non-blocking I/O APIs -- Session beans asynchronous method invocation -- A singleton session bean -- Sending asynchronous JMS messages -- More information about Java EE 7 -- Summary -- 3. Getting Familiar with Performance Testing -- Dissecting performance testing -- Exploring performance testing aspects -- Selecting the performance test environment -- Project milestones and performance -- Defining different rules and responsibilities -- Performance testing types -- Load testing -- Stress testing -- Capacity testing -- Performance testing components -- Test data -- Test users -- Test scenarios -- Preparing the test environment prior to test execution -- Test automation -- Test quality assurance -- Performance testing tools -- Performance benchmarking and baseline -- Isolation testing -- Performance fixing cycle -- When to stop tuning? -- Performance testing terminologies -- Performance testing in a cloud environment -- Starting with Apache JMeter -- Different components of the JMeter test plan -- The execution order of components -- Testing with JMeter -- Using JMeter to test web services -- Creating a thread group -- Creating the SOAP sampler -- Creating listeners -- Adding an assertion on response -- Adding the CSV dataset configuration -- Getting the final results -- Using JMeter to test a web application.

Recording our testing scenarios -- Creating thread groups -- Creating a configuration element -- Creating a recording controller -- Creating a workbench server (HTTP(s) Test Script Recorder) -- Updating browser settings -- Start recording our journeys/scenarios -- Adding cookie control -- Adding a CSV dataset -- Adding variables to our requests -- Adding suitable thinking time -- Adding response assertions -- Adding results view -- Executing our test plan and getting the results -- Using JMeter to test database scripts -- Configuring the JDBC connection -- Adding a JDBC request sampler -- Adding a CSV dataset configuration -- Adding listeners to capture test results -- Summary -- 4. Monitoring Java Applications -- Exploring the Java monitoring tools -- The operating system monitoring tools -- The Microsoft Windows tools -- The Unix/Linux tools -- An example of high CPU utilization -- The Java monitoring tools -- The JDK monitoring tools -- The monitoring tools for application servers -- The IDE monitoring tools -- The standalone monitoring tools -- The multifunction monitoring tools -- Understanding the profiling tools -- Profilers modes -- JVM TI -- Profiler agent -- The command-line options -- Agent start-up -- Different profiling patterns -- What we need to know from this section -- Understanding the different JDK tools -- The monitoring tool for Java virtual machine statistics -- The JVM memory map tool -- The Java heap analysis tool -- The Java monitoring and management console tool -- Java VisualVM -- Oracle Java Mission Control -- Starting with the NetBeans profiler -- The NetBeans profiler calibration -- Using the NetBeans profiler -- The Eclipse tools/plugins -- The JVM monitor -- The Test and Performance Tools Platform -- Advanced profiler - JProfiler -- Using the offline profiling mode -- Building our script using JProfiler triggers.

Further reading -- Summary -- 5. Recognizing Common Performance Issues -- Going through a slow response time umbrella -- Isolating the issue -- Client side -- HTTP server side (web servers) -- Application server issue -- Database server issue -- Integrated systems -- Networking components -- Code and script analysis -- Profiling the application -- Common performance issues -- Threading performance issues -- Memory performance issues -- Algorithmic performance issues -- Work as designed performance issues -- Interfacing performance issues -- Miscellaneous performance issues -- Fake performance issues -- Threading performance issues -- Blocking threads -- Performance symptoms -- An example of thread blocking -- Thread deadlock -- Memory performance issues -- Memory leakage -- Performance symptoms -- An example of memory leakage -- Improper data caching -- Improper caching issue types -- No caching (disabled caching) -- Too small caching size -- Too big caching size -- Using the wrong caching policy -- Performance symptoms -- An example of improper caching techniques -- Work as designed performance issues -- Synchronous where asynchronous is required -- Performance symptoms -- An example of improper synchronous code -- Neglecting remoteness -- Performance symptoms -- An example of using remote calls as local calls -- Excessive serialization performance impact -- Performance symptoms -- An example of excessive serialization -- Object size impact -- Web services granularity impact -- Selected performance issues -- Unnecessary application logic -- Excessive application logging -- Database performance issues -- Missing proactive tuning -- Client-side performance issues -- Chrome developer tools -- Network analysis -- JavaScript profiling -- Speed Tracer -- Internet Explorer developer tools -- Firefox developer tools -- Navigating time specifications.

Summary.
Abstract:
The book adopts a step-by-step approach, starting from building the basics and adding to it gradually by using different tools and examples. The book sequence is easy to follow and all topics are fully illustrated showing you how to make good use of different performance diagnostic tools. If you are an experienced Java developer, architect, team leader, consultant, support engineer, or anyone else who needs performance tuning in your Java applications, and in particular, Java enterprise applications, this book is for you. No prior experience of performance tuning is required.
Local Note:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2017. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Electronic Access:
Click to View
Holds: Copies: