JAdventure - Die Idee eines Kurses

KonradN

Super-Moderator
Mitarbeiter
Hallo zusammen,

ich habe seid einigen Monaten schon die Idee gehabt, dass es Sinn machen könnte, einen Kurs zu haben, in dem der Ansatz mehr auf dem objektorientierten Ansatz liegt. Lange kreiste dabei die Idee um einen wirklichen Java Kurs, aber Java Grundlagen zum 1.000.000ten Mal machen wenig Sinn.

Daher reifte die Idee nun heran zu einer Art geleitetem Projekt. Also eine exemplarische Durchführung eines Projektes in Java. Dazu gehören dann ganz viele Themen, wie:
  • Agiles Vorgehen
  • Maven um das Projekt zu verwalten
  • Diverse Pattern (Derzeit habe ich erst ein paar einzelne Entwurfsmuster eingeplant, aber ich habe auch erst die Inhalte bis Lektion 3 bzw 4 geplant)
  • Clean Code Aspekte wie z.B. Unit Tests, Mocking, Sourcecode Verwaltung Git, ....

Inhaltlich wird das über eine Webseite (jadventure.de) laufen, aber zu den einzelnen Seiten sind Videos geplant, in denen ich das, was geschrieben wurde, etwas erläutere.

Lektion 1 ist soweit zusammen geschrieben - da fehlen jetzt noch die Videos - das plane ich dieses Wochenende zu machen.

Die Projektidee, die ich in Iterationen (Lektionen) umsetzen will, ist ein kleines grafisches Adventure. Auch wenn es eine Spielidee ist, ist es kein Ziel, eine Game Library zu entwickeln oder so. Die "Vision" ist natürlich hoch gesteckt a.la. MMORPG, aber das liegt einfach daran, dass ich da halt auch etwas Netzwerk-Kommunikation einbauen will.

Lektion 1 umfasst so z.B. nur die Erstellung der ersten Basis Entities (mit bisher keinerlei großer Funktionalität) und der Serialisierung in JSON Dateien (mit Gson und ein paar Adaptern, die leider notwendig werden). Der Hauptaugenmerk ist halt noch mehr
  • generelles agiles vorgehen (Vison, Backlog Items, Dann die top Elemente in Tasks umwandeln, Implementation, Abliefern und Retro)
  • Projekt starten mit wirklich einfachen Entities

Hier würde ich mich schon jetzt über Rückmeldungen freuen. http://jadventure.de ist online, einiges aber noch leer und nicht gefüllt und ihr habt eine erste Übersicht hier bekommen.

Schnappsidee? Oder ist es das wert, so etwas weiter verfolgt zu werden? Oder ist das etwas, das nur etwas taugt, wenn noch weitere Punkte angepasst werden?

Rückmeldung gerne hier oder per PM oder per Email: konrad@kneitzel.de
 

httpdigest

Top Contributor
Bei dir frage ich mich häufig, woher eigentlich die Energie, Motivation und vor allem die Zeit kommt, einmal quasi durchgängig im Java Forum unterwegs zu sein und immer sehr gute und detaillierte Antworten zu geben, sowie sich in langen Diskussionen zu erstrecken, mit dem Ziel, einen Sachverhalt auch für kommende potentielle Leser nachvollziehbar und korrekt zu erläutern. :)
Demnach scheinst du ja sowohl Spaß als auch Zeit zu haben, dich ausführlich darum kümmern zu können.
Da dahinter wohl auch kein monetäres Ziel zu liegen scheint, würde ich fast deinen eigenen persönlichen Spaß an der Sache in den Vordergrund rücken und das Vorhaben mit JAdventure einfach durchziehen.
Je mehr Content zu wichtigen Themen rund um die Entwicklung du da haben wirst, desto mehr Traction wird das letztlich über die Jahre bekommen, denke ich.
Also ich finde es eine gute Idee!
 

Hansen_07

Bekanntes Mitglied
Also ich finde deinen Ansatz wirklich klasse! Anhand eines konkreten Projektes - mit all den nötigen Iterationen, sowie den dazugehörigen Methodiken und Tools (Agile, TDD, Design Patterns, Buildtool etc.) - Java zu vermitteln bzw. das Zusammenspiel mit allem was so dazu gehört, so etwas gibt es leider viel zu wenig.

Man lernt ja immer Topics, wenn man sich ans Lernen macht, scheitert aber oft daran (zumindest ging/geht es mir oft so), das alles zu einem kompletten Bild zusammenzusetzen.

Wirklich eine schöne Idee. Werde das mit großem Interesse verfolgen :)
 

AndiE

Top Contributor
Mir wäre wichtig, dass auf die Netzwerkschiene geachtet wird. Ich habe gerade mal geschaut, ein refurbished Laptop wäre für ca. 240 € zu bekommen. Ich würde mir da gerne mit zwei Geräten ein Mini-Netzwerk aufbauen, indem ich die mit einem Netzwerkkabel verbinde.
Internet hätte ich dann über WLAN auf beiden Geräten.

Ich fände das gut, weil:
  • man nicht über den "localhost" kommuniziert.
  • der selbst erstellte oder vorgefertigte Server( Glassfisch, Wildfly) auch physisch getrennt läuft
  • man im Netzwerk wirklich thick- und thin- Clients ausprobieren kann.
  • man damit nicht nur Bereitstellung über Webbrowser machen kann, sondern auch Middle-Ware erzeugen kann.
  • man seine Anwendung auch "produktiv" stellt

Client stellt Anfrage, die vom Server beantwortet wird- der Nutzer bekommt dabei jedoch nichts mit, sondern arbeitet am Client mit einem normalen Consolen/GUI-Programm

ich würde vielleicht auch andenken, auch eine Datenbankanbindung mal so aufzubauen, dass die Datenbank physisch auf einem anderen Gerät iegt. Ich würde mir da kein 3. Gerät für anschaffen.
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal vielen Dank für das bisherige Feedback.

Mir wäre wichtig, dass auf die Netzwerkschiene geachtet wird.
Also wenn es ums Netzwerk geht, dann wird es erst einmal sehr spatanisch zugehen. Es geht mehr um den Aufbau des Projektes und da werde ich als Netzwerk nur eine reine Tcp/Ip basierte Socket Lösung aufbauen. Es wird aber so separiert sein, dass es einfach zu ersetzen ist.

Ich überlege da dann auch eine vernünftige Implementation bereit zu stellen, aber die wird den Rahmen des Kurses sprengen (das würde vermutlich eine Spring Boot oder Quarkus basierte Websocket Lösung sein).

Aber Spring Boot oder Quarkus würde ja einen kompletten Lehrgang an sich abdecken. Daher wird im Rahmen des JAdventure Kurses nur rein auf Socket aufgebaut und es gibt dann Hinweise, dass dies eben für die reale Welt KEINE Lösung ist, die man nutzen sollte (kein SSL und so).

Ich würde mir da gerne mit zwei Geräten ein Mini-Netzwerk aufbauen, indem ich die mit einem Netzwerkkabel verbinde.
Internet hätte ich dann über WLAN auf beiden Geräten.
Wenn beide Geräte im WLAN sind, dann brauchst Du kein Netzwerkkabel mehr zwischen den Geräten. Für die normalen Dinge sollte das ausreichend sein. Das Netzwerkkabel wäre nur interessant, wenn Du ein Szenario nachbauen willst, bei dem Du mehrere Netze hast und ein schnelles Netzwerk für interne Dinge verwendet wird. Dann hat der Datenbank-Cluster auch keine Verbindung nach außen. Dann sind nur Load Balancer / Webserver erreichbar von außen und die anderen Systeme sind nicht direkt erreichbar (Datenbanken, ggf,. auch Tomcat und co.)

Aber da müsste man sich überlegen, was Du wirklich genau machen willst. Die Idee ist ansonsten gut. Ich würde sostatt Laptops einfach ein paar mini PCs kaufen (<100€ auf ebay, wenn man auf 8GB Speicher und 4 Threads achtet, dann bist Du aber > 100€). Da dann mit Linux ein Kubernetes Cluster aufbauen.... Hätte ich mir auch holen sollen, aber ich hatte auf Kickstarter den Turing Pi2 gesehen und dachte: Hey, der verbraucht weniger Strom und so... Und ich warte immer noch auf das Teil und die Compute Moduls muss ich auch erst einmal kriegen .... Da wäre die andere Lösung schneller und sofort verfügbar....

Ihr seid aber äußerst kritisch heute ... und das nicht erst seit meinem Post gestern .... :)

Ja, eigentlich sollte ich wissen, wie es richtig geht .... eigentlich :) Danke für den Hinweis - so Fehler sind bei der Webseite übrigens auch immer gerne eine Meldung wert.
 

KonradN

Super-Moderator
Mitarbeiter
Also so Hinweise zu Rechtschreibfehlern sind herzlich willkommen. Wenn Ihr euch die Zeit nehmt und auf diese Inhalte schaut: Da sind auch diese Hinweise recht herzlich willkommen!

Hier im Forum schreibt man schnell etwas herunter - da ist es weniger schlimm. Aber das ist ja etwas, das ja viel mehr Richtung richtiger Veröffentlichung geht - da wird sowas doch deutlich kritischer (aus meiner Sicht).

Generell wäre da dann auch die Frage: Rechtschreibkontrolle gibt es ja inzwischen fast überall. Selbst in Eingabefeldern im Borwser hat man das (wobei mir gerade auffällt, dass ich das hier im Chrome auch derzeit nicht habe ... das muss ich dann auch einmal prüfen!)

Da wäre dann ein Editor, der Markdown kann und zugleich eine Rechtschreibkontrolle durchführt sehr gut. Oder von mir aus einfach eine Chrome Extension, die eine Kontrolle auf einer Webseite macht, die angezeigt wird.

(Ja, bei meinen vielen Texten, die ich schreibe, mag man das evtl. nicht glauben, aber auch ich habe mit einer Rechtschreibschwäche zu kämpfen. In der Jugend und als junger Erwachsener hat mich das viel Zeit und Mühe für eigene Trainings gekostet, aber es schleicht sich immer sehr leicht etwas ein. Da sind Tools immer herzlich willkommen.)

Aber auch das ist daher eine sehr willkommene Hilfe ... daher speziell an @mihe7 ein herzliches Danke, der mir da schon per PM Hinweise geschickt hat.
 

thecain

Top Contributor
Ein automatischer redirect von http auf https, wäre noch eine gute Sache. Der Link aus dem ersten Post zeigt noch auf http, da hat mein Browser keine Freude ;)
 

Robert Zenz

Top Contributor
Also so Hinweise zu Rechtschreibfehlern sind herzlich willkommen. Wenn Ihr euch die Zeit nehmt und auf diese Inhalte schaut: Da sind auch diese Hinweise recht herzlich willkommen!

Der Kurs ist unter der CC BY-SA 4.0 (Attribution-ShareAlike 4.0) (extern) Lizenz.

Tut mir leid, ich bin noch nicht dazu gekommen mir das anzusehen, aber was haeltst do von einem Repository dafuer? Teilbar soll es ja sein, und so kleine Korrekturen lassen sich dann ja gut als MR/PR machen. Ein weiterer Vorteil waere das sich Leute dann Benachrichtigungen schalten koennen wenn du etwas aenderst.
 

KonradN

Super-Moderator
Mitarbeiter
Tut mir leid, ich bin noch nicht dazu gekommen mir das anzusehen, aber was haeltst do von einem Repository dafuer? Teilbar soll es ja sein, und so kleine Korrekturen lassen sich dann ja gut als MR/PR machen. Ein weiterer Vorteil waere das sich Leute dann Benachrichtigungen schalten koennen wenn du etwas aenderst.
Ja, das war von Anfang an in einem Repository. Ursprünglich auf meinem privaten Gitea Server aber ich habe es heute auf GitHub verlagert. Ich muss also zu Deiner Schande ganz klar sagen: @mihe7 war schneller :p

Diese Schande kannst Du natürlich nur durch eine aktive Mitarbeit wieder gut machen :) Wer bist Du auf GitHub?

Sourcen der Webseite: https://github.com/kneitzel/jadv-web
Sourcen Projekt: https://github.com/kneitzel/JAdventure

Danke auf jeden Fall für die Anregung und falls Du etwas Zeit erübrigen kannst / willst, dann auch schon jetzt ein herzliches Danke dafür. Ich trage Dich sehr gerne ein.

Inhalte jeder Art sind herzlich willkommen. Also nicht nur die Bugfixe (wenn Du magst). Und dann wird das Thema "Nennung des Autors" auf den Seiten etwas akuter.

Edit: Den sehr lockeren Anfang bitte nicht missverstehen (wobei ich mir da bei Dir weniger Sorgen mache, aber ich will es noch vorsichtshalber direkt dazu schreiben!)
 

Robert Zenz

Top Contributor
Ich muss also zu Deiner Schande ganz klar sagen: @mihe7 war schneller :p

Ich werde eben alt und da wird man langsamer...aber das kennst du ja zur Genüge. :p

Edit: Den sehr lockeren Anfang bitte nicht missverstehen (wobei ich mir da bei Dir weniger Sorgen mache, aber ich will es noch vorsichtshalber direkt dazu schreiben!)

So, direkt zurueckgegeben. ;)

Diese Schande kannst Du natürlich nur durch eine aktive Mitarbeit wieder gut machen :) Wer bist Du auf GitHub?

Sourcen der Webseite: https://github.com/kneitzel/jadv-web
Sourcen Projekt: https://github.com/kneitzel/JAdventure

RobertZenz, ich muss aber schauen wie ich Zeit finde. Ich bin im Moment noch in anderen Projekten gebunden...so in der Richtung.
 

Neue Themen


Oben