Ryan is a Java developer working in software engineering research. His research mainly focuses on source code analysis and development tools. Ryan has posted 24 posts at DZone. You can read more from them at their website. View Full User Profile

Top 10 Books for Advanced-level Java Developers

09.05.2013
| 62625 views |
  • submit to reddit

Java is one of the most popular programming language nowadays. There are plenty of books for beginners. But to those who have programmed with Java for a while, some of them may look somehow simple and redundant. The beginner’s books do not bring fresh and interesting ideas. However, advanced Java books are not always right at hand, not partially because they require more skills, experienced, and deep thinkers to write.

In this post, I would like to share my experience with only advanced level of Java, which means books like “Thinking in Java” or “Head First Java” won’t be listed although they are very good for beginners. Also I try to avoid listing Java books for specific software or frameworks or certifications, which I assume is not “pure” Java.

Java in a Nutshell

It is a more reference than a must read.

The elements of Java style

It is directed at anyone who writes Java code, by furnishing a set of rules for Java practitioners, by offering a collection of standards, conventions, and guidelines for writing solid Java code, and by illustrating how to write solid Java code that will be easy to understand, maintain, and enhance.

Effective Java

This book is really only for deeper understanding Java developer. It brings together seventy-eight indispensable programmer’s rules of thumb: working, best-practice solutions for the programming challenges you encounter every day.

The Java language specification

Written by the inventors of Java, this book not only provide complet and accurate converage of the language, but also includes formal rules of the language from the practical behavior of compilers. You may not get skills by reading it, but what if you want to cross the line and crack Java VM…

Design patterns: elements of reusableobject-oriented software

Actually, examples in this book were written in C++ or smalltalk, but so what? If you want to grow as a developer, you have know Design Patterns, to take advantages of the best practices and experience of others, and learn from those who have face the same problems. There are many other similar books, but they are just doing patching work.

The Pragmatic Programmer: From Journeyman to Master

Again, it is not a book for Java developer only. “The cool thing about this book is that it’s great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.”

Patterns of Enterprise Application Architecture

enterprise

You may have learned design patterns, but not sure how they are used in enterprise frameworks. This book explains common enterprise design patterns.

Refactoring: Improving the Design of Existing Code

refactoring

If you have programmed for years, you will find this book definitely worth to read. Refactoring can make code more readable and easier to maintain.

OSGi in Action: Creating Modular Applications in Java

osgi

For more or less, it is good to know service oriented programming. The first several chapters of this book can give you a nice introduction and concrete examples.

Clean Code: A Handbook of Agile Software Craftsmanship

cleancode

Last but not least, it is always good to review your coding style. 90% of effort will be spent on maintenance, it is extremely important to make clean code.

Published at DZone with permission of its author, Ryan Wang. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Christian Beute... replied on Fri, 2013/09/06 - 1:19am

I would remove Effective Java (since this is one of the first books I recommend to beginners) and the Java Language Spec from the list and add for example:

"Java Concurrency in Practice" and "Programming in scala" .

The concurrency book since this is one of the hardest thing to get right and one of the best books on the topic and Programming in scala to expand the horizon and embrace the whole ecosystem.




Martin Podval replied on Wed, 2013/09/11 - 6:19am

I have to recommend also book "SCJP Sun Certified Programmer for Java 6 Exam 310-065"

Prakash Khanchandani replied on Wed, 2013/09/11 - 6:35am

This is a good list. Thank you.

Though I would like to add "The Well-grounded Java Developer" to the list as well. Also Inside JVM might also appeal to the advance java programmer.

Haitham Raik replied on Wed, 2013/09/11 - 7:52am

Do you mean "Patterns of Enterprise Application Architecture" or "Enterprise Integration Patterns". the name and the image do not match.

Nazimuddin Basha replied on Wed, 2013/09/11 - 9:09am

Surpise! Nobody mention about the Martin Fowler book "Patterns of Enterprise Application Architecture".

Stephen Henderson replied on Wed, 2013/09/11 - 11:17am

I'd put Growing Object-Oriented Software Guided by Tests  above some of the others on the list. It's the best book I've read on TDD, especially for java, and really changed how I approached my code.

+1 for "concurrency in practice" and "The Well-grounded Java Developer" too.


Cody Burleson replied on Wed, 2013/09/11 - 11:54am

Head-first Design Patterns - when you finally want to truly understand good software design patterns without the usual dry Gang-of-Four pattern explanation style. My eyes always glaze over when I read that stuff, but this book made the patterns easy to understand and when I read it, it really upped my game. It is written in a style that is designed to engage you and help you really learn. Highly illustrated, light-hearted, easy to consume. I'd say, next to Clean Code (or in a close tie), this is the book that helped me the most.

Raging Infernoz replied on Wed, 2013/09/11 - 3:21pm

"Java in a Nutshell" is trivial; the old Java Almanac set for Java 1.4 was much better.

"Effective Java" definitely.

"Java Pitfalls", "More Java Pitfalls", and other anti-pattern related books.

"Java Concurrency in Practice" should be compulsory!

"Java Persistence with MyBatis 3", because JDBC is too verbose, and Hibernate is bloated overkill.

Don't expect to get the really interesting stuff from books though, be willing to explore and play with code.

I learned a lot more from the SDK javadocs and source code (including the extra SDK source code download not supplied with the SDK), the PMD and FindBugs code quality tools, the built-in NetBeans code quality scan, the lint flags for Javac, which spotted tricky generics stuff all other tools ignored, and the "Java Specialists" and "Java Performance Tuning" mailing lists.


Igor Tovstopyat... replied on Wed, 2013/09/18 - 10:01am

Such a trivial collection. What is this posted for? Signal / noise -> 0.

christopher prengel replied on Sat, 2013/09/21 - 3:59pm

 “Thinking in Java” for beginners? Sorry, I disagree strongly. It's a classic.

Raging Infernoz replied on Sat, 2013/09/21 - 5:53pm

“Thinking in Java” was a classic beginners book, I read it many years ago, and quickly left it behind at intermediate level, several years ago, so it certainly isn't advanced, in fact it is rather dated now.

I have to say that at the very most 1/2 of these books maybe advanced level, 1/4 are intermediate level, and the rest are beginners level or just flannel.

In my opinion:

* OSGi is just a silly IBM tainted framework, the only thing I've seen using it is Vuze.  Oh, I have little regard for any of the Eclipse project, especially not that fugly IDE.

* Patterns and Refactoring are at best intermediate stuff; much of which is automated by IDEs; I've seen Patterns abused too by so-called advanced coders, which is where anti-* books come in handy!

I could go  on....

Intermediary books can seem advanced to beginners, but they are not.  A lot of genuinely advanced material isn't even in conventionally published books now, and book content can age fast!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.