AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi mit Java komunizieren

Offene Frage von "bucchi"
Ein Thema von Simon1988 · begonnen am 12. Jul 2006 · letzter Beitrag vom 27. Okt 2006
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#1

Delphi mit Java komunizieren

  Alt 12. Jul 2006, 13:36
Guten Tag,
ich habe folgende Aufgabe.
Es gibt ein fertiges JavaProgramm mit Klassen. Ich soll versuchen diese Klassen in Delphi zu importieren. Es soll sozusagen anhand von Delphi eine JavaPlattform erstellt werden und diese sollen miteinander komunizieren . So ganz habe ich das noch nicht verstanden aber vllt. kann mir einer helfen. Ich habe hier auch noch zwei links zum orientieren.
Alternative wäre alles in Delphi u übersetzen .. aber das wäre die notlösung.
Wie schwer ist es so etwas mit Delphi zu machen ?! .. also das komunizieren mit Java.




Link 1

Link 2
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 14:08
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
  Mit Zitat antworten Zitat
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#3

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 19:29
Ok .. also das mit dem übersetzen hat sich erledigt.

Zunächst mal was zu dem Programm. Ich kann Java NOCH nicht. natürlich muss ich mich darin einarbeiten um zu verstehen wie Java funktioniert. Vllt. wird mir dann klarer wie diese Sprachen miteinander komunizieren könnten

Es ist ein Programm das Vermessene daten einliest und rendert. . also eine Digitale Karte. Da gibts fan proceduren wie ranzoomen wegzoomen. speichern ect.
Also eine Klasse namens Flüsse. da kann man die daten der flüsse laden , rendern, zommen ect. Das ist also ein Fertiges programm . Ich soll jetzt ein Handbuch schreiben wie ich diese Klassen usw. Von Delphi aus steuer.
da wurden mir auch die links empfohlen. leider versteh ich fast nur bahnhof. vllt weil ich kein java kann (hoffe ich )
ich soll also auf eigenschaften zugreifen können (wie positionen des Flusases)
auf die proceduren render usw. das alles von Delphi aus. Das rendern soll aber von java erledigt werden. Also einfach nur klassen mit delphi steuern ..
Aber ich frage morgen nochmal nach ob ich das so richtig verstanden habe.
vllt. kann ja einer kommentar dazu geben ob das geht ?! .. und ob das mit der Methode bei den links geht
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 19:49
Möglich ist es mit den zwei Links, wobei für dich der Zweite der eigentlich wichtige wäre. Damit kannst du (soweit verspricht es der Link) Java Objekte über Delphi aufrufen. Dazu wird einfach ein einfaches Vertreter-Treiber (Proxy-Driver) Modell verwendet. Deine Java-Klasse ist dabei der schon fertige Treiber. Auf Delphi Seite wird ein Vertreter automatisch generiert. Alle Aufrufe die an diesen Vertreter gehen, werden dann für dich völlig transparent verarbeitet. Allerdings bist du auch stark von der dort genannanten Komponente Abhängig. Je nachdem wie gut die ist, wird es besser oder schlechter klappen.
Du solltest also erstmal schauen, wie gut du mit dieser Komponente klar kommst.
Wenn du da arge Probleme hast, gibt es noch ein paar Alternativen, aber wie gesagt erstmal hieße die Lösung dann wohl Link 2
  Mit Zitat antworten Zitat
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#5

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 20:07
baut der erste link nich auf den zweiten auf ???

am besten ist es erstmal java beizubringen ? wobei soviel muss es dann auch nich sein ?! es wird doch mehr in delphi gemacht oder ?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 20:33
Zitat von Simon1988:
baut der erste link nich auf den zweiten auf ???
Nein, der erste Link erklärt, wie du unter Java etwas verwenden kannst, das in Delphi geschrieben wurde.
Der zweite zeigt wie du in Delphi etwas verwenden kannst, das in Java geschrieben wurde.

Zitat von Simon1988:
am besten ist es erstmal java beizubringen ?
Wie kommst du jetzt darauf? Nein, der zweite Link beschreibt wie schon gesagt ein Treiber und Vertreter Modell. Du kannst es als automatische Adaptergenierung verstehen. Du hast etwas in Java. Was auch immer du da hast, ist ja schon fertig (große schwarze Kiste!). Jetzt möchtest du mit etwas ganz anderem (Delphi) diese Kiste verwenden. Die Adaptergenerierung erstellt dir jetzt in der Bekannten Sprache (Delphi) eine Art von Skelett. Dies könntest du dir einfach als irgendeine Delphi Klasse, besser noch als Schnittstelle vorstellen. Du hast hier ganz normale Delphi Funktionen. Diese kannst du aufrufen, du weißt wie sie heißen, du weißt was für Argumente sie erwarten und du weißt was du zurück bekommst. Was aber passierst wenn du eine dieser Methoden aufrufst ist dir völlig egal. Dieses Skelett leitet den Aufruf (für dich völlig transparent) an die schwarze Kiste weiter. Hier wird irgendwas irgendwie gemacht und das Ergebnis das du bekommst ist wieder ein Delphi-Element.
Da würdest du (idealer Weise) gar kein Java sehen. Du bekommst einfach nur eine automatisch erzeugte Delphi-Klasse die du direkt verwendest. Warum und wie die funktioniert, dass ist dir egal (das ist der Sinn einer Klasse). Du weißt was du reinsteckst und was rauskommt.

Das alles gilt natürlich nur, wenn die automatisch erstellten Klassen das alles richtig machen. Schau dir einfach den zweiten Link an und probier die dort genannte Komponente aus. Sollte die nicht wie erwartet funktionieren, frag noch einmal nach.
  Mit Zitat antworten Zitat
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#7

Re: Delphi mit Java komunizieren

  Alt 12. Jul 2006, 22:44
vielen vielen dank
  Mit Zitat antworten Zitat
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#8

Re: Delphi mit Java komunizieren

  Alt 25. Jul 2006, 14:39
hm .. also ich bin grad dabei mir dieses Tut für Delphi (also zweiter Link anzuschauen). Leider verstehen ich nichts ..
was ist denn dieses Java D Tool .. kann mir vllt. einer einen kleinen einstieg schreiben ?! .. danke ..


Simon
  Mit Zitat antworten Zitat
Simon1988

Registriert seit: 12. Jul 2006
39 Beiträge
 
#9

Re: Delphi mit Java komunizieren

  Alt 25. Jul 2006, 15:16
ich nochmal .. ich hab jetzt einfach mal versucht JNI zu erzeugen .
und zwar mit Folgendem Befehl
JavaVM := TJavaVM.Create; aber irgendwie hält der dann das programm vor dem intialisieren an.
Ich hab den Code mal hochgeladen.
Angehängte Dateien
Dateityp: rar delphi_code_172.rar (201,4 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#10

Re: Delphi mit Java komunizieren

  Alt 25. Jul 2006, 16:52
Hi,
das liegt einfach nur daran, dass die jvm.dll nicht gefunden wird (ok, soweit warst du sicherlich auch schon). Die ist einfach nötig, um die Virtuelle Maschine von Java zu starten (die ja letztlich dann deinen Java-Code interpretiert).
Es gibt hier (wieder) verschiedene Möglichkeiten das Problem zu lösen. Die eine ist es einfach diese Datei aus dem aktuellen JRE zu kopieren (sowas wie /programme/java/jre_..../bin/client/) und in den selben Ordner wie die .exe zu packen. Das ist aber eigentlich nichts anderes, als diese Datei in den Suchpfad aufzunehmen (was du eigentlich tun solltest).
Am einfachsten ist es, wenn du immer kontrollierst, ob auf dem aktuellen System überhaupt ein JRE installiert ist. Dies ist das Java Runtime Enviroment, also wirklich nur die Laufzeitumgebung. Die ist dann auch deutlich kleiner als das JDK (Development Kit), dass du nur für die Entwicklung benötigst.
Unter Windows trägt sich das JRE in der Registry ein. Da müsstest du dann mal gucken, wo genau der Schlüssel zur JRE liegt und diesen Pfad dann beim Start deines Programms abrufen. Hier wäre dann auch die Möglichkeit gegeben, dass Programm (ohne Exception) zu beenden, wenn kein JRE installiert ist (natürlich wäre dann ein Hinweis an den Benutzer auch nicht schlecht).
Liegt die .dll im Pfad, läuft deine .exe erstmal.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz