| Section | Weight | Objectives |
| Controlling Program Flow | 10% | - Use if and if/else statements
- Use for, while, and do/while loops
- Use break and continue statements
- Use switch statements
- Use Java control statements
|
| I/O (Fundamentals and NIO2) | 7% | - Read and write console and file input/output using Java I/O system
- Use NIO2 API to work with file systems and file attributes
- Use Stream API with files
- Use Path interface to manipulate file paths
|
| Annotations | 5% | - Apply standard annotations to classes and methods
- Create custom annotations
- Describe the purpose of annotations
|
| Secure Coding in Java SE Application | 5% | - Prevent SQL injection and other attacks
- Prevent Denial of Service (DoS) attacks
- Validate user input
- Secure sensitive data
|
| Java Platform Module System | 10% | - Declare module dependencies
- Explain the concept of module exports and requires
- Explain the default modules and class path
- Deploy and execute modules
- Use jdeps to determine dependencies
- Migrate applications to use modules
|
| Working with Java OOP | 15% | - Use abstract classes and interfaces
- Implement encapsulation
- Apply the static keyword to methods and fields
- Implement inheritance
- Implement polymorphism
- Apply the final keyword to classes, methods, and fields
- Create inner classes and use them within other classes
|
| Working with Java data types | 12% | - Create and manipulate strings
- Declare and initialize variables
- Read or write to object fields
- Differentiate between object reference variables and primitive variables
- Call methods on objects
- Explain an object's lifecycle (creation, dereferencing via garbage collection)
- Manipulate data using the StringBuilder class and its methods
|
| Working with Arrays and Collections | 8% | - Iterate through a collection
- Create a list, set, map, or queue collection
- Sort elements in a collection
- Search for elements in a collection
- Filter a collection using lambda expressions
- Use generic types and diamond operator
|
| Database Applications with JDBC | 5% | - Execute queries and process results
- Connect to a database using JDBC
- Use parameterized queries
- Describe the advantages of using a connection pool
|
| Exception Handling and Localization | 10% | - Use standard exception classes
- Create try-catch blocks and understand exception propagation
- Describe the advantages of exception handling
- Create and throw custom exceptions
- Use assertions
- Use resource bundles and locale classes for internationalization
|
| Working with Streams and Lambda expressions | 13% | - Describe the Stream interface and pipeline
- Perform decomposition using the reduce(), collect(), partition(), and groupingBy() methods
- Use functional interfaces with lambda expressions
- Use method references with streams
- Filter a collection using lambda expressions
- Use the Stream API to perform terminal operations
|
| Concurrency | 10% | - Use synchronized blocks and the volatile keyword
- Create worker threads using Runnable and Thread objects
- Use parallel streams to improve performance
- Use ExecutorService to concurrently execute tasks
- Identify potential threading problems
- Use java.util.concurrent atomic classes and ForkJoinPool
|