I believe we should start a "FAQ" which deals with non-minor
differences between GNU Classpath and Sun's implementation of Java.

Since most of the Java API is not specified in the JLS, there are many
areas which leave room for interpretation.  Generally, the right thing
to do is to do whatever Sun's implementation does.  However, if Sun's
implementation seems brain dead (or just plain wrong), we shouldn't
follow their path.  In that case, whatever path we take, we should
probably document it.

For instance, a good portion of Sun's java.lang.Character is not
defined in the JLS.  For these portions, I have to rely upon Javadoc
API documentation.  Many methods have documentation along the lines:

isLetter():

    A character is considered to be a letter if and only if it is
    specified to be a letter by the Unicode 2.0 standard (category
    "Lu", "Ll", "Lt", "Lm", or "Lo" in the Unicode specification data
    file).

The first part (before the parens) makes sense.  The last part (in
parens) does not make sense -- those categories do not encompass the
Unicode definition of what a letter is.

So I have a problem here.  Does Sun mean that isLetter() should return
true for all letters?  Or does Sun mean that isLetter() should return
true for characters in one of the categories "Lu", "Ll", "Lt", "Lm",
and "Lo"?

GNU Classpath does the sensible thing and returns true for all
letters, even though Sun's implementation does not.

(There are many other places in Sun's Javadoc documentation and
implementation of java.lang.Character which directly conflict with
what the Unicode 2 standard says to do).

(oh, and I finally bought a copy of the Unicode 2 spec.  This is a
good thing, because otherwise, our java.lang.Character would be just
as brain dead as Sun's)

-- 
Paul Fisher * [EMAIL PROTECTED]

Reply via email to