Autor: HM_JDSZielgruppe: Sek I

Uebersicht und Installation

Dieses Kapitel basiert auf dem Arbeitsblatt zur Einfuehrung und Installation. Es setzt den inhaltlichen Rahmen fuer den gesamten Java-Block: Welche Arten von Programmierung gibt es, warum wird in diesem Kurs Java verwendet, und welche Werkzeuge muessen vor dem Start eingerichtet werden?

Historischer Stammbaum der Programmiersprachen

Historischer Stammbaum der Programmiersprachen von Ada Lovelace bis in die frühen 2000er-JahreHistorischer Stammbaum der Programmiersprachen von Ada Lovelace bis in die frühen 2000er-Jahre
Historische Einflüsse zwischen Programmiersprachen; die Darstellung endet im Wesentlichen 2003. Quellen- und Lizenzangaben stehen direkt in der Grafik.

Der Stammbaum zeigt, wie Programmiersprachen zeitlich aufeinander folgten und welche Sprachen die Entwicklung anderer Sprachen beeinflussten. Die Verbindungslinien sind als historische Einflüsse zu lesen, nicht als eindeutige Einteilung in Programmierparadigmen.

Programmierparadigmen im Überblick

Vereinfachte Einordnung der Programmierparadigmen

Eine Programmiersprache ist mehr als nur Syntax. Programmierparadigmen beschreiben unterschiedliche Sichtweisen auf Probleme. Die folgende Einordnung ist bewusst vereinfacht: Die Kategorien sind nicht immer trennscharf, und moderne Sprachen unterstuetzen haeufig mehrere Paradigmen.

Imperative und prozedurale Programmierung

Im imperativen Stil beschreibt ein Programm Schritt fuer Schritt, was als naechstes passieren soll. Das passt gut zu Algorithmen mit klarer Reihenfolge:

  1. Daten einlesen
  2. Daten verarbeiten
  3. Ergebnis ausgeben

Der prozedurale Stil organisiert diese Schritte in Teilprogramme (Prozeduren/Funktionen). Dadurch wird Code besser wiederverwendbar und strukturierter. Historische Sprachen wie Pascal und C sind starke Beispiele fuer diesen Ansatz.

Objektorientierte Programmierung (OOP)

In der OOP wird nicht zuerst in einzelnen Befehlen gedacht, sondern in Objekten mit Zustand und Verhalten.

  • Zustand: Attribute (z. B. Kontostand, Radius, Name)
  • Verhalten: Methoden (z. B. einzahlen, zeichnen, berechneFlaeche)

Diese Denkweise ist fuer groessere Softwareprojekte hilfreich, weil sie Modelle aus der realen Welt oder aus einem fachlichen Problem direkt in Klassen und Objekte abbildet.

Deklarative Programmierung

Beim deklarativen Stil beschreibt man staerker welches Ergebnis gelten soll, nicht zwingend jeden Rechenschritt. Ein typisches Beispiel ist SQL: Man formuliert eine Abfragebedingung, der Datenbank-Interpreter bestimmt den konkreten Ausfuehrungsplan.

Mehrparadigmensprachen

Viele moderne Sprachen kombinieren mehrere Paradigmen. Python unterstuetzt z. B. objektorientierte, prozedurale und funktionale Programmierstile. Java ist vor allem imperativ und objektorientiert, bietet aber unter anderem mit Lambda-Ausdruecken und Streams auch funktionale Elemente. Im Unterricht wird Java hier bewusst verwendet, um objektorientiertes Denken systematisch zu lernen.

Warum in diesem Kurs Java?

Java ist fuer den Einstieg in OOP didaktisch stark, weil zentrale Konzepte klar sichtbar sind:

  • Klassen und Objekte sind explizit und nicht nur "nebenbei" vorhanden.
  • Statische Typisierung zwingt zu sauberen Schnittstellen.
  • Konstruktoren, Vererbung und Interfaces sind klar definiert.
  • Die Standardbibliothek ist gross und in der Praxis relevant.

Dazu kommt: Java-Programme sind durch die JVM plattformunabhaengig ausfuehrbar. Derselbe Bytecode kann auf verschiedenen Betriebssystemen laufen, solange eine passende Java-Laufzeit vorhanden ist.

JVM, JRE und JDK sauber unterscheiden

Ein zentraler Teil des Einfuehrungsblatts ist die technische Kette von Quelltext bis Ausfuehrung.

1. Compiler und Bytecode

Der Java-Quelltext (.java) wird mit javac in Bytecode (.class) uebersetzt.

2. Java Virtual Machine (JVM)

Die JVM fuehrt den Bytecode aus. Sie ist sozusagen die standardisierte Laufmaschine fuer Java-Programme.

3. Java Runtime Environment (JRE)

Die JRE enthaelt die JVM plus Standardbibliotheken zum Ausfuehren vorhandener Programme.

4. Java Development Kit (JDK)

Das JDK enthaelt alles fuer Entwickler:

  • Compiler (javac)
  • Laufzeitkomponenten
  • weitere Werkzeuge

Merksatz:

  • Nur ausfuehren: JRE reicht.
  • Selbst entwickeln: JDK ist notwendig.

Entwicklungsumgebung: Editor, IDE, BlueJ

Abbildung 1

Das Arbeitsblatt unterscheidet zwischen einfachem Editor und integrierter Entwicklungsumgebung (IDE).

  • Ein einfacher Editor verarbeitet nur Text.
  • Eine IDE unterstuetzt zusaetzlich bei Projektstruktur, Build, Fehleranalyse, Refactoring und Debugging.

Fuer den Einstieg in den Unterricht werden zwei Werkzeuge kombiniert:

  1. Eine vollstaendige IDE (z. B. NetBeans oder IntelliJ) fuer ernsthafte Projekte.
  2. BlueJ als didaktisches Tool, weil Klassen/Objekte dort sehr anschaulich sichtbar und direkt testbar sind.

Diese Kombination ist sinnvoll: BlueJ macht OOP-Konzepte greifbar, die IDE bereitet auf reale Entwicklungsarbeit vor.

Konkrete Installations-Checkliste

Die urspruengliche Aufgabenstellung fordert die Installation der benoetigten Werkzeuge. Praktisch gehst du so vor:

  1. Installiere ein aktuelles JDK (LTS-Version bevorzugen).
  2. Pruefe die Installation im Terminal:
java -version
javac -version
  1. Installiere eine IDE und lege ein erstes Java-Projekt an.
  2. Installiere BlueJ und oeffne ein kleines Klassenprojekt.
  3. Teste einen ersten Ablauf: Klasse erstellen, Objekt erzeugen, Methode aufrufen.

Wenn java oder javac nicht gefunden werden, ist meist der Pfad nicht korrekt gesetzt oder es ist nur eine Runtime ohne Compiler installiert.

Lernziele dieser Einheit

Aus dem Arbeitsblatt ergeben sich drei Ebenen von Lernzielen:

Sprachliche Ebene

  • Grundsyntax von Java
  • Datentypen, Kontrollstrukturen, Methoden
  • Klassenstruktur und Dateiaufbau

Modellierungs-Ebene

  • Fachliche Sachverhalte in Klassen abbilden
  • Zustaende und Verhalten sinnvoll trennen
  • Schnittstellen ueber Methoden gestalten

Algorithmische Ebene

  • Probleme in Teilprobleme zerlegen
  • loesungsorientierte Strategien entwickeln
  • Code schrittweise verbessern und testen

Wichtig: Gute Programmierung bedeutet nicht nur "Code zum Laufen bringen", sondern auch Lesbarkeit, Wartbarkeit und Nachvollziehbarkeit sicherstellen.

Typische Startfehler und wie man sie vermeidet

  1. JDK und JRE verwechselt Nur java funktioniert, javac fehlt.
  2. Projekt chaotisch angelegt Datei- und Klassennamen passen nicht zusammen.
  3. Zu frueh zu viel auf einmal Besser: kleine Klassen und kurze Methoden, dann schrittweise erweitern.
  4. OOP nur als Syntax gelernt Nicht nur class und new lernen, sondern wirklich modellieren: Welche Verantwortung hat welche Klasse?

Mini-Aufgaben zum Abschluss

  1. Erklaere in eigenen Worten den Unterschied zwischen JVM, JRE und JDK.
  2. Begruende, warum Java im Unterricht fuer OOP besonders geeignet ist.
  3. Lege in BlueJ eine Klasse Konto an und erzeuge zwei Objekte.
  4. Lege in einer IDE ein Projekt mit Main-Klasse an und gib "Hallo Java" aus.
  5. Notiere drei Regeln, die du bei allen folgenden Kapiteln einhalten willst (z. B. klare Methodennamen, kleine Methoden, saubere Tests).

Damit ist die Umgebung vorbereitet. In den naechsten Kapiteln wird diese Basis genutzt, um schrittweise von einfachen Klassen zu Vererbung, Polymorphie und groesseren Projekten zu kommen.

Vergleich der Paradigmen an einem Mini-Problem

Um die theoretischen Begriffe aus dem Arbeitsblatt greifbar zu machen, lohnt sich ein gemeinsames Problem in mehreren Denkweisen:

Problem: "Berechne aus einer Liste von Temperaturen den Durchschnitt und gib eine Warnung aus, wenn der Durchschnitt ueber 30 liegt."

Imperativ gedacht

  • Schleife ueber alle Werte
  • Summe bilden
  • durch Anzahl teilen
  • mit if vergleichen

Objektorientiert gedacht

  • Klasse Messreihe mit Attribut werte
  • Methode berechneDurchschnitt()
  • Methode istHitzewarnungNoetig()

Deklarativ gedacht

  • Bedingung formulieren statt Ablauf zu programmieren
  • z. B. als Datenbankabfrage oder Regelbeschreibung

Diese Gegenueberstellung zeigt: Das Problem ist gleich, die Modellierung unterscheidet sich. Genau deshalb ist die Paradigmenfrage im Einstieg nicht optional, sondern fachlich zentral.

Installationsfehler systematisch diagnostizieren

Bei der Einrichtung entstehen immer wieder dieselben Fehler. Statt einzelne Fehler nur zu "fixen", sollte eine feste Diagnoseroutine genutzt werden.

Schritt 1: Java-Compiler pruefen

javac -version

Wenn der Befehl nicht gefunden wird, ist entweder kein JDK installiert oder die PATH-Variable zeigt nicht auf die JDK-Binaries.

Schritt 2: Laufzeit pruefen

java -version

Wenn nur java funktioniert, aber nicht javac, ist haeufig nur eine Runtime vorhanden.

Schritt 3: IDE-Konfiguration pruefen

Viele IDEs verwenden ein intern konfiguriertes JDK. Selbst wenn der Terminal-Pfad stimmt, kann die IDE auf ein anderes oder nicht existentes JDK zeigen.

Schritt 4: Neues Minimalprojekt anlegen

  • neue Klasse Main
  • public static void main(String[] args)
  • Ausgabe System.out.println("Test")

Wenn dieses Minimalprojekt laeuft, sind Compilerkette und Projektaufbau grundsaetzlich korrekt.

BlueJ und IDE sinnvoll kombinieren

Das Arbeitsblatt nennt BlueJ explizit fuer den Einstieg. In der Praxis empfiehlt sich eine klare Arbeitsteilung:

  • BlueJ: OOP-Basiskonzepte, Objekterzeugung, interaktive Methodenaufrufe
  • IDE: Dateistruktur, groessere Projekte, Refactoring, Debugging

Eine sinnvolle Kursreihenfolge:

  1. Woche 1 bis 2: Schwerpunkt BlueJ
  2. Woche 3 bis 4: paralleles Arbeiten
  3. ab Woche 5: Schwerpunkt IDE, BlueJ nur noch punktuell

Damit geht die didaktische Anschaulichkeit nicht verloren, aber die Lernenden wechseln frueh genug in eine professionellere Umgebung.

Typische Begriffsverwechslungen im Einstieg

  1. JDK vs. JVM "Ich habe Java installiert" ist unpraezise. Korrekt ist: Laufzeit, Compiler und Werkzeuge unterscheiden.
  2. Klasse vs. Objekt Eine Klasse ist kein laufendes Programmobjekt. Erst new erzeugt Instanzen.
  3. Sprache vs. Werkzeug Java ist die Sprache. BlueJ/IntelliJ/NetBeans sind Werkzeuge zur Bearbeitung.
  4. Quelltext vs. Bytecode.java ist nicht direkt ausfuehrbar, sondern wird zu .class uebersetzt.

Kursstart mit klaren Standards

Schon im Einfuehrungskapitel sollten gemeinsame Standards gelten. Dadurch sinkt spaeter der Korrekturaufwand drastisch.

Standard 1: Dateinamen und Klassennamen passen zusammen

Konto.java enthaelt public class Konto.

Standard 2: Eine Klasse pro Datei

Gerade am Anfang verbessert das die Orientierung.

Standard 3: Kurze Methoden, klare Namen

Lieber berechneSumme als machWas.

Standard 4: Frueh testen

Jede neue Methode sofort mit einem kleinen Beispiel pruefen.

Standard 5: Fehlertexte lesen

Nicht nur "geht nicht", sondern Fehlermeldung, Zeile und Kontext auswerten.

Didaktischer 90-Minuten-Plan fuer dieses Kapitel

  1. 15 min: Paradigmenvergleich mit einem Problembeispiel
  2. 20 min: JVM/JRE/JDK visualisieren
  3. 20 min: Installation und erster Terminaltest
  4. 20 min: Erstes Mini-Projekt in IDE
  5. 15 min: Erstes Objekt in BlueJ erzeugen

Lernkontrolle am Ende:

  • Jeder kann den Unterschied von JVM/JRE/JDK erklaeren.
  • Jeder kann java -version und javac -version ausfuehren.
  • Jeder hat ein lauffaehiges Minimalprojekt.

Selbstkontrollfragen

  1. Warum ist Java trotz mehr Syntax fuer den Einstieg in OOP gut geeignet?
  2. Was fehlt, wenn nur java funktioniert, aber javac nicht?
  3. Warum ist ein Editor allein fuer groessere Projekte oft unpraktisch?
  4. Welche Rolle spielt die JVM fuer Plattformunabhaengigkeit?
  5. Welche Arbeitsschritte gehoeren in ein reproduzierbares Setup-Protokoll?

Transferaufgabe

Erstelle ein kurzes Setup-Dokument fuer eine andere Person im Kurs. Es soll enthalten:

  1. benoetigte Downloads
  2. Installationsreihenfolge
  3. Terminal-Checks
  4. erstes Testprojekt
  5. Fehlerbehebung fuer zwei typische Probleme

Wer das sauber dokumentieren kann, hat die eigene Umgebung wirklich verstanden.

Abschluss

Das Einfuehrungsarbeitsblatt ist nicht nur organisatorisch, sondern fachlich die Startbasis des gesamten Java-Teils. Die hier geklaerten Begriffe und Werkzeuge tauchen in jedem Folgekapitel wieder auf. Eine saubere Einrichtung spart nicht nur Zeit, sondern schafft die Voraussetzung fuer konzentriertes Arbeiten an OOP, Algorithmen und Projekten.

Kurzprojekt fuer die erste Woche

Arbeitsauftrag:

  1. Richte JDK und IDE ein.
  2. Dokumentiere jeden Schritt in einer eigenen Datei setup-protokoll.md.
  3. Erzeuge ein Mini-Projekt mit zwei Klassen (Main, Konto).
  4. Fuehre das Programm im Terminal und in der IDE aus.
  5. Notiere zwei Unterschiede zwischen beiden Ausfuehrungswegen.

Bewertung:

  • technische Reproduzierbarkeit
  • korrekte Begriffsverwendung (JDK/JRE/JVM)
  • nachvollziehbare Fehlerbehebung

Dieses Kurzprojekt macht aus der Installationsphase eine erste fachliche Leistung statt einer reinen Pflichtaufgabe.