2018/02 - Effective Java 2 Review

Effective Java 2 is a looooong, long read. It's 315 pages of content are certainly not easy on the eyes, but the content they hold is very valuable. It is a strange book to be sure, much like a dry academic paper sans graphs, group testing and statistics. The book is very very dry, being almost entirely massive blocks of text from start to finish. This is very difficult to look at when you're already reading a dry subject. It is of course very interesting material to absorb, but the books format does not lend itself to learning. It would be a much larger book if it had more spacious paragraphs though, so trade-offs likely played a part.

The book list 78 items that inform the user of a design flaw in the Java programming language (And give a solution), a better method of executing a form of functionality, good programming practices, features to avoid(!) or explanations on how complex functionality should be used correctly in order to avoid common pitfalls. For example, how finalizers have always been useless, how Thread Groups were once potentially useful but ended up completely obsolete, or how to use the Clone method.  I particularly enjoyed the chapter on the clone method for collections, as the book goes to quite some length explanining everything that can go wrong when cloning an object, how this affects referencing when that object is a collection, and so on. It is an impressive tome of knowledge that covers more advanced topics than most Java books and is definitely not a recommended book for developers new to Java, or programming in general. Head First Java, I would say,  is much more appropriate alternative for developers new to Java.

To conclude, there is no other book quite like this one for Java on the market today. It's about as advanced as I've seen when it comes to Java books, without going too far into a specific domain or subdomain of the language (Like servlets or spring). It is the most advanced general Java programming book I have seen, would be a better way of phrasing it. Java Concurrency in Practice is the closest book I can think of that comes close to this books complexity, but that book deals mostly with concurrency in Java, rather than general programming know-how in Java. If you're a Java developer, you need this in your library (And Java Concurrency in Practice, Elements of Programming Interviews in Java, and probably some In Action books too. Baby steps!). You'll be doing yourself a disservice otherwise.

Score: nine out of ten microservices.

Buy it if you are a professional Java developer and are likely to stay in Java, or at least continue working with Java in some form, for several years.