Vor und Nachteile versch. IPC-Techniken in Java



  • Für ein großes Projekt muss ich mit einem vorhandenen C Programm kommunizieren. Nun stehe ich vor der Qual der Wahl der IPC Möglichkeiten. Ich würde mal gerne von Euch Vor- und Nachteile und Eure Erfahrungen zu den einzelnen Techniken hören.

    JNI:
    Wie siehts es mit der Performance aus? In früheren Versionen war es so, dass imho jeder JNI call ein komplett eigenen Bereich mit Stack und Heap innerhalb der VM bekommt und dadurch relativ teuer war. Wie sieht es mit Multithreading und JNI aus? Läuft der JNI Code in dem gleichen Thread und habe ich Zugriff auf den Thread? Ich habe das Gefühl das JNI mehr neue Probleme verursacht als vorhandene löst.

    Wie sieht es mit Java 5 und 6 aus? Ich gehe mal davon aus, dass sich der Overhead stark reduziert haben muss, sonst würde der Tomcat nicht aus Perfromance Gründen auf APR zurückgreifen.

    Sockets(eigenes Protokoll/RMI/CORBA/SOAP):
    Die wahscheinlich teuerste aber eleganteste Variante.

    fifo:
    Möglich wäre es, auch wenn ich fifos nicht mag.

    Share Memory:
    Unterstützt Java leider nicht. Shared Memory über JNI lohnt nicht, da ich dann gleich direkt per JNI kommunizieren kann.

    :xmas1:



  • Nachtrag

    Memory Mapped Files:
    Dazu habe ich bisher keine Erfahrungen mit Java gesammelt. Soll angeblich über MappedByteBuffer funktionieren. Klingt auf jeden Fall interessant.

    :xmas1:


Anmelden zum Antworten