===HelloWorld===
make.sh
<syntaxhighlight lang="bash">
#!/bin/sh
# openbsd 4.9
# gcc 4.2.1
# openjdk 1.7.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
javac HelloWorld.java
javah HelloWorld
gcc -shared libHelloWorld.c -o libHelloWorld.so
java HelloWorld
</syntaxhighlight>
build.bat
<syntaxhighlight lang="text">
:: Microsoft Visual Studio 2012 Visual C++ compiler
SET VC = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC"
:: Microsoft Windows SDK for Windows 7 and .NET Framework 4
SET MSDK = "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A"
:: Java 1.7.0 update 21
SET JAVA_HOME = "C:\Program Files (x86)\Java\jdk1.7.0_21"
javac HelloWorld.java
javah HelloWorld
%VC%\bin\cl /I"%JAVA_HOME%\include" /I"%JAVA_HOME%\include\win32" /I"%VC%\include" /I"%VC%\lib" /I"%MSDK%\Lib" libHelloWorld.c /Fe"libHelloWorld.dll" /LD
java HelloWorld
</syntaxhighlight>
HelloWorld.java
<syntaxhighlight lang="java">
class HelloWorld
{
private native void print();
public static void main(String[] args)
{
new HelloWorld().print();
}
static{
System.loadLibrary("HelloWorld");
}
}
</syntaxhighlight>
HelloWorld.h
<syntaxhighlight lang="c">
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
</syntaxhighlight>
libHelloWorld.c
<syntaxhighlight lang="c">
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
</syntaxhighlight>
chmod +x make.sh<br>
./make.sh