Hi all.
Q: The first question that comes to mind to a new user is: why is Classpath
licensed under the GPL + a seemingly obscure exception?
A: The answer is that Classpath is part of a larger suite of libraries used by
the GNU Compiler Suite (GCC) and linked into the runtime of compiled
applications.
GCC is a cornerstone of the Free Software movement: one cannot get a totally
Free operating system, running solely Free software, unless one has a Free
compiler.
For pragmatic reasons, maintaining and porting a Free compiler to the latest
processors
and machines, would be very difficult without the involvement of companies
(which
have to get returns on their investments to pay their employees). So, in order
to
get help from commercial companies to maintain a state-of-the-art optimizing
compiler collection, one has to make sure these companies can benefit from their
investment.
A balanced way to protect the freedom of the compiler collection, while also
accomodating
contributing companies, is to make sure these companies can use the compiler
collection to
compile proprietary programs. As a program (proprietary or not) needs to link
with runtime
libraries, it is important that the license of all standard runtime libraries
(and any
other runtime support code) be allowed to link with proprietary code.
For this reason, it was decided that all the runtime libraries would contain an
exception,
allowing "free" linking, with no strings attached.

It's not just in exchange for companies' help in contributing code; for
at least some of us this exception is about letting more of them use it
so that the application is better tested and (hopefully) becomes more
stable. The company doesn't have to invest anything beyond a 5-minute
gripe on the mailing list of "Class.forName() doesn't work when I have a
slash in the name" or something like that. But we get benefits
nonetheless. Bottom line: it's a library, meant to be used by others.
The exception gets it used by more people.

Another reason, stated before by the GCJ guys, is the ability to link
the native code statically in an embedded system, which would be
impossible with plain GPL. Sometimes there isn't a free alternative
that's good enough and you need to ship product; you can't wait 6 months
to develop your own or fix the broken existing one. In an embedded
system, static linking gives great benefits; you don't want to give that
up because of a silly license.

Not that your reason is wrong, it just sort of sounds like "we're using
this license in exchange for companies' contributing code." I don't
really think any of us think that way.