java to native code and Sun JVM alternatives
Andrew Haley
aph@redhat.com
Thu Mar 11 11:56:00 GMT 2010
On 03/11/2010 11:45 AM, wagde wrote:
>> I'm working on a project which have java code (and c++), and until ow I used
> javac to compile the code and java to run the classes and JNI to call java
> from c++ code.
>> I don't want to use javac, javah, and java, ...(sun stuff) because of
> royalties issues...
OpenJDK is free software, but let's press on...
> I'm looking for alternatives.
>> What I see right now are two alternatives:
> 1. compile my java code to native code using gcj, and link it with the c++
> code.
> 2. keep the classes and use the gij instead of java.
>> I start working on the two approaches in parallel and I'm having too many
> problems in both them. So I need some REAL help here.
>> Problem with 1.
> 1. I succeeded to compile my java code (after chaning the syntax) using gcj
> to linux "c" object files. But in the linkage to the binary, I got too many
> "undefined reference to", ... because I use external "jars" (like axis)
> which are not compiled to native. I try to compile the axis jar to c and get
> too many compilation errors.
Compiling Java code with -findirect-dispatch is probably your best
plan to solve this. When an undefined class is discoveed, gcj's
runtime will try to load its class files.
> Problem with 2.
> I compiled all my classes with gcj. and the C code uses JNI to call it. But
> the JNI creates a JVM (JNI_CreateJavaVM)!!! which I don't want to use.
Why not? This is fully supported by gcj, and doesn't hurt anything.
> I want to use gij instead. So I wanted to know if there is anyway to
> let my JNI code to ceate a gij VM and and java VM. is there anything
> like this ?! If not, how can I use the classes I compiled with gcj
> from the c code without using the JAVA VM? CNI? does that mean that
> I should convert my jni code to cni?
No, there's no need to do that. JNI code should work with gcj just
fine.
Andrew.
More information about the Java
mailing list