Java auf Ubuntu
Von Nova Trent, Junior Entwicklerin bei Java Fleet Systems Consulting in Essen-Rüttenscheid
⚡ Kurze Zusammenfassung – Das Wichtigste in 30 Sekunden
Das Problem: Nach der Ubuntu 24.04 LTS Installation brauche ich eine komplette Java-Entwicklungsumgebung! Von JDK über Maven bis VS Code – alles muss neu eingerichtet werden.
Die Lösung: SDKMan für JDK-Management, APT für Tools, Snap für IDEs. In 2 Stunden von „nacktem Ubuntu“ zur funktionsfähigen Java-Entwicklung.
Du lernst: JDK 17 Installation mit SDKMan, Maven und Git Setup, VS Code Java Extensions, erste Spring Boot App unter Linux testen.
Wichtigste Commands: sdk install java 17.0.12-tem, mvn --version, code .
Hi, Linux-Abenteurer! 👋
Nova hier – und nachdem ich letzte Woche Ubuntu 24.04 LTS erfolgreich installiert habe, stand ich vor der nächsten Herausforderung: Wie zur Hölle richte ich eine Java-Entwicklungsumgebung unter Linux ein?
Wichtiger Hinweis: Ubuntu und andere Linux-Distributionen haben oft ihre eigenen Paketmanager-Versionen von Java-Tools. Aber genau wie bei Windows vs. CLI Maven gibt es Unterschiede! In diesem Tutorial zeige ich die „Standard-Linux-Entwickler-Methode“ – nicht die Ubuntu-spezifischen Pakete.
# Was Ubuntu's APT installiert: Oft ältere Versionen sudo apt install openjdk-17-jdk # ← Geht, aber nicht optimal # Was echte Entwickler nutzen: SDKMan sdk install java 17.0.12-tem # ← Das ist unser Standard!
Elyndras Tipp: „Nova, lerne gleich die ‚richtigen‘ Tools – sonst kämpfst du später mit Versionskonflikten wie auf Windows!“
Während ich mein erstes Ubuntu-Setup vorbereitete, dachte ich an Lukas und seine Art, alles perfekt organisiert zu haben. Er hatte auch Ubuntu auf seinem Laptop und meinte immer: „Linux ist wie ein Werkzeugkasten – du musst nur wissen, welches Tool wann.“ Manchmal vermisse ich seine klaren Erklärungen… aber Focus, Nova! Java-Setup wartet nicht auf sentimentale Momente.
🚨 Nova’s Ubuntu-Setup-Odyssee vom Sonntag
Sonntag, 10:00 Uhr: Ubuntu läuft, Desktop ist schön, aber wenn ich java --version eingebe:
nova@laptop:~$ java --version Command 'java' not found, but can be installed with: sudo apt install openjdk-11-jdk-headless # Or several other packages
Meine erste Panik: „Ich hab doch Ubuntu installiert! Wo ist Java?!“
10 Minuten später: Ach so, Linux kommt „nackt“ – ich muss alles selbst installieren. Das ist kein Bug, das ist ein Feature! 🤦♀️
🛠️ Java-Stack Setup: Der richtige Weg
Schritt 1: SDKMan installieren
Was ist SDKMan? Der Maven für JDK-Versionen! Statt manueller Downloads und PATH-Gefummel.
# SDKMan installieren curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" # Testen sdk version # SDKMAN! # script: 5.18.2 # native: 0.4.6
Nova’s Aha-Moment: „Das ist wie npm für Node.js, nur für Java-Zeug!“
Schritt 2: JDK 17 installieren
# Verfügbare Java-Versionen anzeigen sdk list java # JDK 17 LTS installieren (Eclipse Temurin) sdk install java 17.0.12-tem # Standard setzen sdk default java 17.0.12-tem # Testen java --version # openjdk 17.0.12 2024-07-16 # OpenJDK Runtime Environment Temurin-17.0.12+7 (build 17.0.12+7) # OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode)
Warum Eclipse Temurin?
- ✅ Open Source und kostenlos
- ✅ LTS-Support bis 2027
- ✅ Performance-optimiert
- ✅ Same wie Oracle JDK, nur ohne Lizenzprobleme
Schritt 3: Maven installieren
# Maven über SDKMan installieren sdk install maven 3.9.8 # Testen mvn --version # Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256) # Maven home: /home/nova/.sdkman/candidates/maven/current # Java version: 17.0.12, vendor: Eclipse Adoptium
Wichtig: Maven nutzt automatisch das SDKMan-Java! Keine PATH-Probleme mehr.
Schritt 4: Git & GitHub CLI Setup
# Git ist meist schon installiert, aber Version checken git --version # git version 2.43.0 # Falls nicht installiert: sudo apt update sudo apt install git # Global konfigurieren git config --global user.name "Nova Trent" git config --global user.email "nova.trent@java-developer.online" git config --global init.defaultBranch main # GitHub CLI installieren (moderne Art, GitHub zu nutzen!) curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh # GitHub CLI authentifizieren gh auth login # → Browser öffnet sich für OAuth-Login # SSH-Key für GitHub generieren (falls gh auth login nicht reicht) ssh-keygen -t ed25519 -C "nova.trent@java-developer.online" # Enter für alle Prompts (Default-Pfad, kein Passwort) # SSH-Key zu GitHub hinzufügen (über GitHub CLI!) gh ssh-key add ~/.ssh/id_ed25519.pub --title "Nova Ubuntu Laptop" # Testen gh repo list gh auth status
Warum GitHub CLI?
- ✅ Repositories direkt klonen:
gh repo clone user/repo - ✅ Issues und PRs verwalten:
gh issue create,gh pr create - ✅ Authentifizierung handled: Kein SSH-Key-Gefummel
- ✅ Modern und effizient: Wie npm für GitHub
Nova’s Aha-Moment: „GitHub CLI ist wie Git mit Superkräften!“
Schritt 5: IDE Setup – VS Code vs. IntelliJ
VS Code Installation
# VS Code über Snap installieren sudo snap install --classic code # Java Extension Pack installieren code --install-extension vscjava.vscode-java-pack
Enthält automatisch:
- ✅ Extension Pack for Java
- ✅ Spring Boot Extension Pack
- ✅ Maven for Java
- ✅ Gradle for Java
IntelliJ IDEA Community (Alternative)
# IntelliJ über Snap installieren sudo snap install intellij-idea-community --classic # Oder über JetBrains Toolbox sudo snap install jetbrains-toolbox --classic
Nova’s Entscheidung: VS Code für den Anfang – weniger overwhelming, schneller Start.
🔧 Der erste Test: Spring Boot unter Linux
Projekt erstellen
# Arbeitsverzeichnis erstellen mkdir ~/dev cd ~/dev # Spring Boot Projekt generieren curl https://start.spring.io/starter.tgz \ -d dependencies=web,jpa,h2 \ -d groupId=de.javafleet \ -d artifactId=ubuntu-test \ -d name=ubuntu-test \ -d packageName=de.javafleet.ubuntutest \ -d javaVersion=17 | tar -xzf - cd ubuntu-test
Das ist cool! Spring Initializr funktioniert auch über Command Line!
Projekt öffnen und testen
# GitHub Repository für das Testprojekt erstellen gh repo create ubuntu-test --public --description "Nova's Ubuntu Java Test" git remote add origin https://github.com/nova-trent/ubuntu-test.git # Code committen und pushen git add . git commit -m "Initial Ubuntu Java setup test" git push -u origin main # Repository im Browser öffnen gh repo view --web # VS Code öffnen code . # Kompilieren testen mvn clean compile # Spring Boot starten mvn spring-boot:run
Erfolgsmeldung:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.3) 2024-09-21 15:30:42.123 INFO 12345 --- [main] d.j.u.UbuntuTestApplication : Started UbuntuTestApplication in 2.847 seconds
🎉 ES FUNKTIONIERT! Spring Boot läuft unter Ubuntu genauso wie unter Windows!
Browser-Test
# Default Spring Boot Actuator testen
curl http://localhost:8080/actuator/health
# {"status":"UP"}
# H2 Console testen (im Browser)
firefox http://localhost:8080/h2-console
📊 Performance-Vergleich: Ubuntu vs. Windows
Interessante Beobachtung:
Spring Boot Startup:
- Windows 11: 4.2 Sekunden
- Ubuntu 24.04: 2.8 Sekunden
Maven Build:
- Windows 11: 12 Sekunden
- Ubuntu 24.04: 8 Sekunden
Nova’s Theorie: Weniger Background-Services, besseres Dateisystem (ext4 vs. NTFS), oder einfach placebo? 🤔
🛠️ Nützliche Ubuntu-Entwickler-Tools
# Htop - besserer Task Manager sudo apt install htop # Tree - Verzeichnisstruktur anzeigen sudo apt install tree tree ~/dev # Curl & Wget - API Testing sudo apt install curl wget # JQ - JSON Processing sudo apt install jq curl http://localhost:8080/actuator/health | jq # Neofetch - System Info (weil cool 😎) sudo apt install neofetch neofetch
🚀 Nova’s Ubuntu-Entwicklung-Erfolg
Nach 2 Stunden Setup:
Nova: „Das war viel einfacher als gedacht! Und alles läuft schneller als unter Windows!“
Elyndra: „Siehst du? Linux ist wie ein guter Werkzeugkasten – einmal eingerichtet, funktioniert alles perfekt zusammen.“
Nova: „Aber was ist mit Docker? Und GitHub Desktop? Brauche ich das?“
Elyndra: „Docker kommt nächste Woche! Und GitHub Desktop? Auf Linux nutzen wir Git direkt – ist eh professioneller.“
🗓️ Nächste Woche: JPA Relationen – TaskApp wird erwachsen
Vorschau auf Teil 7 (nächsten Montag):
„JPA Relationen lernen – Meine TaskApp bekommt Categories und Users“
Nova’s nächste Challenge: One-to-Many, Many-to-One Relationen verstehen, @Entity Relationships modellieren, und warum Foreign Keys in JPA anders funktionieren als in SQL.
Wir lernen:
- @OneToMany und @ManyToOne Annotations
- TaskCategory Entity hinzufügen
- User Entity für Task-Ownership
- Repository Queries mit Relationen
❓ FAQ – Ubuntu Java Development Edition
Frage 1: Warum SDKMan statt apt install openjdk?
Antwort: SDKMan gibt dir die neuesten Versionen, einfache Verwaltung mehrerer JDK-Versionen, und ist konsistent zwischen Linux-Distributionen. APT-Pakete sind oft veraltet.
Frage 2: Kann ich IntelliJ und VS Code parallel nutzen?
Antwort: Ja! Beide nutzen dieselben SDKMan-Java-Versionen. Viele Entwickler switchen je nach Projekt.
Frage 3: Warum ist Spring Boot unter Linux schneller?
Antwort: Weniger Overhead durch Background-Services, optimiertes Dateisystem, und bessere JVM-Performance unter Linux.
Frage 4: Muss ich immer Terminal nutzen?
Antwort: Nein, aber Terminal ist effizienter für Entwickler-Tasks. GUI-Tools gibt es für alles, aber CLI macht dich produktiver.
Frage 5: Was ist mit Windows-Tools wie Postman?
Antwort: Postman gibt’s auch für Linux (Snap/AppImage). Aber curl + jq ist oft schneller für API-Tests.
Frage 6: Kann ich meine Windows-Git-Repos einfach kopieren?
Antwort: Ja! Git-Repos sind plattformunabhängig. Einfach clonen oder vom NTFS-Share kopieren.
Frage 7: Warum GitHub CLI statt normaler SSH-Keys?
Antwort: GitHub CLI handled Authentifizierung automatisch, kann Repos direkt erstellen/klonen, und verwaltet Issues/PRs über Terminal. Viel moderner als manuelles SSH-Key-Management.
Frage 8: Was macht ihr bei persönlichen Problemen zwischen den Projekten?
Antwort: Das ist… kompliziert. Manche Geschichten gehören nicht in Tech-Blogs, sondern in private logs. Aber das ist ein anderes Kapitel unserer Geschichte. 🔒
📖 Nova’s Learning Monday Serie – Alle Teile im Überblick
✅ Bereits veröffentlicht:
- Teil 1: Meine erste Spring Boot Anwendung – [Status: Veröffentlicht]
- Teil 2: Spring Security für Dummies – [Status: Veröffentlicht]
- Teil 3: Testing mit JUnit – [Status: Veröffentlicht]
- Teil 4: Docker Basics – [Status: Veröffentlicht]
- Teil 5: Ubuntu 24.04 LTS Installation – [Status: Veröffentlicht]
- Teil 6: Ubuntu Java-Entwicklungsumgebung Setup – [Status: Veröffentlicht]
📅 Kommende Teile:
- Teil 7: JPA Relationen – TaskApp bekommt Categories und Users
- Teil 8: Git Serie startet – Branching und Team-Workflows
Alle Teile der Serie findest du hier: [java-developer.online/nova-learning-series]
📚 Downloadable Resources
Für alle Ubuntu-Java-Entwickler:
📄 [Ubuntu-Java-Setup-Script.sh] – Automatisches Setup-Skript
📄 [SDKMan-Commands-Cheatsheet.pdf] – Alle wichtigen SDKMan-Befehle
📄 [Linux-Development-Tools.pdf] – Nützliche Tools für Java-Entwicklung
Download: Schreibt mir eine E-Mail an nova.trent@java-developer.online, ich schicke euch die Resources zu!
Das war Teil 6 der Learning Monday Serie! Von nacktem Ubuntu zu funktionsfähiger Java-Entwicklungsumgebung – Linux ist wirklich der bessere Entwickler-Playground!
Fun Fact: Unsere Website hat mehr versteckte Inhalte als ihr denkt! Wer neugierig ist und mal „geheime logs“ in unsere Suche eingibt, entdeckt vielleicht eine ganz andere Seite von Java Fleet… 🤫
Keep coding, keep learning! 🚀
Folgt Nova’s Learning Monday Serie jeden Montag hier im Blog. Nächste Woche: JPA Relationen für die TaskApp! 📊
Tags: #Ubuntu #JavaDevelopment #SDKMan #VSCode #SpringBoot #LinuxDevelopment

