Java bytecode is Java bytecode. What gcj does by default is try to make your .java files into architecture-dependant binaries. You need to tell it not to do that and instead make files that are read by whatever JRE you are using.
If you want to make GUI applications, you can install the OpenJDK Java Runtime Environment, and still compile stuff with the gcj. That's what I do. The gij doesn't read swing very well.
Note: when it comes to linking, I'm no expert. But for the most part, the biggest thing about making Java classes is the fact that they are able to be ported to other operating systems without modification. That's what the gcj -C invocation is so useful.
What you do is your business. I'm not going to say what I do is better than what anybody else does.