31

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.

gnat
  • 20,543
  • 29
  • 115
  • 306

6 Answers6

21

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.

Uri
  • 4,856
11

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.

Nicole
  • 28,243
9

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.

5

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)

andersoj
  • 151
  • 4
4

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

ftr
  • 1,621
  • 1
  • 14
  • 19
0

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

gnat
  • 20,543
  • 29
  • 115
  • 306
opensas
  • 171