Make it fast
Only once the code works and is written well should you bother to try to improve its performance. Otherwise, you tend to waste a lot of time on premature optimization: fixing slow spots in code that either turn out not to be slow, turn out not to have much affect on the overall performance of the application, or turn out to get eliminated or greatly changed in a refactoring.
You gotta have working code to improve its performance; code that runs fast but does the wrong stuff isn't very useful. And there's no use tuning the implementation of badly written code; make it well-written first; often, well designed code runs faster anyway.
Performance tuning without performance testing is like shooting in the dark. Don't guess at what code's gonna be a performance bottleneck; ask the program. Performance testing and profiling tells you definitively where the bottlenecks are so you can start widening them, which is the best way to produce real performance benefits for your users.
BTW, there's a very good book on performance tuning J2EE applications that's been rather overlooked: Performance Analysis for Java Web Sites (article, sample chapter) by Stacy Joines, Ruth Willenborg, and Ken Hygh. These are three sharp people in IBM SWG development (Ruth) and services (Stacy and Ken); their whole job at IBM is gto figure out how to get WebSphere Application Server itself and the J2EE applications deployed in it to run faster.