(Posted on behalf of Miles Thibault, a former CSC49X student now working in London, England.) I have a problem: I'm a Python programmer. That's not the problem. My problem is that I'm starting a Java project and I don't really know what experienced Java developers do when they build software. I know I want things like version control, an IDE, unit tests and logging; but I don't know which specific tools and libraries I should be using, nor how to best utilize them. There are myriad books on the Java programming language proper, but I'm having a tough time finding anything that says: "If you're going to build Java software, here are some popular/pragmatic tools that most people use because they like building quality code and they don't like wasting their own time." I've spoken to a few Java hackers and here's what I've come up with so far (thanks Bill, Sean, and Greg). I'd be interested in hearing what else you use.
Version control Subversion (included for completeness---I already use version control)
IDE Eclipse (tough one for a Textmate fanboy)
Debugger built into Eclipse.
Build Ant
Deploy Ant
Unit tests Testng
Logging Log4j
Docs Javadoc
Lint Findbugs
Coverage Clover
Style Checkstyle
Continuos integration Cruisecontrol
Monitoring Nagios (included for completeness)
Postmortem debugging does Java do core files?
Performance testing Jmeter
Profiling PerformaSure?