[x^2 for x in lst]

Core Java for the Impatient

Author: Cay S. Horstmann

Review created: 2018-06-04

Earlier this year I realized that I wasn't as comfortable using completable futures in Java as I wanted, so I started looking for a book that I could read to get better at that. The books I found that wrere speciallized at that did not get very good reviews on Amazon, so I was a little uncertain about what book to buy. Then I found Core Java for the Impatient. It was not a book about completable futures or even concurrent programming in general, it was more a general introduction to Java 8, but the table of contents indicated that it at least contained a little material on completable futures. It also got good grades on Amason. So I bought it. I was not dissapointed.

Well, the material on completable futures was a little shorter than I'd hoped, two pages, but reading the rest of the book gave me insights into some topics that I haven't touched on earlier.

Core Java for the Impatient is a brief introduction to the Java language. It is not a primer on programming, you must already know to program otherwise you'll not get much out of the book. In fact, I the audicence that I think this book is best suited for is Java programmers that haven't been exposed to the newest Java 8 features but want to learn them. Experienced programmers who are used to working with other languages similar to Java (C++, C#) might also benefit from reading this book, but not very many others. Why do I think that? Because the book assumes that you know about basic OO-concepts like inheritance, encapsulation, method overloading and so forth.

Having said that, I think the book is a really good one provide you're one of the target audience. It presents a remarkably thorough overview of the Java language including the newest Java 8 features like lambdas, functional interfaces and streams. The author explains each concept in a very clear and easy to understand way. It is apparent that he knows the topic very well and also that he's really used to write programming books.

Each chapter ends with a number of excercises that cover the stuff that's been gone through in the chapter. How many exercises there are differs between the chapters. The longer the chapter the more exercises. Some chapters contain several pages of exercises, other just a single page. These exercises I find really useful. They help you to practice the things that you've read about and this helps both understanding and makes it easier to remember. The number of exercises are so many that you don't have to do all of them to get a good grasp of the topic of the chapter.

The parts of the book that I enjoyed most was the ones on lambdas and on the new Date/Time packages. These were really useful to me. I also liked the quite long chapter (compared to the other chapters of the book) on annotations.

This is the table of contents of the book:

  1. Fundamental Programming Structures
  2. Object-Oriented Programming
  3. Interfaces and Lambda Expressions
  4. Inheritance and Reflection
  5. Exceptions, Assertions and Logging
  6. Generic Programming
  7. Collections
  8. Streams
  9. Processing Input and Output
  10. Concurrent Programming
  11. Annotations
  12. The Date and Time API
  13. Internationalization
  14. Compiling and Scripting

Summary: Core Java for the Impatient is a really good bood. It provides a brief but thorough treatment of the Java programming language. It is really useful as a refresher for the working Java programmer. I would also recomment it to a programmer that is experienced in another OO language and who wants to learn Java. If you are a novice programmer however, you probably should choose another book. What about learning about completable futures? There are probably books that are better suited for that as well. But I do not regret buying the book. It has really given me a good refresher of some of the Java topics that I don't use very often. I highly recommend this book!