gibt es ein „best practice“ ein anderen Prozess in dem O durch Java zugreifen?
-
03-07-2019 - |
Frage
Ich habe Skype4Java (für skype java api) gelesen und bemerkt, sie verwenden jni das Skype-Client zugreifen zu können.
intuitiv würde ich davon ausgehen, dass es bereits eine Standard-Bibliothek in Java, die eine O empfindliche jni Implementierung hat auf andere Prozesse zugreifen. Ich setze sich für eine suchen, konnte es aber nicht finden.
Gibt es eine solche Bibliothek? wenn nicht, gibt es eine bewährte Methode, eine anderen Prozess im Betriebssystem zugreifen kann, nicht unbedingt ein Skype-Client?
Lösung
Ich denke, dass vielleicht müssen Sie definieren, was ‚Zugang‘ für Sie bedeutet. Wenn Sie sich über die gute alte Inter-Prozess-Kommunikation sprechen, dann Steckdosen oder JNI sind wirklich die beste Wahl.
Garth Kommentar über Memory-Mapped-Dateien verwenden, ist interessant - ich MMFs und virtuelle Dateien für IPC zwischen C-Anwendungen oft verwendet habe, aber es kam nie zu mir, dass Java der MMF-Implementierung mit dem nativen O virtuellen Dateisystem kompatibel sein könnte. Diese Arten von virtuellen Dateien benötigen in der Regel nicht-triviale Setup, so dass ich wäre überrascht, wenn es funktionieren würde ...
Alle sagen, es sei denn, Sie massive Mengen von Daten zwischen Anwendungen sind Pumpen, Sockets ist wohl die universellste und effektivste Weg, es zu tun. Seien Sie sicher, dass Sie machen endianness zwischen dem Host-Betriebssystem und Java VM: -)
Andere Tipps
Von Java 1.4 ab können Sie Memory-Mapped-Dateien verwenden, beliebige Informationen mit einem anderen Prozess auszutauschen. Siehe java.nio.MappedByteBuffer für Details.
Das ist nicht ganz das, was Sie suchen, werden aber wahrscheinlich dennoch sehr viel helfen: das Java Native Access Projekt auf java.net.
Vergessen Sie nicht, Steckdosen ...