Bluetooth support on Linux via a dongle is excellent and my Bluetooth phones have no issues with it. I can do basic file send/receive via OBEX - on the desktop it's a simple "send to..." menu option. The phone uses the "beam file" feature.
I haven't used the Java Bluetooth APIs, but the docs seem to indicate it's fairly straightforward.
Sometimes the only way things ever got fixed is because people became uncomfortable.