Must-reads for Java Developers: From Beginner to Professional

Must-reads for Java Developers: From Beginner to Professional

In the last few months I noticed that I’ve been recommending the same books again and again to new and also to experienced developers. For this reason I decided to put together a list of must-reads. The books I’ll recommend were good company during my journey from beginner to the level I’m currently at (whatever level that is ;)). Many fellow programmers were involved in assembling the list. Special thanks go to Frank Appel, Rüdiger Herrmann, Benjamin Muskalla and Ralf Sternberg.

The ordering of the list reflects my personal choice. Feel free to shuffle it ;). One important thing – if you buy a book from the list, always chose the English version. Even when a translation is available in your language, the original version is almost always the better choice.


If you are new to Java development, you need to get up to speed with the language first. Many books are available for this purpose. The content of these books are almost always the same, but the style of writing differs dramatically.

There are two books to learn the language that are worth recommending. Head First Java is nontraditional but really, really fun reading. As with all Head First books, it’s up to you to like them or not (I love them). Java, A Beginner’s Guide is a more traditional book that explains programming Java really well. Once you know the Java language, I recommend one book before you are granted the level of Journeyman (also valid for other languages). This is Test Driven Development by Kent Beck. It describes a way of development that reflects the way we code at EclipseSource. In my opinion Test Driven Development (TDD) should be part of the introductory education of every programmer.


As described in many books, a Journeyman is a developer who knows his language and has done smaller projects but still has a long way to go to being a professional. At the beginning of this stage I’m sure you didn’t agree with this statement (I didn’t, either). But after 5 to 6 years as a Journeyman, I’m convinced you will agree ;).

Knowing a language is not enough! You need to master it! For this purpose almost every experienced Java programmer will recommend reading Effective Java by Joshua Bloch. The Pragmatic Programmer is like a dictionary. It covers many topics you will face in your career as a programmer and therefore is a must-read. Knowing your language does not enable you to write good software. From my point of view learning about software design is one of the most important, long term challenges in the career of a programmer. For this, the Design Patterns Book by the Gang of Four is probably a good start.

When you have read Beck’s TDD Book you know that the golden rule is: red, green, refactor. Martin Fowler explains how the last step works in his Refactoring Book. After your tests are green and you have refactored the code you need to read Clean Code by Robert C. Martin at least twice. Once you’ve read it, I’m sure you will think about your code differently. The OSGi in Action book feels a little odd in this list. The reason it’s here is that I think modularity is one of the most important design principles. For a Java developer, learning about OSGi is a must. Remember when I said you won’t agree that you are not a professional unless you’ve been a Journeyman for several years? I’m sure you will reach this point after reading The Clean Coder. Robert C. Martin writes about himself and his journey becoming a professional in this book. It’s really an eye-opener!


I use the word “Professional” because many authors use it in this context as well. But I don’t like to use the word to categorize a programmer. Professional sounds like you are done. But this is simply false. As a programmer you can never stop learning! The books I put in this category are just “more advanced”. This means they either go deeper into detail or start to train you for leadership.

You can do quite a bit with Java without facing concurrency and as a Journeyman you will hopefully have a master in your team helping out with this topic. But there is a point in time when you will be the master. Thus mastering concurrency in Java is a must. Brian Goetz did a great job explaining the topic in his book Java Concurrency in Practice. Being a professional means taking responsibility. As a programmer this also means taking responsibility for legacy systems. Micheal Feathers made this boring topic fun in Woking Effectively with Legacy Code. As a professional you not only take responsibility for code, you also take responsibility for your team. Tom DeMarco and Timothy Lister write in Peopleware about how effective teams work and the important characteristics of an effective team. Explaining hard things right is one of the most difficult tasks. Few authors know how this works. Martin Fowler did a great job in Patterns of Enterprise Application Architecture which is an excellent lesson in software design.

I hope you had, or will have as much fun as I did reading these books. Please feel free to disagree or add additional recommendations in a comment.

  • Barista in
    Posted at 17:03, 2012-09-18

    It’s very common with this list of book

  • Adedayo
    Posted at 18:06, 2012-09-18

    Great list i must say.. Am spending some time with the book Java Performance by Charlie Hunt and Binu John.. Have been privileged to have read some of these books. My observation is that an average corp/developer seem most interested in having code that just works. Lets push to PROD . Maintainability, clean code, testability, performance all seem secondary. I should say your posts on Effective Mockito were great

  • Christian Baranowski
    Posted at 14:06, 2012-09-19

    Nice book list, I really like your selection.

    For a LIGHTNING talk I also create a TOP 10 must read list, not only for Java developer, but some recommendation are consistent with your list you can find my slides here (sorry the slides are in German)

    What I miss in your list is the great testing book “Gerard Meszaros – xUnit Test Patterns”.
    But the rest is perfect.

  • Muhammad Khojaye
    Posted at 19:35, 2012-09-19

    Nice list having awesome recommendation. However, I would only like to add “Head First Object-Oriented Design And Analysis” in Journeyman section. Another thing I would like to have must read is “Collection Framework”. The oracle site already has very nice tutorial.


  • Scott Stirling
    Posted at 15:53, 2012-09-20

    The source docs are pretty handy for understanding the brass tacks:

    The Java Language Specification
    The Java Virtual Machine Specification

    Both free online. These are dense documents. But it is worth working through them and referring back to them as your understanding and experience grow.

  • Vaclav Tuma
    Posted at 06:34, 2012-09-21

    To Author: perfect article! all that is written is true (for somebody ‘good news’ for some readers ‘sad true’ of their knowledge level).

    To commentors: if I catch the idea as well … I don’t thing it’s about ‘this or that book is missing in list’ … but about the level of developer thinking and interest and only point to the milestones of knowledge (exampled by books) … 😉

  • Chris
    Posted at 12:05, 2012-09-25

    Thanks for the article! Just had my copy of Clean Code delivered. Time to take the next step!