Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nachrichten an Java-Programm senden (https://www.delphipraxis.net/167558-nachrichten-java-programm-senden.html)

AnoBit 5. Apr 2012 11:15

Nachrichten an Java-Programm senden
 
Moin moin,

ich suche grade nach einer Möglichkeit aus einem Delphi-Programm heraus Daten an ein Java-Programm zu schicken.
RMI scheint mir nur Java-Intern zu sein.
Auf Netzwerk-Ebene wollte ich mich dabei nicht begeben...

Wie ich gegebenenfalls aus Java an die Windows-Messages komme habe ich bisher auch noch nirgends in Erfahrung bringen können.

Es sollen lediglich zwei Zustandsänderungen (Bool'sche Werte) an das Java-Programm übermittelt werden.

Dazu hatte ich notfalls schon mit dem Gedanken gespielt, Tastenkombinationen an den Java-Teil zu senden und nur darauf zu reagieren.


Leider bin ich nach bisheriger Suche noch nicht viel schlauer.

Was meint Ihr dazu? Irgendwelche Ideen? Hat schon wer ähnliches gemacht?

Grüße,
AnoBit

PS: Die beiden Komponenten sind beide aus eigener Schmiede.

s.h.a.r.k 5. Apr 2012 11:48

AW: Nachrichten an Java-Programm senden
 
Vielleicht hilft dir ja der Thread.

mjustin 5. Apr 2012 13:28

AW: Nachrichten an Java-Programm senden
 
JNI und JNA sind zwei Standards, mit denen Java auf native Funktionen zugreifen kann. Beide unterstützen auch Callback-Funktionen. Aus Delphi funktionierte es in meinen Tests zwar, aber ich würde es aus Gründen der Einfachheit mit einer Socketverbindung (z.B. simple HTTP Requests) lösen. Denn man würde bei JNI/JNA zuerst in Delphi (oder C) eine DLL schreiben, diese mit dem anderen Delphi Programm dann ansprechen und zuletzt aus der DLL einen Callback im Java Programm ausführen. Das ist eine umständliche Lösung, verglichen mit einem einfachen Java HTTP Listener Thread und einem Indy IdHTTP.Post (oder.Get) Aufruf.

Noch weniger Aufwand (im wesentlichen pappt man nur eine @WebService Annotation an eine Klasse) wäre es, einen eingebetteten Web Service in Java zu erstellen, das erfordert noch nicht einmal die Enterprise Edition von Java. Der HTTP Endpoint (Server) wird mit einer Zeile Code erzeugt. Delphiseitig kann man dann den WSDL Importer verwenden oder den passenden SOAP Request zu Fuss erstellen.

Ein deutschsprachiges Beispiel ist hier zu finden:

http://www.theserverside.de/webservice-in-java/

mjustin 25. Mai 2013 14:17

AW: Nachrichten an Java-Programm senden
 
Eine Lösung die einfacher als die (von mir) damals vorgeschlagenen Lösungen mit Web Services und JNA ist: Memory Mapped Files. Diese werden auch von Java unter Windows unterstützt und bieten sehr gute Performance.

Online Quellen:

Als Einstieg http://javarevisited.blogspot.de/201...o-in-java.html :

Zitat:

Possibly main advantage of Memory Mapped IO is performance which is important to build high frequency electronic trading system. Memory Mapped Files are way faster than standard file access via normal IO.
http://stackoverflow.com/questions/1...-files-in-java

BUG 26. Mai 2013 15:53

AW: Nachrichten an Java-Programm senden
 
Zitat:

Zitat von mjustin (Beitrag 1216362)
Eine Lösung die einfacher als die (von mir) damals vorgeschlagenen Lösungen mit Web Services und JNA ist: Memory Mapped Files.

Um das nicht ganz unkommentiert stehen zu lassen:
MMF (bzw. allgemein geteilter Speicher) sind zur Kommunikation selten eine einfache Lösung. Man muss dabei alles beachten, was es in der nebenläufigen Programmierung so zu beachten gibt. Und dir stehen zwischen Java und nativen Windowsprogrammen noch nicht einmal Semaphoren/Mutexe zur Verfügung.

In diesem Fall (ein Leser, ein Schreiber auf 2 voneinander unabhängigen booleschen Variablen) sollte es noch gut gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 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