OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide - Scott Selikoff - E-Book

OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide E-Book

Scott Selikoff

0,0
32,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

This OCP Oracle Certified Professional Java SE 11 Programmer I Study Guide: Exam 1Z0-815 and the Programmer II Study Guide: Exam 1Z0-816 were published before Oracle announced major changes to its OCP certification program and the release of the new Developer 1Z0-819 exam. No matter the changes, rest assured both of the Programmer I and II Study Guides cover everything you need to prepare for and take Exam 1Z0-819. If you've purchased one of the Programmer Study Guides, purchase the other one and you'll be all set. NOTE: The OCP Java SE 11 Programmer I Exam 1Z0-815 and Programmer II Exam 1Z0-816 have been retired (as of October 1, 2020), and Oracle has released a new Developer Exam 1Z0-819 to replace the previous exams. The Upgrade Exam 1Z0-817 remains the same. The completely-updated preparation guide for the new OCP Oracle Certified Professional Java SE 11 Programmer II exam--covers Exam 1Z0-816 Java, a platform-independent, object-oriented programming language, is used primarily in mobile and desktop application development. It is a popular language for client-side cloud applications and the principal language used to develop Android applications. Oracle has recently updated its Java Programmer certification tracks for Oracle Certified Professional. OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide ensures that you are fully prepared for this difficult certification exam. Covering 100% of exam objectives, this in-depth study guide provides comprehensive coverage of the functional-programming knowledge necessary to succeed. Every exam topic is thoroughly and completely covered including exceptions and assertions, class design, generics and collections, threads, concurrency, IO and NIO, and more. Access to Sybex's superior online interactive learning environment and test bank--including self-assessment tests, chapter tests, bonus practice exam questions, electronic flashcards, and a searchable glossary of important terms--provides everything you need to be fully prepared on exam day. This must-have guide: * Covers all exam objectives such as inheriting abstract classes and interfaces, advanced strings and localization, JDBC, and Object-Oriented design principles and patterns * Explains complex material and reinforces your comprehension and retention of important topics * Helps you master more advanced areas of functional programming * Demonstrates practical methods for building Java solutions OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide will prove invaluable for anyone seeking achievement of this challenging exam, as well as junior- to senior-level programmers who uses Java as their primary programming language.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 1104

Veröffentlichungsjahr: 2020

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Cover

Acknowledgments

About the Authors

Introduction

Understanding the Exam

Reading This Book

Preparing for the Exam

Taking the Exam

Objective Map

Taking the Assessment Test

Chapter 1: Java Fundamentals

Applying the

final

Modifier

Working with Enums

Creating Nested Classes

Understanding Interface Members

Introducing Functional Programming

Summary

Exam Essentials

Review Questions

Chapter 2: Annotations

Introducing Annotations

Creating Custom Annotations

Applying Annotations

Declaring Annotation-Specific Annotations

Using Common Annotations

Summary

Exam Essentials

Review Questions

Chapter 3: Generics and Collections

Using Method References

Using Wrapper Classes

Using the Diamond Operator

Using Lists, Sets, Maps, and Queues

Sorting Data

Working with Generics

Summary

Exam Essentials

Review Questions

Chapter 4: Functional Programming

Working with Built-in Functional Interfaces

Returning an

Optional

Using Streams

Working with Primitive Streams

Working with Advanced Stream Pipeline Concepts

Summary

Exam Essentials

Review Questions

Chapter 5: Exceptions, Assertions, and Localization

Reviewing Exceptions

Creating Custom Exceptions

Automating Resource Management

Declaring Assertions

Working with Dates and Times

Supporting Internationalization and Localization

Loading Properties with Resource Bundles

Summary

Exam Essentials

Review Questions

Chapter 6: Modular Applications

Reviewing Module Directives

Comparing Types of Modules

Analyzing JDK Dependencies

Migrating an Application

Creating a Service

Summary

Exam Essentials

Review Questions

Chapter 7: Concurrency

Introducing Threads

Creating Threads with the Concurrency API

Writing Thread-Safe Code

Using Concurrent Collections

Identifying Threading Problems

Working with Parallel Streams

Summary

Exam Essentials

Review Questions

Chapter 8: I/O

Understanding Files and Directories

Introducing I/O Streams

Common I/O Stream Operations

Working with I/O Stream Classes

Interacting with Users

Summary

Exam Essentials

Review Questions

Chapter 9: NIO.2

Introducing NIO.2

Interacting with Paths

Operating on Files and Directories

Managing File Attributes

Applying Functional Programming

Comparing Legacy

java.io.File

and NIO.2 Methods

Summary

Exam Essentials

Review Questions

Chapter 10: JDBC

Introducing Relational Databases and SQL

Introducing the Interfaces of JDBC

Connecting to a Database

Working with a

PreparedStatement

Getting Data from a

ResultSet

Calling a

CallableStatement

Closing Database Resources

Summary

Exam Essentials

Review Questions

Chapter 11: Security

Designing a Secure Object

Introducing Injection and Input Validation

Working with Confidential Information

Serializing and Deserializing Objects

Constructing Sensitive Objects

Preventing Denial of Service Attacks

Summary

Exam Essentials

Review Questions

Appendix A: The Upgrade Exam

Working with Local Variable Type Inference

Introducing Modules

Creating and Running a Modular Program

Updating Our Example for Multiple Modules

Diving into the

module-info

File

Discovering Modules

Reviewing Command-Line Options

Summary

Exam Essentials

Review Questions

Appendix B: Answers to Review Questions

Chapter 1: Java Fundamentals

Chapter 2: Annotations

Chapter 3: Generics and Collections

Chapter 4: Functional Programming

Chapter 5: Exceptions, Assertions, and Localization

Chapter 6: Modular Applications

Chapter 7: Concurrency

Chapter 8: I/O

Chapter 9: NIO.2

Chapter 10: JDBC

Chapter 11: Security

Appendix A: The Upgrade Exam

Index

Online Test Bank

Register and Access the Online Test Bank

End User License Agreement

List of Tables

Chapter 1

TABLE 1.1 Modifiers in nested classes

TABLE 1.2 Members in nested classes

TABLE 1.3 Nested class access rules

TABLE 1.4 Interface member types

TABLE 1.5 Interface member access

Chapter 2

TABLE 2.1 Values for the

@Target

annotation

TABLE 2.2 Values for the @Retention annotation

TABLE 2.3 Annotation-specific annotations

TABLE 2.4 Common @

SuppressWarnings

values

TABLE 2.5 Understanding common annotations

TABLE 2.6 Applying common annotations

Chapter 3

TABLE 3.1 Functional interfaces used in this chapter

TABLE 3.2 Method references

TABLE 3.3 Wrapper classes

TABLE 3.4 Factory methods to create a List

TABLE 3.5 List methods

TABLE 3.6 Queue methods

TABLE 3.7 Map methods

TABLE 3.8 Behavior of the merge() method

TABLE 3.9 Java Collections Framework types

TABLE 3.10 Collection attributes

TABLE 3.11 Comparison of Comparable and Comparator

TABLE 3.12 Helper static methods for building a Comparator

TABLE 3.13 Helper default methods for building a Comparator

TABLE 3.14 Types of bounds

TABLE 3.15 Why we need a lower bound

Chapter 4

TABLE 4.1 Common functional interfaces

TABLE 4.2 Convenience methods

TABLE 4.3

Optional

instance methods

TABLE 4.4 Intermediate vs. terminal operations

TABLE 4.5 Creating a source

TABLE 4.6 Terminal stream operations

TABLE 4.7 Common primitive stream methods

TABLE 4.8 Mapping methods between types of streams

TABLE 4.9 Function parameters when mapping between types of streams

TABLE 4.10 Optional types for primitives

TABLE 4.11 Common functional interfaces for primitives

TABLE 4.12 Primitive-specific functional interfaces

TABLE 4.13 Examples of grouping/partitioning collectors

Chapter 5

TABLE 5.1 Unchecked exceptions

TABLE 5.2 Checked exceptions

TABLE 5.3 Assertion applications

TABLE 5.4 Date and time types

TABLE 5.5 Common date/time symbols

TABLE 5.6 Supported date/time symbols

TABLE 5.7 Factory methods to get a

NumberFormat

TABLE 5.8

DecimalFormat

symbols

TABLE 5.9 Factory methods to get a

DateTimeFormatter

TABLE 5.10

Locale.Category

values

TABLE 5.11 Picking a resource bundle for French/France with default locale En...

TABLE 5.12 Selecting resource bundle properties

Chapter 6

TABLE 6.1 Common module directives

TABLE 6.2 Practicing with automatic module names

TABLE 6.3 Properties of modules types

TABLE 6.4 Common modules

TABLE 6.5 Java modules prefixed with java

TABLE 6.6 Java modules prefixed with jdk

TABLE 6.7 Comparing migration strategies

TABLE 6.8 Reviewing services

Chapter 7

TABLE 7.1

ExecutorService

methods

TABLE 7.2

Future

methods

TABLE 7.3

TimeUnit

values

TABLE 7.4

ScheduledExecutorService

methods

TABLE 7.5

Executors

factory methods

TABLE 7.6 Atomic classes

TABLE 7.7 Common atomic methods

TABLE 7.8

Lock

methods

TABLE 7.9 Concurrent collection classes

TABLE 7.10

BlockingQueue

waiting methods

TABLE 7.11 Synchronized collections methods

Chapter 8

TABLE 8.1 Commonly used java.io.File methods

TABLE 8.2 The java.io abstract stream base classes

TABLE 8.3 The java.io concrete stream classes

TABLE 8.4 Common I/O stream methods

TABLE 8.5 Common print stream format() symbols

Chapter 9

TABLE 9.1 File system symbols

TABLE 9.2 Common NIO.2 method arguments

TABLE 9.3 Path methods

TABLE 9.4

Files

methods

TABLE 9.5 The attributes and view types

TABLE 9.6 Walking a directory with a cycle using breadth-first search

TABLE 9.7 Comparison of

java.io.File

and NIO.2 methods

Chapter 10

TABLE 10.1 CRUD operations

TABLE 10.2 SQL runnable by the

execute

method

TABLE 10.3 Return types of

execute

methods

TABLE 10.4

PreparedStatement

methods

TABLE 10.5

ResultSet get

methods

TABLE 10.6 Sample stored procedures

TABLE 10.7 Stored procedure parameter types

Chapter 11

TABLE 11.1 Types of confidential data

TABLE 11.2 Methods for serialization and deserialization

Appendix A

TABLE A.1 Options you need to know for using modules with

javac

TABLE A.2 Options you need to know for using modules with

java

TABLE A.3 Access control with modules

TABLE A.4 Modes using jmod

TABLE A.5 Comparing command-line operations

TABLE A.6 Options you need to know for the exam:

javac

TABLE A.7 Options you need to know for the exam:

java

TABLE A.8 Options you need to know for the exam:

jar

TABLE A.9 Options you need to know for the exam:

jdeps

List of Illustrations

Introduction

FIGURE I.1 Past and current Java certifications

FIGURE I.2 Latest Java certification exams

FIGURE I.3 Exam prerequisites

Chapter 1

FIGURE 1.1 Lambda syntax omitting optional parts

FIGURE 1.2 Lambda syntax, including optional parts

Chapter 2

FIGURE 2.1 Annotation declaration

FIGURE 2.2 Using an annotation

Chapter 3

FIGURE 3.1 The

Collection

interface is the root of all collections except ma...

FIGURE 3.2 Example of a

List

FIGURE 3.3 Example of a

Set

FIGURE 3.4 Examples of a

HashSet

and

TreeSet

FIGURE 3.5 Example of a

Queue

FIGURE 3.6 Working with a queue

FIGURE 3.7 Example of a

Map

Chapter 4

FIGURE 4.1

Optional

FIGURE 4.2 Stream pipeline

FIGURE 4.3 Steps in running a stream pipeline

FIGURE 4.4 A stream pipeline with a limit

FIGURE 4.5 Stream pipeline with multiple intermediate operations

Chapter 5

FIGURE 5.1 The syntax of a

try

statement

FIGURE 5.2 The syntax of a try‐with‐resources statement

FIGURE 5.3 Categories of exceptions

FIGURE 5.4 The syntax of

assert

statements

FIGURE 5.5

Locale

formats

Chapter 6

FIGURE 6.1 A named module

FIGURE 6.2 An automatic module

FIGURE 6.3 An unnamed module

FIGURE 6.4 Determining the order

FIGURE 6.5 Determining the order when not unique

FIGURE 6.6 Bottom-up migration

FIGURE 6.7 Top-down migration

FIGURE 6.8 First attempt at decomposition

FIGURE 6.9 Removing the cyclic dependencies

FIGURE 6.10 Modules in the tour application

Chapter 7

FIGURE 7.1 Process model

FIGURE 7.2

ExecutorService

life cycle

FIGURE 7.3 Lack of thread synchronization

FIGURE 7.4 Thread synchronization using atomic operations

FIGURE 7.5 Race condition on user creation

Chapter 8

FIGURE 8.1 Directory and file hierarchy

FIGURE 8.2 Visual representation of a stream

FIGURE 8.3 Serialization process

FIGURE 8.4 Diagram of I/O stream classes

Chapter 9

FIGURE 9.1 File system with a symbolic link

FIGURE 9.2 NIO.2 class and interface relationships

FIGURE 9.3 Relative paths using path symbols

FIGURE 9.4 Comparing file uniqueness

FIGURE 9.5 File and directory as a tree structure

FIGURE 9.6 File system with cycle

Chapter 10

FIGURE 10.1 Tables in our relational database

FIGURE 10.2 Key JDBC interfaces

FIGURE 10.3 The JDBC URL format

FIGURE 10.4 Types of statements

FIGURE 10.5 The

ResultSet

cursor

Chapter 11

FIGURE 11.1

Cloneable

logic

FIGURE 11.2 Hours table

FIGURE 11.3 Directory structure

FIGURE 11.4 Writing and reading an employee

Appendix A

FIGURE A.1 Design of a modular system

FIGURE A.2 Looking inside a module

FIGURE A.3 Contents of

zoo.animal.feeding

FIGURE A.4 Module

zoo.animal.feeding

directory structure

FIGURE A.5 Running a module using

java

FIGURE A.6 Module

zoo.animal.feeding

directory structure with

class

and

jar

...

FIGURE A.7 Modules depending on

zoo.animal.feeding

FIGURE A.8 Contents of

zoo.animal.care

FIGURE A.9 Module

zoo.animal.care

directory structure

FIGURE A.10 Dependencies for

zoo.animal.talks

FIGURE A.11 Contents of

zoo.animal.talks

FIGURE A.12 Contents of

zoo.staff

FIGURE A.13 Dependencies for

zoo.staff

FIGURE A.14 Transitive dependency version of our modules

Guide

Cover

Table of Contents

Begin Reading

Pages

i

ii

iii

v

vii

xxi

xxii

xxiii

xxiv

xxv

xxvi

xxvii

xxviii

xxix

xxx

xxxi

xxxii

xxxiii

xxxiv

xxxv

xxxvi

xxxvii

xxxviii

xxxix

xl

xli

xlii

xliii

xliv

xlv

xlvi

xlvii

xlviii

xlix

l

li

lii

liii

liv

lv

lvi

lvii

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711

OCP Oracle® Certified Professional Java® SE 11 Programmer II

Study Guide Exam 1Z0-816 and Exam 1Z0-817

 

Scott Selikoff

Jeanne Boyarsky

 

Copyright © 2020 by John Wiley & Sons, Inc., Indianapolis, Indiana

Published simultaneously in Canada and the United Kingdom.

ISBN: 978-1-119-61762-4ISBN: 978-1-119-61763-1 (ebk)ISBN: 978-1-119-61758-7 (ebk)

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services or to obtain technical support, please contact our Customer Care Department within the U.S. at (877) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.

Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with standard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at booksupport.wiley.com. For more information about Wiley products, visit www.wiley.com.

Library of Congress Control Number: 2020938185

TRADEMARKS: Wiley, the Wiley logo, and the Sybex logo are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. Oracle and Java are registered trademarks of Oracle America, Inc. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc. is not associated with any product or vendor mentioned in this book.

For my daughter, Sophia, you're the best combination of super silly and super serious. You always know exactly what you want. May you never lose that trait as you grow into a strong woman.

—Scott

 

Happy 20th anniversary to NYC FIRST and StuyPulse FRC Team 694.

—Jeanne

Acknowledgments

Scott and Jeanne would like to thank numerous individuals for their contribution to this book. Thank you to Kathryn Duggan for guiding us through the process and making the book better in so many ways. Thank you to Janeice DelVecchio for being our technical editor as we wrote this book. Janeice pointed out many subtle errors in addition to the big ones. And thank you to Elena Felder for being our technical proofreader and finding the errors that we managed to sneak by Janeice. This book also wouldn't be possible without many people at Wiley, including Kenyon Brown, Pete Gaughan, Christine O'Connor, Kim Wimpsett, Johnna VanHoose Dinse and so many others.

Scott could not have reached this point without his wife, Patti, and family, whose love and support makes this book possible. He would like to thank his twin daughters, Olivia and Sophia, and youngest daughter, Elysia, for their patience and understanding especially when it was “time for Daddy to work in his office!” Scott would like to extend his gratitude to his wonderfully patient co-author, Jeanne, on this, their fifth book. He doesn't know how she puts up with him, but he's glad she does and thrilled at the quality of books we produce. A big thanks to Matt Dalen, who has been a great friend, sounding board, and caring father to Olivia, Adeline, and newborn Henry. Finally, Scott would like to thank his mother and retired teacher, Barbara Selikoff, for teaching him the value of education, and his father, Mark Selikoff, for instilling in him the benefits of working hard.

Jeanne would personally like to thank Chris Kreussling for knowing more than a decade ago that she would someday write a book. He was a great mentor for many years and definitely shaped her career. Sibon Barman was helpful in getting feedback on the modules chapter, and Susanta Chattopadhyay provided real-life use cases for both service locator and serialization. Stuart Dabbs Halloway's 2001 book provided examples of serialPeristentFields. Scott was a great co-author, improving everything Jeanne wrote while writing his own chapters. A big thank-you to everyone at CodeRanch.com who asked and responded to questions and comments about our books. Finally, Jeanne would like to thank all of the new programmers at CodeRanch.com and FIRST robotics teams FRC 694, FTC 310, and FTC 479 for the constant reminders of how new programmers think.

We'd both like to thank Marcus Biel for providing a European's take on our localization content. Last but not least, both Scott and Jeanne would like to give a big thank-you to the readers of all our books. Hearing from all of you who enjoyed the book and passed the exam is a great feeling. We'd also like to thank those who pointed out errors and made suggestions for improvements in the 1Z0-815 Java 11 book. As of April 2020, the top two were Nikolai Vinoku and Edmond Yong. Also, an honorable mention to Jakub Chrobak.

About the Authors

Scott Selikoff is a professional software consultant, author, and owner of Selikoff Solutions, LLC, which provides software development solutions to businesses in the tri-state New York City area. Skilled in a plethora of software languages and platforms, Scott specializes in full-stack database-driven systems, cloud-based applications, microservice architectures, and service-oriented architectures.

A native of Toms River, New Jersey, Scott achieved his Bachelor of Arts degree from Cornell University in Mathematics and Computer Science in 2002, after three years of study. In 2003, he received his Master of Engineering degree in Computer Science, also from Cornell University.

As someone with a deep love of education, Scott has always enjoyed teaching others new concepts. He's given lectures at Cornell University and Rutgers University, as well as conferences including Oracle Code One and The Server Side Java Symposium. Scott lives in New Jersey with his loving wife, Patti; three amazing daughters, twins Olivia and Sophia and little Elysia; and two very playful dogs, Webby and Georgette. You can find out more about Scott at www.linkedin.com/in/selikoff or follow him on Twitter @ScottSelikoff.

Jeanne Boyarsky was selected as a Java Champion in 2019. She has worked as a Java developer for more than 18 years at a bank in New York City where she develops, mentors, and conducts training. Besides being a senior moderator at CodeRanch.com in her free time, she works on the forum code base. Jeanne also mentors the programming division of a FIRST robotics team where she works with students just getting started with Java. She also speaks at several conferences each year.

Jeanne got her Bachelor of Arts degree in 2002 and her Master in Computer Information Technology degree in 2005. She enjoyed getting her Master's degree in an online program while working full-time. This was before online education was cool! Jeanne is also a Distinguished Toastmaster and a Scrum Master. You can find out more about Jeanne at www.jeanneboyarsky.com or follow her on Twitter at @JeanneBoyarsky.

Scott and Jeanne are both moderators on the CodeRanch.com forums and can be reached there for question and comments. They also co-author a technical blog called Down Home Country Coding at www.selikoff.net.

In addition to this book, Scott and Jeanne are also authors of the following best-selling Java 8 certification books: OCA Oracle Certified Associate Java SE 8 Programmer I Study Guide (Sybex, 2015) and OCP Oracle Certified Professional Java SE 8 Programmer II Study Guide (Sybex, 2016). These two books have been combined into the single release: OCA/OCP Java SE 8 Programmer Certification Kit: Exam 1Z0-808 and Exam 1Z0-809 (Sybex 2016). They have also written a book of practice test questions for the Java 8 certification exams: OCA/OCP Java SE 8 Programmer Practice Tests (Sybex, 2017). Their most recent book is OCP Oracle Certified Professional Java SE 11 Programmer I Study Guide: Exam 1Z0-815 (Sybex, 2019).