{{indexmenu_n>1000}}
====== Přednášky ======
Podklady přednášek pro aktuální akademický rok 2023/2024. Podklady se skládají z promítaných slidů, které jsou také k dispozici ve zkrácených verzích šetřnějších k případnému tisku, bez přechodů mezi snímky a ve formátu čtyři snímky na stránku. K většině přednášek jsou k dispozici vide a komentovanými slidy. Tyto materiály nenahrazují přednášku, mohou být nedokonalé, zastaralé a nekompletní.
**Podklady tvoří podpůrný materiál a jejich učelem není nahradit vlastní zápisky z přednášky, které slouží také jako prostředek osvojení si studované problematiky.**
Podklady mohou být průběžné aktualizovány.
/*
Přednášky probíhají prostřednictvím kanálu na platfomě MS TEAMS v teamu předmětu [[https://teams.microsoft.com/l/channel/19%3ab8db29d1d757428583b10c9442e8ae2e%40thread.tacv2/Prednasky%2520(St%252012.45%2520-%252014.15)?groupId=70a03051-5e60-4fa6-a778-63e9fba90a12&tenantId=f345c406-5268-43b0-b19f-5862fa6833f8|zde]] minimálně první 4 týdny semestru (další dle vývoje situace).
*/
===== Harmonogram přednášek =====
^ Týden ^ Datum ^ Přednáška ^
| **1** | 18.2.2026 | [[courses:b0b36pjv:prednasky?uvod|01 - Úvod]] [Ladislav Serédi] |
| **2** | 25.2.2026 | [[courses:b0b36pjv:prednasky?objektove_orientovane_programovani|02 - Objektově orientované programování]] [Antonín Komenda] |
| **3** | 4.3.2026 | [[courses:b0b36pjv:prednasky?vyctove_typy_a_kolekce_v_jave_genericky_typ|03 - Výčtové typy a kolekce v Javě, generické typy]] [Ladislav Serédi]|
| **4** | 11.3.2026 | [[courses:b0b36pjv:prednasky?vyjimky_a_soubory|04 - Výjimky a soubory]] [Ladislav Serédi]|
| **5** | 18.3.2026 | [[courses:b0b36pjv:prednasky?vicevlaknove_aplikace_1|05 - Vícevláknové aplikace 1]] [Ladislav Serédi]|
| **6** | 25.3.2026 | [[courses:b0b36pjv:prednasky?gui|06 - GUI v Javě]] [Ladislav Serédi] [[https://seredlad.pages.fel.cvut.cz/slides/pjv.html?l6|Nová prezentace]]|
| **7** | 1.4.2026 | [[courses:b0b36pjv:prednasky?gui_v_jave_udalostmi_rizene_programovani|07 - GUI v Javě, událostmi řízené programování]] [Ladislav Serédi]|
| **8** | 8.4.2026 | [[courses:b0b36pjv:prednasky?vicevlaknove_aplikace_2|08 - Vícevláknové aplikace 2]] [Antonín Komenda]|
| **9** | 15.4.2026 | [[courses:b0b36pjv:prednasky?sokety_a_sitovani|09 - Sokety a síťování]] [Antonín Komenda]|
| **10** | 22.4.2026 | [[courses:b0b36pjv:prednasky?uklizeni_odpadku_a_analyza_uniku|10 - Uklízení odpadků a analýza úniku]] [Antonín Komenda] |
| **11** | 29.4.2026 | [[courses:b0b36pjv:prednasky?vykon_a_profilovani|11 - Výkon a profilování]] [Antonín Komenda] |
| **12** | 6.5.2026 | [[courses:b0b36pjv:prednasky?moderni_java|12 - "Moderní" Java]] [Marek Landa] |
| **13** | 13.5.2026 | Rektorský den |
| **14** | 20.5.2026 | [[courses:b0b36pjv:prednasky?samostudium_doplnujicich_materialu|Samostudium doplňujících materiálů]] |
/*
| **14** | 20.5.2020 | **Zkouškový test** {{ :courses:b0b36pjv:prednasky:instrukce.pptx | }}|
*/
===== 01 - Úvod =====
Organizace předmětu, Programovací jazyk Java, Úvod do objektově orientovaného modelování (analýzy a návrhu) a objektově orientovaného programování (OOP)
* [[https://seredlad.pages.fel.cvut.cz/slides/pjv.html?l1|prezentace]]
--- //Aktualizace 2026/03/15 21:19//
===== 02 - Objektově orientované programování =====
Objektově orientované programování. Immutable. Dědičnost, kompozice a polymorfismus. Dispatch a double dispatch.
* prezentace: {{:courses:b0b36pjv:prednasky:lecture02-slides.pdf|}} {{:courses:b0b36pjv:prednasky:lecture02Geom.pdf|}} {{:courses:b0b36pjv:prednasky:lecture02Matrix.pdf|}}
* zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture02-handout.pdf|}}
* zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture02-handout-2x2.pdf|}}
* přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:02.zip|}} {{:courses:b0b36pjv:prednasky:02GUI.zip|}} {{:courses:b0b36pjv:prednasky:02matrix.zip|}}
--- //Aktualizace 2019/02/25 12:50 -- úprava single-dispatch demonstračního příkladu//
===== 03 - Výčtové typy a kolekce v Javě, generický typ =====
Výčtové typy, kolekce, iterátor, JFC. Generické typy.
* [[https://seredlad.pages.fel.cvut.cz/slides/pjv.html?l3|prezentace]]
--- //Aktualizace 2026/3/4 11:11//
===== 04 - Výjimky a soubory =====
Výjimky. Soubory.
* [[https://seredlad.pages.fel.cvut.cz/slides/pjv.html?l4|prezentace]]
* starší komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1O17TGhPeZ0s6FzylYY2vMjFeRGIV64yo/view?usp=sharing|video lekce 4]]
--- //Aktualizace 2026/3/11 10:28//
===== 05 - Vícevláknové aplikace 1 =====
Paralelismus, synchronizace výpočetních toků, vícevláknové aplikace.
* prezentace: {{ :courses:b0b36pjv:prednasky:lecture-threads1-slides.pdf |}}
* zkrácená verze: {{ :courses:b0b36pjv:prednasky:lecture-threads1-handout.pdf |}}
* zkrácená verze 2x2: {{ :courses:b0b36pjv:prednasky:lecture-threads1-handout-2x2.pdf |}}
* přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:07.zip|}}
* komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1ctKA7kTnJNWfwY1PgXhJQ-c5oLsonWDG/view?usp=sharing|video lekce 7]]
--- //Aktualizace 2020/04/21 21:55 - přidáno video s komentovanou prezentací//
--- //Aktualizace 2025/03/25 10:32 - aktualizace slidů//
===== 06 - GUI =====
GUI v Javě, komponenty a kontejnery, dialogová okna (modalita).
* prezentace: {{:courses:b0b36pjv:prednasky:lecture05-slides.pdf|}}
* zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture05-handout.pdf|}}
* zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture05-handout-2x2.pdf|}}
* přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:05.zip|}}
* komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1Y0plTJ8ieO0g8_qL99Yqs74QSdmtopGD/view?usp=sharing|video lekce 5]]
--- //Aktualizace 2020/04/07 15:35 - přidáno video s komentovanou prezentací//
===== 07 - GUI v Javě, událostmi řízené programování =====
GUI v Javě, Model-View-Controller, Event-Driven Programming, vnitřní třídy.
* prezentace: {{:courses:b0b36pjv:prednasky:lecture06-slides.pdf|}}
* zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture06-handout.pdf|}}
* zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture06-handout-2x2.pdf|}}
* přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:06.zip|}}
* komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1hX7bgiJDLt1_m2ET0iISzcspAAD1gAzw/view?usp=sharing|video lekce 6]]
--- //Aktualizace 2020/04/10 17:02 - přidáno video s komentovanou prezentací//
===== 08 - Vícevláknové aplikace 2 =====
Vícevláknové aplikace - příklad GUI, vzor observer. Modely vícevláknových aplikací.
* prezentace: {{ :courses:b0b36pjv:prednasky:lecture-threads2-slides.pdf |}}
* zkrácená verze: {{ :courses:b0b36pjv:prednasky:lecture-threads2-handout.pdf |}}
* zkrácená verze 2x2: {{ :courses:b0b36pjv:prednasky:lecture-threads2-handout-2x2.pdf |}}
* přiložené demonstrační programy: {{ :courses:b0b36pjv:prednasky:lec08.zip |}} {{ :courses:b0b36pjv:prednasky:lec08-2026.zip |}}
* komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1pQ2ExOtwXdxb3lKFu7bUkEpwVAOQOmTr/view?usp=sharing|video lekce 8]]
--- //Aktualizace 2024/04/10 10:50 - přidán zjednodušený příklad CanvasDemo//
--- //Aktualizace 2025/04/11 11:07 - upravené slidy a demonstrační programy//
===== 09 - Sokety a síťování =====
Síťování, síťová API - soket, jednoduchý klient a server, boss/worker server/klient.
* prezentace: {{:courses:b0b36pjv:prednasky:lecture09-slides.pdf|}}
* zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture09-handout.pdf|}}
* zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture09-handout-2x2.pdf|}}
* přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:09.zip|}} {{ :courses:b0b36pjv:prednasky:09-2021.zip |}} {{ :courses:b0b36pjv:prednasky:lec09-2026.zip |}}
* komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1Z1d9Nct2Zj2m1Siryyn82eYXs1lILWQu/view?usp=sharing|video lekce 9]]
--- //Aktualizace 2020/05/12 19:48 - přidáno video s komentovanou prezentací//
--- //Aktualizace 2021/04/14 10:30 - přidány zjednodušené příklady//
===== 10 - Uklízení odpadků a analýza úniku =====
Správa paměti, Garbage Collection, Escape Analysis a alokace na stacku.
* prezentace: {{ :courses:b0b36pjv:prednasky:lec10-26.pdf |}}
* přiložené demonstrační programy: {{ :courses:b0b36pjv:prednasky:lec10-26.zip |}}
-- Aktualizace 2019/05/09 11:22 - drobné opravy textu
-- Aktualizace 2026/04/22 11:22 - přidání 2 slidů o referencích, nové demonstrační programy pro Javu 25
===== 11 - Výkon a profilování =====
Výkon aplikace, profilování, příklady.
* prezentace: {{ :courses:b0b36pjv:prednasky:performance-java.pdf |}}
* přiložené demonstrační programy: {{ :courses:b0b36pjv:prednasky:lec11-examples.zip |}}
-- Aktualizace 2019/05/09 11:22 - drobné opravy textu
-- Aktualizace 2026/04/21 11:22 - nová přednáška, nové příklady
===== 12 - "Moderní" JAVA =====
Lambda, Stream, Records, Pattern Matching, ... .
* prezentace: {{ :courses:b0b36pjv:prednasky:modern_java_2026.pdf |}}
* přiložené demonstrační programy: {{ :courses:b0b36pjv:modern-java-2026-demo.zip |}}
--- //Aktualizace 2026/05/13 11:22 - nová přednáška, nové příklady //
===== Samostudium doplňujících materiálů =====
[[https://www.youtube.com/watch?v=ADxUsCkWdbE|Concurrency Concepts in Java by Douglas Hawkins]]
* model paměti, vliv hardware
* chování vláken může být "zmatené"
* immutable objekty, atomicita
* relevantní k přednášce 5 a 8
[[https://www.youtube.com/watch?v=zdz_pf22nOI|Java Performance Puzzlers 2018 - New by Douglas Hawkins]]
* výkonnost programu
* zajímavé (a mnohdy neintuitivní) případy
* JIT a dynamická optimizace
* relevantní k přednášce 10 a 11
/*
===== Vyzvaná přednáška - Návrhové vzory v akci (Ing. Karel Čemus) =====
Učebnic návrhových vzorů je celá řada, avšak většina z nich se zaměřuje na teoretické vysvětlení konceptu, jeho demonstraci pomocí diagramu, případně AHA příkladu. Tato přednáška nemá za cíl důkladně vysvětlit konkrétní návrhové vzory, všechny jejich výhody a nevýhody, ani možné implementace. To si lze přečíst v knihách. Během přednášky společně navrhneme architekturu jednoduché aplikace Piškvorky, na které si demonstrujeme praktické využití návrhových vzorů. Ukážeme si, proč je dobré je ovládat a jak nám to může pomoci při řešení reálných problémů. Seznámíme se i s využitím několika často používaných vzorů a zjistíme, že většina běžných problémů má již kvalitní a ověřené řešení.
*/
/*===== Vyzvaná přednáška - Funkcionální prvky Java 8 =====
* Presentace [[https://docs.google.com/presentation/d/1lxA2dVTGzLshzVW2BcxqTu8T4RJILYhJDa4RfNQktsc/edit?usp=sharing|Google Slides]]
* Zdrojové kódy [[https://gitlab.fel.cvut.cz/hrstkon1/java8-lecture.git|Git Repo]]
*/
Podklady budou průběžné aktualizovány