Přehled studia |
Přehled oborů |
Všechny skupiny předmětů |
Všechny předměty |
Seznam rolí |
Vysvětlivky
Návod
B6B36PJV |
Programování v JAVA |
Role: | |
Rozsah výuky: | 2P+3C+2D |
Katedra: | 13136 |
Jazyk výuky: | |
Garanti: | |
Zakončení: | Z,ZK |
Přednášející: | |
Kreditů: | 6 |
Cvičící: | |
Semestr: | L |
Anotace:
Předmět navazuje na základy algoritmizace a programování z prvního semestru a uvádí studenty do prostředí Java. Na prvních přednáškách budou studenti seznámeni se základní koncepcí Java a virtuálního stroje JVM, strukturou programu, způsobech kompilace do byte kódu a mechanismy jeho spouštění spolu s předáváním parametrů. V dalších přednáškách bude představena syntaxe a základní knihovní metody, práce se soubory a použití generických typů. Druhá polovina semestru bude věnována síťovému rozhraní, modelům vícevláknových aplikací, jejich implementaci a přehledu tvorby grafického uživatelského rozhraní. V závěru semestru bude představen koncept distribuovaného programování. Poslední přednáška je věnována přehledu kódovacích stylů, pokročilým nástrojům pro řízení překladu zdrojových souborů a nástrojům pro efektivní vývoj a ladění programů (logování, debugováníi a profilování).
Praktická cvičení jsou pak věnována osvojování praktických dovedností a znalostí Java formou řešení semestralních úloh, které budou odevzdávány průběžně prostřednictvím systému pro správu zdrojových souborů. Nejdříve budou studenti seznámení s vývojovým prostředím, možnostmi kompilace a spouštěním programu. Následně budou řešit dílčí úlohy směřující ke komplexní aplikaci pro řešení úlohy hledání nejkratší cesty v grafu Dijkstrovým algoritmem. První větší úlohou je implementace prioritní fronty lineárním vyhledáváním a haldou, na které si studenti vyzkoušejí principy abstrakce a polymorphismu a dále také profilování. Prioritní frontu pak zobecní využitím generických datových typů pro různé číselné typy ohodnocení hran grafu v úloze hledání nejkratší cesty v tomto grafu. Další úloha rozšíří aplikaci o načítání parametrů z XML a efektivní načítání vstupního grafu. Poté bude následovat praktické vyzkoušení síťového rozhraní a rozšíření aplikace o síťovou komunikaci se serverem poskytujícím parametry pro vygenerování grafu a kontrolu nalezené nejkratší cesty. Následně bude aplikace rozšířena o více vláknový model (boss-worker), který umožní během výpočtu nejkratší cesty v grafu průběžně komunikovat se serverem pro odevzdání a kontrolu řešení. Tohoto modelu bude následně využito pro grafickou nadstavbu vizualizace průběhu řešení. Závěrečné cvičení bude věnováno praktickému vyzkoušení technologie vzdáleneho volání funkcí (RMI).
Studenti budou v průběhu semestru získávat body za odevzdané úlohy. Bodové hodnocení úlohy se skládá z bodů za správnost a efektivitu kódu, dále pak z bodů zohledňující kvalitu zdrojových kódů, jejich čitelnost a znovu použitelnost.
Cíle studia:
Cílem předmětu je rozvinutí programovacích dovedností studentů a rozšíření jejich znalostí o programovacích jazycích o základy a specifika programovacího jazyka Java. Studenti si prohloubí znalosti o způsobech programování a seznámí se s Java programovým rozhraním pro síťové a internetové služby, způsoby paralelního programování, využitím datových kolekcí, zpracováním výjimek, tvorbou grafického uživatelského rozhraní a událostmi řízeným programováním.
Osnovy přednášek:
1. | | Koncepce, historie jazyka a jeho vývoj - Java Virtual Machine, instalace vývojového prostředí, překlad a interpretace, syntaxe, primitiva a základní konstrukty. |
2. | | Objektově orientované programování v programovacím jazyku Java, třídy, rozhraní a objekty; struktura programu, kompilace a spuštění, předávání parametrů, aplikace a aplety. |
3. | | Řízení běhu programu, základní datové typy, proměnné, operátory, výjimky. |
4. | | Pole, řetězce, základní datové kolekce a iterátory. |
5. | | Principy objektového přístupu, třídy a dědičnost, řízení přístupu, hierarchie tříd, dědění, kompozice, abstraktní třídy, polymorfismus. |
6. | | Datové kolekce a generické datové typy. |
7. | | Práce se soubory, datové proudy, modely I/O operací. |
8. | | Síťování - způsoby a modely komunikace, síťová API v programovacím jazyku Java, protokoly UDP, TCP a HTTP. Aplikace klient / server. |
9. | | Paralelní programování - vlákna a modely vícevláknových aplikací, synchronizační primitiva. |
10. | | Příklad vícevláknové aplikace a komunikace mezi vlákny; rozhraní JNI. |
11. | | Grafické uživatelské rozhraní, události a listenery, Java 2D/3D, knihovny AWT a Swing. |
12. | | Ovládání uživatelských rozhraní, multimediální rozhraní. |
13. | | Distribuované programování - serializace, propojování modulů (middleware) a vzdálené volání funkcí, rozhraní Java RMI a další, např. ICE. |
14. | | Kódovací konvence a styly, nástroje pro řízení překladu, logování; rezerva. |
Osnovy cvičení:
1. | | Vývojové prostředí a odevzdávání úloh. |
2. | | Překlad a spuštění programu, dokumentace (javadoc), základy Java kódovací konvence a stylu. |
3. | | Nástroje pro sestavení programu (ant, maven), základní dostupné třídy v Java Class Library. |
4. | | Proměnné, výrazy, předávání parametrů programu a spuštění programu. |
5. | | Řízení běhu programu, řetězce, cykly, prioritní fronta |
(úloha: implementance prioritní fronty linearním vyhledáváním a haldou).
6. | | Zadání semestrální práce (hledání cesty v grafu); |
(datové struktury pro uložení grafu, načítání bude řešeno doadnou funkcí).
7. | | Třídy, objekty a dědičnost; struktura programu, incializace objektů a správa paměti |
(úloha: abstrakce prioritní fronty, návrh a implementace programu pro hledání cesty v grafu).
8. | | Polymorphismus (debugging, profiling) |
(úloha s příkladem - Dijkstra s naivním vyhledáváním vs prioritní fronta).
(úloha: zobecnění úlohy hledání cesty v grafu, ohodnocení hran int/double).
10. | | Načítání a ukládání souborů |
(úloha: načítání XML a načítání textového souboru - graf pro Dijkstra algoritmus; úvod do XML v Java).
(úloha: klient pro získání zadání pro generování grafu pro Dijkstra algoritmus.
12. | | Vícevláknové aplikace |
(úloha: boss-worker model v programu Dijkstra s událostmi posílanými mezi vlákny).
13. | | Grafické uživatelské rozhraní |
(úloha: rozšíření předchozí úlohy o grafické rozhraní a vizualizaci průběhu výpočtu).
14. | | Serializace a distribuované programování (Java RMI). |
Literatura:
Doporučená literatura:
1. | | Herout, P.: Učebnice jazyka Java, Kopp, Č. Budějovice, 2000, s. 350. |
2. | | Herout, P.: Učebnice jazyka Java II, Kopp, Č. Budějovice, 2001, s. 350. |
3. | | Eckel, B.: Thinking in Java, Prentice Hall, 2006, s. 1150. |
Požadavky:
Základy algoritmizace a programování. Základní povědomí o XML a DOM - je pokryto v předmětu Základy webových aplikací v prvním semestru.
Předmět je zahrnut do těchto studijních plánů:
Plán |
Obor |
Role |
Dop. semestr |
Stránka vytvořena 26.4.2024 15:52:05, semestry: Z,L/2023-4, Z/2024-5, připomínky k informační náplni zasílejte správci studijních plánů |
Návrh a realizace: I. Halaška (K336), J. Novák (K336) |