Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question

closed as not constructive by gnat, Joris Timmermans, Kilian Foth, Dynamic, Martijn Pieters May 17 '13 at 16:20

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

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 –  Steven Ellliott Jr 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. –  NickC 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
show 2 more comments

6 Answers 6

up vote 18 down vote accepted

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.

share|improve this answer
add comment

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.

share|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? –  NickC Feb 23 '11 at 21:59
    
yep, VERY –  Mahmoud Hossam Feb 23 '11 at 22:03
add comment

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.

share|improve this answer
add comment

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.)

share|improve this answer
    
I've just recently read through this book and it has impacted my understanding profoundly. –  Steven Ellliott Jr Jan 3 '12 at 14:53
add comment

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

share|improve this answer
add comment

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

share|improve this answer
add comment

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