Working with Java Primitive Data Types - Declare and initialize variables (including casting and promoting primitive data types), Identify the scope of variable, Use local variable type inference
Using Operators and Decision Constructs - Use Java operators including the use of parenthesis to override operator precedence, Use Java control statements including if else and switch, Create and use do/while while and for loops including nested loops use break and continue statements
Describing and Using Objects and Classes - Declare and instantiate Java objects and explain objects lifecycles (including creation dereferencing by reassignment and garbage collection), Define the structure of a Java class, Read or write to object fields
Creating and Using Methods - Create methods and constructors with arguments and return values, Create and invoke overloaded methods, Apply the static keyword to methods and fields
Applying Encapsulation - Apply access modifiers, Apply encapsulation principles to a class
Reusing Implementations Through Inheritance - Create and use subclasses and superclasses, Create and extend abstract classes, Enable polymorphism by overriding methods, Utilize polymorphism to cast and call methods differentiating object type versus reference type, Distinguish overloading overriding and hiding
Working with String APIs - Create and manipulate Strings, Manipulate data using the StringBuilder class and its methods
Working with Java Arrays - Declare instantiate initialize and use a one-dimensional array, Declare instantiate initialize and use two-dimensional array, Use for each loop
Final & Nested Classes - Create and use final classes, Create and use inner nested and anonymous classes, Create and use enumerations
Programming Abstractly Through Interfaces - Create and implement interfaces, Distinguish class inheritance from interface inheritance including abstract classes, Create and use interfaces with default methods, Create and use interfaces with private methods
Exception Handling and Assertions - Describe the advantages of Exception handling and differentiate among checked unchecked exceptions and Errors, Create try-catch blocks and determine how exceptions alter program flow, Create and invoke a method that throws an exception, Use the try-with-resources construct, Create and use custom exception classes, Test invariants by using assertions
Generics and Collections - Use wrapper classes autoboxing and autounboxing, Create and use generic classes methods with diamond notation and wildcards, Describe the Collections Framework and use key collection interfaces, Use Comparator and Comparable interfaces, Create and use convenience methods for collections
Functional Interface and Lambda Expressions - Define and write functional interfaces, Create and use lambda expressions including statement lambdas local-variable for lambda parameters
Built-in Functional Interfaces - Use interfaces from the java.util.function package, Use core functional interfaces including Predicate Consumer Function and Supplier, Use primitive and binary variations of base interfaces of java.util.function package
Understanding modules - Describe the Modular JDK, Declare modules and enable access between modules, Describe how a modular project is compiled and run
Migration to a Modular Application - Migrate the application developed using a Java version prior to SE 9 to SE 11 including top-down and bottom-up migration splitting a Java SE 8 application into modules for migration, Use jdeps to determine dependencies and identify ways to address the cyclic dependencies
Java Stream API - Describe the Stream interface and pipelines, Use lambda expressions and method references
Lambda Operations on Streams - Extract stream data using map peek and flatMap methods, Search stream data using search findFirst findAny anyMatch allMatch and noneMatch methods, Use the Optional class, Perform calculations using count max min average and sum stream operations, Sort a collection using lambda expressions, Use Collectors with streams including the groupingBy and partitioningBy operations
I/O (Fundamentals and NIO2) - Read data from and write console and file data using I/O Streams, Use I/O Streams to read and write files, Read and write objects by using serialization, Use the Path interface to operate on file and directory paths, Use the Files class to check delete copy or move a file or directory, Use the Stream API with Files
Concurrency - 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, Write thread-safe code, Identify threading problems such as deadlocks and livelocks
DBMS – MySQL - MySql datatypes, CRUD operations, Subquery, Join, Aggregate functions, Procedures
Database Applications with JDBC - Connect to databases using JDBC URLs and DriverManager, Use PreparedStatement to perform CRUD operations, Use PreparedStatement and CallableStatement APIs to perform database operations
Annotations - Describe the purpose of annotations and typical usage patterns, Apply annotations to classes and methods, Describe commonly used annotations in the JDK, Declare custom annotations
Localization - Use the Locale class, Use resource bundles, Format messages dates and numbers with Java