OCP: Java SE 11 Developer (1Z0-819 and Upgrade Exam 1Z0-817)


This course includes
Hand-on Lab
AI Tutor (Add-on)

Gain hands-on experience to pass the Oracle Java certification exam with the OCP: Java SE 11 Developer course and lab. The Java certification training covers the 1Z0-819 exam objectives and provides knowledge on the core topics in Java 11 including classes, interfaces, lambda expressions, operators, decision constructs, basic collections, and modules. The Java SE 11 certification training course and its learning resources will help you learn Java online and pass the certification exam.

Here's what you will get

Oracle Java SE 11 ensures the core Java technology's performance by significantly reducing its footprint and improving the expressiveness of Java class files. You can gain proficiency in Java and a comprehensive understanding of Java programming and coding, as well as the ability to use new features added to Java SE 11. A qualified person demonstrates fluency in Java SE and the skills needed to be a Java software developer by passing the required exams.


23+ Lessons | 221+ Quizzes | 221+ Flashcards | 221+ Glossary of terms


50+ Pre Assessment Questions | 6+ Full Length Tests | 50+ Post Assessment Questions | 300+ Practice Test Questions

Hand on lab

105+ LiveLab | 41+ Video tutorials | 43+ Minutes

Here's what you will learn

Download Course Outline

Lessons 1: Introduction

  • Understanding the Exam
  • Reading This Course
  • Preparing for the Exam
  • Objective Map

Lessons 2: Welcome to Java

  • Learning About the Java Environment
  • Identifying Benefits of Java
  • Understanding the Java Class Structure
  • Writing a main() Method
  • Understanding Package Declarations and Imports
  • Ordering Elements in a Class
  • Summary
  • Exam Essentials

Lessons 3: Java Building Blocks

  • Creating Objects
  • Understanding Data Types
  • Declaring Variables
  • Initializing Variables
  • Managing Variable Scope
  • Destroying Objects
  • Summary
  • Exam Essentials

Lessons 4: Operators

  • Understanding Java Operators
  • Applying Unary Operators
  • Working with Binary Arithmetic Operators
  • Assigning Values
  • Comparing Values
  • Making Decisions with the Ternary Operator
  • Summary
  • Exam Essentials

Lessons 5: Making Decisions

  • Creating Decision-Making Statements
  • Writing while Loops
  • Constructing for Loops
  • Controlling Flow with Branching
  • Summary
  • Exam Essentials

Lessons 6: Core Java APIs

  • Creating and Manipulating Strings
  • Using the StringBuilder Class
  • Understanding Equality
  • Understanding Java Arrays
  • Understanding an ArrayList
  • Creating Sets and Maps
  • Calculating with Math APIs
  • Summary
  • Exam Essentials

Lessons 7: Lambdas and Functional Interfaces

  • Writing Simple Lambdas
  • Introducing Functional Interfaces
  • Working with Variables in Lambdas
  • Calling APIs with Lambdas
  • Summary
  • Exam Essentials

Lessons 8: Methods and Encapsulation

  • Designing Methods
  • Working with Varargs
  • Applying Access Modifiers
  • Applying the static Keyword
  • Passing Data among Methods
  • Overloading Methods
  • Encapsulating Data
  • Summary
  • Exam Essentials

Lessons 9: Class Design

  • Understanding Inheritance
  • Creating Classes
  • Declaring Constructors
  • Inheriting Members
  • Understanding Polymorphism
  • Summary
  • Exam Essentials

Lessons 10: Advanced Class Design

  • Creating Abstract Classes
  • Implementing Interfaces
  • Introducing Inner Classes
  • Summary
  • Exam Essentials

Lessons 11: Exceptions

  • Understanding Exceptions
  • Recognizing Exception Classes
  • Handling Exceptions
  • Calling Methods That Throw Exceptions
  • Summary
  • Exam Essentials

Lessons 12: Modules

  • Introducing Modules
  • Creating and Running a Modular Program
  • Updating Our Example for Multiple Modules
  • Diving into the module-info File
  • Discovering Modules
  • Reviewing Command-Line Options
  • Summary
  • Exam Essentials

Lessons 13: Java Fundamentals

  • Applying the final Modifier
  • Working with Enums
  • Creating Nested Classes
  • Understanding Interface Members
  • Introducing Functional Programming
  • Summary
  • Exam Essentials

Lessons 14: Annotations

  • Introducing Annotations
  • Creating Custom Annotations
  • Applying Annotations
  • Declaring Annotation-Specific Annotations
  • Using Common Annotations
  • Summary
  • Exam Essentials

Lessons 15: Generics and Collections

  • Using Method References
  • Using Wrapper Classes
  • Using the Diamond Operator
  • Using Lists, Sets, Maps, and Queues
  • Sorting Data
  • Working with Generics
  • Summary
  • Exam Essentials

Lessons 16: Functional Programming

  • Working with Built-in Functional Interfaces
  • Returning an Optional
  • Using Streams
  • Working with Primitive Streams
  • Working with Advanced Stream Pipeline Concepts
  • Summary
  • Exam Essentials

Lessons 17: Exceptions and Localization

  • Reviewing Exceptions
  • Creating Custom Exceptions
  • Automating Resource Management
  • Declaring Assertions
  • Working with Dates and Times
  • Supporting Internationalization and Localization
  • Loading Properties with Resource Bundles
  • Summary
  • Exam Essentials

Lessons 18: Modular Applications

  • Reviewing Module Directives
  • Comparing Types of Modules
  • Analyzing JDK Dependencies
  • Migrating an Application
  • Creating a Service
  • Summary
  • Exam Essentials

Lessons 19: Concurrency

  • Introducing Threads
  • Creating Threads with the Concurrency API
  • Writing Thread-Safe Code
  • Using Concurrent Collections
  • Identifying Threading Problems
  • Working with Parallel Streams
  • Summary
  • Exam Essentials

Lessons 20: I/O

  • Understanding Files and Directories
  • Introducing I/O Streams
  • Common I/O Stream Operations
  • Working with I/O Stream Classes
  • Interacting with Users
  • Summary
  • Exam Essentials

Lessons 21: NIO.2

  • Introducing NIO.2
  • Interacting with Paths
  • Operating on Files and Directories
  • Managing File Attributes
  • Applying Functional Programming
  • Comparing Legacy java.io.File and NIO.2 Methods
  • Summary
  • Exam Essentials

Lessons 22: JDBC

  • Introducing Relational Databases and SQL
  • Introducing the Interfaces of JDBC
  • Connecting to a Database
  • Working with a PreparedStatement
  • Getting Data from a ResultSet
  • Calling a CallableStatement
  • Closing Database Resources
  • Summary
  • Exam Essentials

Lessons 23: Security

  • Designing a Secure Object
  • Introducing Injection and Input Validation
  • Working with Confidential Information
  • Serializing and Deserializing Objects
  • Constructing Sensitive Objects
  • Preventing Denial of Service Attacks
  • Privileged Code
  • Summary
  • Exam Essentials

Hands-on LAB Activities

Welcome to Java

  • Using the main() Method
  • Importing a Package

Java Building Blocks

  • Using Java Primitives 


  • Using the Division and Modulus Operators
  • Using Typecasting
  • Using the Logical OR Operator
  • Using the Logical AND Operator
  • Using the Ternary Operator

Making Decisions

  • Using the switch Statement
  • Using the if-else Statement
  • Using the if Statement
  • Using the do/while Loop
  • Using the while Loop
  • Using the for-each Loop
  • Using the for Loop
  • Using the continue Statement
  • Using the Nested Loop

Core Java APIs

  • Using the equals() Method
  • Using the append() Method
  • Using the insert() Method
  • Using the replace() and length() Methods
  • Sorting, Searching, and Printing the Index of an Element in an Array
  • Using Autoboxing

Lambdas and Functional Interfaces

  • Using the Predicate Interface

Methods and Encapsulation

  • Using the static Method
  • Implementing Encapsulation

Class Design

  • Calling Parent Constructors with the super() Keyword
  • Using Superclasses
  • Using Polymorphism

Advanced Class Design

  • Using the abstract Modifier
  • Using an Interface


  • Using the finally Block
  • Using the try/catch Block


  • Using a Module

Java Fundamentals

  • Working with an Enum
  • Using the static Inner Class
  • Creating a Lambda Expression without a Parameter
  • Creating a Lambda Expression with a Single Parameter
  • Using a Lambda Expression
  • Creating a Lambda Expression with Multiple Parameters


  • Using the @SuppressWarnings Annotation
  • Using the @SafeVarargs Annotation
  • Using the @Deprecated Annotation
  • Using the @Override Annotation

Generics and Collections

  • Using the Diamond Operator
  • Using the remove() Method
  • Sorting an Array
  • Using Unbounded Wildcards

Functional Programming

  • Using the Consumer Interface
  • Using BinaryOperator
  • Using UnaryOperator
  • Using the map() Method
  • Using the min() and max() Methods
  • Using the count() Method
  • Using the skip() Method
  • Using the limit() Method
  • Using the distinct() Method
  • Using the filter() Method
  • Using the collect() Method
  • Using the reduce() Method
  • Using the forEach() Method
  • Using the noneMatch() Method
  • Using the anyMatch() Method
  • Using the allMatch() Method
  • Using the findFirst() Method
  • Using the findAny() Method

Exceptions and Localization

  • Using Multiple catch Blocks
  • Creating a Custom Exception
  • Using a Stack Trace
  • Using the SimpleDateFormat Class
  • Formatting Numbers


  • Creating a Thread by Extending the Thread Class
  • Creating a Thread by Implementing the Runnable Interface
  • Applying the ReentrantLock Interface
  • Using the CyclicBarrier Class
  • Understanding SkipList Collections
  • Using the CopyOnWriteArrayList Class


  • Using the exists() Method
  • Creating the File Object
  • Using the mark() and reset() Methods
  • Using the skip() Method
  • Applying the Serializable Interface
  • Using the OutputStream Class
  • Using the InputStream Class


  • Obtaining a path with the URI Class
  • Obtaining a Path with the Paths Class
  • Deriving a Path Using the normalize() Method
  • Deriving a Path Using the relativize() Method
  • Using the isAbsolute() Method
  • Reading a File Using the readAllLines() Method
  • Deleting a File Using the delete() and deleteIfExists() Methods
  • Using the isSameFile() Method
  • Searching a Directory Using the find() Method
  • Listing the Contents of a Directory


  • Using the UPDATE Statement
  • Using the DELETE Statement
  • Using the SELECT Statement
  • Using the CREATE TABLE Statement
  • Working with JDBC Statements
  • Executing a SQL Query
  • Using the PreparedStatement Interface
  • Viewing a Database Table


  • Cloning Objects
  • Using the final Class
  • Using the final Method

Exam FAQs

There are no official prerequisites for the certification exam.

USD 245

Multiple Choice

The exam contains 50 questions.

90 minutes


Here are the retake policies:

  • Candidates must wait 14 days before retaking a failed proctored exam. (Registration will be allowed on the 14th day)
  • Candidates may retake an online non-proctored exam at any time.
  • Candidates may not retake a passed exam at any time.
  • Candidates may not retake a beta exam at any time.
  • Candidates are only allowed 4 attempts to pass an exam in a 12-month period.
  • Candidates must resubmit a failed Master Assignment within 30 days of receiving the notification of failing.