It's often helpful to be able to map objectives between exams. The new exam is similar to the 930 exam but adds features form Java 22-25. And beware of changes like _ now being a legal (unnamed) identifier!
Note: Oracle makes changes to the objectives. These objectives are as of when the 831 exam launched and may vary slightly from the latest. The gist is the same.
| Number | OCP 25 831 Text | Changes from Java 21 |
| Handling Date, Time, Text, Numeric and Boolean Values | No changes |
| 1.1 | Use primitives and wrapper classes. Evaluate arithmetic and boolean expressions, using the Math API and by applying precedence rules, type conversions, and casting. | No changes |
| 1.2 | Manipulate text, including text blocks, using String and StringBuilder classes. | No changes |
| 1.3 | Manipulate date, time, duration, period, instant and time-zone objects including daylight saving time using Date-Time API. | No changes |
| Implementing Program Flow Control Using Decision and Looping Constructs | Cosmetic changes |
| 2.1 | Create program flow control constructs including if/else, switch statements and expressions, loops, and break and continue statements. | No changes |
| Applying Object-Oriented Principles in Java Programs | Cosmetic changes |
| 3.1 | Declare and instantiate Java objects including nested class objects, and explain the object life-cycle including creation, reassigning references, and garbage collection. | No changes |
| 3.2 | Create classes and records, and define and use instance and static fields and methods, constructors, including flexible constructor bodies, and instance and static initializers. | Added flexible constructor bodies |
| 3.3 | Implement overloaded methods, including var-arg methods. | No changes |
| 3.4 | Understand variable scopes, apply encapsulation, and create immutable objects. Use local variable type inference and unnamed variables. | Added unnamed variables. Removed text "Perform reference type casting, identify object types using the instanceof operator, and pattern matching with the instanceof operator and the switch construct." but this is clearly still implied in scope |
| 3.5 | Implement inheritance, including abstract and sealed types as well as record classes. Override methods, including that of the Object class. Implement polymorphism and differentiate between object type and reference type. | No changes |
| 3.6 | Create and use interfaces, identify functional interfaces, and utilize private, static, and default interface methods. | No changes |
| 3.7 | Create and use enum types with fields, methods, and constructors. | No changes |
| Implementing Exception Handling in Java Applications | Cosmetic changes |
| 4.1 | Handle exceptions using try/catch/finally, try-with-resources, and multi-catch blocks, including custom exceptions. | No changes |
| Using Arrays and Collections to Store and Retrieve Data | Cosmetic changes |
| 5.1 | Create arrays, List, Set, Map, Deque, and sequenced collections, and add, remove, update, retrieve, and sort their elements. | Added sequenced collections |
| Processing Data Using Streams and Lambda Expressions | Cosmetic changes |
| 6.1 | Use Java object and primitive Streams, including lambda expressions implementing functional interfaces, to create, filter, transform, process, and sort data. | No changes |
| 6.2 | Perform decomposition, concatenation, reduction, grouping and partitioning, and gather operations on sequential and parallel streams. | Added stream gatherers |
| Packaging and Deploying Java Code | No changes |
| 7.1 | Define modules and expose module content, including that by reflection, declare module dependencies, define services, providers, and consumers, and use module import declarations. | Added module imports |
| 7.2 | Compile and run Java source code, including compact source files, instance main methods, and multi-file source-code programs; create modular and non-modular jars and runtime images; and implement migration to modules using unnamed and automatic modules. | Added compact source files, instance main methods, and multi-file source-code programs |
| Implementing Multithreading for Concurrent Code Execution | Cosmetic changes |
| 8.1 | Create both platform and virtual threads. Use Runnable and Callable objects, manage the thread lifecycle, use different Executor services and concurrent API to run tasks, and use scoped values to share immutable context. | Cosmetic changes |
| 8.2 | Develop thread-safe code, using locking mechanisms and concurrent API. | No changes |
| 8.3 | Process Java collections concurrently and utilize parallel streams.} No changes |
| Performing Input and Output Operations Using the Java I/O API | Cosmetic changes |
| 9.1 | Read and write console and file data using I/O streams. | No changes |
| 9.2 | Serialize and de-serialize Java objects. | No changes |
| 9.3 | Construct, traverse, create, read, and write Path objects and their properties using the java.nio.file API. | No changes |
| Developing Applications with Localization Support | Cosmetic changes |
| 10.1 | Implement localization using locales and resource bundles. Parse and format messages, dates, times, and numbers, including currency and percentage values. | No changes |