Java - C Brücke

8

Ich arbeite an einer Anwendung, die Java-Web-Interface auf Glassfish-Server und C-Kernel, der als Linux-Daemon implementiert ist, hat.

Mein größtes Problem ist jetzt, wie man Remote Procedure Calls durchführt. Ich muss Funktionen und Methoden in beiden Richtungen aufrufen. Dies sind die möglichen Lösungen, die ich mir vorstellen kann:

  1. Verwenden Sie Java Native Interface und Netzwerk-Sockets, um RPC zu implementieren.
  2. D-Bus - Soweit ich weiß, kann DBus für RPC zwischen Java und C verwendet werden.

Ich möchte den einfachsten Weg ohne externe Bibliotheken oder Frameworks verwenden. Ist es möglich, Funktionen / Methoden zwischen Socket und Java direkt aufzurufen? Das Betriebssystem, das ich verwende, ist Centos.

Gibt es eine elegantere Möglichkeit, die beiden Sprachen zu verbinden?

    
Peter Penzov 06.02.2012, 08:34
quelle

1 Antwort

8

Ohne externe Bibliotheken bleiben nur Sockets. Aber ich würde DBus als eine externe Bibliothek einstufen, nicht wahr?

Wenn das C-Programm Sockets verwenden kann, ist kein Java Native Interface erforderlich. Der Java-Code kann Sockets von Java öffnen und die Sockets aufrufen, auf die der C-Code hört.

Wenn Sie DBus erlauben, sollten Sie vielleicht die Fülle von Netzwerk- und RPC-Protokollen berücksichtigen, die Bibliotheken für C und Java haben. (Auch hier ist keine Verwendung von JNI erforderlich.)

Gehen Sie den DBus-Weg, schauen Sie sich die Java-Dokumentation und die Tutorial .

    
Prof. Falken 06.02.2012, 08:45
quelle

Tags und Links