Performanz Cocoa -> Java Konsolenanwendung über NSTask

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Performanz Cocoa -> Java Konsolenanwendung über NSTask

    Tach zusammen.

    ich habe mal eine sehr theoretische Frage bzw. eine Erfahrungsfrage.
    Ich habe ein stinknormale Cocoa Mac App. Aus dieser heraus möchte ich gerne ein eigen geschriebenes Java-Konsolenprogramm aufrufen.

    Meine Vorgehensweise wäre, einfach im Cocoa App über Nstask das java programm, welches als Ressource mit im App liegt, mit entsprechenden Eingabeparametern aufzurufen. Der Datenaustausch sieht folgendermaßen aus:

    Cocoa -> Java = CSV - String
    Java -> Cocoa = JSON

    Meine Frage jetzt wäre, ob das in euren Augen eine performante Lösung ist, weil mein App sehr stark von der Verarbeitungsgeschwindigkeit abhängt.
    Hat jemand schon mal ein java prog auf die Art und Weise aufgerufen und kann sagen wie die Performanz sich verhält im Vergleich zu nativen Code?

    Vielleicht fällt jemanden noch ein performanterer Datenaustausch ein als CSV und JSON?

    Vielen Dank jetzt schonmal.

    GRuß
    MasterOP22
  • Schwer zu sagen, wieviel die Kommunikation ausmacht.
    Wenn es Dir langweilt, kannst Du Dir ja auch mal JNI anschauen. Kann da aber wenig zu machen, da ich aus religiösen Gründen keine Java sagen.

    Ansonsten: Warum nicht gleich eine reine Cocoa oder eine reine Java Anwendung? So komplexer Code, der schon vorhanden ist?
    C++
  • Okay also zunächst zu JNI. Das kannte ich schon...allerdings klingt es schon so danach, dass es auf jedenfall langsamer ist als mein weg..weil 5 mal hin und hergemappt wird und ich quasi trotzdem erstmal das java prog anschmeißen muss, damit mein code in der nativen methode ausgeführt wird. Also eher hinderlich.

    Zum Datenvolumen: Also wir reden hier meistens nicht mal von kilobyte...also rübergehen nur einfache Dateipfade als String und zurückkommen halt einfache JSON Daten mit Strings.

    Warum ich das Backend in Java mache. Ganz einfach...ich brauchte ne lib für tagging von musikdateien...also habe ich zunächst TagLib 1.7 genommen. Schön..das hat aber teilweise echt mega Bugs und bietet nicht wirklich komfortable schnittstellen. Da habe ich für java die jAudiotagger lib entdeckt, die einfach perfekt für meine zwecke ist.
    Also ein konsolenprog drum gebaut, dass aus der mac app jetzt aufgerufen werden soll.

    Also wenn keiner Einwände äußert, dass das so oder so mega langsam ist, dann werde ich es doch mal zusammenhauen:)

    Gruß
    MasterOP22
  • MasterOP22 schrieb:

    Zum Datenvolumen: Also wir reden hier meistens nicht mal von kilobyte...also rübergehen nur einfache Dateipfade als String und zurückkommen halt einfache JSON Daten mit Strings.

    Dann solltest Du die Daten einfach über den Input- und Output-Stream oder Kommandozeile und Output-Stream austauschen. Welchen Geschwindigkeitszuwachs erhoffst Du Dir? Meinst Du, dass der im Vergleich zum Entwicklungsaufwand gerechtfertigt ist?
    „Meine Komplikation hatte eine Komplikation.“
  • Ja natürlich läuft das über den Input - Outputstream der Konsolenanwednung..nur iwie muss ich die Daten ja sinnvoll strukturieren wenn ich sie hin und herschicke. Da aus den einzelen String in dem Jsonobjekt wieder ein Cocoa-Objekt erstellt werden soll, muss ich ja die Daten iwie strukturieren, und das geht am einfachsten über XML oder JSON. XML ist nur für meine Begriffe zu Overhead. Und da JSOn eig nichts anderes als Key-Value Paare sind...erschien es mir perfekt.