Swing GUI / Webapp..... benötige ein paar Tips / Ratschläge

internet

Top Contributor
Hallo zusammen,

ich möchte mir ein kleines Tool schreiben, was zwingend auf dem Client laufen muss und nicht auf dem Server.
U.a. weil ich einen Pfad auf dem Client angeben möchte, in welchem dann z.B. Bilder sich befinden...

Kurze Zusammenfassung was ich vor habe:
  • User definiert einen Pfad auf seinem Rechner, in dem Bilder liegen / liegen werden
  • Mittels einem File - Watcher wird geprüft, ob es neue Bilder in diesem Order gibt
  • Wenn ja, wird das Bild an einen Webservice (Third Party App) gesendet
  • Es wird ein paar Einstellungsmöglichkeiten geben (Pfad auswählen, Watcher ein / ausstellen etc.)
  • Ggf. später dann noch eine eigene Web Bildergalerie, aber das wäre erst in Version 2 angedacht.
Ich bin in Swing GUI nicht wirklich drin und ziehe dafür eine WebApp vor.

Folgendes stelle ich mir vor:
  • User klickt auf ein Icon auf dem Desktop
    • Im Hintergrund startet ein Applikationsserver (z.B. einen schlanken Jetty)
    • Sobald der App - Server hochgefahren ist, wird der Standardbrowser mit einer ensprechenden URL aufgerufen. Die URL soll dann der Aufruf auf meine Web - Applikation sein
Fragen:
  • Wie liefere ich das an den Endkunden aus? Ist das eine .jar - Datei? In dieser .jar muss auch die .war für die Applikation sein, oder?
    • Geht das überhaupt, denn ich benötige doch auch ein Installationsverzeichnis (um bspw. eine kleine Datenbank zu haben)
  • Wie kann ich der .jar ein Icon geben, das meine Branding ist?
  • Eventuell wäre auch eine kleine GUI nötig um den App - Server zu starten. Also ein Fenster, das nur den Button "Start Applikation" hat, und dieser dann den Aufruf in die WebApp startet. Zudem könnte man einen Ladebalken anzeigen wenn der Applikationsserver startet.
  • Eine Datenbank benötige ich auch noch. Gibt es hier Möglichkeiten / Datenbanken, die man nicht explizit installieren muss (wie zB MySQL).

Über Tipps und Ratschläge würde ich mich freuen
 
Das klingt extrem nach Overkill. Ich verstehe in keiner Weise, wieso es so ein Ansatz sein muss.

Wenn Du HTML/CSS/JavaScript bevorzugst, dann nutz es doch einfach. Es gibt genug Frameworks, um dies auf dem Desktop direkt laufen zu lassen. Sehr verbreitet ist z.B. Electron (https://www.electronjs.org/) welches z.B. auch von Visual Studio Code verwendet wird.
 
Wenn es andere Wege gibt, dann gerne...
Ich habe Know How in JSF und möchte dies auch für mein Vorhaben verwenden.
Geht das mit z.B. Electron?
 
Direkt JSF nicht, aber mit Tools wie Electron entwickelst Du komplett in HTML/SS und JavaScript (z.B. mit einem Framework wir React oder Angular).

Aber JSF lokal auf einem Client laufen lassen zu wollen für eine Applikation, die das bisschen macht, das Du da skizziert hast, das finde ich etwas heftig. (Vielleicht ein Beispiel, wie das etwas auf mich wirkt: Ja, man kann einen Standard Brief mit einem großen Bagger auf einen riesigen Laster verladen, damit zu einem Briefkasten fahren um da den Laster abzukippen. Dann steigt man aus, hebt den Brief auf und steckt ihn in den Briefkasten. Das geht. Aber Sinn macht das nicht wirklich 🙂 )

Wenn man das unbedingt machen wollte, dann geht das prinzipiell aber natürlich auch: Du erzeugst ein jar in dem alles enthalten ist also incl. dem Application Server. Um da ggf. weniger eigenen Aufwand zu haben, könnte man z.B. Spring Boot dafür nehmen.
JSF und Spring Boot kann man in Google suchen und dann stößt man auf Seiten wie:

Damit umfasst Deine Applikation aber einiges. Angefangen von dem Application Server der da mit drinnen ist über viele Framework Komponenten vom Spring Framework hin zu möglichen Sicherheitsproblemen, da Du einen Port öffnest - selbst wenn der nur lokal erreichbar ist.
 
Ja, das scheint auch sowas zu machen. Da wird dann auch ein Tomcat mit integriert, aber Du willst ja nicht nur den Tomcat sondern auch eine entsprechende App mit allem drum und dran. Das willst Du dann vermutlich mit integrieren...

Das ist dann etwas, wo es einem Spring Boot evtl. etwas einfacher macht mit der stark vereinfachten Konfiguration und den vielen defaults, die da schon vorgegeben wurden.

Generell ändert das aber kaum etwas an der Thematik: Für eine relativ kleine Applikation baust du riesigen Konstrukte. In dem Link gibt es den embedded Tomcat, der dann einen Port öffnet und somit Zugriffe zulässt.
 
ganz ehrlich: vergiss die Idee eines "lokalen Webservers mit Webapp" und setz das mit Swing/JavaFX/SWT oder Electron um. Du und deine Nutzer werden es dir danken. Für etwas wirklich rein lokales ist das deutsch sinnvoller als eine Webapps, die dafür einfach nicht vernünftig funktionieren wird.

Das, was du oben beschreibst, benötigt auch nur so minimales UI, dass man das Problemlos nach kurzer Einarbeitungszeit umsetzen kann. Als Webapp scheitert es dagegen schon ein einem vernünftigen File-Chooser...
 
Dazu gibt es embedded Datenbanken. Je nach Sprache ist dann die eine oder andere Datenbank eher bevorzugt. Typische Vertreter sind sqlite, h2, hsqldb, ...
 
Irgendwo, wo du willst 😉 Bis auf die Jar-File, in einer Jar kann man zur Laufzeit nichts speichern.
das ist ja genau, was ich nicht unbedingt möchte...
Wenn ich das richtig verstehe, muss der User dann einen Pfad angeben, wo die Daten gespeichert werden?

Ich möchte die .jar von Computer A nach B kopieren, ohne eine Installation durchzuführen...
 
Wenn ich das richtig verstehe, muss der User dann einen Pfad angeben, wo die Daten gespeichert werden?

Ich möchte die .jar von Computer A nach B kopieren, ohne eine Installation durchzuführen...
Der Nutzer muss weder einen Pfad auswählen noch eine Installation durchführen.

Die Jar kann man auch ohne Probleme umziehen – die Daten muss man aber immer getrennt umziehen, egal ob Jar oder exe oder wasweißich.
 
Der Nutzer muss weder einen Pfad auswählen noch eine Installation durchführen.
Wobei ich das so nicht sehen würde. Die Idee, einfach eine jar Datei mit Doppelklick zu öffnen, sehe ich nicht so trivial an. Es muss halt eine passende Java Installation vorhanden sein und so. Und wir sehen ja regelmäßig hier im Forum, worauf das hinaus läuft.

Was spricht dagegen, ein App-Image auf die Systeme zu kopieren / zu entpacken? Dann hat man unter Windows z.B. eine EXE, die direkt gestartet werden kann. Da kann man das Verzeichnis auch gerne auf beliebige Systeme kopieren und es funktioniert einfach (Weil die Abhängigkeiten deutlich geringer sind).

ok, aber dann muss man ja initital einen Pfad angeben?
Irgendwann muss man diesen ja definieren?
Den kannst Du doch definieren. Pack es z.B. in das Verzeichnis des Users oder so.
 
ganz ehrlich: vergiss die Idee eines "lokalen Webservers mit Webapp" und setz das mit Swing/JavaFX/SWT oder Electron um. Du und deine Nutzer werden es dir danken. Für etwas wirklich rein lokales ist das deutsch sinnvoller als eine Webapps, die dafür einfach nicht vernünftig funktionieren wird.

Das, was du oben beschreibst, benötigt auch nur so minimales UI, dass man das Problemlos nach kurzer Einarbeitungszeit umsetzen kann. Als Webapp scheitert es dagegen schon ein einem vernünftigen File-Chooser...
Was wäre hierfür der beste Einstieg? Ich versuche mich nun gerade mit dem "Window Builder":
 

Zurück
Oben