JNI, The Java Native Interface
 
Стандартный механизм для запуска кода, под управлением виртуальной машины Java (JVM).

Вебсайт: http://download.oracle.com/javase/6/docs/technotes/guides/jni/index.html, http://java.sun.com/docs/books/jni/
Поддерживаемые платформы: Win32, Linux
Заголовки: jni.bi
Версия заголовков: от 2006
Примеры: в examples/other-languages/Java/

Пример


Три файла:

  • mylib.bas - DLL написанная в FreeBASIC

#include "jni.bi"
    
'' Примечание: должно быть "windows-ms" или JRE не найдет функцию
Extern "windows-ms"
    Function Java_MyLib_add( env As JNIEnv Ptr, obj As jobject, l As jint, r As jint ) As jint Export
        Return l + r
    End Function
End Extern


  • Mylib.java - Класс Java, представляющий собой интерфейс для использования с FreeBASIC кодом, и обеспечивается загрузку FreeBASIC DLL

(cpp)
class MyLib {
	public native int add( int l, int r );
	static {
		System.loadLibrary( "mylib" );
	}
}

  • Test.java - Java main() использует Mylib class

(cpp)
class Test {
	public static void main(String[] args) {
		MyLib lib = new MyLib();
		System.out.println( "2+2=" + lib.add( 2, 2 ) ); 
	}
}

По шагам:

  • Скомпилировать FreeBASIC DLL: fbc mylib.bas -dll
  • Скомпилировать два класса Java: javac Mylib.java Test.java
  • Запустить Test class: java Test