Effective Java is probably one of the most read books on Java technology and has been regarded by many programmers as the best book for Java developers. Though, recently many Java programmers have asked me whether Effective Java is still relevant in the era of Java 21? Or is there any better book on the same topic. The question is logical because It's been quite some time since the 3rd edition of Effective Java released and also the most recent Java 10 to Java 21 has changed how you code Java. Many idioms and design patterns of good old days now become redundant and can be done easily with the new Java features and feature, but does that mean "Effective Java" is not relevant now? Well, No, not at all. Effective Java is still relevant and a must-read for Java programmers due to several reasons, which you will see in this article.
The first and most important reason is that the book is a collection of really good practices that make your Java code more maintainable and it covers up to Java SE, which is still been used at many places. I know that Oracle is stopped supporting this version but believe me, there are a lot of big companies that are running on Java SE 11 and some of them on even Java SE 8.
The 2nd edition of Effective Java has advised on generics, enums, annotations, and other recent Java developments, which is still valid. The same is true with the concurrency chapter which was updated from 1st edition to reflect the "java.util.concurrent" changes, and the 3rd edition of Effective Java covered Java 8 and utilities introduced in Java 7 to Java 9.
The first and most important reason is that the book is a collection of really good practices that make your Java code more maintainable and it covers up to Java SE, which is still been used at many places. I know that Oracle is stopped supporting this version but believe me, there are a lot of big companies that are running on Java SE 11 and some of them on even Java SE 8.
The 2nd edition of Effective Java has advised on generics, enums, annotations, and other recent Java developments, which is still valid. The same is true with the concurrency chapter which was updated from 1st edition to reflect the "java.util.concurrent" changes, and the 3rd edition of Effective Java covered Java 8 and utilities introduced in Java 7 to Java 9.
The JDK 8 release has introduced some of the biggest changes in terms of the lambda expression, streams, and functional style of programming, which made many tried and tested idioms redundant.
Also, Effective Java 3rd edition was light in terms of JVM internals and GC, which is an important topic for Java programmers seeking performance improvement. Though there are some good books on Java performance tuning available like Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond By Scott Oaks, which fills the gap, hearing thoughts of Joshua Bloch on the same will make the book complete for experienced Java developers.
Nonetheless, The current edition of the book is still a must-read for any Java developer who is involved in developing libraries, framework and shared utilities. The book has advised on the best practices which have been used in JDK and also tells you how you can use them for your benefit.
This book has a long-lasting impact on many Java developers including me. It has improved both codings and thinking about the ability of Java programmers. Simple advice like preferring Enum over String and Integer does make a lot of difference when it comes to debugging issues on production or writing a Java application that can withstand the test of time.
I have a copy of Effective Java both on my bookshelf and on my phone and I keep referring them whenever I am confused or want to know about features covered in Effective Java especially the items on Serialization and Factory pattern.
Though I learned Java by reading Head First Java in the first place and I think it is still the best book to learn Java from scratch. The pictures, quizzes and comic style writing makes it an easy read for non-programmers and beginners alike. But at the same time, Effective Java is required reading if you're coding Java. Many companies including Google gives copies of Effective Java to new joiners.
Now, if you have not read Effective Java yet, I suggest you should read it at least once. The author, Joshua Bloch, is a very well known author and his style is pleasant to read. He is also more qualified than others to write such a book on Java, given he himself has written several key classes in java.lang and java.util package.
The little stories you will read in Effective Java about different topics also highlight his own experience while writing those classes. Many of the code review programmers do for Java library code at different tech companies and banks basically end up with referring chapter and verse from Effective Java.
Is Effective Java worth reading?
In short, I think, Effective Java 3rd Edition is still relevant and is a decent read. Like, you should know these things, but not necessarily adhere to them. Though most of the advice in Effective Java fits well in different circumstances they are not the word written in stone. Sometimes a simple function just gets the job done, clearly and effectively, instead of decorating with OOP features for the sake of following OOP.
Though, I would love to have the 4th edition of Effective Java coming soon and probably this is the right time to release that given Java 17 adoption by Industry. Let's hope Mr. Bloch's heard our request and we get this gift from him sooner.
Further Reading
Thanks for reading this article, if you like this article then please share with your friends and colleagues. If you have any questions or feedback then please drop a comment and I'll try to find an answer for you.
Check this:
ReplyDeletehttps://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997/ref=sr_1_1?s=books&ie=UTF8&qid=1498759856&sr=1-1&keywords=effective+java+3rd+edition
https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997/
ReplyDeleteHello @Anonymous and @Daniel, it seems Effective Java 3rd edition is on its way, let's hope it cover Java 8 and hopefully Java 9 too.
ReplyDeleteYes, Effective Java 3rd edition is coming on Mid December, it will cover Java 9
ReplyDelete