2009-04-23 8 views
2

Ich habe zwei Optionen - ich kann entweder JNI verwenden oder Runtime.exec verwenden, um eine C++ - Bibliothek auszuführen.JNI vs Runtime.exec()

Das C++ - Programm ist CPU-intensiv und langwierig, d. H. Einige Aufrufe können bis zu einigen Stunden dauern.

Was sind die Vor- und Nachteile von jedem? Welchen Ansatz sollte ich wählen?

Antwort

5

Wenn Sie mit der C++ - Bibliothek interagieren müssen, gehen Sie für JNI.

Wenn es ein eigenständiges Programm ist, das Sie nur aufrufen möchten (und vielleicht die Ausgabe greifen), ist Runtime.exec() viel, viel einfacher.

+0

Hallo Michael, könnten Sie bitte weitere Informationen vorschlagen. In Bezug auf die Auswirkungen auf Geschwindigkeit und Speicher verwendet. Wie wirkt sich dies auf die Stabilität der Anwendung aus? – saurabheights

2

Haben Sie als dritte Option JNA untersucht?

Von der JNA Website:

JNA bietet Java-Programme einfachen Zugang auf native Shared Libraries (DLLs auf Windows) ohne alles andere als Java Code-Nr Schreiben JNI oder nativen Code ist erforderlich. Diese Funktionalität ist vergleichbar mit Windows Platform/Invoke und Pythons Ctypes. Der Zugriff ist zur Laufzeit ohne Codegenerierung dynamisch .

Eine Einführung finden Sie in der getting started Anleitung.

+0

danke, hatte nicht von JNA gehört. +1 – dogbane

+0

Die Links scheinen gebrochen – kongo09

+0

@ kongo09 Ich habe die Links aktualisiert. –

0

Die Verwendung von JNI kann die Möglichkeit einschränken, von 32 Bit auf 64 Bit zu wechseln. Möglicherweise müssen Sie auch die Einstellungen für den Anwendungsspeicher anpassen.

Es sei denn, Sie wissen, wie gut C++ Zeug geschrieben ist - es könnte Ihre App instabiler machen. Sie haben Glück, dass das C++ - Bit ein paar Stunden braucht - also rufen Sie es einfach extern an.