Java Anwendungsentwicklung – Tag 1 von 10
Von Franz-Martin, CTO bei Java Fleet Systems Consulting

Schwierigkeit: 🟢 Einsteiger
Dauer: ~4-6 Stunden (inkl. Reflexion)
Voraussetzungen: Solide Java SE Kenntnisse


🗺️ Deine Position im Kurs

TagThemaExtrasStatus
→ 1Die Desktop-Ära: Warum GUIs?Theorie & Einordnung👉 DU BIST HIER!
2AWT & Swing GrundlagenFenster, Komponenten🔜 Kommt als nächstes
3Layouts & Event-HandlingLayoutManager, Listener🔒 Noch nicht freigeschaltet
4Komplexe Swing-KomponentenJTable, JTree, Models🔒 Noch nicht freigeschaltet
5JavaFX: Die „moderne“ AlternativeVergleich zu Swing🔴 KOPFNUSS
6JDBC GrundlagenConnection, Statement🔒 Noch nicht freigeschaltet
7JDBC Best PracticesPreparedStatement, Security🔒 Noch nicht freigeschaltet
8JPA EinführungEntities, persistence.xml🔒 Noch nicht freigeschaltet
9JPA CRUD & QueriesEntityManager, JPQL🔒 Noch nicht freigeschaltet
10Integration & AusblickGUI + DB + Moderne Wege🔴 KOPFNUSS

Modul: Java Anwendungsentwicklung
Dauer: 10 Arbeitstage
Dein Ziel: Verstehen, WARUM Desktop-GUIs existieren und wo sie heute stehen


📋 Bevor du startest

Du brauchst:

  • ✅ JDK 21 LTS installiert (Amazon Corretto oder OpenJDK)
  • ✅ Apache NetBeans 22 (oder IntelliJ IDEA)
  • ✅ Maven 3.9+ (wird von NetBeans mitgeliefert)
  • ✅ Solide Java SE Kenntnisse (Klassen, Objekte, Collections)

Heute ist Theorie-Tag!
Ja, wirklich. Bevor wir Code schreiben, müssen wir verstehen, WARUM wir das überhaupt tun. Das unterscheidet dich später von Entwicklern, die nur „Legacy!“ rufen können.


⚡ Das Wichtigste in 30 Sekunden

Heute lernst du:

  • ✅ Warum Desktop-GUIs überhaupt entwickelt wurden
  • ✅ Die Evolution von Terminal → GUI → Web → Mobile
  • ✅ Was AWT, Swing und JavaFX sind (und was sie unterscheidet)
  • ✅ Warum diese Technologien heute „Legacy“ sind
  • ✅ Wann Desktop-Apps TROTZDEM noch Sinn machen

Am Ende des Tages kannst du:

  • Erklären, warum Java GUI-Frameworks entwickelt hat
  • Argumentieren, wann Desktop-Apps sinnvoll sind (und wann nicht)
  • Einordnen, wo du diese Technologien in deiner Karriere treffen wirst

👋 Willkommen zu Tag 1!

Liebe Java-Crew! ⛵

Franz-Martin hier. Willkommen zu meinem Captain’s Log für Tag 1!

Ich weiß, was du denkst: „Swing? JavaFX? Ist das nicht uralt?“

Ja. Und nein. Lass mich dir eine Geschichte erzählen.

1998 baute ich meine erste Swing-Anwendung. Ein Lagerverwaltungssystem für ein mittelständisches Unternehmen. 50 Mitarbeiter nutzten es täglich. Es war revolutionär – eine echte GUI, die auf Windows UND Linux lief!

2024 wurde ich angerufen. Dasselbe Unternehmen. Dasselbe System. 26 Jahre später läuft es immer noch. Und jemand muss es warten.

„Legacy ist nicht schlecht. Legacy bedeutet: Es hat funktioniert.“

Das ist die erste Lektion dieses Kurses. Und wenn du sie verstehst, bist du anderen Entwicklern einen Schritt voraus.

Los geht’s! 🚀


🟢 GRUNDLAGEN

💡 Für alle: Diese Sektion erklärt das „Warum“ – unverzichtbar für die Einordnung!

Die Welt vor GUIs

Stell dir vor, es ist 1975. Du sitzt vor einem Computer. Was siehst du?

$ _

Einen blinkenden Cursor. Grüner Text auf schwarzem Hintergrund. Keine Maus. Keine Fenster. Nur du und die Kommandozeile.

Um eine Datei zu kopieren, tippst du:

cp /home/user/dokument.txt /backup/

Um ein Programm zu starten:

./mein_programm

Das war Computer-Interaktion für Jahrzehnte. Effizient? Ja. Benutzerfreundlich? Für Experten. Für normale Menschen? Ein Albtraum.

Die GUI-Revolution

1984 änderte sich alles. Apple Macintosh. Fenster. Icons. Menüs. Eine Maus!

Plötzlich konnten Menschen Computer bedienen, ohne Befehle auswendig zu lernen. „Point and Click“ statt „Type and Pray“.

1985 kam Windows 1.0. Nicht so elegant wie der Mac, aber es brachte GUIs auf günstigere Hardware.

Die Welt hatte sich verändert. GUIs waren die Zukunft.

Das Problem: Plattform-Abhängigkeit

Aber es gab ein Problem. Wenn du 1990 eine GUI-Anwendung schreiben wolltest, musstest du dich entscheiden:

PlattformFrameworkErgebnis
WindowsMFC, DelphiLäuft NUR auf Windows
MacCarbonLäuft NUR auf Mac
LinuxMotif, GTKLäuft NUR auf Linux

Du konntest nicht „einmal schreiben, überall laufen“. Du musstest für jede Plattform neu entwickeln. Oder du musstest dich auf EINE Plattform beschränken.

Java betritt die Bühne

1995 erschien Java mit einem revolutionären Versprechen:

„Write Once, Run Anywhere“

Java hatte eine eigene virtuelle Maschine (JVM). Dein Code lief nicht direkt auf dem Betriebssystem, sondern in der JVM. Und die JVM gab es für Windows, Mac UND Linux!

Mit Java kam AWT – das Abstract Window Toolkit. Endlich: GUI-Entwicklung, die auf allen Plattformen funktioniert!


🖼️ Die Evolution der GUI-Frameworks

GUIs

Abbildung 1: Die Evolution der Benutzeroberflächen von 1970 bis heute


AWT (1995) – Der erste Versuch

AWT (Abstract Window Toolkit) war Javas erster Versuch einer GUI-Bibliothek.

Die Idee: Nutze die nativen GUI-Komponenten des Betriebssystems.

// AWT Beispiel
Button button = new Button("OK");

Das Problem: Jedes Betriebssystem zeichnet Buttons anders. Auf Windows sah der Button aus wie ein Windows-Button. Auf Mac wie ein Mac-Button. Auf Linux… naja.

Das führte zu:

  • Unterschiedlichem Aussehen auf verschiedenen Plattformen
  • Unterschiedlichem Verhalten (ein Windows-Button verhält sich anders als ein Mac-Button)
  • „Lowest Common Denominator“ – nur Features, die ALLE Plattformen haben

Das Ergebnis? „Write Once, Debug Everywhere.“

Swing (1998) – Die Lösung

Swing löste das Problem radikal: Es ignoriert die nativen Komponenten komplett.

// Swing Beispiel
JButton button = new JButton("OK");

Swing zeichnet JEDEN Pixel selbst. Ein JButton sieht auf Windows genauso aus wie auf Mac wie auf Linux.

Vorteile:

  • ✅ Konsistentes Aussehen überall
  • ✅ Mehr Kontrolle über das Design
  • ✅ „Look and Feel“ änderbar
  • ✅ Mächtigere Komponenten (JTable, JTree)

Nachteile:

  • ❌ Sieht nicht „nativ“ aus (es sieht nach „Java“ aus)
  • ❌ Performance-Overhead (alles selbst zeichnen)
  • ❌ Der „Swing-Look“ wurde schnell als altbacken empfunden

Trotzdem: Swing wurde zum Standard. Tausende Unternehmensanwendungen wurden damit gebaut. Viele laufen heute noch.

JavaFX (2007/2014) – Zu spät zur Party

2007 kündigte Sun JavaFX an. Die Idee: Ein moderneres, schöneres GUI-Framework.

Das Problem: 2007 erschien auch das iPhone. Plötzlich war „plattformunabhängig“ nicht mehr Windows/Mac/Linux, sondern Web/iOS/Android.

JavaFX wurde mehrfach neu gestartet:

  • 2008: JavaFX 1.0 mit eigener Script-Sprache (Flop)
  • 2011: JavaFX 2.0, jetzt Java-basiert (besser!)
  • 2014: Teil von Java 8 (endlich brauchbar!)
  • 2018: Aus dem JDK entfernt, jetzt OpenJFX

Ironie: Als JavaFX endlich gut war, war das Web schon besser.

2010er – Das Web gewinnt

JahrEventBedeutung
2010AngularJS erscheintErste „richtige“ Web-App-Frameworks
2013React erscheintKomponenten-basierte UIs
2014Vue.js erscheintEinfacher Einstieg
2015Electron erscheint„Web-Apps als Desktop“

Plötzlich konnten Web-Entwickler mit HTML, CSS und JavaScript alles bauen:

  • Desktop-Apps (Electron: VS Code, Slack, Discord)
  • Mobile Apps (React Native, Flutter)
  • Web-Apps (natürlich)

Mit EINER Technologie. Auf ALLEN Plattformen.

Java hatte sein „Write Once, Run Anywhere“ verloren. Das Web hatte es übernommen.


🖼️ Desktop vs Web: Die Architektur

Abbildung 2: Architektur-Vergleich zwischen Desktop- und Web-Anwendungen


🟡 PROFESSIONALS

🏃 Schon erfahren? Hier wird’s interessant für die Praxis.

Ehrliche Einordnung: Der Status Quo 2025

Lass mich direkt sein:

SzenarioRealität
Neue Desktop-App mit Swing starten?Sehr selten (<5% der Projekte)
Neue Desktop-App mit JavaFX starten?Nische (spezielle Use Cases)
Bestehende Swing-App warten?HÄUFIG (~30% der Enterprise-Jobs)
Legacy-System verstehen müssen?Fast garantiert

Die Wahrheit: Du wirst wahrscheinlich nie eine neue Swing-App von Grund auf bauen. Aber du wirst fast sicher mal eine bestehende warten müssen.

Wann macht Desktop heute noch Sinn?

Abbildung 3: Legitime Use Cases für Desktop-Anwendungen in 2025


✅ Legitime Gründe für Desktop-Apps

1. Hochsicherheitsumgebungen (Air-Gapped Systems)

Beispiel: Trading-Desk bei einer Bank
- Kein Internet-Zugang erlaubt
- Alle Daten lokal
- Audit-Anforderungen

Hier MUSS eine lokale Anwendung laufen. Web ist keine Option.

2. Embedded & Entertainment – Java ist ÜBERALL!

Das ist der Use Case, den die meisten übersehen:

Wo du HEUTE mit Java-GUIs interagierst:

📀 Blu-Ray Player     → BD-J (Blu-ray Disc Java) ist im Standard!
📺 Set-Top-Boxen      → Kabel-/Sat-Receiver, Festplattenrecorder
🍔 McDonald's Kiosk   → Die Bestellterminals laufen auf Java
🚆 DB Automaten       → Fahrkartenautomaten, viele ÖPNV-Terminals
✈️ Flugzeug-Screens   → In-Flight Entertainment Systeme
🏧 Geldautomaten      → ATMs weltweit
⛽ Tankstellen        → Zapfsäulen, Waschstraßen-Terminals
🏥 Medizintechnik     → MRT/CT-Steuerung, Patientenmonitore

Warum Java für Embedded?

  • ✅ Plattformunabhängig (läuft auf ARM, x86, etc.)
  • ✅ Garbage Collection (keine Memory Leaks bei 24/7 Betrieb)
  • ✅ Bewährte Stabilität über Jahrzehnte
  • ✅ Große Entwickler-Community

Fun Fact: Wenn du einen Blu-Ray einlegst und das interaktive Menü siehst – das ist Java. BD-J (Blu-ray Disc Java) ist seit 2006 Teil des Blu-Ray Standards. Milliarden Geräte weltweit.


🖼️ Java in der Embedded-Welt

Abbildung 4: Wo du täglich mit Java-GUIs interagierst – ohne es zu wissen


3. Extreme Performance-Anforderungen

Beispiele:
- Video-Editing (DaVinci Resolve)
- CAD-Software (AutoCAD)
- 3D-Modellierung (Blender)
- Spiele (Minecraft Java Edition!)

Der Browser kann nicht mit nativer GPU-Beschleunigung mithalten. Noch nicht.

4. Hardware-Zugriff

Beispiele:
- USB-Geräte steuern
- Serielle Schnittstellen
- Industriesteuerung
- Medizingeräte

WebUSB existiert, ist aber limitiert. Für echten Hardware-Zugriff brauchst du native Apps.

5. Legacy-Wartung (Der häufigste Grund!)

Realität:
- Bank X hat 2005 eine Swing-App gebaut
- 500 Mitarbeiter nutzen sie täglich
- Komplett neu schreiben? 2 Jahre, 5 Millionen €
- Warten und erweitern? 2 Entwickler, Budget für 10 Jahre

Raten mal, was die Bank wählt?

Die Markt-Realität: Weniger Entwickler, gleiche Nachfrage

Hier ist etwas, das die „Legacy!“-Rufer nicht verstehen:

╔══════════════════════════════════════════════════════════════════╗
║  DIE RECHNUNG:                                                   ║
║                                                                  ║
║  2005: 100.000 Swing-Entwickler, 50.000 Swing-Projekte           ║
║  2025: 10.000 Swing-Entwickler, 30.000 Swing-Projekte            ║
║                                                                  ║
║  → Weniger Entwickler. Fast gleich viele Projekte.               ║
║  → Wer es kann, wird gesucht.                                    ║
╚══════════════════════════════════════════════════════════════════╝

Was das für dich bedeutet:

SzenarioReact-EntwicklerSwing-Entwickler
Bewerber pro Stelle200+5-10
VerhandlungspositionAustauschbarGefragt
Tagessätze (Freelance)600-800€800-1200€
Job-SicherheitHoch, aber viel KonkurrenzSehr hoch, wenig Konkurrenz

Die bittere Wahrheit:

Während alle hippen Bootcamps „React in 12 Wochen!“ anbieten, sucht die Sparkasse seit 8 Monaten einen Entwickler, der ihr Swing-basiertes Kernbankensystem versteht.

Der React-Entwickler konkurriert mit 10.000 anderen Absolventen.
Der Swing-Entwickler hat 3 Jobangebote auf dem Tisch.

„Die Technologie ist nicht sexy. Aber der Gehaltszettel ist es.“
— Franz-Martin (aus Erfahrung)

Das heißt NICHT:

  • ❌ Lern NUR Swing und ignoriere moderne Technologien
  • ❌ Desktop ist die Zukunft

Das heißt:

  • ✅ Wer BEIDES kann, hat einen massiven Vorteil
  • ✅ Legacy-Skills sind ein Karriere-Differentiator
  • ✅ Die „unsexy“ Jobs zahlen oft besser

❌ KEINE guten Gründe

Schlechtes ArgumentWarum es schlecht ist
„Das haben wir schon immer so gemacht“Tradition ist kein technisches Argument
„Web ist zu kompliziert“2025 ist Vue.js einfacher als Swing
„Unsere Entwickler können kein JavaScript“Dann ist Weiterbildung nötig, nicht Swing
„Desktop ist sicherer“Falsch. Web mit HTTPS ist oft sicherer.

Die Konzepte sind transferierbar

Hier ist das Geheimnis: Die KONZEPTE, die du bei Swing lernst, brauchst du überall.

Swing-KonzeptWo du es wiederfindest
Event-Handling (ActionListener)React: onClick, Vue: @click
MVC-PatternSpring MVC, Angular, Vue
Observer-PatternRxJS, Vue Reactivity, Redux
Component-HierarchieReact Components, Vue Components
Layout-ManagementCSS Flexbox, CSS Grid
Data BindingVue v-model, React Hooks

Wenn du Swing verstehst, verstehst du die Grundlagen aller UI-Frameworks.


🔵 BONUS

⏸️ Optional! Für Neugierige und Diskussionsfreudige.

Die „neuen“ Desktop-Apps: Electron, Tauri & Co.

Es gibt eine interessante Entwicklung: Desktop-Apps, die eigentlich Web-Apps sind.

Electron (2013):

Idee: Packe Chrome + Node.js + deine Web-App in eine EXE
Ergebnis: VS Code, Slack, Discord, Figma Desktop
Problem: 200MB für "Hello World" 😬

Tauri (2022):

Idee: Wie Electron, aber mit dem System-Webview + Rust Backend
Ergebnis: Viel kleiner, schneller
Beispiel: 600KB statt 200MB

Die Ironie:

„Wir haben Java erfunden, damit Apps überall laufen. Jetzt packen wir Chrome in eine EXE und nennen es ‚Desktop-App‘. Der Kreis schließt sich.“

Das ist nicht negativ gemeint. Es zeigt nur: Das Problem „plattformunabhängige GUI“ wurde gelöst – nur nicht so, wie wir 1998 dachten.

Die Zukunft: WebAssembly?

Eine Technologie, die du im Auge behalten solltest: WebAssembly (WASM).

Die Idee: Kompilierter Code, der im Browser läuft. Mit nahezu nativer Performance.

Es gibt bereits Projekte, die Java nach WASM kompilieren (z.B. TeaVM, GraalVM). Theoretisch könntest du Swing-Code im Browser laufen lassen.

Praktisch? Noch nicht. Aber in 5 Jahren? Wer weiß.


💬 Real Talk: Nova fragt nach

Java Fleet Büro, Montagmorgen. Franz-Martin sitzt am Fenster mit seinem Filterkaffee. Nova stürmt rein.


Nova: „Franz-Martin, ich hab eine Frage. Und bitte sei ehrlich.“

Franz-Martin: (schmunzelt) „Bin ich jemals unehrlich?“

Nova: „Warum muss ich Swing lernen? Ernsthaft. Wer baut denn 2025 noch Desktop-Apps? Ich könnte stattdessen React lernen!“

Franz-Martin: (stellt die Kaffeetasse ab) „Drei Gründe. Setz dich.“

Nova: (setzt sich)

Franz-Martin: „Erstens: Dein erster Job könnte bei einer Bank sein. Die haben 2005 eine Swing-App gebaut. 50 Entwickler arbeiten daran. Die werden nicht auf React umstellen.“

Nova: „Aber das ist doch…“

Franz-Martin: „Legacy? Ja. Und weißt du, was Legacy bedeutet?“

Nova: „Alt?“

Franz-Martin: „Nein. Es bedeutet: Es hat funktioniert. Es hat funktioniert, als es gebaut wurde. Es funktioniert heute noch. Und jemand muss es verstehen, wenn es mal nicht mehr funktioniert.“

Nova: (nickt langsam)

Franz-Martin: „Zweitens: Swing hat dir Event-Handling beigebracht. Observer-Pattern. MVC. Das brauchst du in React genauso. Nur heißt es dort onClick statt addActionListener.“

Nova: „Also sind die Konzepte gleich?“

Franz-Martin: „Die Konzepte sind seit 30 Jahren gleich. Nur die Syntax ändert sich.“

Nova: „Und drittens?“

Franz-Martin: (lehnt sich zurück) „Demut. Wenn du verstehst, warum die Entwickler 2005 Swing gewählt haben, urteilst du nicht so schnell. Die waren nicht dumm. Die hatten andere Constraints. Andere Werkzeuge. Andere Anforderungen.“

Nova: „Aber heute würdest du keine neue Swing-App bauen?“

Franz-Martin: „Nein. Außer…“ (pause) „…naja, für ein internes Tool, das drei Leute benutzen und morgen fertig sein muss. Da ist eine JFrame schneller als ein komplettes React-Setup.“

Nova: (grinst) „Also ist Swing nicht komplett nutzlos?“

Franz-Martin: „Nichts ist komplett nutzlos. Nur manchmal nicht das richtige Werkzeug.“

Nova: „Okay, aber mal ehrlich – wer WILL denn Legacy machen? Das ist doch langweilig!“

Franz-Martin: (lacht leise) „Weißt du, was nicht langweilig ist? Der Gehaltszettel.“

Nova: „Wie meinst du das?“

Franz-Martin: „Letzte Woche hat mich ein Recruiter angerufen. Sparkasse sucht einen Swing-Entwickler. Seit acht Monaten. Rate mal, wie viele Bewerber sie hatten.“

Nova: „Keine Ahnung. Hundert?“

Franz-Martin: „Drei. In acht Monaten. Drei Bewerber.“

Nova: (Augenbrauen hoch) „Wow.“

Franz-Martin: „Jetzt rate mal, wie viele Bewerber eine React-Stelle bei einem hippen Startup bekommt.“

Nova: „…dreihundert?“

Franz-Martin: „Eher fünfhundert. Für eine Stelle.“

Nova: (schweigt)

Franz-Martin: „Der React-Entwickler ist einer von tausenden. Der Swing-Entwickler ist einer von wenigen. Wer hat wohl die bessere Verhandlungsposition?“

Nova: „Der Swing-Typ.“

Franz-Martin: „Genau. Und weißt du was? Der kann AUCH React lernen. Aber der React-Typ, der ‚Legacy!‘ schreit, wird nie verstehen, warum das McDonald’s-Terminal manchmal hängt.“

Nova: „Warte – McDonald’s läuft auf Java?“

Franz-Martin: (grinst) „Die Kioske? Ja. Blu-Ray Player? Ja. Die DB-Automaten? Oft ja. Du interagierst täglich mit Java-GUIs. Du merkst es nur nicht.“

Nova: (denkt nach) „Also ist ‚Legacy‘ gar nicht tot. Es ist nur… unsichtbar?“

Franz-Martin: „Exakt. Und wer das Unsichtbare versteht, hat einen Vorteil gegenüber allen, die nur das Offensichtliche sehen.“

Nova: (steht auf) „Okay. Ich bin dabei. Aber wenn Swing langweilig wird, beschwere ich mich!“

Franz-Martin: (hebt die Kaffeetasse) „Deal. Aber ich garantiere dir: Langweilig wird’s nicht. Frustrierend vielleicht. Aber nicht langweilig.“


✅ Checkpoint

📝 Quiz: Hast du es verstanden?

Frage 1: Warum hat Java ursprünglich GUI-Frameworks (AWT, Swing) entwickelt?

A) Weil Web-Technologien nicht existierten
B) Um plattformunabhängige Desktop-Apps zu ermöglichen
C) Weil Sun Microsoft ärgern wollte
D) Aus Langeweile


Frage 2: Was ist der Hauptunterschied zwischen AWT und Swing?

A) AWT ist neuer als Swing
B) Swing nutzt native OS-Komponenten, AWT nicht
C) AWT nutzt native OS-Komponenten, Swing zeichnet alles selbst
D) Es gibt keinen Unterschied


Frage 3: Warum ist JavaFX „zu spät“ gekommen?

A) Es wurde nie fertig entwickelt
B) Als es ausgereift war, dominierte bereits das Web
C) Oracle hat es verboten
D) Es war zu teuer


Frage 4: Wann macht eine Desktop-App 2025 NOCH Sinn?

A) Immer, Desktop ist besser als Web
B) Nie, alles sollte Web sein
C) Bei Hochsicherheit, Embedded/Entertainment, extremer Performance, Hardware-Zugriff oder Legacy-Wartung
D) Nur wenn der Chef es will


Frage 5: Was bedeutet „Legacy“ in der Software-Entwicklung?

A) Alter, nutzloser Code
B) Code, der einmal funktioniert hat und heute noch läuft
C) Code, den niemand versteht
D) Open-Source-Software


🎯 Reflexions-Aufgabe

Bevor du zu Tag 2 gehst, beantworte diese Fragen für dich:

  1. Hast du schon mal eine Desktop-Anwendung genutzt, die „altbacken“ aussah? Was war das für eine App? Welches Unternehmen?
  2. Warum glaubst du, wurde sie nicht modernisiert?
  3. Wenn du diese App modernisieren müsstest – würdest du sie komplett neu schreiben oder schrittweise verbessern?

Es gibt keine „richtige“ Antwort. Aber die Reflexion hilft dir, die Realität der Software-Entwicklung zu verstehen.


📝 Quiz-Lösungen

Frage 1:B – Um plattformunabhängige Desktop-Apps zu ermöglichen

Java’s „Write Once, Run Anywhere“ war das Versprechen. GUI-Frameworks waren nötig, damit dieses Versprechen auch für Anwendungen mit Benutzeroberfläche gilt.


Frage 2:C – AWT nutzt native OS-Komponenten, Swing zeichnet alles selbst

Das ist der fundamentale Unterschied. AWT-Buttons sehen auf jedem OS anders aus. Swing-Buttons sehen überall gleich aus, weil Swing jeden Pixel selbst zeichnet.


Frage 3:B – Als es ausgereift war, dominierte bereits das Web

2007 wurde JavaFX angekündigt – im selben Jahr wie das iPhone. Als JavaFX 2014 endlich brauchbar war, gab es React, Angular, und die Web-Ära hatte begonnen.


Frage 4:C – Bei Hochsicherheit, extremer Performance, Hardware-Zugriff oder Legacy-Wartung

Das sind die vier legitimen Gründe. „Das haben wir schon immer so gemacht“ ist KEIN guter Grund.


Frage 5:B – Code, der einmal funktioniert hat und heute noch läuft

Legacy ist nicht automatisch „schlecht“. Es bedeutet, dass der Code seinen Zweck erfüllt hat – und oft noch erfüllt. Das verdient Respekt, nicht Verachtung.


❓ Häufig gestellte Fragen

Frage 1: Muss ich wirklich Swing lernen, wenn ich später nur Web machen will?

Nicht unbedingt „müssen“, aber verstehen hilft. Die Konzepte (Event-Handling, MVC, Component-Hierarchie) sind universell. Außerdem: Du weißt nicht, wo dein erster Job sein wird. Viele Unternehmen haben Legacy-Systeme.


Frage 2: Ist JavaFX „besser“ als Swing?

Technisch: Ja. JavaFX hat modernere Konzepte (Properties, Bindings, CSS-Styling). Praktisch: Kommt drauf an. Für bestehende Projekte ist eine Migration oft zu aufwändig. Für neue Projekte… fragst du dich eher, ob du überhaupt Desktop willst.


Frage 3: Was ist mit Kotlin und Compose for Desktop?

Guter Punkt! JetBrains entwickelt „Compose for Desktop“ – ein modernes, deklaratives UI-Framework. Es ist interessant und könnte eine Zukunft haben. Für diesen Kurs bleiben wir aber bei Swing/JavaFX, weil das ist, was du in der Praxis am häufigsten findest.


Frage 4: Wie lange dauert es, Swing zu lernen?

Für die Grundlagen: 2-3 Tage intensives Arbeiten. Für „produktionsreif“: 2-3 Wochen mit Projekterfahrung. Für „Experte“: Jahre, wie bei jeder Technologie.


Frage 5: Kann ich meine Swing-App ins Web bringen?

Ja und nein. Es gibt Tools wie CheerpJ (kompiliert Java zu WebAssembly). Aber das ist eher für „Legacy-Apps am Leben halten“ als für „moderne Web-Entwicklung“. Wenn du Web willst, bau direkt für Web.


Frage 6: Was ist mit JavaFX auf Mobile?

Gluon bietet Tools, um JavaFX-Apps auf iOS/Android zu bringen. Es funktioniert, aber es ist Nische. Wenn du Mobile willst, lern Flutter, React Native oder native Entwicklung.


Frage 7: Bernd hat mir erzählt, er hätte 1999 eine Swing-App gebaut, die heute noch läuft. Stimmt das?

(Schweigt für 10 Sekunden)

Ja. Das stimmt. Bernds Lagerverwaltungssystem läuft seit 26 Jahren. Es sieht aus wie 1999, aber es funktioniert. Jeden Tag. Zuverlässig.

Bernd sagt dazu nur: „Code, der funktioniert, ist besser als Code, der modern ist.“

Ich stimme ihm zu.


📦 Downloads

Heute gibt’s:

ProjektFür wen?Download
java-anwendungsentwicklung-tag1.zip🟢 Alle⬇️ Download

Inhalt:

  • Maven-Projekt mit „Hallo Swing“ Beispiel
  • FlatLaf Dark Theme (sieht modern aus!)
  • Kommentierter Code zum Lernen

Quick Start:

# 1. ZIP entpacken
unzip java-anwendungsentwicklung-tag1.zip

# 2. In das Verzeichnis wechseln
cd java-anwendungsentwicklung-tag1

# 3. Mit Maven starten
mvn exec:java

In NetBeans:

  1. File → Open Project
  2. Das Verzeichnis auswählen
  3. Rechtsklick → Run

🔗 Weiterführende Links

📚 Für Einsteiger

RessourceBeschreibung
Oracle Swing TutorialOffizielles Tutorial (umfangreich)
Java ist auch eine Insel – GUI KapitelDeutsches Standardwerk

🛠️ Tools

ToolBeschreibung
FlatLafModernes Look-and-Feel für Swing
NetBeans GUI BuilderVisueller Designer

📖 Geschichte & Kontext

RessourceBeschreibung
The History of Java GUIDie Geschichte von AWT bis JavaFX
Why Did Java GUI Fail?JetBrains‘ Perspektive

🔧 Moderne Alternativen

TechnologieBeschreibung
Compose for DesktopJetBrains‘ moderner Ansatz
ElectronWeb-Technologie als Desktop
TauriLeichtgewichtiges Electron-Alternative

🎉 Tag 1 geschafft!

Was du heute gelernt hast:

✅ Die Geschichte von Terminal → GUI → Web → Mobile
✅ Warum Java GUI-Frameworks entwickelt hat (Write Once, Run Anywhere)
✅ Den Unterschied zwischen AWT, Swing und JavaFX
✅ Warum Desktop-GUIs heute „Legacy“ sind
✅ Wann sie trotzdem noch Sinn machen
✅ Warum die Konzepte transferierbar sind

Das Wichtigste:

„Legacy ist nicht schlecht. Legacy bedeutet: Es hat funktioniert.“

Wenn du diese Einstellung verinnerlichst, bist du anderen Entwicklern einen Schritt voraus. Du wirst nicht nur Code schreiben – du wirst verstehen, WARUM Code so geschrieben wurde.


🔜 Wie geht’s weiter?

Morgen – Tag 2: AWT & Swing Grundlagen

Jetzt wird’s praktisch! Du baust dein erstes richtiges Fenster:

  • JFrame, JPanel, JButton – die Basics
  • Ein Formular mit Eingabefeldern
  • Dein erstes Event-Handling

Das Theorie-Fundament von heute brauchst du morgen!

Warum? Weil du dann verstehst, WARUM SwingUtilities.invokeLater() nötig ist. Warum Look-and-Feel existiert. Warum manche Dinge so „umständlich“ wirken.


Gönn dir jetzt eine Pause!

Ein Theorie-Tag ist anstrengender, als man denkt. Lass das Wissen sacken.

Bis morgen!

— Franz-Martin


Fragen? Schreib uns:

  • franz-martin@java-developer.online

Tags: #Java #Swing #JavaFX #Desktop #GUI #Legacy #Anwendungsentwicklung

© 2025 Java Fleet Systems Consulting | java-developer.online

Autor

  • Franz-Martin

    65 Jahre alt, CTO und Gründer von Java Fleet Systems Consulting. Franz-Martin ist erfahrener Java-Entwickler, Tutor und Dozent, der das Unternehmen gegründet hat, um sein Wissen weiterzugeben und echte Java-Probleme zu lösen. Er moderiert Team-Diskussionen, mentoriert alle Crew-Mitglieder und sorgt dafür, dass technische Exzellenz mit Business-Realität kombiniert wird.