Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Core Java SE 9 for the impatient (2nd ed.)
Horstmann C., Addison-Wesley Professional, New York, NY, 2018. 576 pp. Type: Book (978-0-134694-72-6)
Date Reviewed: Sep 18 2019

The Java language is platform independent (can run on most operating systems, including Microsoft Windows and Linux/Unix) and the most widely used object-oriented programming (OOP) language in the world. It remains modern by including enhancements and growing in terms of number of classes and application programming interfaces (APIs) with each new release.

Overall, the book presents and discusses the novelty of core Java, and guides professionals via the valuable expertise of the author. Its 15 chapters cover OOP fundamentals, programming structures like the use of interfaces, and the different collection systems (ArrayList, HashMap, and so on). The author concisely discusses via many examples topics such as lambda expressions and streams, which were added to the Java core since Java 8. Furthermore, he includes tips gained from his extensive programming experiences.

The book is well structured and the sequence of chapters is judiciously chosen to gradually take an experienced Java developer through OOP and Java 9. It starts with the basics of OOP and Java through the novelties Java 9 brings. Regarding the author’s writing style, the book is readable and easy to understand. I appreciate its clarity as well as its simplicity. For example, in Section 2.6, “Nested Class,” the author states, “[t]his can be useful to restrict visibility” and shows how this works by means of inner and static classes.

Compared to Java programming “cookbooks” [1,2], Horstmann’s book is more for intermediate and experienced OOP/Java developers. While experienced Java developers will consolidate their knowledge and gain new skills, beginners with little OOP and Java experience will unfortunately only learn the basics.

The book fails to describe OOP and Java artifacts from the perspective of a less skilled Java developer with little background in OOP. Many points are not explained. For example, the notion of packages is not fully explained on page 3. It does not matter if the chapter is introducing the book or not. Once the author starts defining a package, he should fully explain it or direct readers to a chapter where he does. I found this awkward. Sections 2.5 (“Packages”) and 2.5.4 (“Package Access”) do not fully explain the visibility of classes within a package and their accessibility from outside the package. It is well known that a private feature is only visible and accessible within the same class as it is declared. A feature with no access modifier is only visible and accessible within classes in the same package. A protected feature is visible and accessible within all classes in the same package and within subclasses in other packages. A public feature is visible and accessible to all classes, and thus also in other packages, unless the class resides in a module that does not export the package it is declared in. While Section 2.5.4, “Package Access,” does briefly explain the visibility of private, public, and features without modifiers, it forgets protected features (see p. 83). Section 4.1.9 fortunately handles the visibility of protected features; however, it fails to explain a feature’s visibility outside a package or from another package. In chapter 15, Horstmann writes: “Any feature with package access (neither public nor private) is accessible only from methods in the same package.” I tend to disagree with the use of the word “only.” Public features with package access are accessible from everywhere.

The manner in which Horstmann presents visibility throughout is proof that the book is for readers with a strong OOP and Java background. It is regrettable that such a well-written and valuable book excludes an important audience, that is, beginners. Furthermore, the preface states that the book is intended for Java professionals, though not for academic use. I really do not think so. Regarding the structure of the book and topics covered, I would additionally recommend the book for academic work. Though for broad academic use, a chapter containing solutions to the exercises would need to be provided.

In conclusion, I strongly recommend this book for experienced developers and students with a strong OOP and Java background.

More reviews about this item: Amazon, Goodreads

Reviewer:  Thierry Edoh Review #: CR146697 (1912-0416)
1) Darwin, I. Java Cookbook: solutions and examples for Java developers (3rd ed.). O’Reilly, Sebastopol, CA, 2014.
2) Sanaulla, M. ; Samoylov, N. Java 9 cookbook: solutions for modular, functional, reactive, and multithreaded programming. Packt, Birmingham, UK, 2017.
Bookmark and Share
  Featured Reviewer  
 
Java (D.3.2 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Java": Date
Java for C/C++ programmers
Daconta M., John Wiley & Sons, Inc., New York, NY, 1996. Type: Book (9780471153245)
Apr 1 1997
Java programming explorer
Bartlett N., Leslie A., Simkin S., Coriolis Group Books, Scottsdale, AZ, 1996. Type: Book (9781883577810)
Apr 1 1997
The Java handbook
Naughton P., Osborne/McGraw-Hill, Berkeley, CA, 1996. Type: Book (9780078821998)
Apr 1 1997
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy