Reviewed: May 2015
Sooner or later most coder-readers will bump into a work by Paul and Harvey Deitel (Deitel & Associates Inc). The father and son duo published a few dozens of books and recently ventured into creating video tutorials, focusing on a range of mainstream programming languages (usual mix of C, C++, C#, Java, Visual Basic with an odd publication on Python, Perl, even Swift). The target reader of Deitels’ ‘for programmers’ book series is a ‘programmer with a background in high-level language programming’. A person willing to invest time in going over a 1000-pages volume covering every aspect of a given language from fundamentals into intermediate subjects, studying numerous listings of small programs which illustrate core concepts, bare UML diagrams etc. In other words, someone, who is comfortable with a pre-Internet era style textbooks and learns best from this type of publication.
With the above prelude, I recommend the Java SE 8 for Programmers as a rather good book, especially for me, a developer working with C-languages for the last decade or so, who dabbling in Hadoop and Spark needs to catch up with developments in Java camp. As we are dealing with the 3rd edition of the book, the fundamentals are covered clearly and concisely and I found no issues in that department. Therefore, I will focus on what might interest ACCU readers the most – coverage of Java 8 futures. Regrettably, that is where the book falls a bit short. I could forgive few chapters on Swing and limited focus on JavaFX, after all probably most developers are still supporting older applications. Similarly, I would not expect to see coverage of Oracle Nashorn (a new JavaScript engine within JVM) in an intermediate level book. In fact, new features, such as lambdas and streams got appropriate coverage, concurrent collections got mentioned (albeit very briefly), and so did parallel sorting. However, a new date-time API was introduced only in passing, which is rather strange as the previous API is now marked as deprecated. Deitel admits that concurrency is best left to experts, therefore I would not expect to see stamped locks (which allow writing really fast code, but may also lead to writing a self-deadlocking threads). However, in my humble opinion, the new concurrency adders (LongAdder) should be featured as these simplify complex code. Similarly, I was nicely surprised by the attention given to SecureRandom, which seriously simplify random number generation for non-critical purposes, yet I could not find adequate coverage of the new optional references (Optional
Despite these few rather minor shortcomings, Java SE 8 for Programmers is a serious offer, less dry than the Java SE 8 edition of The Java® Language Specification by Gosling, Joy, Steele, Bracha, Buckley or the 9th edition of Java The Complete Reference by Schildt. Still, I would recommend the last position, if you were looking for a reference that will serve you for a bit longer. Additionally, if your goal is to just get up to speed with Java 8, I would suggest Horstmann’s Java SE 8 for Really Impatient, Warburton’s Java 8 Lambdas if you are after the functional programming perspective as well, Liguori&Liguori’s Java 8 Pocket Guide if you are after, well… pocket guide, and finally Urma, Fusco and Mycroft’s Java 8 in Action, which is a really serious book if you are willing to dive a bit deeper.
Nonetheless, if you are in the market for an intermediate Java book that will introduce you to modern Java in an informative and engaging style, and you are ready to just skim a first few introductory chapters, the Java SE 8 for Programmers is a really good textbook; I can fairly recommend it.