Creating a Java VM

Here is the code ready to use and written in C, to create a JDK 1.1 Java Virtual Machine.

 #include  int main()  {    JDK1.1InitArgs data;    JNIEnv    *env;    JavaVM    *jvm;    jclass    MyClass;    jObject   MyObject;    jMethodID MyMethod;    jint      Result;        data.version = 0x00010001; /*select version of your jvm, jdk1.1*/    JNI_GetDefaultJavaVMInitArgs(&data);    Result=JNI_CreateJavaVM(&jvm,&env,&data);    if (Result<0)     {          printf("Error when creating the JVM...");     }else{

Here we locate our class and our initialization method ...*/

        MyClass = (*env)->FindClass(env,"MyDesiredClass");       MyMethod= (*env)->GetStaticMethodID(env,MyClass,"AnyMethod");       (*jvm)->DestroyJavaVM(jvm);       printf("Exiting Virtual Machine ...");     }/*end of else*/  }/*end of code*/

This code creates a VM ready to load a class and execute one of its static methods; &jvm is a pointer to the JVM. We have also the choice of using the function:

 jint JNI_GetCreatedjavaVMs(JavaVM**,jsize,jsize*); 

This allows me to see which VMs are created and select one on the pointers array JavaVM**, although in JDK1.1 no more than one VM is allowed, this would allow me to see if there's a VM created and use it.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: