Storing C++ data in an instance field using CNI?

Stanley Brown stanley.brown@zimmer.com
Sat May 29 17:57:00 GMT 2004


David Daney wrote:

> Stanley Brown wrote:
>
>> I played a little bit with RawData.  Soon my Java code became very 
>> GCJ dependent.  I eventually switched back to JNI (which GCJ handles 
>> just fine) storing pointers in long instance variables and NIO 
>> buffers.  To be fair this was mainly because I ran into complications 
>> on the Win32 port where (1) I could not mix C++ and GCJ and (2) 
>> creating instances of Calendar overloaded the memory.
>>
>> Could someone please explain the advantage of using RawData over the 
>> methods I employed?
>>
> CNI has lower overhead than JNI.
>
> If you use RawData, your code will continue to work when ported to 
> architectures with 128bit pointers.
>
> David Daney.
>
Bothner wrote some interesting stuff some time back on Linux Journal 
about CNI.  After reading it I was "thats the way to go" for 
java-2-native programming.  After much JNI and CNI coding Im thinking 
both will leave anyone longing for something like how .NET handles it.  
Sure, being able to use Java classes like C++ classes while in C++ code 
is nice but what would be really cool is to instantiate and control C++ 
classes from within Java like they were Java classes.  I know: thats 
crazy talk!

A 128b pointer is a bit fantastic to me.  64-bit is just starting to 
become a reality for most people.  Java probably needs a native integral 
type.  Saying an int is always 32 bits no matter what the platform is an 
advantage and disadvantage at the same time.  Perhaps "long long" for 
128 bits?  :)



More information about the Java mailing list