Recently I have been dealing with the disconnect between Mac OS X and Java 6 , specifically that Java 6 is not available. This is not intended to be yet another diatribe on the evils (or not) of Apple's approach to this. Rather, it has gotten me motivated to work on some tools to make creating cross-platform GUI code in Java a bit easier to manage.
To that end, I have created two new libraries:
System Tray - A thin wrapper around Java 6's tray icon support, this library allows code to be compiled on Java 5 (which makes my Mac happy) but still take advantage of system tray functionality if running on Java 6 (which makes everyone else happy).
Mac GUI - A similar wrapper around Apple's Java extensions. This allows writing Java applications which take advantage of native menus, dialogs, etc. without introducing a compile-time dependency on proprietary Apple code.
As usual, both libraries are available via Subversion and are BSD-licensed, so feel free to steal this code TM .