Theorie ist wichtig. Aber Programmieren lernt man nur durch Programmieren. Ab jetzt arbeiten wir mit einem konkreten Projekt: der Arcade Highscore API.
Retro-Arcade-Spiele wie Pac-Man, Tetris oder Space Invaders kennt jeder. Was diese Spiele gemeinsam haben: Highscores. Der Ehrgeiz, den eigenen Namen ganz oben auf der Bestenliste zu sehen, hat Generationen von Spielern motiviert.
Unsere API verwaltet genau das: Spieler, Spiele und Punktestände. Ein einfaches Domänenmodell, das trotzdem genug Komplexität bietet, um alle Spring-Konzepte zu demonstrieren.
Ein Player hat einen Nickname und ein Registrierungsdatum. Ein Game hat einen Namen, eine Beschreibung und optional einen theoretischen Maximalscore. Ein Score verbindet beides – welcher Spieler hat in welchem Spiel wie viele Punkte erreicht.
Die Schulungsumgebung läuft in der Cloud. Du brauchst nichts zu installieren – ein Browser reicht.
Teilnehmer 1 Teilnehmer 2 Teilnehmer 3 Teilnehmer 4 Teilnehmer 5 Teilnehmer 6 Teilnehmer 7 Teilnehmer 8 Teilnehmer 9 Teilnehmer 10 Teilnehmer 11 Teilnehmer 12
Nach dem Login siehst du VS Code im Browser. Die Entwicklungsumgebung ist vollständig vorkonfiguriert:
| Komponente | Version | Zweck |
|---|---|---|
| Java | 21 (LTS) | Laufzeitumgebung |
| Gradle | 8.10 | Build-Tool |
| Spring Boot | 3.3 | Framework |
Das Projekt ist bereits geklont und bereit. Die Verzeichnisstruktur folgt den Spring-Boot-Konventionen:
arcade-highscore-api/
├── src/
│ ├── main/
│ │ ├── java/de/digitalfrontiers/arcade/
│ │ │ ├── ArcadeHighscoreApplication.java
│ │ │ ├── domain/
│ │ │ │ ├── Player.java
│ │ │ │ ├── Game.java
│ │ │ │ └── Score.java
│ │ │ └── web/
│ │ │ └── HomeController.java
│ │ └── resources/
│ │ ├── application.yaml
│ │ ├── templates/
│ │ └── static/css/
│ └── test/
├── build.gradle.kts
└── gradlew
Öffne ein Terminal in VS Code (Strg+Ö oder über das Menü) und navigiere ins Projektverzeichnis:
cd arcade-highscore-apiDer Start erfolgt über den Gradle Wrapper. Dieser lädt beim ersten Aufruf automatisch die richtige Gradle-Version herunter:
./gradlew bootRunDie Konsole zeigt den Startvorgang. Spring Boot ist gesprächig – es protokolliert jeden Schritt:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.3.x)
2024-01-15 10:00:00 INFO Starting ArcadeHighscoreApplication...
2024-01-15 10:00:01 INFO Tomcat started on port 8080 (http)
2024-01-15 10:00:01 INFO Started ArcadeHighscoreApplication in 2.3 seconds
Das ASCII-Art-Banner ist ein Spring-Boot-Markenzeichen. Die wichtige Information steht am Ende: Tomcat läuft auf Port 8080.
Öffne einen Browser und navigiere zur Anwendung. Die URL hängt von deiner Lab-Umgebung ab – sie wird vom Dozenten genannt.
Du siehst eine Retro-Arcade-Landingpage mit Neon-Styling. Vier Arcade-Cabinets zeigen die Spiele, die wir später per API verwalten werden. Unten blinkt “INSERT COIN TO PLAY” – ein Gruß an die 80er.
Diese Seite beweist: Die Anwendung läuft. Spring Boot, Tomcat, Thymeleaf – alles funktioniert. Du hast gerade deine erste Spring-Boot-Anwendung gestartet.
Hinter diesem einfachen Start steckt eine Menge Magie. Spring Boot hat:
de.digitalfrontiers.arcade
gescanntHomeController als Web-Controller erkanntDu hast nichts davon manuell konfiguriert. Das ist Convention over Configuration in Aktion – das Thema des nächsten Kapitels.
Falls der Start fehlschlägt, prüfe diese typischen Ursachen:
Port bereits belegt: Eine andere Anwendung nutzt
Port 8080. Beende sie oder ändere den Port in
application.yaml:
server:
port: 8081Java nicht gefunden: Der Gradle Wrapper braucht eine
Java-Installation. In der Lab-Umgebung ist das vorkonfiguriert – bei
lokaler Entwicklung muss JAVA_HOME gesetzt sein.
Gradle-Download hängt: Bei langsamer Internetverbindung kann der erste Download dauern. Geduld – der Wrapper cached alles für spätere Aufrufe.
Wenn alles funktioniert: Herzlichen Glückwunsch. Die Grundlage steht. Ab jetzt geht es ans Eingemachte.