Advanced Java

The Advanced Java course focuses on how to write quality software in Java, that is code which is efficient, flexible, maintainable, robust, portable across software architectures and frameworks.

Is this course for you?

The Advanced Java course is used by Java developers to up-skill their Java development skills in order to develop in Java high quality software system, i.e. systems which not only meet contractual requirements but also

  • high-performance (efficient and responsive) systems
  • systems which are maintainable as well as easily modifiable and extensible
  • code which meets code quality standards and is highly reusable
  • systems which are safe, robust and secure
  • systems which are accessible and integrable, and
  • systems which are auditable and monitorable.

Course Content

  1. Design fundamentals
    • The SOLID principles of object-oriented design
    • URDAD design principles
    • UML – Java mappings
    • Separating application & infrastructure code
    • Object views
    • Important design patterns
  2. Effective and safe concurrency
    • Potential problems: state corruption & deadlocks
    • Executors, thread pooling, scheduling
    • Light-weight locking via lock classes & conditions
    • Concurrent collections
    • Light-weight, virtual threads
  3. Functional programming (FP)
    • functional versus imperative programming
    • FP concepts
    • Functional interfaces, higher-order functions, method references
    • Consumers, suppliers, operators & predicates
    • Pipelines, maps, streams, lazy evaluation, collecting, …
  4. Making effective use of metadata
    • Why define and process annotations?
    • Defining annotations
    • Reflecting on annotations
    • Developing annotation processors
    • Binding annotation processors into compilation process
  5. Modules
    • Why use modules, Java versus Maven modules
    • Creating modules, controlling access & specifying module requirements
    • Efficient runtime images
    • Using modules for simple Java-based dependency injection
  6. Data binding
    • Mapping composition, aggregation, association, specialization \& containment relationships
    • XML-binding via JAXB
      • Schema-driven \& Java-driven
    • JSON-binding via JSON-B
    • Database binding via JPA
  7. Decoupling
    • Dependency injection
      • Why and typical uses
      • Understanding, configuring and using CDI
    • Java Connector Architecture (JCA)
    • Messaging
      • Decoupling, robustness and load balancing via messaging
      • Queues, topics and streams
    • Addressing cross-cutting concerns via Aspect-oriented programming
      • Why & typical uses
      • aspects, join-points, advices and point-cuts
      • Using Aspect-J
    • Generics
      • Generic methods, classes, interfaces, constructors, collections
      • Bounded & wild-card parameters
  8. Contract driven development and testing
    • Why?
    • Specifying service & component contracts
    • Generating contract validating interceptors (CVIs)
    • Using CVIs for unit, integration & operational testing & service-provider oversight



The Advanced Java course is part of the standard

Scroll to Top