Proposal: make gcjh default to JNI mode

Andrew Haley aph@redhat.com
Thu Apr 28 17:46:00 GMT 2005


Thomas Fitzsimmons writes:
 > On Thu, 2005-04-28 at 12:09 -0400, Bryce McKinlay wrote:
 > > Andrew Haley wrote:
 > > 
 > > >Thomas Fitzsimmons writes:
 > > > > > Currently gcjh defaults to emitting CNI headers.  I propose we change it
 > > > > > to emit JNI headers by default.  That way gcjh will become command-line
 > > > > > compatible with javah.  This would allow me to remove the javah wrapper
 > > > > > script from java-gcj-compat and instead symlink javah directly to gcjh.
 > > > > 
 > > > > I should have mentioned; I'm proposing this change for mainline (4.1),
 > > > > not 4.0.x.
 > > >
 > > >I think this is an awful idea.  CNI is our preferred route and offers
 > > >many advantages.  To change gcjh to emitting JNI headers by default
 > > >would send out an inapporpriate message.  If you would like gcjh to
 > > >look at its argv[0] and do something different when invoked as javah I
 > > >wouldn't object.
 > > >
 > > I agree. Despite the fact that "downgrading" CNI is not the direction we 
 > > want to take, dramatically changing the behavior of an existing tool is 
 > > a no-no and would contradict/break all the documentation, FAQs, 
 > > Makefiles etc that are out there.
 > 
 > That's why I'm proposing it for 4.1.  I really don't like the idea that
 > gcjh is command-line incompatible with javah just for the sake of
 > promoting CNI.  That said, the mistake has already been made; if people
 > think it's too big a break for a point release then we'll just have to
 > live with the current situation for now.

It's too big a break for any release, ever.

 > > On the other hand, using JNI by default if invoked as "javac"
 > > seems like a great idea!
 > 
 > I'd rather create a separate tool then, maybe called "gcjhjni".  I don't
 > like the idea that:
 > 
 > /usr/bin/javah -> /usr/bin/gcjh
 > 
 > and running "javah" gives different behaviour from running "gcjh".  It's
 > too confusing.

Fair enough.  It's a time hallowed UNIX tradition to do this sort of
thing, but I can see it might be confuxing.  I think it's kinda
elegant myself.  :-)

 > We can't just call the separate tool "javah" because that will conflict
 > with proprietary versions of "javah".  For example, we had problems when
 > fastjar was installed as /usr/bin/jar.  So I propose calling it
 > "gcjhjni" and installing it in $prefix/bin alongside gcjh.  Then I can
 > create a direct symlink from javah -> gcjhjni in java-gcj-compat.

I hate that name.  gnujavah is surely better, but any pronouncable
name is OK with me.

Andrew.



More information about the Java mailing list