Creating a Java VM

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.


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist