Welche GUI Library für eine Client Server Chat App

dvdlly

Aktives Mitglied
Hallo,
Ich will mir eine Client Server Chat App basteln und bin etwas unsicher hinsichtlich der Wahl der GUI Library. Ich benutze IntelliJ und habe das Project als Maven Projekt gestartet. Welche Library würdet ihr einem Anfänger, der minimale GUI Erfahrung hat empfehlen für den oben genannten Zweck? Und warum?
Danke!
 
Ja aber nur gaanz rudimentär. Warum würdest du das empfehlen? Es geht mir in erster Linie darum was zu lernen - ist so ein Framework nicht zu abstrakt dafür, weil es die ganze Arbeit erledigt?
 
Es ist relativ ähnlich zu Swing - daher meine Frage. Welche Berührungspunkte hattest du bereits mit GUI?

Vaddin schreibt man in Java Code , da braucht man grundsätzliche keine Ahnung von css usw haben (wenn es besonders schön werden soll braucht man das natürlich).

Ich hab damals mit Swing begonnen, dann JSF für Webseiten und nun vaadin. Mehr hab ich nicht auf dem Kasten, seh mich aber auch nicht als Frontendentwickler, mache es weil meine User es benötigen 🥲
 
Also ich habe mal ein wenig mit Swing rumgespielt, ich verstehe die Objekt - und Container Hierarchie davon nur habe ich wenig "hands on" Erfahrung. Habe mir vaadin angeschaut und mich ein wenig mit der Bedienung schwer getan xD was hälst du von javafx? Das wird auf SO angepriesen.
 
JavaFx wird ja als der Swing Nachfolger gehandelt. Erfahrungen hab ich da leider keine aber ganz sicher jemand anderes hier im Forum.
Willst du einen Webclient oder Desktop Client bauen eigentlich?
 
javafx wird nicht gefunden, kannst du mir vielleicht sagen wie ich das lösen kann?
 

Anhänge

  • Screenshot from 2021-07-02 16-12-12.png
    Screenshot from 2021-07-02 16-12-12.png
    185,2 KB · Aufrufe: 2
Wenn Du mit JavaFX starten willst, dann ist ein super Startpunkt https://openjfx.io/openjfx-docs/

Das Getting Started bietet mehrere Möglichkeiten, wie man da loslegen könnte. Ich würde klar raten, maven oder gradle zu nutzen.

Aber wenn Du noch ganz am Anfang stehst: Warum bleibst Du nicht einfach bei Swing? Versuch immer eins nach dem anderen zu machen. Also erst einmal die Sache mit dem Netzwerk hin kriegen und richtig machen. Also immer eine Herausforderung nach der Anderen. Nicht alles auf einmal - das wird nur frusten, weil Du in ein Problem nach dem anderen laufen wirst.
 
Danke für deine Antwort! Ich habe gelesen, dass man swing eigentlich für nichts verwendet deswegen dachte ich es wäre ein bisschen vergeudete Zeit
 
Danke für deine Antwort! Ich habe gelesen, dass man swing eigentlich für nichts verwendet deswegen dachte ich es wäre ein bisschen vergeudete Zeit
Wenn man das so betrachten möchte, dann sind GUIs in Java generell vergeudete Zeit. Das wird einfach kaum noch gemacht.

Java hat sich im Backend recht gut durchgesetzt. Frontend ist eher html/css/js. Auch auf dem Desktop mit entsprechenden Wrappern.
Das geht dann auch hin zu mobilen Applikationen und so.

Und neue, moderne Sprachen gehen einen ähnlichen Weg. Beispiel wäre hier z.B. Flutter mit dart als eine aktuelle Sprache / Environment von Google.

Daher kann es wirklich sinn machen, sich z.B. erst einmal Vaadin anzusehen. Da hast du dann eine Web basierte Lösung, Unterstützung für sogenannte PWA (pogressive Web Apps - die verhalten sich ähnlich wie Applikationen), Backend (Spring basiert - da macht es Sinn, langsam rein zu kommen ...

Socket basierte Kommunikation (Sowas hat Dir evtl. vorgeschwebt, oder?) ist legacy. Das macht heute kaum noch jemand. Webservices haben das in der Applikationswelt abgelöst.

Aber egal, womit Du Dich als nächstes Beschäftigst: Du wirst Erfahrungen sammeln. Und da kannst Du eigentlich nichts falsch machen. Nur versuch nicht zu viel auf einmal machen zu wollen. Also Swing kennst Du etwas. Ein kleines Chat System soll es werden: Bau es. Und steigere damit dein Können. Umsteigen auf andere Systeme kannst Du später immer noch. Also von mir aus dann ein JavaFX Client ... oder statt socket Verbindung ein REST basierter Webservice?
 
okay eins nach dem anderen, danke! Kannst du mir ein Projekt empfehlen, um meinen Erfahrungsschatz zu steigern? Oder so gefragt - welche technologie sollte ich mir als nächstes aneignen wenn es mir darum geht mein Wissen davon, was aktuell in der Softwarewelt ist und dort gebraucht wird, zu steigern? Ich weiß, das ist ein bisschen vage formuliert.
 
Die Frage ist so kaum zu beantworten. Wo möchtest Du hin? Wo stehst Du derzeit?

Wenn Du richtig einsteigen willst in die Entwicklung, dann solltest Du erst einmal Java vertiefen und damit Dinge bauen. Projekt ist dabei vollkommen egal. (Ich habe damals ein IRC Client geschrieben - da war dann Socket Kommunikation und etwas GUI drin und ganz ganz viel Clean Code, Agiles Projektmanagement, ....)

Technologien sind im ersten Schritt noch nebensächlich. Die Grundlage, die beherrscht werden sollte:
- Java Code zügig lesen und schreiben
- Code umändern können, um ihn lesbar zu machen
- OO Architektur / Design Pattern
- Tools beherrschen

Diese Grundlage sollte man auf jeden Fall halbwegs beherrschen.

Dann kann man sich überlegen, wo man hin will. java ist vor allem auf der Server Seite zuhause, d.h. da wäre dann ggf. der nächste Ansatz:
- Spring Boot oder Jakarta EE würde dann kommen
- Grundlage http sollte man verstehen (Wie kommuniziert der Client mit dem Server ... Sprich: einzelne Requests die beantwortet werden)
- Hier kommen dann die Technologien von Spring Boot oder JEE nach und nach ... JPA und und und ...

Diesen letzten Block kann man mit Vaadin abhandeln. Hat den Vorteil: Du hast ein Set an Tutorials, die Du abarbeiten kannst. Und da würdest Du dann auch nach und nach Spring Boot lernen...
 
Tools kann sehr viel umfassen. Minimum ist eine IDE mit Versionsverwaltung (git oder so). Aber auch Dinge, die integriert sind (Unit Test Runner) oder weitergehende Tools wie Jira oder Kanban Board oder so ... Ggf. kommen später noch Dinge wie Container ....

Aber am Anfang halt vor allem IDE mit Tools wie Sourceverwaltung.
 

Zurück
Oben