Contact Us

« Important Announcement » Contact Us 877-206-0106 | USA Flag

Thank you for your interest in LearnQuest.

Your request is being processed and LearnQuest or a LearnQuest-Authorized Training Provider will be in touch with you shortly.


Thank you for your interest in Private Training.

We look forward to helping you develop the perfect training solution to help you meet your company's goals.

For immediate assistance, speak with one of our representatives using the chat module below. Otherwise, LearnQuest or a LearnQuest-Authorized Training Provider will be in touch with you shortly.


Thank you for your interest in LearnQuest!

Now, you will be able to stay up-to-date on our latest course offerings, promotions, and training discounts. Watch your inbox for upcoming special offers.


Date: xxx

Location: xxx

Time: xxx

Price: xxx

Please take a moment to fill out this form. We will get back to you as soon as possible.

All fields marked with an asterisk (*) are mandatory.

Advanced Java Programming

2,925 USD
5 Days
Classroom Training, Online Training

AWS Training Pass

Take advantage of flexible training options with the AWS Training Pass and get Authorized AWS Training for a full year.

Learn More

Prices reflect a 22.5% discount for IBM employees.
Prices reflect a 24% discount for Kyndryl employees.
Prices reflect the Accenture employee discount.
Prices shown are the special AWS Partner Prices.
Prices reflect the Capgemini employee discount.
Prices reflect the UPS employee discount.
Prices reflect the ??democompanyname?? employee discount.
GSA Private/Onsite Price: ??gsa-private-price??
For GSA pricing, please go to GSA Advantage.

Class Schedule

Delivery Formats

Sort results

Filter Classes

Guaranteed to Run





    Sorry, there are no public classes currently scheduled in your country.

    Please complete this form, and a Training Advisor will be in touch with you shortly to address your training needs.

View Global Schedule

Course Description


This Advanced Java Programming course is designed to provide students with advanced training in developing software using the Java Platform, Standard Edition, or Java SE. It is intended for students with solid experience in structured and object-oriented Java programming, including use of the Collections API and exception handling. Generic types should be understood, at least at a basic level; the course does begin with a refresher and then a more advanced treatment of generic types.

After a quick introduction to the Java Time API, students get familiar with the I/O streams model, file handling, and object serialization, and learn to use streams to communicate over network sockets. A two-chapter unit covers multi-threaded programming and concurrency techniques. We look at dynamic typing in Java, in the Reflection API and with dynamic proxies, and understand the underpinnings of source-code annotations.


Upon completion of the Advanced Java Programming course, students will be able to:
  • Make effective use of Java generic types.
  • Understand the structure of streams in Java, and learn how to use streams to manage file I/O.
  • Learn how to use Java Serialization to internalize and externalize potentially complex graphs of objects.
  • Communicate between processes using network sockets.
  • Write multi-threaded Java applications that safely manage concurrent access to application state.
  • Use the Reflection API and dynamic proxies for highly generic tasks, discovery, or code-generation.
  • Use standard annotations and develop custom annotations to express meta-data in Java source files.
  • Build unit tests for Java classes using JUnit.
  • Write effective tests, and design classes for testability.
  • Understand test-driven development (TDD) and use dynamic mocking to support isolated testing.


  • Experienced Java programmers


    • Solid Java programming experience is essential -- especially object-oriented use of the language. Language features and techniques that are integral to some lab exercises include interfaces and abstract classes, threading, generics and collections, and recursive methods


  • Generics
    • Using Generics
    • Type Erasure
    • Type Boundaries
    • Wildcards
    • Generic Methods
    • Strengths and Weaknesses of Generics
    • Legacy Code and Generics
  • The Time API
    • A History of Time ... in Java
    • Limitations of Date and Calendar
    • The Time API
    • Temporal Types
    • Accessors and Adjusters
    • Formatting
    • Decomposition Into Fields
    • Date Arithmetic
    • Managing Precision
    • Duration and Period
    • Time Zones and Offsets
    • Converting Between Time Zones
  • The Java Streams Model
    • Delegation-Based Stream Model
    • InputStream and OutputStream
    • Media-Based Streams
    • Filtering Streams
    • Readers and Writers
    • Byte-Array Streams
    • String Readers and Writers
    • Closing Streams, Readers and Writers
  • Working with Files
    • The File Class
    • Modeling Files and Directories
    • File Streams
    • Working with File Systems
    • The Path Interface
    • The Paths and Files Utilities
    • Processing with
  • Delegating Streams
    • Buffering
    • Data Streams
    • Push-Back Parsing
    • Byte-Array Streams and String Readers and Writers
  • Java Serialization
    • The Challenge of Object Serialization
    • Serialization API
    • Serializable Interface
    • ObjectInputStream and ObjectOutputStream
    • The Serialization Engine
    • Transient Fields
    • readObject and writeObject
    • Externalizable Interface
  • Sockets
    • The OSI Reference Model
    • Network Protocols
    • The Socket Class
    • The ServerSocket Class
    • Connecting Through URL Objects
    • HTTP and Other TCP Servers
    • Datagram Clients and Servers
    • Non-Blocking Sockets
  • Threads
    • Java Thread Model
    • Creating and Running Threads
    • Manipulating Thread State
    • Thread Synchronization
    • Synchronized Blocks and Methods
    • wait and notify
    • join and sleep
    • Multi-Threading in Servers
  • Concurrency
    • The Concurrency API
    • Semaphore and Other Synchronizers
    • Concurrent Collections
    • Atomic Operations
    • Executor and ExecutorService
    • Thread Pools
    • Parallel Processing
  • Reflection
    • Uses for Meta-Data
    • The Reflection API
    • The Class<T> Class
    • The java.lang.reflect Package
    • Reading Type Information
    • Navigating Inheritance Trees
    • Dynamic Instantiation
    • Dynamic Invocation
    • Reflecting on Generics
  • Dynamic Proxies
    • The Proxy Pattern
    • Dynamic Proxies in Java
    • Use Cases
    • The InvocationHandler Interface
    • Proxy Classes
  • Annotations
    • Aspect-Oriented Programming and Java
    • The Annotations Model
    • Annotation Types and Annotations
    • Built-In Annotations
    • Annotations vs. Descriptors (XML)
  • Automated Unit Testing with JUnit
    • Automated Testing
    • JUnit and Related Tools
    • The @Test Annotation
    • The Assert Class Utility
    • Test Runners
    • Lifecycle Methods
    • Expecting Exceptions
    • Test Suites
  • Writing Tests
    • Test Granularity
    • Reusing Test Logic
    • Recording and Comparing Output
    • Test Isolation
    • Controlling the Test Environment
    • Managing Dependencies
    • Non-Invasive Testing
    • Designing for Testability
    • Factories
    • Testing and Threads
  • Test-Driven Development
    • Writing the Test First
    • The TDD Cycle
    • Advantages of TDD
    • Resistance to TDD
    • A Case Study
  • Mocking
    • Mock Objects in Testing
    • Mock Objects in Test-Driven Development
    • Static vs. Dynamic Mocks
    • Stubbing
    • Verifying
    • Matching and Capturing
    • Using a Spy
    • Partial Mocking
  • 2021 Top 20 Training Industry Company - IT Training

    Need Help?

    Call us toll free at 877-206-0106 or e-mail us at

    Personalized Solutions

    Need a personalized solution for your Training? Contact us, and one of our training advisors will help you find the best solution.

    Contact Us

    Need Help?

    Do you have a question about the courses, instruction, or materials covered? Do you need help finding which course is best for you? We are here to help!

    Talk to us

    20% Off All Cybersecurity Training Courses

    Arm yourself with the skills to safeguard against cyber threats.


    20% Off All Cybersecurity Training Courses

    Self-Paced Training Info

    Learn at your own pace with anytime, anywhere training

    • Same in-demand topics as instructor-led public and private classes.
    • Standalone learning or supplemental reinforcement.
    • e-Learning content varies by course and technology.
    • View the Self-Paced version of this outline and what is included in the SPVC course.
    • Learn more about e-Learning

    Course Added To Shopping Cart







    Self-Paced Training Terms & Conditions


    Sorry, there are no classes that meet your criteria.

    Please contact us to schedule a class.

    STOP! Before You Leave

    Save 0% on this course!

    Take advantage of our online-only offer & save 0% on any course !

    Promo Code skip0 will be applied to your registration

    Nothing yet
    here's the message from the cart

    To view the cart, you can click "View Cart" on the right side of the heading on each page
    Add to cart clicker.

    Purchase Information

    ??elearning-coursenumber?? ??coursename??
    View Cart

    Need more Information?

    Speak with our training specialists to continue your learning journey.


    Delivery Formats


    By submitting this form, I agree to LearnQuest's Terms and Conditions

    heres the new schedule
    This website uses third-party profiling cookies to provide services in line with the preferences you reveal while browsing the Website. By continuing to browse this Website, you consent to the use of these cookies. If you wish to object such processing, please read the instructions described in our Privacy Policy.
    Your use of this LearnQuest site affirms your consent to our use of session and persistent cookies to track how you use our website.