0845 450 6120

Java Programming 2

The Java Programming 2 course is closely aligned with the Oracle Java SE 8 Programmer II exam.

This course focuses on the core language features and Application Programming Interfaces (APIs) you will use to design effective  object-oriented and functional programming applications with the Java Standard Edition 8 Platform.

This course will teach you how to design and develop robust Java code that is easy to test and maintain and can be integrated into multiple applications.

The most important new topics introduced in Java SE 8 are covered, such as Functional Programming and Stream API, that allow you to use the most up to date  techniques in your code.

Exercises and examples are used throughout the course to give practical hands-on experience with the techniques covered.

The delegate will learn and acquire skills as follows:

  • Implementing code using inheritance and polymorphism
  • Using design patterns to ensure robust design of classes
  • Overriding key methods of the Object class to provide interoperability with collections and other APIs
  • Understanding and using Generics within existing classes and create new Generic classes
  • Creating and using collections including sets, maps and queues
  • Selecting and incorporating standard functional interfaces in code
  • Using Stream API to generate, filter, process and reduce stream data
  • Writing Lambda expressions for use within code including with functional interfaces
  • Declaring try-with-resources blocks and using AutoCloseable classes
  • Working with Java SE8 Date/Time API classes
  • Reading and writing data from/to the Console
  • Managing files and directories
  • Writing concurrent code and using Concurrent API
  • Using parallel streams
  • Building database applications with JDBC

Who will the Course Benefit?

The Java Programming 2 course is aimed at staff and consultants working as part of a Java development team to develop high-quality robust software.   Roles include Programmers, Designers, Architects, Testers and anyone who needs a good understanding of the use of the Java language and infrastructure.

Reset

Learning Objectives

By the end of the course delegates should be able to:

  • Implement encapsulation, inheritance and polymorphism
  • Override hashCode, equals, and toString methods from Object class
  • Create and use singleton and immutable classes
  • Create inner classes including static inner class, local class, nested class and anonymous inner class
  • Use enumerated types including methods, and constructors in an enum type
  • Create and use Lambda expressions
  • Create and use a generic class
  • Create and use ArrayList, TreeSet, TreeMap, and ArrayDeque objects
  • Use java.util.Comparator and java.lang.Comparable interfaces
  • Filter a collection by using lambda expressions
  • Use the built-in interfaces included in the java.util.function package such as Predicate, Consumer, Function and Supplier
  • Develop code to extract data from an object using peek() and map() methods
  • Search for data by using search methods of the Stream classes including findFirst, findAny, anyMatch, allMatch, noneMatch
  • Develop code that uses the Optional class
  • Use try-catch and throw statements
  • Test invariants by using assertions
  • Create and manage date-based and time-based events including a combination of date and time into a single object using LocalDate, LocalTime, LocalDateTime, Instant, Period and Duration
  • Work with dates and times across timezones and manage changes resulting from daylight savings including Format date and times values
  • Define and create and manage date-based and time-based events using Instant, Period, Duration and TemporalUnit
  • Read and write data from the console
  • Use BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream and PrintWriter in the java.iopackage
  • Use Path interface to operate on file and directory paths
  • Use Files class to check, read, delete, copy, move, manage metadata of a file or directory
  • Use Stream API with NIO.2
  • Create worker threads using Runnable, Callable and use an ExecutorService to concurrently execute tasks
  • Use java.util.concurrent collections and classes including CyclicBarrier and CopyOnWriteArrayList
  • Use parallel Fork/Join Framework
  • Submit queries and read results from the database including creating statements, returning result sets, iterating through the results and properly closing result sets, statements and connections
  • Read and set the locale by using the Locale object
  • Create and read a Properties file

Pre-Requisites

Requirements

Delegates attending this course should have experience programming with an object-oriented language, ideally Java. This knowledge can be obtained by attendance on  the pre-requisite Java Programming 1 course.

Pre-Requisite Courses

  • Java Programming 1

Course Content

Day 1

Course Introduction

  • Administration and Course Materials
  • Course Structure and Agenda
  • Delegate and Trainer Introductions

Session 1: JAVA CLASS DESIGN

  • Review of Core Java Class Design Principles
  • The instanceof operator
  • Virtual Method Invocation
  • @Override Annotation
  • Overriding equals, hashCode and toString
  • Enums
  • Nested Classes

Session 2: JAVA DESIGN PATTERNS

  • Designing Interfaces
  • Functional Programming
  • Implementing Polymorphism
  • Java Design Principles
  • Singleton Pattern
  • Immutable Objects
  • Builder Pattern
  • Factory Pattern

Day 2

Session 3: GENERICS AND COLLECTIONS

  • Review of Array and ArrayList and Diamond Operator
  • Generic Classes, Interfaces and Methods
  • Lists, Sets, Maps and Queues
  • Comparable and Comparator
  • Searching and Sorting
  • Method References
  • Conditional Removal of Elements
  • Java Map APIs

Session 4: FUNCTIONAL PROGRAMMING AND STREAM API

  • Using Variables in Lambdas
  • Built-In Functional Interfaces
  • Optional Objects
  • Creating Stream Sources
  • Terminal and Intermediate Operations
  • Constructing a Pipeline
  • Primitive Streams

Day 3

Session 4 (Continued): FUNCTIONAL PROGRAMMING AND STREAM API

  • Functional Interfaces for Primitives
  • Linking Streams to Underlying Data
  • Chaining Optionals
  • Collecting Results

Session 5: DATES, STRINGS AND LOCALISATION

  • Date and Time API Classes
  • Creating Dates and Times
  • Manipulating Dates and Times
  • Periods
  • Durations
  • Daylight Saving Time
  • String Class Functionality
  • Internationalisation and Localisation
  • Locales
  • Resource Bundles
  • Formatting Numbers
  • Formatting Dates and Times

Session 6: EXCEPTIONS AND ASSERTIONS

  • Exceptions Terminology
  • Categories of Exceptions
  • Try Statement
  • Throw Statement
  • Throws Statement
  • Custom Exceptions
  • Multi-Catch Blocks
  • Try-With-Resources
  • AutoCloseable
  • Suppressed Exceptions
  • Rethrowing Exceptions
  • The assert Statement
  • Enabling Assertions

Day 4

Session 7: CONCURRENCY

  • Thread Types and Concurrency
  • Runnable Interface
  • Creating Threads
  • Polling with Sleep
  • Using ExecutorService
  • Thread Pools
  • Synchronising Data Access
  • Atomic Classes
  • Synchronised Blocks and Methods
  • Concurrent Collections
  • Memory Consistency Errors
  • Parallel Streams
  • Processing Parallel Reductions
  • CyclicBarrier Class
  • Fork/Join Framework
  • Threading Problems and Race Conditions

Session 8: IO

  • Conceptualising the File System
  • File Class
  • IO Streams
  • FileInputStream and FileOutputStream

Day 5

Session 8 (Continued): IO

  • FileReader and FileWriter
  • ObjectInputStream and ObjectOutputStream
  • Serialising and Deserialising Objects
  • PrintStream and PrintWriter
  • Console

Session 9: NIO.2

  • Path Class
  • Interacting with Paths and Files
  • File Attributes
  • File Attribute View Classes
  • Directory Walking
  • Legacy File vs. NIO.2 Methods

Session 10: JDBC

  • Relational Databases and SQL
  • JDBC Interfaces
  • Connecting to a Database
  • Statements, ResultSet Types and Concurrency Modes
  • Executing Statements
  • Getting Data from a ResultSet
  • Closing Database Resources
  • Dealing with Exceptions

Exams & Certification

The Java Programming 2 course helps delegates prepare for the following exam:

Oracle Certified Professional (OCP) Java SE8 Programmer II exam (1Z0-809)

Attending this course will help delegates gain many of the skills and product knowledge requirements as outlined in the exam objectives.  Studying this course and its associated reference materials can form part of the preparation to achieve certification. Experience, practice,  self-study and aptitude are also key requirements for exam success.

Before taking any exam, ensure you have the recommended experience. The Oracle website lists all exam requirements and these are updated regularly.

Exams are not included as part of the course.

Privacy Notice

In order to provide you with the service requested we will need to retain and use your contact information in accordance with our Privacy Notice. If you choose to provide us with this information you explicitly consent to us using the information as necessary to provide the request service to you. If you do not agree please do not proceed to request the service from us.

Marketing Permissions

Would you like to receive our newsletter and other information on products and services which we think will be of interest to you by email. We will always treat your information with care and in accordance with our Privacy Notice. You are free to withdraw this permission at any time.

 

Online Courses

You may prefer an online course if you are looking for a flexible and cost-effective solution. Online courses allow you to study at your own pace, at a time that suits you.

We have the following eLearning options available:

Our Customers Include