Wir arbeiten an einem größeren Projekt und planen, die grafische Oberfläche in Java und die (zeitkritischen) Anwendungen in c++ zu machen. Jetzt brauchen wir natürlich eine Schnittstelle zwischen den beiden Programmiersprachen (diese muss auch effizient sein).
Wir dachten da an Runtime.getRuntime().exec(*.exe);
Welche Probleme gibt es dabei zu beachten (bezüglich Speichergröße, ...)? Wir wollen die Kommunikation mittels den Pipes (inputstream und outputstream) zu realisieren, jedoch funktioniert das nicht (testeten es mit einem c++ Programm, das alles zurückgibt, was es hineinschreibt!)
Eine mögliche zweite Variante ist JNI, jedoch kennen wir uns nicht gut aus damit bzw. wissen nicht genau, wie das funktioniert (man ruft da doch nur c++ Funktionen von Java aus auf, oder?).
Was würdet Ihr uns raten zu verwenden? (vielleicht auch eine andere Programmiersprache als java, wo eine bessere Schnittstelle vorhanden ist).
Das c++ Programm muss doch immerhin Threads verwenden und Sockets aufbauen usw. (bezüglich JNI).
Einige Informationen zu unserem Projekt:
Wir arbeiten an einem Programm, dass die Auslastung eines Switches zu testen. Dafür sendet jedes Programm in eine/mehrere Multicastgruppen (laut angegebenen Datenmengen) Pakete, um den Switch auszulasten. Andere senden gezielt Pakete und messen dann die Zeit zur Antwort (diese erstellt ein anderes Programm, an den das Paket adressiert ist) im Vergleich zu einem Wert ohne Last. Für diese Anforderung ist Java unserer Meinung nach zu langsam, besonders wenn es dann in höhere Datenmengen bzw. mehrere Multicastgruppen geht (wir müssen die Zeitintervalle genau einhalten, sonst werden statt 100 Pakete/s nur 95 gesendet! -> also alle 10 ms ein Paket!).
Wir planen auch, dass wir das Programm auf zwei Plattformen (Windows, Linux) programmieren, würden jedoch für eine optimale Lösung bezüglich Schnittstelle auch auf diese Funktion verzichten.
Was sind Eure Erfahrungen/Meinungen zu diesem Thema?
Wir dachten da an Runtime.getRuntime().exec(*.exe);
Welche Probleme gibt es dabei zu beachten (bezüglich Speichergröße, ...)? Wir wollen die Kommunikation mittels den Pipes (inputstream und outputstream) zu realisieren, jedoch funktioniert das nicht (testeten es mit einem c++ Programm, das alles zurückgibt, was es hineinschreibt!)
Eine mögliche zweite Variante ist JNI, jedoch kennen wir uns nicht gut aus damit bzw. wissen nicht genau, wie das funktioniert (man ruft da doch nur c++ Funktionen von Java aus auf, oder?).
Was würdet Ihr uns raten zu verwenden? (vielleicht auch eine andere Programmiersprache als java, wo eine bessere Schnittstelle vorhanden ist).
Das c++ Programm muss doch immerhin Threads verwenden und Sockets aufbauen usw. (bezüglich JNI).
Einige Informationen zu unserem Projekt:
Wir arbeiten an einem Programm, dass die Auslastung eines Switches zu testen. Dafür sendet jedes Programm in eine/mehrere Multicastgruppen (laut angegebenen Datenmengen) Pakete, um den Switch auszulasten. Andere senden gezielt Pakete und messen dann die Zeit zur Antwort (diese erstellt ein anderes Programm, an den das Paket adressiert ist) im Vergleich zu einem Wert ohne Last. Für diese Anforderung ist Java unserer Meinung nach zu langsam, besonders wenn es dann in höhere Datenmengen bzw. mehrere Multicastgruppen geht (wir müssen die Zeitintervalle genau einhalten, sonst werden statt 100 Pakete/s nur 95 gesendet! -> also alle 10 ms ein Paket!).
Wir planen auch, dass wir das Programm auf zwei Plattformen (Windows, Linux) programmieren, würden jedoch für eine optimale Lösung bezüglich Schnittstelle auch auf diese Funktion verzichten.
Was sind Eure Erfahrungen/Meinungen zu diesem Thema?