While RMS of course is right that the free Java implementations out there don't yet implement all of Sun's features, things are REALLY beginning to look bright lately! The
GNU Classpath project, which can be used with free VMs such as
JamVM now even include most of Swing and AWT. For those that prefer working in a familiar environment, the version of
GCJ that shipped with GCC 4.1.0 introduced a new enough (late-2005, I believe) checkout of the GNU Classpath that most of Swing and AWT were available.
When I started a mandatory course in Java at my university this semester, I was really demotivated by the fact that I would have to develop on a non-free and also unfamiliar platform. Then I discovered GCJ, and I was able to live in a free and familiar world of using the GNU toolchain for everything. Midway through the semester, we started using Swing, and I thought I had reached the end of how far free software could take me. But lo and behold, GCC 4.1 was released at the right moment. What I'm trying to say is: For those of you who want a free Java platform, you really should investigate what's new in the GCJ that ships with GCC 4.1. Or if speed isn't the most important thing to you, an even more feature-complete free Java can be obtained by using a recent GNU Classpath with a free VM such as JamVM.