Schulungsübersicht
Einführung in Java
- Geschichte und Entwicklung von Java
- Überblick über die Java-Versionen und Aktualisierungen
- Was ist neu in Java 17
- Einrichten von Java Development Kit (JDK 17) und IDE
Java Programm-Struktur
- Schreiben eines einfachen Java Programms
- Java Überblick über die Syntax
- Kompilieren und Ausführen von Java Anwendungen
Datentypen und Variablen
- Primitive Datentypen und Wrapper-Klassen
- Deklaration von Variablen und Konstanten
- Typkonvertierung und Casting
Operatoren in Java
- Arithmetische, relationale, logische und bitweise Operatoren
- Vorrang und Assoziativität von Operatoren
Kontrollfluss-Anweisungen
- Bedingte Anweisungen (if-else, switch)
- Schleifenkonstrukte (for, while, do-while)
- Erweiterte Switch-Ausdrücke (Java 17 Feature)
Einführung in OOP-Konzepte
- Klassen und Objekte
- Kapselung, Vererbung, Polymorphismus und Abstraktion
Erstellen von Klassen und Objekten
- Deklarieren und Initialisieren von Objekten
- Das this-Schlüsselwort
- Konstruktoren (Standard und parametrisiert)
Vererbung
- Erweitern von Klassen (extends-Schlüsselwort)
- Methodenüberschreibung und das Schlüsselwort super
- Abstrakte Klassen und Methoden
Polymorphie
- Polymorphismus zur Kompilierzeit vs. zur Laufzeit
- Methodenüberladung und Overriding
Schnittstellen
- Definition und Implementierung von Schnittstellen
- Funktionale Schnittstellen und Standardmethoden
Record-Klassen (Java 17 Feature)
- Das Verständnis von Datensätzen in Java 17
- Wie Records die Datenkapselung vereinfachen
Generika in Java
- Verstehen von Typparametern
- Generische Klassen, Methoden und Schnittstellen
- Begrenzte Typen und Wildcards
Behandlung von Ausnahmen
- Arten von Ausnahmen (geprüft und ungeprüft)
- Try-catch-finally-Blöcke
- Werfen und Abfangen von Ausnahmen
- Erstellen eigener Ausnahmen
Java Sammlungen Framework
- Die Schnittstellen List, Set, Map und Queue
- Beliebte Implementierungen: ArrayList, HashMap, HashSet
- Iteratoren und erweiterte for-Schleifen
Lambda Expressions und Funktional Programming
- Einführung in Lambda-Ausdrücke
- Syntax und Verwendung
- Funktionale Schnittstellen
Stream-API
- Überblick über Java Streams
- Stream-Operationen (Filtern, Zuordnen, Reduzieren)
- Parallele Streams und Leistungsüberlegungen
Sealed Classes
- Definieren und Verwenden von versiegelten Klassen
- Erlaubte Unterklassen und Einschränkungen
Musterübereinstimmung für instanceof (Java 17 Feature)
- Vereinfachung von Typüberprüfungen mit Pattern Matching
Textblöcke
- Arbeiten mit mehrzeiligen Textblöcken in Java
- Vergleich mit traditioneller String-Behandlung
Datensätze und Serialisierung Verbesserungen
- Serialisierung und Abwärtskompatibilität
- Wie Datensätze die Lesbarkeit des Codes und die Wartung verbessern
Auslaufende Funktionen und deren Entfernung
- Ausgefallene APIs in Java 17
- Entfernung veralteter Funktionen
Switch Expression Erweiterungen
- Mustervergleich in switch
- Verwendung von switch-Ausdrücken für saubereren Code
Fremde Funktion & Speicher-API (Inkubator)
- Überblick über das Incubator-Modul
- Arbeiten mit nativem Code in Java
Java Modulsystem (Projekt Jigsaw)
- Einführung in Module in Java
- Erstellen und Verwenden von Modulen
- Moduldeskriptoren und module-info.java
- Vorteile der Modularisierung
Gleichzeitigkeit und Multithreading
- Einführung in Threads und Multithreading
- Runnable-Schnittstelle und Callable-Schnittstelle
- Synchronisierung, Sperren und Thread-Sicherheit
Asynchron Programming mit CompetableFuture
- Schreiben von asynchronem Code
- Verwendung von CompetableFuture für nicht-blockierende Operationen
Bereitstellen von Java Anwendungen
- Erstellen und Ausführen von JAR-Dateien
- Verpacken und Verteilen von Java-Anwendungen
- Einführung in GraalVM (optional)
Best Practices und Code-Optimierung
- Schreiben von effizientem und wartbarem Java Code
- Häufige Performance-Fallen und wie man sie vermeidet
- Code-Refactoring-Techniken
Zusammenfassung und nächste Schritte
Voraussetzungen
- Grundkenntnisse in der Programmierung
Zielgruppe
- Software-Entwickler
- Programmierer