I have been a .NET developer now for about the past 5/6 years give or take. I have never done any professional Java development and the last time I really touched it was probably back in college. I have been toying with the Scala language a little bit but nothing serious. Recently, I've been offered an opportunity to do some pretty cool work, but using Java instead of .NET. I think I can get by alright with my current skill set, meaning I already know how to program well and am familiar with languages such as C# and C++, etc. So, the syntax and all that language stuff are really not a problem. What I need is a really good reference book and a book about how to think in Java. Each language/Framework/Stack tries to address things a certain way and I'm sure Java is no different.

What are some great Java books that you simply can't live without? Are there any books that talk about the most important parts of Java that must be understood before all else?

As a side note, I will be doing mostly Java web development. Not really 100% on what types of stuff they are using for persistence, framework, server, etc.

  • 2
    Coming from the .NET stack to the Java stack from a web angle will be hell. You'll miss .NET very much. Jthis, jthat, jthingamgig. Just my opinion take it for what it's worth. – Sergio Feb 23 '11 at 21:09
  • @Sergio: Not what I wanted to hear!!! LOL – Nodey The Node Guy Feb 23 '11 at 21:14
  • 1
    @Sergio - Steven, for your comfort, I very much disagree. Java has it's issues, but I think it's at its best in the web space. – Nicole Feb 23 '11 at 21:20
  • 1
    see here : stackoverflow.com/questions/75102/… – Matthieu Feb 23 '11 at 21:26
  • 1
    Probable duplicate - programmers.stackexchange.com/questions/32591/… – ChrisF Feb 23 '11 at 21:32

For reference, I would suggest just using the official Sun (now Oracle) stuff like the tutorials and JavaDocs. Despite being meant for novices, they are often organized so well that it is easy for an expert to find what they need.

Effective Java by Bloch is a great book for understanding the less-trivial aspects (and in particular generics).

The additional materials likely depend on the exact Java stack you use - J2EE, Spring, GWT,Gui toolkit, etc.

| improve this answer | |

Sun Certified Java Programmer

SCJP for Java 6

I highly recommend this book as a complete get-you-up-and-running guide for an already competent developer.

This question is very similar to the question Best way to learn Java if you already have an OOP background, like ActionScript 3? where I said:

You mentioned that you don't want a book that's going over things you already know. I highly recommend SCJP for Java 6 Study Guide. I got this book (the Java 5 version) to study for the test, and even though I already knew and was working with Java full time, it did not insult my intelligence even while going over the fundamental basics of the language.

Even though I was already competent, I learned important details about the language throughout the book, including specific details about the access keywords, polymorphism, as well as overloaded method priority, which became a lot more important when generics and auto-boxing were added.

From there, you may actually want to take the test (though at $200-300, whatever it is now, it would be better for an employer to subsidize it for you). The next level test, SCJD (D for Developer), actually requires you to implement a basic program with a back- and front-end, which would be a great way to get a basic, small (20-40 hour), well-defined project to cut your teeth on.

| improve this answer | |
  • 1
    As a person who read this book cover-to-cover, I really recommend it, it has a lot of inside information about Java that I've never seen in a book before without being frustrating to the beginner, while not being a book for absolute beginners with programming, anybody with good programming knowledge might be able to read this book with no problems – Mahmoud Hossam Feb 23 '11 at 21:55
  • @Phobia - it's hard to describe how it can be good for both beginners and veterans, but it is, right? – Nicole Feb 23 '11 at 21:59
  • yep, VERY – Mahmoud Hossam Feb 23 '11 at 22:03

Effective Java by Joshua Bloch is a must. Interesting discussion of some non-trivial parts of the language.

I've also heard good stuff about Goetz "Java Concurrency in Practice" but I've not read it myself.

| improve this answer | |

If you want to become a concurrency whiz, recommend the Goetz et. al. Java Concurrency in Practice. If you want to ascend to a higher plane of concurrency enlightenment, Maurice Herlihy's Art of Multiprocessor Programming is top notch, and contains substantial Java code. (See also the SO discussion... note this question has been closed, but the answers are still useful)

| improve this answer | |
  • I've just recently read through this book and it has impacted my understanding profoundly. – Nodey The Node Guy Jan 3 '12 at 14:53
  • All the 3 links you gave have no data, last 2 are dead, first one is under-construction. – We are Borg Sep 25 '15 at 13:53
  • You could offer suggested fixes... but I took care of the first two; the last one I left since it references a question on stackoverflow that is closed/deleted, but you can still see with enough brownie points and the answers are still interesting. – andersoj Sep 30 '15 at 3:16

Doesn't exactly have a lot to do web development specifically, but "Effective Java" by Joshua Bloch is a must-read in my opinion:

Link to Amazon

| improve this answer | |

Just like Uri's answer, go for official sun docs, and Effective Java to get deeper into the language.

Then go straight with play docs and books, like the play framework e-book play framework cookbook, here you have a sample chapter

it's no use you put yourself to study about the standard j2ee web development stack (you know, spring, struts, tomcat, jsf, etc) because play takes a very different approach to web development... if you go with hibernate as a persistence framework I would recommend to have a look at hibernate's docs

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.