Tools and techniques for the modern java developer