Ask HN: Tools for (re)learning Java

7 points by grahamburger ↗ HN
Hello HN-

I have a pretty solid programming background, but I have been working as a network engineer for the past 7 years. In some ways building and maintaining the network requires a totally different mindset, and I feel like I have forgotten quite a bit of what I once knew.

I'm particularly interested in Java because I'm particularly interested in Android development.

Are there any favorite tools / books out there that would make a good refresher course? The problem I have of course isn't a lack of information, but an overload of information - a quick Google search will give me far more than I need and it's difficult to figure out what not to read and where to start.

Thanks all

8 comments

[ 3.4 ms ] story [ 27.2 ms ] thread
One of the biggest changes in the past 7 years is the rise in popularity of Unit Testing.

It light of that, I recommend picking up Robert C. Martin's clean code - while it isn't specifically about the Java language (though lots of the examples are in Java) it will refresh you on how to write good Object Oriented systems that are easily testable.

After years of reading procedural Java code, its clear that syntax is not enough...

Thank you both, looking at both of those now.
Learn about Design Patterns, they will force you to really use Java's features such as Interfaces and Abstract Classes, accessibility modifiers (public, private, protected) and others. That is the method I use when tutoring individuals in similar situations as yours that want to get back into Java specifically.

I recommend the Head First Design Patterns book if you're not turned off by the less-than serious nature of it. I really did not like the book at first glance, but after actually working through some of it as instructed I enjoyed it and really developed a solid understanding. Simple examples like Vending Machines and Washers really helped me, I still use them in my head when thinking about problems. Design Patterns are not always the best solution and forcing them on problems can make things worse, but as far as teaching Java I really recommend it. http://www.amazon.com/First-Design-Patterns-Elisabeth-Freema...

I also recommend learning about Test Driven Development as previously suggested, we use JUnit4 to teach our undergrads at my university. There are also other methods of testing besides TDD, but I feel it was the easiest to help students.

If you are interested in Android development, probably you should do some hand-ons. It is just not possible for anyone to put everything you come across in their development into print/words.

The Android Developers website's Dev Guide is fairly comprehensive, you can almost get started in your app right away.

I'm particularly interested in Java because I'm particularly interested in Android development.

Skip the books and jump straight into some tutorials for Android dev and build a few simple apps for your phone. You can go back to reference material as needed.

Totally agree with shortlived and iworkforthem, in fact that's what I've been doing for several months now. Increasingly though, I find myself thinking "you know I'll bet there is an easier way to do this if I had a deeper understanding of the language," and that's what I'm looking for.

Thanks everyone for your comments, they've been immensely helpful and insightful.