I'm presently working on a Web app where we routinely do our development on Windows but testing and production is on Linux. In the past I've written GUI apps where the exact same code ran on both Windows and Linux. I've never done Java on a Mac, but I presume it ports as well there as between Windows and Linux.
The beauty of Java is that 90% of the time you don't even have to think about it. You just write code that will work on the platform you're developing on and it will port magically.
The only thing that is routinely an issue for me is working with files. There are some features in Java that help, but sometimes you have to go out of your way to take advantage of them. Like, file names are different: On windows you have a drive specifier (like "C:") while on Linux you don't, and on Windows you separate directory names with backslashes while on Linux you separate them with forward slashes. There are functions to let you handle this with generic code but there are times when that's a pain. Etc.
If you want to use specific fonts, you won't find the same fonts on different platforms. But you can't rely on finding specific fonts on different boxes with the same OS. If you want to use specific fonts, you really need to check what fonts are available on the box and let the user select the one they want or have the program examine font characteristics to pick one.
I'm hard-pressed to think of anything else that's been an issue for me. I'm sure if you try you can come up with things to break on one or the other, but those are the only things I recall ever running into without looking for trouble.