Preferred Software tools
XSD Compiler
I am a big fan of XSD compilers. XSD is the design language (for data models) that I prefer to use and an XSD compiler gets you off to a flying start when writing an application.
Persistence layer
Java has had a bumpy ride when it comes to persistence layers. JDBC works fine but involves a great deal of coding. I am not a fan of EJB1/2; I was astonished by the lack of a query language in EJB1 and the cost of implementing all the EJB interfaces was too high.
I was impressed by JDO and it is a pity that this never moved forward. However I like Hibernate; it makes persistence easy and has also influenced EJB significantly; EJB3 is very close to Hibernate in its approach.
Application layer
I have always been cautious about use of application servers. I am impressed by the Spring framework; it was the catalyst that made people look closely at the over complexity of java application servers.
Another way to glue together components which I have found very successful is to use a messaging environment; it has the huge bonus that you can eavesdrop on everything that a system is doing at runtime without affecting performance. These days you do not have spend lots of money on messaging systems; the Apache ActiveMQ messaging is a superb piece of software.
Presentation layer
For developing Web Ajax style "applications", I prefer to use GWT. I am not so keen on server side MVC frameworks but Spring MVC or JSF Facelets would get my vote.
For desktop GUI development, I like SWT. It is such a pity that Sun and IBM do not collaborate to unify AWT/Swing with SWT/JFace; I guess the underlying approaches are so different that this is not possible.
Though I am a java enthusiast, I think that Microsoft have stolen a march on Java with the introduction of XAML, Silverlight and Windows Presentation Framework.