This is really two questions, but they are so similar, and to keep it simple, I figured I'd just roll them together:
Firstly: Given an established Java project, what are some decent ways to speed it up beyond just plain in-code optimization?
Secondly: When writing a program from scratch in Java, what are some good ways to greatly improve performance?
Please stay away from general optimization techniques unless they are Java specific.
I asked this about Python and Perl earlier. For Java I'm wondering what good tips/tricks are out there to improve performance and if there are any particularly good Java profilers.