Course Advanced Java Programming

  • Content
  • Training
  • Modules
  • General
  • Reviews
  • Certificate
  • Course Advanced Java Programming : Content

    In the course Advanced Java Programming a series of advanced aspects of Java are discussed. The course covers the topics that are asked for on the Oracle Certified Java Professional or OCP exam and is a good preparation to pass this exam.

    Advanced Classes

    In the first place attention is paid to aspects of Advanced Class Design such as the implementation of inheritance and composition, the use of polymorphism, interfaces, inner and anonymous classes and the singleton pattern.


    Next multithreaded applications are discussed and the synchronization between threads when accessing shared data. During the treatment of the concurrency package advanced synchronization mechanisms such as cyclic barriers and countdown latches are discussed.


    Also the functional language constructs introduced in recent Java versions are discussed with lambdas and functional interfaces.


    Next generics are on the course program with which classes and methods can be parameterized, strong typing is imposed and the chance of runtime errors is limited. Generics are used a lot in the Collection Framework and the most important container classes in this Framework are discussed.

    Stream API

    Next attention is paid to the Stream API that enables transformations on data collections to be performed by a combination of successive simpler methods like map and reduce.


    The various possibilities for dealing with errors and exceptions are also on the program and attention is paid to file I/O and new I/O when accessing files and directories.


    Database access with Java Database Connectivity (JDBC) is treated and queries, prepared statements and transactions are part of that.


    Finally, if time permits, reflection is optionally on the course program, with which compiled Java classes can be analyzed by means of software, and optionally various aspects of enhancing the Java performance are discussed.

  • Course Advanced Java Programming : Training

    Audience Course Advanced Java Programming

    The course Advanced Java Programming is intended for experienced Java developers who want to gain more in depth knowledge of Java.

    Prerequisites Course Advanced Java Programming

    Knowledge of the Java language and syntax and basic experience in Java programming is required to participate in this course.

    Realization Training Course Advanced Java Programming

    The theory is treated on the basis of presentations and is interspersed with exercises. Demos are used to clarify the theory. The course material is in English. The course times are from 9.30 up and to 16.30.

    Certification Course Advanced Java Programming

    Participants receive an official certificate Advanced Java Programming after successful completion of the course.

    Course Advanced Java Programming
  • Course Advanced Java Programming : Modules

    Module 1 : Advanced Class Design

    Module 2 : Multiple Threads

    Module 3 : Concurrency

    Encapsulation and Inheritance
    Implementing Composition
    Singleton Patterns
    Abstract Classes
    Final Classes
    Inner Classes
    Static Inner Classes
    Anonymous Inner Classes
    Autonomous Classes
    Enumerated Types
    Implementing hashCode and equals
    Java Thread Model
    Extending Thread Class
    Implementing Runnable
    Daemon Threads
    Thread Alive States
    Sleeping and Yielding Control
    Using join and interrupt
    Synchronized Statement
    Locking and Statics
    Condition Synchronization
    Using wait and notify
    Concurrency Package
    Task Scheduling Framework
    Executor Interface
    Callables and Futures
    Semaphores and Exchanger
    CountdownLatch and CyclicBarrier
    Concurrent Collections
    Lock Interface
    Reentrant Locks
    Atomic Variables

    Module 4 : Lambda's

    Module 5 : Generics

    Module 6 : Streams

    Passing Functionality
    Lambda Expressions
    Lambda Variable Access
    Lambda Scoping Rules
    Functional Interfaces
    Predicate Interface
    Consumer Interface
    Supplier Interface
    Function Interface
    UnaryOperator Interface
    BinaryOperator Interface
    Method References
    User Defined Functional Interfaces
    Type Erasure and Raw Types
    Generics and Subtyping
    Bounded Type Parameters
    Generics in Collections
    ArrayList and LinkedList
    TreeSet and Hash Set
    HashMap and TreeMap
    Comparable and Comparator
    Collections Streams and Filters
    Iteration using forEach
    Filtering using Lambda's
    Stream Pipeline
    What are Streams?
    Lazy Evaluation and Parallelization
    forEach, Map and Filter
    findFirst and findAny
    toArray and collect
    Optional Class
    Limiting Stream Size
    allMatch and anyMatch
    Number Specialized Streams
    Parallel and Infinite Streams
    collect Method
    Grouping with Collectors class
    Using flatMap Method

    Module 7 : Exception Handling

    Module 8 : Java IO and NIO

    Module 9 : Database Access

    Errors and Exceptions
    Checked and Unchecked Exceptions
    Exception Hierarchy
    Multiple Catch Clauses
    finally Clause
    try with Resources
    Auto Closeable Resources
    Common Exceptions
    Throwing Exceptions
    User Defined Exceptions
    Chained Exceptions and Stack Traces
    Standard I/O Streams
    Reading and Writing Files
    Buffered Streams
    Data Conversion Streams
    Object Streams
    NIO and Asynchronous I/O Processing
    IO Channels
    Stream API with NIO.2
    Using Path Class
    Directory Traversing
    PathMatcher class
    JDBC Architecture
    JDBC Drivers and URL's
    Database Connections
    Executing Statements
    Retrieving Results
    Handling Errors
    Prepared Statements
    Database Metadata
    Commit and Rollback
    Rowset Interfaces
    Using RowsetProvider

    Module 10 : Localization

    Optional Module 11 : Reflection

    Optional Module 12 : Performance

    LocalDate Class
    LocalTime and LocalDateTime
    Instant and Period
    Duration and TemporalUnit
    Defining Properties
    Reading Property Files
    Creating Resource Bundles
    Formatting Date and Times
    Locale Class
    Localizing Dates
    Localizing Numbers
    Localizing Currencies
    What is Reflection?
    Reflection Classes
    Class Loading
    The Class Class
    Creating Objects
    Reflection Methods in Class
    Field Class
    Constructor Class
    Method Class
    AccessibleObject Class
    Dynamic Proxies
    Invocation Handler
    Influences on Performance
    JIT Compilation and Hotspot JVM
    Garbage Collection
    String Types
    Buffered and New I/O
    Synchronization and Concurrency
    Primitives versus Wrappers
    Exception Handling
    Native methods
    Lazy Loading and Object Reuse
  • Course Advanced Java Programming : General

    Course Forms

    All our courses are classroom courses in which the students are guided through the material on the basis of an experienced trainer with in-depth material knowledge. Theory is always interspersed with exercises.


    We also do custom classes and then adjust the course content to your wishes. On request we will also discuss your practical cases.

    Course times

    The course times are from 9.30 to 16.30. But we are flexible in this. Sometimes people have to bring children to the daycare and other times are more convenient for them. In good consultation we can then agree on different course times.


    We take care of the computers on which the course can be held. The software required for the course has already been installed on these computers. You do not have to bring a laptop to participate in the course. If you prefer to work on your own laptop, you can take it with you if you wish. The required software is then installed at the start of the course.


    Our courses are generally given with Open Source software such as Eclipse, IntelliJ, Tomcat, Pycharm, Anaconda and Netbeans. You will receive the digital course material to take home after the course.


    The course includes lunch that we use in a restaurant within walking distance of the course room.


    The courses are planned at various places in the country. A course takes place at a location if at least 3 people register for that location. If there are registrations for different locations, the course will take place at our main location, Houten which is just below Utrecht. A course at our main location also takes place with 2 registrations and regularly with 1 registration. And we also do courses at the customer’s location if they appreciate that.


    At the end of each course, participants are requested to evaluate the course in terms of course content, course material, trainer and location. The evaluation form can be found at https://www.klantenvertellen.nl/reviews/1039545/spiraltrain?lang=en. The evaluations of previous participants and previous courses can also be found there.


    The intellectual property rights of the published course content, also referred to as an information sheet, belong to SpiralTrain. It is not allowed to publish the course information, the information sheet, in written or digital form without the explicit permission of SpiralTrain. The course content is to be understood as the description of the course content in sentences as well as the division of the course into modules and topics in the modules.

  • Course Advanced Java Programming : Reviews

  • Course Advanced Java Programming : Certificate