Java OCP 11 Programmer II Study Guide

Message from the Authors: Read The 1Z0-819 Exam page to learn how you can easily use this book to prepare for Oracle’s 1Z0-819 Exam, as well as the 1Z0-817 Upgrade Exam.

Scott Selikoff and Jeanne Boyarsky developed a two-part study guide for the new Oracle Certified Professional (OCP), Java SE 11 Programmer exams, 1Z0-819. The second book, OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide is published by Wiley Publishing. It can so be used by itself to prepare for the 1Z0-817 Upgrade Exam.

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” (or 817) in the subject.

For more information, visit Oracle’s Java SE 11 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:


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.

ivIntro#13 explanation -“Line 10 includes” should be “Line 9 includes”Olivia Johnson2/21/21
211In Table 1.1, “Final” should be “final”Scott Selikoff7/3/20
411“required when using the parameter name” should be “required when using the parameter typeRonaldo Rosa7/4/21
441new Inner() should be new Outer().new Inner()Jesse Silverman11/13/20
491#10 – Remove all references to the Wild interfaceOksana Cherniavskaia8/19/20
501#11 – Remove the line numbersDaniel Fernandez Boada11/11/21
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
932In the summary, “depreciation” should be “deprecation”Karsten Thoms7/4/21
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
1293“It is not true that you can pass “any number of pairs” should be “up to 10 pairs”João Lopes3/4/23
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
1303In Table 3.7, forEach() and merge() have parens instead of <> around the genericsTaiwo Ajayi6/29/22
1363In the real world scenario, “Queue” should be “List”Mourid Smida11/22/22
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
1633“Character is autoboxed into char” should be “Character is unboxed into char”Emmanuel Szpiega7/4/22
2214In the middle of the page “The other methods would return an empty optional” is incorrect. getMin() and getMax() return MAX_VALUE and MIN_VALUE respectively. And average returns 0.0Javid Asgarov7/3/21
2274“Collectors interface” should be “Collectors class”Amir Shah12/26/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
3106“Derivative” should be “Directive” in the Table 6.1 headerBorislav Mirchev7/3/21
3156“do not export any packages to named or automatic modules” should be “do not export any packages to named modules”Hans-Joachim Bleichenbacher7/4/22
3256Bullet 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
3296In figure 6.10 “reservation” should be “reservations”Emmanuel Szpiega7/4/22
3306In the last paragraph “provides a ServiceLocator” should be “provides a ServiceLoader”Vasiliy Spodi8/19/20
3426#14 – Options D, E, and F should say “magic.helper” instead of “magic.util”Edmond Yong and
Oksana Cherniavskaia
3567In the third paragraph, “results are guaranteed to be executed sequentially” should be “tasks are guaranteed to be executed sequentially”Matus Iglarcik12/26/20
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
3767I the table “until lock is required’ should be “unit lock is acquired”Taiwo Ajayi4/30/22
4147#20. The ExecutiveService reference should be initialized with a service value when it is created (rather than null) so that it is effectively final and can be used inside the lambda. Roy van Rijn1/3/22
4368“void void” should be “void” in the first lineVladimir Prud9/1/20
4398In Table 8.4, void write(int) should be void write (int b)Tomasz Kasprzy11/13/20
4418In the second paragraph, copy() should be copyFile()Nyeng Gyang7/17/21
4538The first paragraph on the page about wrapping a low-level file stream class should be removedAlejandro Vizcaino10/10/22
4548The four method signatures at the end should have the … before argsMatus Iglarcik12/26/20
4638The second to last line should say “characters”, not “digits”Daniel Polách10/18/20
4698#10. Option F should include that an instance member could also be null. Roy van Rijn 1/3/22
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
4809public URI toURI() should be public URI toUri()Joel Kaze2/14/21
4919In the tip “Files.resolve()” should be “resolve()”Jos Roseboom9/19/20
4919At the bottom of the page, relativize(), should be relativize(Path path)Joel Kaze2/14/21
4949In table 9.3, toURI() should be toUri()Edmund Yong9/19/20
4949In table 9.3, relativize() should be relativize(Path)Dario Orescanin10/18/20
4979In the first paragraph, “cobra is a symbolic link to snake” should be “snake is a symbolic link to cobra”Tomasz Kasprzyk11/13/20
5119In the second to last paragraph “Steam” should be “Stream”Jos Roseboom9/19/20
5129The last line should say “Total Size”, not “Total Directory Tree Size”Umur Poyraz12/7/21
5149In table 9.6, the third to last line should be /birds/robin/allBirds/robin/allBirdsDaniel Odrinski12/17/23
5149In the fifth row of table 9.6, “nest.gif” would be “wings.gif”Jos Roseboom9/19/20
54810In table 10.4, all of the wrapper classes should be changed to primitivesTomasz Kasprzyk11/13/20
56810In question #8, the SQL should reference the animal table rather than the names tableTomasz Kasprzyk11/13/20
59611In table 11.2, ObjectInputStream and ObjectOutputStream should be swappedIlenia Salvadori9/19/20
59911In the code block, the getOrder() method should be staticTomasz Kasprzyk11/13/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
681Chapter 7 Explanation#22 – sheepCount2 should be s2Vitaliy Kotov1/5/22
687Chapter 9 Answer#11 – give yourself credit if you answered E (But knowing that is out of scope)Oksana Cherniavskaia7/19/20
688Chapter 9 Answer#22 – The correct answer is C and E. APPEND throws an exception if the file does not existMatus Iglarcik12/26/20
691Chapter 11 answer#6 – A is not correct. clone() is protected, not publicAlejandro Vizcaino10/10/22
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
Test bank1The question with r.negate() should also have BiPredicate as a correct answerSamuel Silver Moos1/26/21
Test bank2The question with the functional interfaces should accept Double Consumer as a correct answerWill Easter10/11/21
FlashcardsThe flashcard about get() should be Supplier as the answerGuerchi Lucio12/26/20