Ask HN: What are some must read/watch papers/books/videos for java devs?

7 points by stevenspasbo ↗ HN
I've read through Effective Java, watched Joshua Blochs Performance Anxiety talk, and read his article "Nearly All Binary Searches and Mergesorts are Broken". Now it's had me wondering what else I should be reading and watching to help me on my path as a java developer.

5 comments

[ 4.5 ms ] story [ 28.9 ms ] thread
A developer being a "Java dev" is like a chess player that only knows one opening. Broaden your horizons. Learn C#, it's not that far from Java and will improve your technical chops.
I had a job doing c# development in campus when I was in college, but now I'm working for a software company doing a lot of java, so that's why I would like to broaden my understanding of the language, JVM, performance, etc.

I should also note that I have done a lot of ruby development, so I'm not a one trick pony or anything, but working for a company that primarily uses java I would like to have a deep understanding of it.

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.