#include <jni.h> 

int main() 
{ 
  JavaVM *jvm; 
  JNIEnv *env; 
  JavaVMInitArgs jvmargs; 
  jint r; 
  jclass cl; 
  jmethodID m; 
  jobject ob; 
  jstring s; 
  const char *c = "Hello, world!"; 

  jvmargs.nOptions = 0; 
  jvmargs.version = JNI_VERSION_1_6; 

  r = JNI_CreateJavaVM(&jvm, (void**)&env, &jvmargs); 
  if (r < 0) 
    return -1; 

  cl = (*env)->FindClass(env, "javax/swing/JDialog"); 
  if (!cl) 
    return -1; 

  m = (*env)->GetMethodID(env, cl, "<init>", "(Ljava/awt/Frame;Ljava/lang/String;)V"); 
  if (!m) 
    return -1; 

  s = (*env)->NewStringUTF(env, c); 
  if (!s) 
    return -1; 

  ob = (*env)->NewObject(env, cl, m, 0, s); 
  (*env)->ReleaseStringUTFChars(env, s, c); 
  if (!ob) 
    return -1; 

  m = (*env)->GetMethodID(env, cl, "setDefaultCloseOperation", "(I)V"); 
  if (!m) 
    return -1; 

  (*env)->CallVoidMethod(env, ob, m, 2); 

  m = (*env)->GetMethodID(env, cl, "show", "()V"); 
  if (!m) 
    return -1; 

  (*env)->CallVoidMethod(env, ob, m); 

  (*jvm)->DestroyJavaVM(jvm); 
} 
