Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich will mich in den EE-Bereich wagen und habe zum erfolgreicheren Lernen auch ein Projekt, das ich gerne umsetzen würde: Gameservermanager für das Spiel Project Zomboid
Der eigentliche Gameserver wird dabei mittels LGSM betrieben, d.h. meine Weboberfläche interagiert dann mit dem sh-Script mit dem eigentlichen Server.
Umsetzen will ich das ganze mittels Spring Boot.
Folgende Anforderungen habe ich aktuell:
User-System: User-System mit unterschiedlichen Rollen, so z.B. eine "Moderator"-Rolle, die die zugewiesenen Gameserver nur moderieren, also Logs checken, User kicken/bannen, zur Whitelist hinzufügen, ... können soll. Daneben gibt es dann z.B. eine Rolle "Servermanager", der dann den Server auch neustarten, updaten, stoppen, ... kann.
Verwaltung mehrerer Server: Jeder Benutzer kann für mehrere Server zuständig sein
Logging: Es sollen die Aktionen, die ein Benutzer ausführt, geloggt werden
Servereinstellungen editieren: Es soll je nach Rolle möglich sein, dass der eingeloggte Benutzer gewisse Servereinstellungen ändern kann. Je nach Rolle stehen andere Einstellungen zur Änderung zur Verfügung
Dabei stellen sich mir allerdings zu Beginn direkt ein paar Fragen:
Seht ihr das Projekt für einen EE-Anfänger als zu Umfangreich?
Wie setze ich am besten meine Testumgebung auf (Programmierung sowohl unter Fedora 31 und Windows 10)? Für die Userverwaltung würde ich auf JPA und MariaDB zurückgreifen.
Was sind die dafür empfohlenen Spring dependencies? Aktuell habe ich an folgendes gedacht:
Spring Web
Thymeleaf
Spring Security
Spring Data JPA
MySQL Driver
Tipps zur Strukturierung der DB und der Anwendung selbst? Gute Tutorials/Bücher?
Für den Anfang denke ich war es das, ist eh eine ganze Menge (sorry).
Hoffe, ihr könnt mir da einige Tipps geben.
Ich versuche mir gerade anhand JavaBrains Spring Boot beizubringen.
EDIT:
Und seht ihr die Vorteile von intelliJ Ultimate im Vergleich zu Community Edition für Spring Boot als essentiell an? Wenn es tatsächlich erhebliche Vorteile liefert, bin ich durchaus gewillt, die ~13€/Monat zu bezahlen, dafür muss es dann aber auch das Entwickeln deutlich voran bringen.
Zu 1) Also generell kann man so ein Projekt machen. Die frage ist, was für Erfahrungen Du halt sonst so hast.... Wenn Du schon entsprechend erfahren bist, dann kannst Du so ein Projekt nutzen um in EE rein zu steigen. Das geht auch direkt mit Spring Boot.
zu 2) Also Testumgebung und dann die Frage nach Userverwaltung / Dataenbank? Irgendwie verstehe ich da deine Fragestellung nicht. Generell solltest Du bei der Entwicklung Unit-Tests schreiben. Idealerweise sogar TDD. Solltest Du Unit Tests noch nicht drauf haben, dann wird es bezgl. 1) schon schwer, denn dann hast Du nicht nur den EE Part sondern auch noch den Unit Test Part... Ggf. noch Probleme bezüglich Projektverwaltung und so und dann wird das Projekt in meinen Augen schon problematisch. Dann willst Du evtl. neben den Unit-Tests noch weitere Integration Tests haben. Aber das muss man dann sehen. Am Anfang kann das Overkill sein. Du wirst da ja kaum Nutzer haben und es wird gerade am Anfang ja keine Hochverfügbarkeits-Lösung werden .... also kann man dann die Integration durchaus direkt in der Produktion machen ...
zu 3) Ja, das kann man so machen. Ggf. willst Du aber auch direkt auf Spring Reactive gehen? Dann wäre evtl. auch dieses Buch von Josh Long interessant: https://leanpub.com/u/joshlong (Ist noch nicht ganz fertig da Buch, aber das, was schon fertig ist, lohnt sich schon. Ansonsten hat er zu Reactive Spring auf der O'Reily Plattform auch ein Online Training das er von Zeit zu Zeit hält ... Aber er hat da auf der learning Platform auch mehere Videos. Evtl. willst Du Dich da mal registrieren und dir im Testzeitraum das ansehen?). Ansonsten ist das eine valide Auswahl. Generell kann man sich aber auch überlegen, ob man da evtl. auch auch vaadin oder so gehen möchte... Aber am Anfang ist Spring Web mit Thymeleaf nicht schlecht...
zu 4) Bücher gibt es einige. Ein erster Buch habe ich schon genannt. Aber es gibt rund um Spring extrem viel. Aber man kann da auch sehr viel online lesen:
start.spring.io um schnell ein erstes Projekt zu haben. Ansonsten https://spring.io/quickstart und https://spring.io/guides - da hast Du dann extrem viel an guten Informationen. Natürlich gehören da auch die Seiten zu den Projekten immer dazu, z.B. https://spring.io/projects/spring-boot zu Spring Boot.
Bezüglich IntelliJ: Fang erst einmal mit der Community Edition an und nach einem ersten Einstieg teste die Ultimate und Vergleiche selbst....
Wenn du es für gut erachtest, dann Kauf es mit jährlicher Zahlung. Dann sparst du ab dem 2ten Jahr ... ab dem 3ten Jahr bist du dann nur noch bei 89€ - du zahlst fast nur noch die Hälfte ...
Zu 1: ich habe bisher nur Erfahrung mit Java SE und habe da schon ein paar Schulungen und Bücher durchgemacht. Mit Java EE habe ich bisher aber noch absolut keine Erfahrung, genauso wie mit Spring/Spring Boot, Thymeleaf, Vaadin, Reactive, ...
Zu 2: mit Testumgebung hatte ich nicht TDD gemeint, sondern wie stelle ich auf meinen Coding-PCs eine möglichst ähnliche Umgebung für die Anwendung her, wie sie dann auch in Production läuft.
Mit TDD habe ich bereits erste Erfahrungen in Java SE gemacht, wobei ich da bisher keine Integration Tests gemacht habe.
Zu 3: Habe bisher noch nie etwas von Spring Reactive gehört, muss ich mir Mal näher anschauen. Was sind denn so grob die Vorteile davon? Vaadin habe ich mir heute kurz einen ersten, groben Überblick verschafft, gefällt mir ganz gut. So wie ich das bisher verstanden habe, bleibt mein Backend bei Spring Boot und auch Spring Security ist mit von der Partie. Vaadin ersetzt dann Spring Web und Thymeleaf. Ist das so richtig?
Zu 4: Danke für den Buch-Tipp! Leider gibt es das dann nicht als physisches Buch, was gerade jetzt für den Sommer gut gewesen wäre (durchlesen gemütlich auf dem Balkon, abends dann am PC umsetzen).
Wie setze ich am besten meine Testumgebung auf (Programmierung sowohl unter Fedora 31 und Windows 10)? Für die Userverwaltung würde ich auf JPA und MariaDB zurückgreifen.
Zum Testen empfiehlt sich H2 als in-Memory-Datenbank, auch wenn man für die echte Variante dann MariaDB nutzt. Austauschen lässt sich das über Spring-Profile.
Für den Anfang sieht das passend aus, ich würde in jedem Fall mit Thymeleaf starten, dass ist deutlich einsteigerfreundlicher als die anderen Varianten.
Wenn man später was anderes will, kann man das recht einfach zusätzlich implementieren.
Habe mir heute ein Tutorial von Vaadin angeschaut und mir sagt es deutlich mehr zu als Thymeleaf, denke ich gehe darauf.
Ich bin mir noch etwas unschlüssig, wie ich einige grundlegende Model-Dinge handhabe.
Die Gameservereinstellungen sind z.B. auf mehrere Dateien aufgeteilt und ich will, dass nicht jede Benutzergruppe alle Einstellungen ändern bzw. sehen kann. Beispiel dafür ist das Rcon Passwort.
Kann ich bei Spring Boot bzw. EE generell ganz klassisch mit UML planen? Bin gerade am skizzieren auf Papier und würde das dann in UML packen. Mit den Automatismen von Spring Boot ist doch aber nicht direkt von vornherein ersichtlich, was durch DI dann wie zusammenhängt (zum Großteil bestimmt, aber da gibt es bestimmt Sonderfälle).