Návrh Školení
Úvod do Java
- Historie a vývoj Java
- Přehled Java verzí a aktualizací
- Co je nového v Java 17
- Nastavení Java Development Kit (JDK 17) a IDE
Java Struktura programu
- Psaní jednoduchého Java programu
- Java přehled syntaxe
- Kompilace a spouštění Java aplikací
Datové typy a proměnné
- Primitivní datové typy a obalové třídy
- Deklarování proměnných a konstant
- Typová konverze a odlévání
Operátoři v Java
- Aritmetické, relační, logické a bitové operátory
- Přednost a asociativita operátorů
Výkazy kontrolního toku
- Podmíněné příkazy (if-else, switch)
- Opakování konstrukcí (for, while, do-while)
- Vylepšené výrazy přepínačů (funkce Java 17)
Úvod do konceptů OOP
- Třídy a objekty
- Zapouzdření, dědičnost, polymorfismus a abstrakce
Vytváření tříd a objektů
- Deklarace a inicializace objektů
- Toto klíčové slovo
- Konstruktory (výchozí a parametrizované)
Dědictví
- Rozšíření tříd (rozšíří klíčové slovo)
- Přepsání metody a super klíčové slovo
- Abstraktní třídy a metody
Polymorfismus
- Polymorfismus v době kompilace vs
- Přetěžování a přepisování metody
Rozhraní
- Definování a implementace rozhraní
- Funkční rozhraní a výchozí metody
Záznamové třídy (funkce Java 17)
- Porozumění záznamům v Java 17
- Jak záznamy zjednodušují zapouzdření dat
Generika v Java
- Pochopení parametrů typu
- Obecné třídy, metody a rozhraní
- Ohraničené typy a zástupné znaky
Zpracování výjimek
- Typy výjimek (zaškrtnuté a nezaškrtnuté)
- Zkuste-chytit-konečně bloky
- Házení a chytání výjimek
- Vytváření vlastních výjimek
Java Collections Framework
- Rozhraní seznamu, nastavení, mapy a fronty
- Populární implementace: ArrayList, HashMap, HashSet
- Iterátory a vylepšené smyčky for
Lambda Expressionty a funkční Programming
- Úvod do lambda výrazů
- Syntaxe a použití
- Funkční rozhraní
Stream API
- Přehled Java Streamů
- Streamové operace (filtrování, mapování, redukce)
- Paralelní proudy a aspekty výkonu
Uzavřené třídy
- Definování a používání uzavřených tříd
- Povolené podtřídy a omezení
Shoda vzoru pro instanceof (Java 17 funkce)
- Zjednodušení typových kontrol pomocí shody vzorů
Textové bloky
- Práce s víceřádkovými textovými bloky v Java
- Srovnání s tradiční manipulací se strunou
Vylepšení záznamů a serializace
- Serializace a zpětná kompatibilita
- Jak záznamy zlepšují čitelnost kódu a údržbu
Ukončení podpory a odstranění funkcí
- Zastaralá API v Java 17
- Odstranění zastaralých funkcí
Switch Expression Enhancements
- Shoda vzoru ve spínači
- Použití výrazů přepínače pro čistší kód
Foreign Function & Memory API (Inkubátor)
- Přehled modulu inkubátoru
- Práce s nativním kódem v Java
Java Modulový systém (skládačka projektu)
- Úvod do modulů v Java
- Vytváření a používání modulů
- Deskriptory modulů a module-info.java
- Výhody modularizace
Souběžnost a vícevláknové zpracování
- Úvod do vláken a multithreadingu
- Runnable interface a Callable interface
- Synchronizace, zámky a bezpečnost vláken
Asynchronní Programming s CompetableFuture
- Psaní asynchronního kódu
- Použití CompetableFuture pro neblokující operace
Nasazování Java aplikací
- Vytváření a spouštění souborů JAR
- Balení a distribuce Java aplikací
- Úvod do GraalVM (volitelné)
Nejlepší postupy a optimalizace kódu
- Psaní efektivního a udržovatelného Java kódu
- Běžná výkonnostní úskalí a jak se jim vyhnout
- Techniky refaktorování kódu
Shrnutí a další kroky
Požadavky
- Základní znalosti v programování
Publikum
- Vývojáři softwaru
- Programátoři