

Ask HN: Tools for (re)learning Java - grahamburger

Hello HN-<p>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.<p>I'm particularly interested in Java because I'm particularly interested in Android development.<p>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 <i>not</i> to read and where to start.<p>Thanks all
======
aw9994
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...](http://www.amazon.com/First-Design-Patterns-Elisabeth-
Freeman/dp/0596007124)

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.

~~~
wariola
TDD is a very valuable practice. We've used it for years. Please see this
resource that I have found useful: [http://alm.parasoft.com/bid/52034/How-Can-
Test-Driven-Develo...](http://alm.parasoft.com/bid/52034/How-Can-Test-Driven-
Development-TDD-Be-Automated)

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

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

------
anurag
Assuming you know the basics of the language, Effective Java by Joshua Bloch
is very good: <http://www.amazon.com/gp/product/0321356683/>

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

------
shortlived
_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.

------
grahamburger
Thank you both, looking at both of those now.

