Code: JAV500
Duration in days: 4
Download: Infosheet
€ 2150

Course Advanced Java Programming

22-07 till 25-07-2019
23-09 till 26-09-2019
25-11 till 28-11-2019
Your starting date

Audience Course Advanced Java Programming

Course Advanced Java ProgrammingThe 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.

Contents Course Advanced Java Programming

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. 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 cylic 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 parameterised, 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. 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.

Module 1 : Advanced Class Design

Module 2 : Multiple Threads

Module 3 : Concurrency

Encapsulation and Inheritance
Implementing Composition
Singleton Patterns
Immutable Classes
Abstract Classes
Final Classes
Inner Classes
Static Inner Classes
Anonymous Inner Classes
Autonomous Classes
Extending Interfaces
Enumerated Types
Implementing hashCode and equals
Java Thread Model
Extending Thread Class
Implementing Runnable
Daemon Threads
Thread Alive States
Thread Class Methods
Sleeping and Yielding Control
Using join and interrupt
Concurrent Method Activation
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
BlockingQueue Interface
Lock Interface
Reentrant Locks
Atomic Variables

Module 4 : Lambda’s and Functional Interfaces

Module 5 : Generics and Collections

Module 6 : Streams

Passing Functionality
Lambda Expressions
Lambda Syntax
Lambda Variable Access
Lambda Scoping Rules
Functional Interfaces
Predicate Interface
Consumer Interface
Supplier Interface
Function Interface
UnaryOperator Interface
BinaryOperator Interface
Method References
@FunctionalInterface annotation
User Defined Functional Interfaces
What are Generics?
Type Erasure and Raw Types
Generics and Subtyping
Bounded Type Parameters
Generics in Collections
ArrayList and LinkedList
TreeSet and Hash Set
HashMap and TreeMap
ArrayDeque objects
Comparable and Comparator Interface
Collections Streams and Filters
Iteration using forEach
Filtering using Lambda’s
Stream Interface and Stream Pipeline
What are Streams?
Lazy Evaluation and Parallelization
Core Stream Methods
forEach, Map and Filter
findFirst and findAny
toArray and collect
Optional Class
Limiting Stream Size
allMatch and anyMatch
Number Specialized Streams
Reduction Operations
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 met JDBC

Errors and Exceptions
Exception Handling Syntax
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
Rethrowing Exceptions
Standard I/O Streams
Stream Types
Reading and Writing Files
Buffered Streams
Data Conversion Streams
Object Streams
NIO and Asynchronous I/O Processing
Working with Buffers
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
Querying Databases
Update 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

SpiralTrain BV

Gebouw "De Sijnsmeester"
Standerdmolen 8 – 1.11
3995 AA Houten

IP Computer Training Centrum
Diemerhof 32-36
1112 XN Diemen

020 7600027

Compu Act Opleidingen
Slinge 303
3085 ER Rotterdam

023 - 551 3409

Kleine Singel 33
3572 CG Utrecht

030 - 737 05 81

IP Computer Training Centrum
Leenderweg 292
5644 AE Eindhoven

040 - 256 65 20