2.9 Podprogramy

Podprogramy w Javie umożliwiają łączenie kodu Java z kodem napisanym w innych językach programowania, głównie C i C++. Mechanizm ten nazywany jest JNI (Java Native Interface)

Zastosowania podprogramĂłw:

Modyfikator native:

Metody zadeklarowane z modyfikatorem native (omówionym w punkcie 2.3.4) nie posiadają implementacji w Javie. Ich kod znajduje się w zewnętrznych bibliotekach załadowanych dynamicznie.

Przykład deklaracji metody native:

public class SystemUtils {
    // Deklaracja metod native
    public native long getAvailableMemory();
    public native String getSystemProperty(String name);
    
    // Ładowanie biblioteki zawierającej implementację
    static {
        System.loadLibrary("systemutils");
    }
}

Proces tworzenia podprogramĂłw:

  1. Deklaracja metody nativenative
  2. Kompilacja klasy Java
  3. Generowanie nagłówka C/C++
  4. Implementacja metody w C/C++
  5. Kompilacja do biblioteki współdzielonej (.dll w Windows, .so w Unix)
  6. Ładowanie biblioteki

Przykład użycia narzędzia javah:

javah -jni SystemUtils

Polecenie to generuje plik nagłówkowy SystemUtils.h zawierający prototypy funkcji C.

Ograniczenia i uwagi bezpieczeństwa:

Uwaga: Podprogramy native należy używać oszczędnie i tylko gdy jest to naprawdę konieczne, ponieważ mogą one naruszyć podstawowe cechy Javy: przenośność i bezpieczeństwo.

Sekcja zrekonstruowana na podstawie kontekstu kursu