Bukkit: Done The Right Way

  • Guten Tag liebe Dev-Tek-Community,


    ich liebäugle schon seit geraumer Zeit mit dem Gedanken eine YouTube Leitfaden-Reihe zu kreieren. Nun habe ich mich endlich dazu motivieren können diesen Gedanken in die Tat umzusetzen. Getauft habe ich das Projekt Bukkit: Done The Right Way und es wird wie geplant auf YouTube publiziert. In diesem Beitrag möchte ich euch das grundsätzliche Projekt vorstellen, ein wenig über meine Motivation, die Eckdaten und die Ideen für die Zukunft sprechen.

    Motivation

    Meine Motivation für die Videoreihe begründet sich hauptsächlich in den vielen Fragen die ich in der Vergangenheit zu IntelliJ IDEA, Maven und Bukkit erhalten habe, sowie den Eindrücken, die ich beim "durchzappen" der bereits existierenden YouTube-Bukkit-Tutorials gewinnen durfte. Deshalb wähle ich für diese Reihe häufig einen vergleichenden Ansatz, bei dem ich mich bemühe externe, weiterführende Quellen und Literatur einzubinden und Bezüge zu falschen Programmier-Paradigmen und Common-Pitfalls herzustellen. Ich beschränke mich bei diesen Tutorials größtenteils auf den Java/Bukkit-Bereich, werde allerdings versuchen hier auch den Ausblick bzw. die Brücke zu Java zu schaffen.

    Eckdaten

    Da ich nicht alle Build-Systeme, IDEs, Minecraft-Versionen, Bukkit-Forks und Java-Versionen abdecken kann, habe ich mich gleich zu Anfang auf ein Set aus Versionen und Tools festgelegt, dass ich möglichst konstant über die Video-Reihe hinweg pflegen möchte. Ich verwende als BuildSystem Maven v3, die IDE meines Vertrauens ist IntelliJ IDEA (immer auf neuester Version), es wird mit Minecraft 1.13 auf dem Bukkit-Fork PaperSpigot gearbeitet und dafür nutze ich Java 11. Sobald die Tutorials sich in Richtung weiterer Technologien wie Datenbanken, Collections oder Networking bewegen, werde ich auch hierfür Versionen festlegen, bei denen ich versuche den Grad zwischen Stabilität und Modernität abzuwägen. Gerichtet ist diese Leitfaden-Reihe primär an Personen die schon ein wenig Erfahrung mit Java haben und ggf. sogar schon ein bisschen in die Bukkit-Programmierung hineingeschnuppert haben. Dennoch ist natürlich jeder eingeladen sich die Videos anzuschauen, hier ist dann ggf. nur ein wenig eigene Recherche nötig

    Pläne für die Zukunft

    Der Plan den ich hierbei verfolge sieht es vor, besonders jene Themen zu beleuchten, die häufig ausgelassen, ignoriert oder falsch interpretiert werden. Ich hege den Anspruch an mich selbst, bei den Themen die ich anspreche ein ausgewogenes Gesamtbild zu vermitteln und damit niemanden mit der "Erklärung" abzutun: "Ja, das kopierste halt so rein. Ist nicht wichtig warum.". Denn das Warum ist das eigentlich wichtigste und ist der Grundstein für jegliches eigenständiges Lernen. Obwohl mein Ziel natürlich ist, Wissen zu vermitteln und einen offenen Dialog über die verschiedenen Technologien zu starten, habe ich dennoch kein Problem damit, wenn jemand den im Video erstellten Code einfach kopiert. Ob man hieraus etwas lernen möchte, oder einfach schnell ein Problem beheben möchte ist jedem selbst überlassen und ich würde es mir niemals anmaßen jemandem vorzuschreiben, wie er meinen Content zu konsumieren hat. Deshalb stelle ich den Code nach jeder Folge auf Github und markiere die einzelnen Episoden mit Git-Tags.


    Für die Zukunft sind Themen wie beispielsweise: Maven: Extended Cut (also mehr als Basis-Informationen), Git, IntelliJ IDEA: Poweruser (also Produktivitäts-/Setup-Kniffe), Unit-Testing, Quality Assurance mit Checkstyle, Spotbugs und PMD sowie SonarQube und weitere angedacht. Aber natürlich werden auch die Basis-Themen wie Commands, Datenbanken, Networking, etc. abgedeckt und ich werde so gut es geht versuchen zusätzliche, über den Standard hinausgehende Informationen zu vermitteln.


    Hier findet ihr die Video-Reihe auf YouTube: YouTube-Playlist
    Hier ist die Organisation auf Github: https://github.com/BukkitDTRW

    Und hier sind die ersten Videos als Einbettung:





    Solltet ihr Lob, Kritik oder einfach neutrales Feedback hierzu loswerden, meldet euch gerne in den Kommentaren. Ich freue mich bereits von euch zu hören und werde vermutlich wöchentlich neue Videos hochladen!


    Ich bedanke mich ganz herzlich für das Lesen dieser Vorstellung und wünsche euch viel Spaß beim Schauen!

  • DevTek

    Hat das Thema freigeschaltet
  • Ich habe mir jetzt nur das zweite Video angesehen, das hat mich aber schonmal echt überzeugt. War auch schön mal jemanden im Bukkit-Mitier zu hören, bei dem nicht sofort alle Alarmglocken losgehen, wenn man mal static in seinem Code hat. Viele vergessen einfach, dass es in der Objektorientierung für viele Designmuster sehr wichtig ist (und nicht nur bei Singleton).


    Super Videoreihe, mach weiter so!

    ~ Rincewind


    PS / Fun Fact: Man kann in Java static Methoden "überschreiben", wenn auch nicht im herkömmlichen objektorientierten Sinne 😄.

  • Vielen Dank für das nette Feedback!

    Und die Alarmglocken-Sache gibt es ja leider in Bezug auf viele Praktiken in der Bukkit-Szene. Und bei den Dingen, bei denen die Alarmglocken wirklich Sturm klingeln sollten (Reflection zum Beispiel), da werden falsche Dogmen gepredigt. Und das ist ja eben auch eine der Motivationen, die ich für dieses Projekt verfolge.


    Bezüglich deines Fun-Facts scheine ich etwas auf dem Schlauch zu stehen; kannst du das näher ausführen? Ich wäre mir keines "Überschreibens statischer Methoden" bewusst. Es sei denn, du meinst das Shadowing (Überdeckung) oder Overloading (Überladung). Bei statischen Methoden ist ja wegen des fehlenden Polymorphismus' zur Laufzeit sogar bei dieser Konstellation mit keiner Überschreibung zu rechnen:


    Vermutlich meintest du eines der oberhalb genannten Szenarien, aber beschreib' gerne nochmal genauer was du damit meinst. :)

  • Im Zuge meiner Update-Agenda, die ich für diesen Thread angekündigt habe, poste ich mal wieder das Video dieser Woche. Neue Videos erscheinen immer Sonntags gegen 12:00:



    Vielen Dank auch noch einmal für die Aufmerksamkeit und den anhaltenden Support!

    finde es sehr positiv dass du so ausführlich und überhaupt auf Checkstyle eingehst. Leider sind diese features in Minecraft nicht sehr weit verbreitet.

  • Hey,
    ich habe mir mal die Zeit genommen und die Tutorials ein bisschen angeschaut und dabei hat sich mir die Frage gestellt, welche Zielgruppe du genau erreichen möchtest, da du im Prinzip während des kompletten Programmierens Fachbegriffe und schon auf einem Niveau für Fortgeschrittene Programmierer programmierst (jedenfalls in meinen Augen, oder ich habe nicht richtig aufgepasst), damit meine ich du gehst nicht auf einzelne Begriffe ein sondern redest los.

    An sich ist diese Reihe, damit von fachlichen sehr gut, aber nicht wirklich Einsteiger freundlich. Und ich denke Forgeschrittene arbeiten im normalfall nicht mehr viel mit Tutorials. Das ist zu mindest meine Meinung.

    Mfg.
    Daniel - DLimerick

  • Heyho,


    die Zielgruppe besteht hauptsächlich aus denjenigen, die bereits eine der vielen "Bukkit-Tutorial-Reihen" angeschaut haben. Es geht mir also definitiv nicht darum Bukkit geschweige denn Java neu zu vermitteln, sondern viel mehr vorhandene Fehler oder schlechte Angewohnheiten auszubügeln, die sich durch die Tutorial oder im Laufe der Zeit eingeschlichen haben. Darüber hinaus möchte ich noch einige Ebenen auf das Tutorial-Wissen drauflegen. Das sieht man zum Beispiel an den Erklärungsvideos zu den Tools (Git, Checkstyle). Es geht mir hier also darum Menschen, die schon regelmäßig im Bukkit-Kontext agieren mit Wissen darüber zu versorgen, wie sie ihren Workflow optimieren können, bzw. wie in der Software-Entwicklung außerhalb von Minecraft gearbeitet wird.


    Ich habe also nicht den Anspruch "einsteiger-freundlich" zu sein, sondern viel mehr engagierte Entwickler dazu zu verhelfen weiter besser zu werden. Für solche Einstiegstutorials kann ich da zum Beispiel die Tutorials von BiVieh empfehlen.


    Vielen Dank für dein Feedback!