Course code Title Language Price # Unit Startdate Hour Enddate Location Signup
JVN059 Java 8 Advanced on your request on your request Contact Us

Java 8 Advanced

Java 8 Advanced


Course code: 
Time Unit: 

This beginner's course in Java 8 Development is suitable for programmers with a first experience in Java or that have followed the course JVN058 Java Fundamentals.

Java is one of the predominant programming languages used today, and its correct usage is a critical part of many systems. The basics of the language are relatively easy, but the challenge lies in learning how to use it well. This is especially true regarding the Object-Oriented nature of Java, which for many developers is a new way of approaching system design and construction.
This course draws on our extensive experience to provide a solid understanding of advanced Java concepts and practices needed to create well designed Java programs. It covers more advanced concepts such as default/static methods in interfaces, Lambda expressions, working with the Java Collections Framework, and multithreading.

This course is suitable for environments using Java 8.

For students with no previous experience in Java, the course JVN058 Java Fundamentals is recommended.



Chapter 1: Generics
1.1 Introduction
1.2 Generic Classes
1.2.1 Defining Generics
1.2.2 Restricting the Type Used
1.2.3 Unknown Type
1.2.4 Subclasses of Generic Classes
1.3 Generic Interfaces
1.4 Generic Methods
1.4.1 Formal Generic Parameters
1.4.2 Formal Generic Parameters with Wildcards
1.4.3 Formal Generic Parameters with Bounded Wildcards
1.4.4 Type Parameters
1.5 Behind the Screens of Generics
1.6 Arrays and Generics
1.7 Cooperation Between Old and New Code
1.8 Summary

Chapter 2: Lambda Expressions
2.1 Introduction
2.2 Functional Interfaces
2.3 Definition of Lambda Expressions
2.4 Method References
2.4.1 Static Methods of a Class or Interface
2.4.2 Methods of a Bound Object
2.4.3 Methods of an Unbound Object
2.4.4 Constructor References
2.5 Default Functional Interfaces
2.5.1 Predicate
2.5.2 Function
2.5.3 Consumer

Chapter 3: Streaming API
3.1 Introduction: Internal versus External Iterations
3.2 Stream Sources
3.3 Operations
3.3.1 Terminal Operations
3.3.2 Intermediate Operations
3.4 Summary

Chapter 4: Collections
4.1 The Collections Framework
4.2 The Collection Interface and Implementations
4.2.1 List
4.2.2 Set
4.2.3 SortedSet & NavigableSet
4.2.4 Queue
4.2.5 Deque
4.2.6 Comparing Between the Implementations
4.2.7 Sorting Collections
4.2.8 Collections and Streams
4.3 The Map Interface and Implementations
4.3.1 Map
4.3.2 SortedMap & NavigableMap
4.3.3 Comparison Between the Implementations

Chapter 5: Reading and Writing (I/O)
5.1 Introduction.
5.2 Folders and Files
5.2.1 The Path Interface
5.2.2 The FileSystem Class
5.2.3 The Files Class
5.2.4 The File Class
5.3 IO Streams
5.3.1 Character Streams
5.3.2 Byte Streams
5.3.3 Encoding and Character Sets
5.4 Object Serialization
5.4.1 Serializing and Deserializing Objects
5.4.2 Making Classes Serializable
5.4.3 Transient Variables
5.4.4 Adapting the Serialization Mechanism
5.4.5 Serialization and Inheritance
5.4.6 Version Numbering
5.5 Program Attributes

Chapter 6: Using System Resources
6.1 Introduction
6.2 The System Class
6.2.1 Default I/O Streams
6.2.2 System Properties
6.2.3 Finalization and Garbage Collection
6.2.4 Other Methods
6.3 The Runtime Object
6.4 The ProcessBuilder

Chapter 7: Java through the Command Line
7.1 Introduction
7.2 The JAVA_HOME Environment Variable
7.3 Compiling
7.4 Executing
7.5 JAR Files
7.5.1 Basic JAR Principles
7.5.2 Creating a JAR File
7.5.3 Including a JAR File in the Class Path
7.5.4 Using JAR Files as Applications
7.5.5 Reading Resources from a JAR file

Chapter 8: Multithreading
8.1 Introduction: Multiprocessing and Multithreading
8.2 Creating a New Thread
8.2.1 Subclass of the Thread Class
8.2.2 The Runnable Interface
8.2.3 Thread with Lambda Expression
8.3 Thread Life Cycle
8.4 Executing Threads in the RUNNABLE State
8.4.1 The Scheduler
8.4.2 Thread Priorities
8.4.3 Preemptive Multitasking
8.4.4 Cooperative Multitasking
8.5 Daemon Threads
8.6 The WAITING State
8.6.1 The SLEEPING state
8.6.2 Waiting for the End of a Thread
8.7 Synchronising Threads (Monitoring)
8.7.1 Object Locking
8.7.2 wait() and notify()
8.8 The Timer Class and the TimerTask Class
8.9 Concurrency Framework
8.9.1 Concurrent Collections
8.9.2 Atomic Objects
8.9.3 Callable, ExecutorService, and Future
8.10 Parallelism with Streams



Prior experience with Java or having successfully followed the preceding course JVN058, is required,. This course is ideal for developers, moving to object-oriented programming using Java, if they have some knowledge of Java already.



No prior experience is required, but preferably students have experience with another third-generation (high-level) language. This course is ideal for developers, moving to object-oriented programming using Java.