Java: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
imported>Import
Version 171
Keine Bearbeitungszusammenfassung
 
Zeile 2: Zeile 2:
----
----


== Weblink ==
==Weblink==
 
* Tim Buchalka Java Masterclass 2025
* Tim Buchalka Java Masterclass 2025
* Christian Ullenboom Der moderne Java-Kurs
* Christian Ullenboom Der moderne Java-Kurs
* Denis Panjuta 60 Days of Java
* Denis Panjuta 60 Days of Java
 
===Spring boot===
=== Spring boot ===
* Chad Darby: „Spring Boot 4, Spring 7 & Hibernate for Beginners“.
 
* in28Minutes (Ranga Karanam): „ Master Spring Boot 3 & Spring Framework 6 with Java
* Chad Darby: „Spring Boot 4, Spring 7 & Hibernate for Beginners“.
* in28Minutes (Ranga Karanam): „ Master Spring Boot 3 & Spring Framework 6 with Java
* Navin Reddy (Telusko): „Java Spring Framework, Spring Boot, Spring AI - Gen AI
* Navin Reddy (Telusko): „Java Spring Framework, Spring Boot, Spring AI - Gen AI
* Christian Ullenboom: „Spring Boot 3 & Spring Framework 6: GRUNDLAGEN“.
* Christian Ullenboom: „Spring Boot 3 & Spring Framework 6: GRUNDLAGEN“.
* [NEW] Spring Boot 4, Spring Framework 7: Beginner to Guru
* [NEW] Spring Boot 4, Spring Framework 7: Beginner to Guru


Dieser Plan bietet eine strukturierte Herangehensweise, um Java von den Grundlagen bis hin zu fortgeschrittenen Themen und Frameworks zu meistern. Er teilt das Lernen in verschiedene Phasen mit geschätztem Zeitaufwand auf.
Dieser Plan bietet eine strukturierte Herangehensweise, um Java von den Grundlagen bis hin zu fortgeschrittenen Themen und Frameworks zu meistern. Er teilt das Lernen in verschiedene Phasen mit geschätztem Zeitaufwand auf.


== Phase 1: Grundlagen der Java-Programmierung ==
== Phase 1: Grundlagen der Java-Programmierung ==
 
'''Dauer:''' ca. 2-3 Wochen
'''Dauer:''' ca. 2-3 Wochen '''Ziel:''' Die Basis-Konzepte der Programmierung und die Syntax von Java verstehen.
'''Ziel:''' Die Basis-Konzepte der Programmierung und die Syntax von Java verstehen.


* '''Woche 1: Einführung und Basis-Syntax'''
* '''Woche 1: Einführung und Basis-Syntax'''
** Installation des JDKs (Java Development Kit) und einer IDE (IntelliJ IDEA, Eclipse oder VS Code).
** Installation des JDKs (Java Development Kit) und einer IDE (IntelliJ IDEA, Eclipse oder VS Code).
** Verstehen des Konzepts: Code schreiben, kompilieren (`javac`) und ausführen (`java`).
** Verstehen des Konzepts: Code schreiben, kompilieren (`javac`) und ausführen (`java`).
** Datentypen (primitiv vs. Referenz), Variablen und Konstanten.
** Datentypen (primitiv vs. Referenz), Variablen und Konstanten.
** Operatoren (arithmetisch, relational, logisch).
** Operatoren (arithmetisch, relational, logisch).
** Kontrollstrukturen: Verzweigungen (`if`, `else`, `switch`).
** Kontrollstrukturen: Verzweigungen (`if`, `else`, `switch`).
** Schleifen (`for`, `while`, `do-while`).
** Schleifen (`for`, `while`, `do-while`).


<!-- -->
* '''Woche 2-3: Arrays, Strings und erste Methoden'''
* '''Woche 2-3: Arrays, Strings und erste Methoden'''
** Definition, Initialisierung und Iteration über eindimensionale und mehrdimensionale Arrays.
** Definition, Initialisierung und Iteration über eindimensionale und mehrdimensionale Arrays.
** Die `String`-Klasse und grundlegende String-Manipulationen.
** Die `String`-Klasse und grundlegende String-Manipulationen.
** Methoden definieren, Parameterübergabe, Rückgabetypen.
** Methoden definieren, Parameterübergabe, Rückgabetypen.
** Lokaler Scope vs. globaler Scope.
** Lokaler Scope vs. globaler Scope.


== Phase 2: Objektorientierte Programmierung (OOP) ==
== Phase 2: Objektorientierte Programmierung (OOP) ==
 
'''Dauer:''' ca. 3-4 Wochen
'''Dauer:''' ca. 3-4 Wochen '''Ziel:''' In Objekten denken lernen und die vier Kernprinzipien der OOP anwenden.
'''Ziel:''' In Objekten denken lernen und die vier Kernprinzipien der OOP anwenden.


* '''Kernkonzepte:'''
* '''Kernkonzepte:'''
Zeile 51: Zeile 48:


== Phase 3: Fortgeschrittene Kernkonzepte (Core Java) ==
== Phase 3: Fortgeschrittene Kernkonzepte (Core Java) ==
 
'''Dauer:''' ca. 4 Wochen
'''Dauer:''' ca. 4 Wochen '''Ziel:''' Robusten, sicheren und effizienten Code schreiben und Standardbibliotheken nutzen.
'''Ziel:''' Robusten, sicheren und effizienten Code schreiben und Standardbibliotheken nutzen.


* '''Woche 1: Exception Handling und Enums'''
* '''Woche 1: Exception Handling und Enums'''
** Checked vs. Unchecked Exceptions, `Error`.
** Checked vs. Unchecked Exceptions, `Error`.
** `try`, `catch`, `finally`, `throw` und `throws`.
** `try`, `catch`, `finally`, `throw` und `throws`.
** Eigene Exception-Klassen schreiben (Custom Exceptions).
** Eigene Exception-Klassen schreiben (Custom Exceptions).
** Enums (Aufzählungstypen).
** Enums (Aufzählungstypen).


<!-- -->
* '''Woche 2: Generics und Java Collections Framework'''
* '''Woche 2: Generics und Java Collections Framework'''
** Arbeiten mit Generics zur Typensicherheit.
** Arbeiten mit Generics zur Typensicherheit.
Zeile 68: Zeile 64:
** Iteratoren und die `for-each`-Schleife.
** Iteratoren und die `for-each`-Schleife.


<!-- -->
* '''Woche 3: Dateiverarbeitung (File I/O)'''
* '''Woche 3: Dateiverarbeitung (File I/O)'''
** Lesen und Schreiben von Textdateien (`FileReader`, `FileWriter`, `BufferedReader`, `BufferedWriter`).
** Lesen und Schreiben von Textdateien (`FileReader`, `FileWriter`, `BufferedReader`, `BufferedWriter`).
Zeile 74: Zeile 69:
** Serialisierung von Objekten.
** Serialisierung von Objekten.


<!-- -->
* '''Woche 4: Moderne Java-Features (ab Java 8)'''
* '''Woche 4: Moderne Java-Features (ab Java 8)'''
** Lambda-Ausdrücke und Funktionale Interfaces (z.B. `Predicate`, `Function`, `Consumer`, `Supplier`).
** Lambda-Ausdrücke und Funktionale Interfaces (z.B. `Predicate`, `Function`, `Consumer`, `Supplier`).
Zeile 82: Zeile 76:


== Phase 4: Architektur, Tools und Werkzeuge ==
== Phase 4: Architektur, Tools und Werkzeuge ==
 
'''Dauer:''' ca. 2-3 Wochen
'''Dauer:''' ca. 2-3 Wochen '''Ziel:''' Professionelle Software-Entwicklung in Java erlernen.
'''Ziel:''' Professionelle Software-Entwicklung in Java erlernen.


* '''Build-Tools und Abhängigkeitsverwaltung:'''
* '''Build-Tools und Abhängigkeitsverwaltung:'''
Zeile 89: Zeile 83:
** Verstehen des Build-Lifecycles (Compile, Test, Package).
** Verstehen des Build-Lifecycles (Compile, Test, Package).


<!-- -->
* '''Testen (TDD - Test Driven Development):'''
* '''Testen (TDD - Test Driven Development):'''
** Unit-Tests schreiben mit JUnit 5.
** Unit-Tests schreiben mit JUnit 5.
** Mocking von Abhängigkeiten mit Mockito.
** Mocking von Abhängigkeiten mit Mockito.


<!-- -->
* '''Versionskontrolle:'''
* '''Versionskontrolle:'''
** Grundlagen und Best Practices in Git und GitHub/GitLab.
** Grundlagen und Best Practices in Git und GitHub/GitLab.


== Phase 5: Nebenläufigkeit (Concurrency) ==
== Phase 5: Nebenläufigkeit (Concurrency) ==
 
'''Dauer:''' ca. 2 Wochen
'''Dauer:''' ca. 2 Wochen '''Ziel:''' Programme schreiben, die mehrere Aufgaben parallel und sicher ausführen.
'''Ziel:''' Programme schreiben, die mehrere Aufgaben parallel und sicher ausführen.


* '''Grundlagen:'''
* '''Grundlagen:'''
** Der Lifecycle von Threads.
** Der Lifecycle von Threads.
** Erstellen von Threads (`Thread`-Klasse vs. `Runnable`-Interface).
** Erstellen von Threads (`Thread`-Klasse vs. `Runnable`-Interface).
** Synchronisation, Race Conditions, Deadlocks vermeiden.
** Synchronisation, Race Conditions, Deadlocks vermeiden.
** Das Schlüsselwort `volatile` und atomare Datentypen.
** Das Schlüsselwort `volatile` und atomare Datentypen.


<!-- -->
* '''Fortgeschrittene Konzepte (Concurrency Utilities):'''
* '''Fortgeschrittene Konzepte (Concurrency Utilities):'''
** Executor Framework und Thread-Pools.
** Executor Framework und Thread-Pools.
Zeile 115: Zeile 106:


== Phase 6: Frameworks und Enterprise Java (Optional, je nach Interesse) ==
== Phase 6: Frameworks und Enterprise Java (Optional, je nach Interesse) ==
 
'''Dauer:''' fortlaufend
'''Dauer:''' fortlaufend '''Ziel:''' Einsatz von Java im produktiven Backend-Umfeld erlernen.
'''Ziel:''' Einsatz von Java im produktiven Backend-Umfeld erlernen.


* '''Das Spring Ökosystem:'''
* '''Das Spring Ökosystem:'''
Zeile 130: Zeile 121:
Um das Gelernte zu festigen, ist die Umsetzung eigener Projekte entscheidend. Theorie allein reicht nicht aus!
Um das Gelernte zu festigen, ist die Umsetzung eigener Projekte entscheidend. Theorie allein reicht nicht aus!


# '''Meilenstein 1 (Nach Phase 1 &amp; 2):''' Ein textbasiertes Spiel (z.B. Tic-Tac-Toe, Schiffe versenken, Hangman) oder ein Konsolen-Taschenrechner mit sauberem OOP-Ansatz.
# '''Meilenstein 1 (Nach Phase 1 & 2):''' Ein textbasiertes Spiel (z.B. Tic-Tac-Toe, Schiffe versenken, Hangman) oder ein Konsolen-Taschenrechner mit sauberem OOP-Ansatz.
# '''Meilenstein 2 (Nach Phase 3):''' Ein Kontakt-Manager oder eine kleine Bibliothekverwaltung als Kommandozeilenanwendung. Daten sollen in einer Datei (`.txt` oder `.csv`) gespeichert und wiederhergestellt werden. Nutze das Collections-Framework für die Datenverwaltung im Speicher.
# '''Meilenstein 2 (Nach Phase 3):''' Ein Kontakt-Manager oder eine kleine Bibliothekverwaltung als Kommandozeilenanwendung. Daten sollen in einer Datei (`.txt` oder `.csv`) gespeichert und wiederhergestellt werden. Nutze das Collections-Framework für die Datenverwaltung im Speicher.
# '''Meilenstein 3 (Nach Phase 4 &amp; 5):''' Ein Multithreaded-Webscraper oder ein kleines Chat-Client-/Server-System mit Java Sockets. Wichtig: Die Kernlogik sollte mit JUnit-Tests abgesichert sein. Nutze Maven/Gradle als Build-Tool.
# '''Meilenstein 3 (Nach Phase 4 & 5):''' Ein Multithreaded-Webscraper oder ein kleines Chat-Client-/Server-System mit Java Sockets. Wichtig: Die Kernlogik sollte mit JUnit-Tests abgesichert sein. Nutze Maven/Gradle als Build-Tool.
# '''Meilenstein 4 (Nach Phase 6):''' Eine REST-API (z.B. ein Backend für eine To-Do-Liste oder einen Blog) mit Spring Boot inklusive Datenbankanbindung (H2 oder PostgreSQL) und Absicherung der Endpunkte mit Spring Security.
# '''Meilenstein 4 (Nach Phase 6):''' Eine REST-API (z.B. ein Backend für eine To-Do-Liste oder einen Blog) mit Spring Boot inklusive Datenbankanbindung (H2 oder PostgreSQL) und Absicherung der Endpunkte mit Spring Security.


== Ressourcen und Links ==
== Ressourcen und Links ==
* '''Offizielle Dokumentation:''' [https://docs.oracle.com/en/java/javase/ Oracle Java Documentation / Tutorials]
* '''Offizielle Dokumentation:''' [https://docs.oracle.com/en/java/javase/ Oracle Java Documentation / Tutorials]
* '''Bücher:'''
* '''Bücher:'''  
** “Java ist auch eine Insel” (Deutsch, hervorragend als umfassendes Nachschlagewerk).
** "Java ist auch eine Insel" (Deutsch, hervorragend als umfassendes Nachschlagewerk).
** “Effective Java” von Joshua Bloch (Englisch, ein Muss, wenn die Grundlagen sitzen!).
** "Effective Java" von Joshua Bloch (Englisch, ein Muss, wenn die Grundlagen sitzen!).
* '''Plattformen für kleine Programmieraufgaben (Katas):''' HackerRank, LeetCode, Codewars.
* '''Plattformen für kleine Programmieraufgaben (Katas):''' HackerRank, LeetCode, Codewars.
* '''Interaktive Kurse:''' Codecademy, Udemy, Pluralsight, JetBrains Academy (Hyperskill).
* '''Interaktive Kurse:''' Codecademy, Udemy, Pluralsight, JetBrains Academy (Hyperskill).

Aktuelle Version vom 3. März 2026, 18:41 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).


  • Tim Buchalka Java Masterclass 2025
  • Christian Ullenboom Der moderne Java-Kurs
  • Denis Panjuta 60 Days of Java

Spring boot

  • Chad Darby: „Spring Boot 4, Spring 7 & Hibernate for Beginners“.
  • in28Minutes (Ranga Karanam): „ Master Spring Boot 3 & Spring Framework 6 with Java
  • Navin Reddy (Telusko): „Java Spring Framework, Spring Boot, Spring AI - Gen AI
  • Christian Ullenboom: „Spring Boot 3 & Spring Framework 6: GRUNDLAGEN“.
  • [NEW] Spring Boot 4, Spring Framework 7: Beginner to Guru


Dieser Plan bietet eine strukturierte Herangehensweise, um Java von den Grundlagen bis hin zu fortgeschrittenen Themen und Frameworks zu meistern. Er teilt das Lernen in verschiedene Phasen mit geschätztem Zeitaufwand auf.

Phase 1: Grundlagen der Java-Programmierung

Dauer: ca. 2-3 Wochen Ziel: Die Basis-Konzepte der Programmierung und die Syntax von Java verstehen.

  • Woche 1: Einführung und Basis-Syntax
    • Installation des JDKs (Java Development Kit) und einer IDE (IntelliJ IDEA, Eclipse oder VS Code).
    • Verstehen des Konzepts: Code schreiben, kompilieren (`javac`) und ausführen (`java`).
    • Datentypen (primitiv vs. Referenz), Variablen und Konstanten.
    • Operatoren (arithmetisch, relational, logisch).
    • Kontrollstrukturen: Verzweigungen (`if`, `else`, `switch`).
    • Schleifen (`for`, `while`, `do-while`).
  • Woche 2-3: Arrays, Strings und erste Methoden
    • Definition, Initialisierung und Iteration über eindimensionale und mehrdimensionale Arrays.
    • Die `String`-Klasse und grundlegende String-Manipulationen.
    • Methoden definieren, Parameterübergabe, Rückgabetypen.
    • Lokaler Scope vs. globaler Scope.

Phase 2: Objektorientierte Programmierung (OOP)

Dauer: ca. 3-4 Wochen Ziel: In Objekten denken lernen und die vier Kernprinzipien der OOP anwenden.

  • Kernkonzepte:
    • Klassen und Objekte erstellen.
    • Konstruktoren und das Schlüsselwort `this`.
    • Kapselung (Encapsulation): Getter, Setter und Zugriffsmodifikatoren (`public`, `private`, `protected`).
    • Vererbung (Inheritance): Schlüsselwörter `extends` und `super`.
    • Polymorphie (Polymorphism): Methoden überladen (Overloading) und überschreiben (Overriding).
    • Abstraktion: Abstrakte Klassen und das Schlüsselwort `abstract`.
    • Interfaces: Definition, Implementierung (`implements`) und Default-Methoden.

Phase 3: Fortgeschrittene Kernkonzepte (Core Java)

Dauer: ca. 4 Wochen Ziel: Robusten, sicheren und effizienten Code schreiben und Standardbibliotheken nutzen.

  • Woche 1: Exception Handling und Enums
    • Checked vs. Unchecked Exceptions, `Error`.
    • `try`, `catch`, `finally`, `throw` und `throws`.
    • Eigene Exception-Klassen schreiben (Custom Exceptions).
    • Enums (Aufzählungstypen).
  • Woche 2: Generics und Java Collections Framework
    • Arbeiten mit Generics zur Typensicherheit.
    • Listen: `ArrayList`, `LinkedList`.
    • Sets: `HashSet`, `TreeSet`.
    • Maps: `HashMap`, `TreeMap`.
    • Iteratoren und die `for-each`-Schleife.
  • Woche 3: Dateiverarbeitung (File I/O)
    • Lesen und Schreiben von Textdateien (`FileReader`, `FileWriter`, `BufferedReader`, `BufferedWriter`).
    • Einführung in die NIO.2 API (Klassen `Path`, `Paths`, `Files`).
    • Serialisierung von Objekten.
  • Woche 4: Moderne Java-Features (ab Java 8)
    • Lambda-Ausdrücke und Funktionale Interfaces (z.B. `Predicate`, `Function`, `Consumer`, `Supplier`).
    • Die Stream API zum Filtern, Mappen und Reduzieren von Collections.
    • Das `Optional`-Konstrukt zur Vermeidung von `NullPointerException`s proaktiv einsetzen.
    • Die Date/Time API (`java.time`).

Phase 4: Architektur, Tools und Werkzeuge

Dauer: ca. 2-3 Wochen Ziel: Professionelle Software-Entwicklung in Java erlernen.

  • Build-Tools und Abhängigkeitsverwaltung:
    • Einführung in Maven und/oder Gradle (`pom.xml` bzw. `build.gradle`).
    • Verstehen des Build-Lifecycles (Compile, Test, Package).
  • Testen (TDD - Test Driven Development):
    • Unit-Tests schreiben mit JUnit 5.
    • Mocking von Abhängigkeiten mit Mockito.
  • Versionskontrolle:
    • Grundlagen und Best Practices in Git und GitHub/GitLab.

Phase 5: Nebenläufigkeit (Concurrency)

Dauer: ca. 2 Wochen Ziel: Programme schreiben, die mehrere Aufgaben parallel und sicher ausführen.

  • Grundlagen:
    • Der Lifecycle von Threads.
    • Erstellen von Threads (`Thread`-Klasse vs. `Runnable`-Interface).
    • Synchronisation, Race Conditions, Deadlocks vermeiden.
    • Das Schlüsselwort `volatile` und atomare Datentypen.
  • Fortgeschrittene Konzepte (Concurrency Utilities):
    • Executor Framework und Thread-Pools.
    • `Callable` und `Future`.
    • `ForkJoinPool` und parallele Streams.

Phase 6: Frameworks und Enterprise Java (Optional, je nach Interesse)

Dauer: fortlaufend Ziel: Einsatz von Java im produktiven Backend-Umfeld erlernen.

  • Das Spring Ökosystem:
    • Dependency Injection (DI) und Inversion of Control (IoC).
    • Spring Boot für schnelle Applikationsentwicklung ohne komplexe Konfiguration.
    • Spring Data JPA (Integration von Hibernate für die Datenbankanbindung).
    • Spring Web für die Entwicklung von RESTful APIs.
  • Microservices: Architekturmuster kennenlernen, Grundkonzepte von Docker.
  • Alternative Frameworks: Quarkus oder Micronaut (besonders für Cloud-Native-Ansätze interessant).

Projekt-Meilensteine zur praktischen Anwendung

Um das Gelernte zu festigen, ist die Umsetzung eigener Projekte entscheidend. Theorie allein reicht nicht aus!

  1. Meilenstein 1 (Nach Phase 1 & 2): Ein textbasiertes Spiel (z.B. Tic-Tac-Toe, Schiffe versenken, Hangman) oder ein Konsolen-Taschenrechner mit sauberem OOP-Ansatz.
  2. Meilenstein 2 (Nach Phase 3): Ein Kontakt-Manager oder eine kleine Bibliothekverwaltung als Kommandozeilenanwendung. Daten sollen in einer Datei (`.txt` oder `.csv`) gespeichert und wiederhergestellt werden. Nutze das Collections-Framework für die Datenverwaltung im Speicher.
  3. Meilenstein 3 (Nach Phase 4 & 5): Ein Multithreaded-Webscraper oder ein kleines Chat-Client-/Server-System mit Java Sockets. Wichtig: Die Kernlogik sollte mit JUnit-Tests abgesichert sein. Nutze Maven/Gradle als Build-Tool.
  4. Meilenstein 4 (Nach Phase 6): Eine REST-API (z.B. ein Backend für eine To-Do-Liste oder einen Blog) mit Spring Boot inklusive Datenbankanbindung (H2 oder PostgreSQL) und Absicherung der Endpunkte mit Spring Security.
  • Offizielle Dokumentation: Oracle Java Documentation / Tutorials
  • Bücher:
    • "Java ist auch eine Insel" (Deutsch, hervorragend als umfassendes Nachschlagewerk).
    • "Effective Java" von Joshua Bloch (Englisch, ein Muss, wenn die Grundlagen sitzen!).
  • Plattformen für kleine Programmieraufgaben (Katas): HackerRank, LeetCode, Codewars.
  • Interaktive Kurse: Codecademy, Udemy, Pluralsight, JetBrains Academy (Hyperskill).

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).