Overview
During this two day training course, participants learn the essential skills for improving the Java applications using sound coding techniques and best practices. The course enables participants to learn in a dynamic, hands-on learning environment under the guidance of an expert trainer.
What You'll Learn
- List possible metrics for measuring software performance
- Explain the effect of object-oriented design on software performance
- List an describe the 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 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 perspectives of performance
- Examine and work with Java language features that can impact performance
- Understand optimizing data structures in Java
- Choose the correct collection for the task
- Leverage the built in collections algorithm to enhance your code performance and security
- Examine the many Java 8 features to understand their impact on performance
Curriculum
- Memory management issues
- Memory consumption of Java data types
- CPU performance issues
- Threading issues
- Profiling and benchmarking
- Java Microbenching Harness (JMH)
- Code optimization techniques
- Design optimization techniques
- Creating and destroying objects
- Factory methods
- Impact of finalizers
- Classes and interfaces
- Immutability
- Composition vs. inheritance
- Exceptions
- Threading constructs to avoid
- Efficient strings and arrays
- Efficient use of collections
- Choosing a collection
- Tuning collection constructors
- Performance across Java versions
- Impact of Java 8 concurrency updates
- Tiered compilation
- Nashorn vs. Java 7’s JavaScript engine
- Lambda expressions vs. Inner classes
- Impact of streams vs. collections
- Date/time classes
- I/O stream recommendations
- Encoding/decoding
- String and spring interning
Who should attend
This is an intermediate level Java SE (JSE) developer course targeted towards experienced Java developers. It is highly recommended for –
- Java developers
- Software developers
- Application developers
- DevOps developers
- Software engineers
- Full stack developers
Prerequisites
Participants need to have current hands-on experience in developing basic Java 8 applications. They also need to have completed the following courses or have equivalent skills –
- Java programming fundamentals for OO experience developers
- Java 8 and OO programming essentials for developers new to OO