How To Take This Class

Course Overview

Java Performance Tuning is a two-day, lab-intensive course geared for experienced software developers who are looking to expand their knowledge and skills in the Java world. This course is highly customizable and draws from the extensive knowledge and content base to tune the course itself to the student needs.

Course Prerequisites

Attendees should be experienced Java developers who wish to get up and running with advanced skills immediately. This is a hands-on programming class.

Course Audience

This is an intermediate and beyond- level Java course,

What You'll Learn

Upon successful completion of this course, students will be able to:
  • List possible metrics for measuring software performance
  • Explain the effect of OO design on software performance
  • List and describe types of benchmarks and the criteria that should be considered when constructing a benchmark plan
  • Explore the most useful targets for profiling, and the most common tools/techniques for profiling
  • Describe two strategies for improving performance as a result of profiling data
  • List and explain the five most common problem areas for good performance with Java
  • Use the JDK to collect runtime profiling data
  • Successfully read the profiling data generated by the JDK to detect performance bottlenecks
  • Instrument your own code to collect method execution time data
  • Learn code optimization techniques relating to object management, exceptions, threads, and serialization
  • Understand the JVM Architecture from the perspective of performance
  • Examine and work with Java language features that can impact performance
  • Understand how XML is processed using Java
  • Best practices for improving XML processing performance
  • Best practices for improving web services performance
  • Impact of security and application defenses on performance
  • Tradeoff between defense and performance

Course Duration

2 Days

Course Outline

  1. Writing High Performance Applications
    • Performance: Process and Issues
    • Architecture of the JVM
    • Memory Management Issues
    • CPU Performance Issues
    • Threading Issues
    • Profiling and Benchmarking
    • Determining What to Profile
    • Determining What to Tune
    • Profiling Tools
    • Tactical vs. Strategic Optimization
    • Code Optimization Techniques
    • Design Optimization Techniques
    • Impact of Exceptions
    • Impact of Reflection
    • Using Profilers
    • Applying Code Optimization
    • Applying Design Optimization
  2. Effective Java
    • Creating and Destroying Objects
    • Factory Methods
    • Impact of Finalizers
    • Methods Common to Most Objects
    • Classes and Interfaces
    • Immutability
    • Composition vs. Inheritance
    • Exceptions
    • Managing Exceptions Efficiently
    • Threads
    • Impact of Synchronization
    • Threading Constructs to Avoid
    • Serialization
    • Impact of readObject()
  3. XML and Security
    • Working with XML in Java
    • Best practices for improving XML processing performance
    • How Performance is Affected by XML Structure and Use
    • Best practices for improving web services performance
    • Impact of security and application defenses on performance
    • Tradeoff between defense and performance
  4. J2EE Tuning (optional)
    • The Performance Tuning Guide
    • Basic Tuning Principles and Concepts
    • Establishing Performance Bounds
    • Server Tuning Options