Hacker News new | ask | show | jobs
by vtanase 4472 days ago
Your question is lacking quite a bit of context. You haven't for example mentioned how much experience you have with the language, how much programming experience you have in general and other useful things such as what you are using Java for.

Now for recommendations there are a lot of directions that you can go:

* for one the language has a lot of features that all the fancy frameworks use, you should know these so you don't end up using some blown up solution when all you needed was a simple servlet. This would include things like: collections, generics, annotations, enums, concurrency, IO & NIO, JAXP, sockets, servlets, JSP.

This part is pretty heavily covered in Bruce Eckel's "Thinking in Java". Not the easiest read, but definitely a very complete language reference. Servlets & JSP are pretty well covered in "Head First Servlets & JSP".

* another point to consider are general practices that transcend language such as coding practices, design patterns and testing.

You already mentioned "Effective Java", which would be the first one I would recommend in this category.

A very good book about coding practices based in the Java world would be "Clean Code" by Robert Martin. "Head First Design patterns" are very easy to digest, while the "Design pattern" book by the GoF is heavier reading. For testing I would definitely recommend you have a look at "Growing object oriented software guided by tests".

* depending on your field of work you might or might not be interested in Java memory stuff. This includes things like how and where objects are kept in memory, gc algorithms etc.

Have a look at this presentation from JVM tuning at Twitter and see if this is your thing: http://www.infoq.com/presentations/JVM-Performance-Tuning-tw...

* finally, and in my opinion the lowest return of investment you could get, is by going for some framework. Not that this is bad, but generally frameworks tend to have shorter lifespans than the language itself and they usually change between projects so all your new Spring chops might not help you on your following project that uses EJB.

I'm not going to recommend anything here, since this is a very fuzzy topic and it depends on the problems you are tackling.

Let me know if you need other ideas.