Seite 1 von 1

Kooperation Java <-> PureBasic

Verfasst: 07.11.2009 23:24
von Mok
Servus!

Ist es möglich, Algorithmen (also Funktionen und Prozeduren), die ich in Java geschrieben habe, irgendwie in PB einzubinden (also eine kompilierte Datei, nicht den Javacode übersetzen)? Die Top-Frage ist natürlich WARUM? Und die Antwort drauf ist, dass es Sachen gibt, wo man (oder ich zumindest) in Java weniger Zeilen zum Proggen braucht und somit die Sache auch weniger umständlich ist. (Beispiel: Character-Array)
Mir ist klar, dass man 98 % der Sachen, die man in Java machen kann auch in PB realisieren kann (sogar die Klassen werden von Structure vertreten), nur hätte ich gerne einen Code den ich zu 100 % verstehe, anstatt, dass ich einen Teil meines PB-Codes überhaupt nicht verstehe.
Auch wenn das jetzt ein schlechtes Biespiel war... irgendwie müsste es doch gehen... oder? jedenfalls sehe ich nicht den großen Unterschied (und auch die Funktionsweise/das Anwendungsgebit) der beiden Sprachen als Problem, sondern eher das Format: Mit Javas CLASS kann man in PB reichlich wenig anfangen.

MfG, Mok

Edit: Damn, ich Idiot! Kann irgendein Mod das nach "Andere Sprachen" verschieben?

Re: Kooperation Java <-> PureBasic

Verfasst: 08.11.2009 09:46
von DarkDragon
Andersrum kenn ich das .. das geht mittels Java Native Interface. Aber sorum hab ich es noch nie versucht.

Re: Kooperation Java <-> PureBasic

Verfasst: 08.11.2009 11:40
von Mok
Ich hab im Java-Forum (zumindest glaube ich, dass es dort war) mal gelesen, dass man Java-Klassen zu Executables und Dynamic Link Libraries ändern kann, aber dann wäre die Sache irgendwie nur unter Windows lauffähig... oder nicht?

Re: Kooperation Java <-> PureBasic

Verfasst: 08.11.2009 12:42
von DarkDragon
Mmh... es gibt einen GCJ compiler, also einen GNU Java Compiler. Der macht native binaries. Nur darfst du dann nicht allzu viel davon erwarten, weil das Projekt hinterherhinkt seit 1999 oder so. Dann gibt es noch projekte die Kapseln das ganze irgendwie, aber das ist nur für Windows und für nichts sonst.

Re: Kooperation Java <-> PureBasic

Verfasst: 08.11.2009 14:04
von Vermilion
...Außerdem müsste man noch zusätzlich einen Wrapper erstellen, denn Java ist rein Klassenbasiert.

Re: Kooperation Java <-> PureBasic

Verfasst: 15.11.2009 11:56
von Froggerprogger
JNI (Java Native Interace) funktioniert in beide Richtungen.
Native DLL in ein Java-Programm einbinden
(Zu dieser Richtung habe ich hier schonmal ein Beispiel gebracht.)
1. Erstelle eine DLL in PureBasic, C, ... Die später von Java aus aufzurufenden Funktionsnamen müssen einer bestimmten Konvention genügen.
2. Erstelle eine neue Java-Klasse, die die DLL-Funktionen als Native-Methoden (mit dem native-Schlüsselwort) enthält, und die DLL selbst ihrem Namen nach lädt.
3. Starte das Java-Programm in der JVM. Das Programm ruft nun bei den Native-Methoden automatisch die DLL auf.

Zweite Richtung: Java-Programm von einem anderen Programm aus einbinden
(Selbst noch nichts mit gemacht, aber sollte etwa so funktionieren)
Das Aufrufen von (reinen) Java-Funktionen über JNI von einem Nicht-Java-Programm aus ist jederzeit möglich. Du kannst also per JNI alle Funktionen aller Java-Klassen aufrufen. Die Frage ist eher, wer startet die JVM. Der Anwender, und dein Programm wird dann wie oben beschrieben als DLL eingebunden? Oder soll nur Dein Programm gestartet werden und die Java-Funktionen aufrufen? Auch dann benötigst der Rechner eine JVM. Einige Funktionen im JNI-Interface dienen dazu, eine JVM auf dem System zu erkennen und zu starten. In diese kannst Du dann die entsprechenden (reinen) Java-Klassen reinladen, und ihre Methoden aufrufen.

Alles in allem waren meine Erfahrungen damit: Sobald es erstmal läuft, läuft es erstaunlich gut!

InOutPut

Verfasst: 16.11.2009 15:39
von kswb73
Könnte man nicht auch Java mit PureBasic kommunizieren lassen?
Ich kenn mich jetzt nicht wirklich mit Java aus, aber die meisten Beispiele für Anfänger kommunizieren über die Kommandozeile (CMD). Das müsste man doch mit PureBasic auslesen können.
Außerdem muss es ja irgendwie möglich sein, da auch OpenOffice Java verwendet.

Re: Kooperation Java <-> PureBasic

Verfasst: 25.11.2009 20:50
von Karl
Hallo,

ein Kommunikationskanal könnte ein Client/Server-Modell oder eine simple Dateiaustauschoperation sein. Bei Operationen auf verschiedenen Anwendungsprogrammen versuche ich über parametrisierte Konsolenbefehle, u. U. mit Dateiangabe, zu hantieren. Dabei erspare ich mir das Busy-Waiting-Problem. Java und PB beherrschen Konsolenanwendungen.

Gruß

Der Karl