JNI Bug report / C++ issues

Johannes Deisenhofer joe at dillingen.baynet.de
Wed Oct 28 02:27:31 PST 1998


I'm trying to use kaffe 1.0b2 as a replacement for the SUN 1.1.5 JVM 
via the JNI Interface. Looks good, so far.

However, kaffe's JNI include files do contain some errors that I've 
listed below:

 - NewXXXArray() should return jXXXArray instead of jarray
   This is a problem in C++, since these types are not simply casted to jref
 - NewGlobalRef() does return jobject in JDK 
 - DefineClass() does have an extra name argument in JDK 1.1.5
 - GetSuperClass is spelled GetSuperclass in JDK.
 - java.lang.StringBuffer.setLength has a bug:
      System.arraycopy throws exception, because copied buffer len
      exceeds allocated source buffer len.

Not a bug, but a missing feature:

SUN's JNI headers do provide a special interface for C++. Unfortunately,
they do not allow to use the C-Interface from C++.

So, when using C++, I'm forced to use the C++-Interface with the JDK, 
which on the other hand, kaffe does not provide. 

I'd like to provide the necessary patches to make kaffe more compatible.
There are a few options to do this:
 1) Just copy the missing parts from SUN JDK headers. Copyright problem?
 2) Type in something that behaves identical, but avoid copying. Since
    symbol names have to be identical, it would be very close to 1) beside 
 3) Provide a hook so one can add an external C++-Wrapper. Have at least 
    an option to avoid some typedefs like jobject,JNIEnv, JavaVM.

What option do you prefer?

(Please reply by mail, I'm not on the list)

// Johannes Deisenhofer joe at dillingen.baynet.de jdeisenhofer at acm.org

More information about the kaffe mailing list