# 1Z0-819

### Materials
* https://education.oracle.com/java-25th-anniversary-discount-redemption
* https://www.selikoff.net/ocp11-complete/
* https://docs.oracle.com/en/java/javase/11/
* https://enthuware.com/java-certification-mock-exams/oracle-certified-professional/ocp-java-11-exam-1z0-819
* https://learn.oracle.com/ols/learning-path/java-explorer/40805/79726
* [Modern Java Collections](https://learning.oreilly.com/videos/modern-java-collections/9780134663524/)
* https://learning.oreilly.com/live-training/courses/java-11-certification-1z0-819-exam-cram/0636920053300/
* [Functional Java for Big Data](https://learning.oreilly.com/live-training/courses/functional-java-for-big-data/0636920053045/)
* [Advanced Java Development](https://learning.oreilly.com/videos/advanced-java-development/9781491960400)
* [Java 8 and 9 Fundamentals: Modern Java Development with Lambdas, Streams, and Introducing Java 9’s JShell and the Java Platform Module System (JPMS)](https://learning.oreilly.com/videos/java-8-fundamentals/9780133489354)
* [Functional Programming For Java LiveLessons](https://learning.oreilly.com/videos/functional-programming-for/9780134778235)
* [Oracle University - Java SE 11 New Features](https://www.youtube.com/watch?v=81lj7EugAnE)
* [Oracle University - Java SE 9 & 10 New Features](https://www.youtube.com/watch?v=1SAqDt3OPAU)

# exam topics
### Working with Java data types

* Use primitives and wrapper classes, including, operators, parentheses, type promotion and casting
* Handle text using String and StringBuilder classes
* Use local variable type inference, including as lambda parameters

### Controlling Program Flow

* Create and use loops, if/else, and switch statements

### Java Object-Oriented Approach

* Declare and instantiate Java objects including nested class objects, and explain objects' lifecycles (including creation, dereferencing by reassignment, and garbage collection)
* Define and use fields and methods, including instance, static and overloaded methods
* Initialize objects and their members using instance and static initialiser statements and constructors
* Understand variable scopes, apply encapsulation and make objects immutable
* Create and use subclasses and superclasses, including abstract classes
* Utilize polymorphism and casting to call methods, differentiate object type versus reference type
* Create and use interfaces, identify functional interfaces, and utilize private, static, and default methods
* Create and use enumerations

### Exception Handling

* Handle exceptions using try/catch/finally clauses, try-with-resource, and multi-catch statements
* Create and use custom exceptions

### Working with Arrays and Collections

* Use generics, including wildcards
* Use a Java array and List, Set, Map and Deque collections, including convenience methods
* Sort collections and arrays using Comparator and Comparable interfaces

### Working with Streams and Lambda expressions

* Implement functional interfaces using lambda expressions, including interfaces from the java.util.function package
* Use Java Streams to filter, transform and process data
* Perform decomposition and reduction, including grouping and partitioning on sequential and parallel streams

### Java Platform Module System

* Deploy and execute modular applications, including automatic modules
* Declare, use, and expose modules, including the use of services

### Concurrency

* Create worker threads using Runnable and Callable, and manage concurrency using an ExecutorService and java.util.concurrent API
* Develop thread-safe code, using different locking mechanisms and java.util.concurrent API

### Java I/O API

* Read and write console and file data using I/O Streams
* Implement serialization and deserialization techniques on Java objects
* Handle file system objects using java.nio.file API

### Secure Coding in Java SE Application

* Develop code that mitigates security threats such as denial of service, code injection, input validation and ensure data integrity
* Secure resource access including filesystems, manage policies and execute privileged code

### Database Applications with JDBC

* Connect to and perform database SQL operations, process query results using JDBC API

### Localization

* Implement Localization using Locale, resource bundles, and Java APIs to parse and format messages, dates, and numbers

### Annotations

* Create, apply, and process annotations