Hi,
erstmal herzlich Willkommen in der
DP
Deine Frage kann so pauschal gar nicht beantwortet werden. Es gibt wie du schon sagst/zeigst mindestens zwei Wege. Welcher Weg am Besten geeignet ist, hängt aber stark davon ab, was du genau machen möchtest.
Hier ist es halt wichtig zu wissen, was du unter einer JavaPlattform verstehst? Es wird ja sicherlich einen Grund geben warum ein Programm in Java vorliegt. Genau so gibt es sicherlich auch einen Grund warum Delphi damit kommunizieren soll, doch welche?
Also müssen Eigenschaften von Java erhalten bleiben? Hier natürlich insbesondere die Plattformunabhängigkeit? Das ginge auf diesem Wege nämlich nicht. Der in den Links vermerkte Weg ist einer, an den ich auch zuerst gedacht habe. Das JNI erlaubt es dir halt nativen Code (an die jeweilige Plattform gebunden) aufzurufen. Hier werden häufig Dlls eingebunden oder ähnliches.
Was genau ist eigentlich das Ziel? Wenn du ein wenig genauer sagst, wie deine Programme aussehen und was die tun sollen, kann man dir sicherlich leichter helfen.
Das komplette übersetzen in Delphi kann z.B. auch sinnvoll sein. Sollte dies das einzigste Java-Programm sein und ab sofort nur noch in Delphi gearbeitet werden, wäre es wohl wenig sinnvoll jedesmal ein Vertreter-Treiber Modell zu verwenden. Dies kostet natürlich zudem zusätzlichen Speicher und andere Ressourcen. Zudem ist es angenehmer in einer
IDE debuggen zu können.
Eine Möglichkeit die sich auch eventuell anbieten könnte ist die Kommunikation per Netzwerk. Sowohl Delphi als auch Java können sehr einfach über ein Netzwerk kommunizieren. Soll dein Java-Programm nur eine bestimmte Berechnung durchführen, kannst du es sehr leicht als eine Komponente betrachten. Du gibst ein paar Argumente rein und bekommst irgendein Ergebnis raus. Das rein und raus kann dann eine einfache
TCP/
IP Verbindung übernehmen. Arbeitest du damit auf einem Rechner, so kannst du immer die Loopback Adresse nehmen. Hier müsstest du nur dafür sorgen, dass das Java-Programm entsprechend erweitert wird. Ist eigentlich kein Problem (wenn du ein wenig Java kannst), denn für Netzwerke wurde Java nahezu gemacht (es spielt hier eine Menge stärken aus). Du brauchst nur einen sehr einfachen Java-Server, der auf einem definierten Port alle Parameter entgegen nimmt und auf einem anderen das Ergebnis ausgibt. In Delphi brauchst du natürlich die einfachen Gegenstücke. Hier hättest du den Vorteil, dass du die volle Plattformunabhängigkeit von Java behalten könntest (und alle anderen Eigenschaften). Zudem kannst du dir dann aussuchen, ob du den Aufruf lokal oder sogar über ein Netzwerk stattfinden lässt. Ein weiterer Vorteil wäre noch, dass du statt Delphi auch jede andere Sprache zum Aufruf verwenden könntest.
Wie gesagt, es hängt sehr sehr stark davon ab, was genau du eigentlich machen möchtest und warum. Ohne etwas mehr Details ist es sehr schwer etwas als geeignet oder ungeeignet zu benennen. Und letztlich ist noch eine weitere wichtige Frage, was dir am leichtesten fällt!
Gruß Der Unwissende