Blog

Überprüfung von Java EE6 und JavaFX 1.3 - Teil II, das Frontend

Mark Bakker

Aktualisiert Oktober 22, 2025
4 Minuten

Zusammenfassung Im ersten Teil dieser Übersicht (das JavaEE6-Backend) habe ich eine kleine Anwendung erstellt, bei der es sich um einen JSON REST-Dienst handelt, der als Backend für ein JavaFX-Frontend verwendet werden soll. In diesem zweiten Teil meiner Übersicht geht es um eine kleine Überprüfung von JavaFX, um zu sehen, ob es meinen Anforderungen als Frontend für meine persönliche Finanzanwendung gerecht wird (siehe vorheriger Beitrag). Meine vorläufige Schlussfolgerung ist, dass JavaFX eine interessante neue Technologie ist, die meiner Meinung nach für kleine Anwendungen oder Formulare verwendet werden kann (denken Sie an Internet-Add-ons). Aber für ernsthafte Anwendungen ist sie noch nicht bereit.Ich vermisse wirklich Datagrids, die Art und Weise, wie Sie mit Session-Cookies für den Rest-Dienst umgehen müssen, ist viel zu unbedeutend. Ich hoffe, dass mich jemand auf eine Stelle verweisen kann, wo ich bessere Lösungen für diese Probleme finden kann (falls es sie gibt).

Anforderungen Die grundlegenden funktionalen und technischen Anforderungen habe ich in meinem vorherigen Beitrag beschrieben, aber die wichtigsten Anforderungen für das Frontend sind:

  • Verfügen Sie über eine Baumdatentabelle (in Flex wird sie als erweiterte Datentabelle bezeichnet) zur Visualisierung einer hierarchischen Datenstruktur.
  • Sie müssen in der Lage sein, Werbung im Frontend anzuzeigen, um die Kosten für das Hosting zu verdienen.

Der Backend-Dienst Der Dienst, den ich in diesem Bericht verwendet habe, ist ein einfacher Dienst, bei dem ich mich über Basic Authentication anmelden muss und über einen Rest-Aufruf Benutzerinformationen (Benutzername) abrufen kann. Der javaFX-Client Zunächst habe ich ein neues FavaFX-Projekt erstellt und dem Formular einige Felder hinzugefügt. pf_client1 Danach habe ich einen Code erstellt, der die Anmeldeaktion ausführt und den Benutzernamen anzeigt. (Zu Ihrer Information: Ich weiß, dass dies kein gutes OO-Design ist, aber für diesen kleinen Test ist es der beste Weg, es zu zeigen). [java] public class User { var sessionCookie: String; var username: String; } var user: User = User {}; public class Main { // <editor-fold defaultstate="collapsed" desc="Generierter Code"> var userJsonInput; var userParser = PullParser { documentType: PullParser.JSON; input: bind userJsonInput; onEvent: function (event: Event) { // parsen Sie die JSON-Benutzerdaten und füllen Sie das Benutzerobjekt if (event.type == PullParser.END_VALUE) { if (event.name == "username") { user.username = event.text; } } } } //machen Sie daraus eine Funktion, um die Header hinzuzufügen! Ermöglichen Sie das Abmelden/ Neuanmelden function buttonOnMouseClicked(event: javafx.scene.input.MouseEvent): Void { var httpHeader = HttpHeader.basicAuth(usernameTextbox.text, passwordTextbox.text); var sessionHeader = HttpHeader { Name: "Keks" Wert: user.sessionCookie }; def request: HttpRequest = HttpRequest { Standort: "xebia.com/blog : 8080/pfserver/services/private/account/show"; Header: [ httpHeader,sessionHeader ] onInput: function(input: java.io.InputStream) { userJsonInput = input; userParser.parse(); if(request.getResponseHeaderValue("set-cookie") != null){ user.sessionCookie = request.getResponseHeaderValue("set-cookie"); } } onException: function(ex: java.lang.Exception) { println("onException - Ausnahme: {ex.getClass()} {ex.getMessage()}"); } } request.start(); } } [/java] Das erste, was Sie sehen, ist der PullParser. Dieser Parser ist ein Parser für JSON-Daten. Ich habe das Ereignis eines neuen Feldes geholt und zu einem globalen Wert hinzugefügt (hässlich, ich weiß :-)). Die Verwendung war recht einfach, aber meiner Meinung nach zu niedrig für große JSON-Datenstrukturen. Das Abrufen der Daten erfolgt mit dem HttpRequest, die Suche nach dieser Funktion hat mich 30 Minuten gekostet, da diese in jeder neuen Version von JavaFX geändert wird. Zuerst gab es dafür ein asynchrones Paket, aber jetzt haben wir nur noch HttpRequest. Die Verwendung von HttpRequest war nicht kompliziert, aber dieses Mal ist es wieder zu komplex für große Anwendungen. Einfache Dinge wie ein CookieManager fehlen, natürlich kann ich selbst einen schreiben, aber diese Art von Dingen kostet mich zu viel Zeit, wenn ich es mit Flex vergleiche. Die erste Anforderung, eine Baumdatentabelle zu haben, ist auch nicht erfüllt, selbst eine einfache Datentabelle existiert noch nicht. Fazit Ich werde die aktuelle Version von Flex nicht für mein neues Frontend verwenden. Im Vergleich zu Flex ist es im Moment noch zu unausgereift. Es wird langsam besser, wenn ich es mit früheren Versionen vergleiche, aber es liegt noch ein langer Weg vor uns.

Verfasst von

Mark Bakker

Contact

Let’s discuss how we can support your journey.