I was recently asked via email what training or whatnot I would recommend to bring a programming team up to speed on Java.
A couple options come to mind – depending on the overall scope of your programming team and their past experience (if I can ask – what is your past experience?) but, I generally recommend the following progression of reading (note – this is probably about 6 mo of reading, if you like reading):
- Pragmatic Programmer (non-language specific, but the best beginner book I’ve found)
- Headfirst Java (for basic/core Java)
- Effective Java, by Josh Block (Josh was the Architect of the Java Collection Framework)
- Headfirst Design Patterns (I actually love this whole series)
- Spring in Action (I think the latest edition was updated for 2.5)
- Java Puzzlers (Josh Block, & I think Neil Gaffer)
- Domain Driven Design, by Eric Evans
In terms of classes/training – general Java classes can be useful, but I find they generally tend to focus at too low of a syntactic/language level (understanding core concepts is important) – effective Java will give you a good feel for some of the oddities – but that your best bit tends to be to get enough to bootstrap you and start coding/testing/working.
Of course, my employer (CampusEAI) does provide focused training on topics like Java Development or Portlets, which since I had a hand in designing the modules I think hit the mark fairly nicely…