8117  Reviews star_rate star_rate star_rate star_rate star_half

Extreme Java - Advanced Topics

The "Extreme Java - Advanced Topics" Course is authored by Dr Heinz Kabutz, the publisher of The Java Specialists' Newsletter. It includes (under license) training material produced by...

Read More
$1,995 USD
Course Code JAV-407
Duration 2 days
Available Formats Classroom

The "Extreme Java - Advanced Topics" Course is authored by Dr Heinz Kabutz, the publisher of The Java Specialists' Newsletter. It includes (under license) training material produced by JavaPerformanceTuning.com. It is based on our bestselling Java Specialist Master Course. If you answer "yes!" to any of these questions, then this course is for you:

  • Would you like to learn some advanced techniques for writing Java code?
  • Would you like to understand Java NIO?
  • Would you like to understand the intricacies of Java memory, including tips on how to diagnose problems?
  • Have you ever wondered what possibilities exist in the reflection API?
  • Or wondered what data structures would be best suited to your application?
  • Or looked for better ways of managing exceptions?

Skills Gained

During this 2-day course, we will study over 300 slides of advanced Java topics. Each major section is followed by practical hands-on exercises to apply what you have learned. Even the most experienced Java programmer will be stimulated and challenged. This course is ideally suited to the professional Java programmer with at least 2 years experience, who would like to learn how to truly master the Java Programming Language.

Prerequisites

  • Previous Training: Preferably a formal qualification in computer science or related field.
  • Required Experience: At least two years of professional Java programming. Are you unsure whether you are ready for this course? Try our free Java Specialist Master Course Prep.

Course Details

Introduction

  • Welcome!
  • Course organization
  • Course overview

Java IO

  • 1. Object Streams and Serialization
  • Object Serialization
  • Simple Object Serialization
  • Serializable Fields
  • Resetting Streams
  • readObject() / writeObject()
  • Controlling Serialization
  • Serial Object Versioning
  • Overriding Versioning
  • Serialization Performance
  • Serialization Pitfalls
  • 2. Java New IO Package
  • Motivation for Using
  • Working with Buffers
  • Allocating Buffers
  • Buffers Advantages
  • Channels
  • Memory Mapped Files
  • Non-Blocking Operations

Java Memory

  • 1. Garbage Collection
  • Overview
  • Generational Spaces
  • GC Tasks
  • Heap Fragmentation
  • Escape Analysis
  • GC Pros and Cons
  • Measuring GC Activity
  • Performance
  • Object Size
  • 2. Tuning JVM
  • Performance Tuning
  • Memory Leaks
  • Loitering Objects
  • Object Churn
  • Heap Sizing
  • 3. Finalizers
  • How it works
  • Performance Implications
  • Other references

Reflection API

  • 1. Overview
  • Introduction
  • Usefulness of Reflection
  • Dangers of Reflection
  • Examining Classes
  • Reflection Package
  • Retrieving Class Objects
  • Working with Class Objects
  • Accessing fields
  • Accessing methods
  • 2. Manipulating Objects
  • Creating new objects
  • Getting and Setting Fields
  • Final fields
  • Invoking Methods
  • Working with Arrays

Data Structures

  • 1. Time Complexity
  • Algorithm Complexity
  • Examples from Java
  • 2. Iteration
  • Iterators
  • "for-each" iteration
  • Iterable interface
  • ConcurrentModification
  • CopyOnWrite Collections
  • 3. Hashing
  • How Hashing Works
  • JDK 1.4+ rehashing
  • Compound Keys
  • Linked Maps
  • 4. Sorting
  • Defining Natural Order
  • Comparators
  • Trees
  • 5. Queues
  • Queues
  • PriorityQueue
  • BlockingQueue
  • Deques

Exceptions

  • 1. Error Handling
  • Class Hierarchy
  • Exception Class
  • Error Class
  • 2. Best Practices
  • Checked vs. Unchecked
  • Avoid Custom Exceptions
  • Writing Good Exceptions
  • Wrap Low Level Exceptions
  • Avoid Catching "Programmer Bug" Exceptions
  • Performance of Exceptions
  • Chain Exceptions
  • Avoid Swallowing Exceptions
  • Cleanup After An Exception
  • Java 7 try-with-resource
  • Losing an Exception in finally
  • Never Abuse Exceptions for Flow Control
  • Throw Exceptions Early
  • Catch Exceptions Late
  • Good Throws Clauses
  • Document Exceptions
  • Unit Test Exceptions
  • 3. Assertions
  • Mechanism
  • "assert" Statement
  • When to Use
  • When Not to Use
  • JVM switches

Dates and Time Zones

  • 1. Computer Time
  • Time Synchronization
  • Human Time Interpretation
  • 2. Time in Java
  • Introduction
  • java.util.Date
  • JSR310 vs Joda Time
  • java.util.TimeZone
  • java.util.DateFormat

Logging

  • 1. Overview
  • Why log?
  • Principal Requirements
  • Main Logging APIs
  • 2. Best Practices
  • Defining Logging Scheme
  • Logging Levels
  • Log Messages Format
  • Centralized Logging
  • Code Guards
  • Exceptions
  • Reviewing Logging
  • 3. Impact on Performance
  • Unecessary Strings
  • Writing to Disk
  • Asynchronous Logging

Conclusion

  • Where to next?
  • Never stop learning!