Java Web development books
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!