Java OCP 11 Programmer II Study Guide

Update: Read this post to learn how to use this book to study for the new 1Z0-819 exam.

Scott Selikoff and Jeanne Boyarsky developed two study guides for the new Oracle Certified Professional (OCP), Java SE 11 Programmer exams. The second book, OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide: Exam 1Z0-816 and Exam 1Z0-817 is published by Wiley Publishing.

We are using this blog to publish information about the book such as objectives changes and any errata found within the book. To report an error in the book that is not yet listed here, please create a thread in the OCP forum and include “Sybex 816” in the subject.

For more information, visit Oracle’s Java SE 11 Programmer II exam page. If you have any questions for us, feel free to post in the OCP forum at CodeRanch which Scott and Jeanne visit frequently.

Key links

Where to buy it


Oracle has a tendency to change this information from time to time. See the exam metadata.

Changes to the objectives

  • None so far

Online Material

  • None so far

Blog posts related to OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide: Exam 1Z0-816:


All known errors are listed here. To report a potential error, please create a thread at Be sure to include “Sybex 816” and the chapter and/or page number in the subject.

211In Table 1.1, “Final” should be “final”Scott Selikoff7/3/20
491#10 – Remove all references to the Wild interfaceOksana Cherniavskaia8/19/20
531In question 16, option D, should be “Transport”, not “Transport”Tomasz Kasprzyk10/18/20
882Both instances of @SafeVargs should be @SafeVarargsPavel Serebriakov8/19/20
892In the middle page “@SafeVarargs annotation to line 4” should be “@SafeVarargs annotation to line 3”Tomasz Kasprzyk10/18/20
982#13 – “optional annotation” should be “optional annotation element”Pavel Serebriakov8/19/20
1243Set.of(‘z’, ‘o’, ‘o’) should be Set.of(‘z’, ‘o’, ‘O’)Charles O’Leary9/3/20
1293In the second paragraph, “This code compiles but throws an error at runtime” is incorrect because Map.of() does not take a varargs. This sentence should be “This code does not compile’Jos Roseboom9/19/20
1293Map.entry(“key1”) should be Map.entry(“key2”) on the second lineCharles O’Leary9/4/20
1303The merge() method takes a BIFunction, not a FunctionVasiliy Spodin9/1/20
1373In the third paragraph “a class called Comparator” should be “an interface called Comparator”Oksana Cherniavskaia8/22/20
1473Near the middle of the page “class Duck cannot be cast” should be “class Rabbit cannot be cast”Vladimir Prud8/19/20
1503In the last line of code on the page, “SizeLimiteCrate” should be “SizeLimitedCrate”Tomasz Kasprzyk10/18/20
2945In the 2nd exam essentials “as well as a try statement with a finally block” should be removedOksana Cherniavskaia8/20/20
various6There are a few references to only having one service provider implementation in a module. This is incorrect. (However, you do not need to know how to use multiple for the exam)Vasiliy Spoden9/19/20
3106“memorize as many command-line options for the 1Z0-815 exam” should be “memorize as many command-line options for the 1Z0-816 exam”Scott Selikoff6/21/20
3236Bullet 4 should say “next-highest level” rather than “next-lowest level”Tomasz Kasprzyk10/18/20
3266The sentence before figure 6.9 should say “the new module” not “the new module”Jos Roseboom9/19/20
3286At the bottom of the page, “models make up” should be “modules make up”Tomasz Kasprzyk10/18/20
3296In figure 6.10, the arrow from service provider interface to service provider is the wrong way.Jeanne Boyarsky7/10/20
3306In the last paragraph “provides a ServiceLocator” should be “provides a ServiceLoader”Vasiliy Spodi8/19/20
3426Options D, E, and F should say “magic.helper” instead of “magic.util”Edmond Yong and
Oksana Cherniavskaia
3587In the last row of Table 7.1, remove the last sentence (about returning a Future)Brad Bouquio8/19/20
3627In the first sentence of “Submitting Task Collections”, Table 7.2 should be Table 7.1Jos Roseboom9/19/20
3757The header “Applying a ReentrantLock Interface” should be “Applying a ReentrantLock”Jos Roseboom9/19/20
4368“void void” should be “void” in the first lineVladimir Prud9/1/20
4638The second to last line should say “characters”, not “digits”Daniel Polách10/18/20
4698#11 – deleteTree(“/storage”) should be deleteTree(new File(“/storage”)) in the question. Give yourself credit if you answered option F.Jos Roseboom9/19/20
4738#22 “line 15” should say “line 17”Jos Roseboom9/19/20
4919In the tip “Files.resolve()” should be “resolve()”Jos Roseboom9/19/20
4949In table 9.3, toURI() should be toUrl()Edmund Yong9/19/20
4949In table 9.3, relativize() should be relativize(Path)Dario Orescanin10/18/20
5119In the second to last paragraph “Steam” should be “Stream”Jos Roseboom9/19/20
5149In the fifth row of table 9.6, “nest.gif” would be “wings.gif”Jos Roseboom9/19/20
59611In table 11.2, ObjectInputStream and ObjectOutputStream should be swappedIlenia Salvadori9/19/20
VariousAppendixAll references to “zoo.animals” should be “zoo.animal”Jeanne Boyarsky6/17/20
676Chapter 6 answer#9 – The answer should be H and “–internal-jdk” should be “jdk-internals”Mustafa Iilkkan7/18/20
677Chapter 6 explanation#15 – “The service provider must” should be “The service locator must”Edmund Yong8/22/20
680Chapter 7 Explanation#14 – The answer is correct. Option C would not be correct though i the method were fixed because service is not effectively final.Tomasz Kasprzyk10/18/20
688App Answer#11 – give yourself credit if you answered E (But knowing that is out of scope)Oksana Cherniavskaia7/19/20
Test bank1The question about which module “can reference classes” in another module has the wrong answer. E and F are also correct.Fabio Salvi8/19/20