Java Methode von JavaScript aufrufen?

4 Antworten

Das du dafür Ultralight verwendest, ist eine leicht übermittelbare und wesentliche Information.

Diese Bibliothek integriert bereits eine Schnittstelle, über die Java-Methoden im JavaScript-Kontext aufgerufen werden können. Im example-Ordner findest du ein Beispiel dafür.

In der ExampleMain.java werden die Ultralight-Ressourcen zunächst entpackt und geladen. Die JSInteraction-Klasse dient zur Demonstration einer Klasse, die später im JavaScript-Code (siehe example.js) instanziert wird.

 Stellt es euch einfach vor wie eine Desktop App mit HTML/CSS/JS für das Frontend und Java als Backend, ist sehr schwer zu erklären. Wie ist das möglich?

Die Schnittstelle ist in diesem Fall üblicherweise in HTTP formuliert. Und dafür ist es völlig egal, in welcher Sprache Client oder Server geschrieben sind.

Frontend-Methoden via Backend aufrufen: Mit Server-Sent Events oder Web-Sockets.

Backend-Methoden via Frontend aufrufen: Ganz normal per HTTP.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

IchHabEineFr912 
Beitragsersteller
 14.09.2024, 21:29

Es ist nicht ganz so einfach….denn ich speichere den HTML/CSS Content über Ultralight in einem Framebuffer und rendere das ganze dann mit OpenGL…..

IchHabEineFr912 
Beitragsersteller
 14.09.2024, 21:35
@MrAmazing2

Naja, es existiert doch in dem Fall garkein Server, oder? Wenn das ganze einfach nur gerendert wird

Von Experte MrAmazing2 bestätigt

Du baust eine HTTP-Schnittstelle (API) in die Java-Anwendung ein, sodass der JavaScript-Code durch einen HTTP-Request besagte Methode auslösen kann.

Woher ich das weiß:Berufserfahrung – Tätigkeit als Webentwickler in einer Digitalagentur

IchHabEineFr912 
Beitragsersteller
 14.09.2024, 21:33

Ich hatte vergessen zu sagen: Es ist nicht ganz so einfach….denn ich speichere den HTML/CSS Content über Ultralight in einem Framebuffer und rendere das ganze dann mit OpenGL…..das bedeutet, es gibt eigentlich keinen Server

IchHabEineFr912 
Beitragsersteller
 14.09.2024, 21:39
@Ireeb

Das ist auch was ich nutze. Einige Anpassungen waren nötig, vor allem wegen Rendering usw. aber im Großen und Ganzen ist das, was ich nutze. Nur ist das mit den JS Bindings etwas komplizierter zu coden

Ireeb  14.09.2024, 21:42
@IchHabEineFr912

Das ist dann aber weder eine Java-, noch eine JavaScript-Frage, sondern eher eine Ultralight-Frage, und an der Stelle kann ich leider nicht weiterhelfen. Aber im git wird ein Discord verlinkt, da hast du vermutlich bessere Chancen, Hilfe zu bekommen.

IchHabEineFr912 
Beitragsersteller
 14.09.2024, 21:43
@Ireeb

Ich dachte, vielleicht könnte man mit JavaScript irgendwie Javamethoden aufrufen….

Ireeb  15.09.2024, 04:07
@IchHabEineFr912

Ein Programm kann nicht ohne weiteres mit einem anderen Programm kommunizieren. Selbst, wenn man zwei Programme in der gleichen Programmiersprache hätte, die aber ansonsten voneinander unabhängig sind, könnte das eine Programm nicht auf Methoden des anderen Programmes zugreifen.

Wenn man zwei Programme miteinander interagieren lassen möchte, braucht man eben eine API. Die fällt allerdings nicht vom Himmel, sondern muss auf beiden Seiten implementiert werden. Das eine Programm muss in der Lage sein, Daten durch eine API zu senden, und das andere Programm muss in der Lage sein, Daten über die API zu empfangen. So ein System von Grund auf selbst zu bauen, kann ziemlich komplex und anspruchsvoll sein. Gerade deshalb wird eben wie initial angesprochen im Internet gerne auf HTTP gesetzt, da hat man eben ein fertiges System, das man benutzen kann.

Wie gesagt kenne ich Ultralight nicht, aber wenn es dazu dient, ein Web-Frontend auf eine Java-Applikation aufzusetzen, würde ich erwarten, dass das Framework irgendeine Art von API bietet, mit der zwischen JavaScript Frontend und der Applikation dahinter kommuniziert werden kann. Ansonsten würde ich auch den Sinn hinter einem solchen Framework nicht ganz verstehen.

Nachtrag: Auf der Webseite von Ultralight steht explizit:

"...integrate JavaScript directly with native code"

was genau das ist, was du tun möchtest. Also bietet Ultralight diese Möglichkeit auf jeden Fall. Du musst nur herausfinden, wie das geht.