Java SE 17 (1Z0-829) study plan
Java SE 17 (1Z0-829) · Give each week a clear focus.
8 weeks · About 7 hours per week
Handling date, time, text, numeric and boolean values
Write and run code that converts between LocalDate, LocalDateTime, ZonedDateTime and Instant, printing results after each conversion to confirm the mapping.
Construct dates with LocalDate.of and adjust them with plusDays, minusMonths and with(TemporalAdjusters.nextOrSame(...)), predicting each output before running it.
Compare two ZonedDateTime values around a DST spring-forward gap and a fall-back overlap, and explain in writing why one instant may be skipped or repeated.
Format and parse the same LocalDateTime with DateTimeFormatter.ofPattern using both a custom pattern and FormatStyle.MEDIUM, noting which throws on bad input.
Your checkpoint
A single runnable Java file plus a one-page notes sheet listing every date/time type, its time-zone awareness, and one line of code that creates it.
Handling date, time, text, numeric and boolean values
Build and manipulate Period and Duration objects, then add each to a LocalDate and a LocalTime to show which combinations compile and which do not.
Use Duration.between and Period.between on the same pair of values and explain the difference in the results.
Write code that formats numbers with NumberFormat and DecimalFormat, including a locale-sensitive currency example, and record the exact output strings.
Parse a decimal string with Integer.parseInt and Double.parseDouble, then trigger and catch NumberFormatException to see the exception message.
Your checkpoint
A passing mini test class (plain main method with assertions) covering at least 15 date/time and number-formatting cases, with expected values written as comments.
Utilizing collections and streams
Create List, Set, Map and Deque instances using factory methods and the correct implementation class for each use case, justifying the choice in a comment.
Add, remove and iterate over elements of a HashMap and a TreeMap, and demonstrate what happens when a null key is inserted into each.
Override equals and hashCode on a small record or class, then show that a HashSet rejects a duplicate and that a TreeSet throws when no ordering exists.
Use Comparator.comparing and thenComparing to sort a list of objects by two fields, including a reversed secondary sort.
Your checkpoint
A comparison table of List, Set, Map and Queue implementations (ordering, duplicates, nulls allowed) backed by a runnable class that proves each row.
Utilizing collections and streams & Using object-oriented concepts and functional interfaces
Build a stream pipeline that filters, maps, sorts and collects into a List, then rewrite the same pipeline using collect(Collectors.groupingBy(...)).
Use Optional with map, flatMap, orElse and orElseThrow, and handle an empty Optional without calling get().
Write a lambda for a custom functional interface and replace it with a method reference where the signature allows.
Chain stream operations lazily and prove with print statements that intermediate operations run only when the terminal operation executes.
Your checkpoint
A stream-processing class that reads a hardcoded list of records and produces grouped, sorted summary output, plus a written trace showing the order in which pipeline stages execute.
Controlling program flow
Write if/else and switch statements over int, String and enum values, then convert each switch to the arrow form and confirm identical behavior.
Use a switch expression with yield and a multi-label case, and demonstrate that a non-exhaustive switch expression over an enum fails to compile.
Construct nested for, while and do/while loops that use labeled break and labeled continue, and trace the iteration counts by hand before running.
Predict the output of a loop that modifies a loop variable inside the body and one that uses a for-each over a list being structurally modified, then verify what actually happens.
Your checkpoint
A set of 10 code snippets with hand-written predicted output, each verified by running, with a note on every snippet where the prediction was wrong.
Handling exceptions and using local variable type inference
Write try/catch/finally blocks where finally returns a value or throws, and record which result actually wins.
Create a custom checked exception and a custom unchecked exception, then declare, throw and catch each in a method chain that demonstrates propagation.
Use try-with-resources with two AutoCloseable resources and confirm the close order and suppressed-exception behavior.
Apply var to local variables, for-loop variables and try-with-resources, and list the declarations where var is illegal (fields, method parameters, null initializer, lambda parameters without types).
Your checkpoint
An exception-handling demo class with at least 8 scenarios, each printing the caught exception type and message, accompanied by a short written explanation of close order and suppressed exceptions.
Using object-oriented concepts and functional interfaces
Design an abstract class and an interface hierarchy, then implement both in one concrete class and resolve a default-method conflict explicitly.
Demonstrate polymorphism through an overridden method called via a supertype reference, and show the difference between field hiding and method overriding.
Create a sealed interface with permitted subclasses (final, non-sealed, sealed) and verify that an unlisted implementer fails to compile.
Implement a functional interface with a lambda, a method reference and an anonymous class, then explain when each form is required.
Your checkpoint
A small object model (at least 5 types using abstract class, interface, sealed hierarchy and records) with a driver class that exercises every relationship, plus a diagram of the type hierarchy.
Handling date, time, text, numeric and boolean values & Utilizing collections and streams & Controlling program flow & Handling exceptions and using local variable type inference & Using object-oriented concepts and functional interfaces
Take two full-length timed practice exams under exam conditions and log every missed question against its domain.
Re-implement from scratch the five code patterns missed most often (date formatting, stream grouping, switch expression, try-with-resources, sealed types) without consulting notes.
Review the domain weighting and schedule extra drilling for whichever domain scored below 70 percent on the practice runs.
Re-read the notes sheets from weeks 1 through 7 and rewrite each into a single condensed cheat sheet of no more than two pages.
Your checkpoint
A scored practice-exam log with per-domain accuracy, plus a two-page cheat sheet that covers every domain and the specific mistakes found in the practice runs.
Milestones
Week 2: Can create, convert, format and parse LocalDate, LocalDateTime, ZonedDateTime, Instant, Period and Duration from memory, and correctly answers 15 date/time and number-formatting questions in a row.
Week 4: Can write a filter-map-collect pipeline and a groupingBy collector without reference material, and explain lazy evaluation and Optional handling aloud in under five minutes.
Week 6: Can predict the output of try/catch/finally and try-with-resources snippets, including suppressed exceptions, with at least 90 percent accuracy across 10 snippets.
Week 8: Scores at least 75 percent overall on two timed practice exams with no domain below 65 percent, and has a completed per-domain error log and two-page cheat sheet.