ÚVOD / Studijní obory / Sylaby / Vývoj v Java SE

Vývoj v Java SE

Cílem předmětu je seznámit studenty s vývojem GUI aplikací v jazyce Java za využití principů objektově orientovaného programování. Nejprve jsou vysvětleny základní principy a konstrukce jazyka, dále pak zpracování výjimek, práce s databází a tvorba grafického uživatelského rozhraní (GUI). Po absolvování tohoto předmětu je student schopen sám vyvinout jednoduchou aplikaci.

Sylabus předmětu

  1. Úvod do jazyka Java. Základní informace o průběhu kurzu a probírané látce. Historie jazyka Java – původní záměr, přehled verzí a rozdíly mezi nimi. Přehled platformy, jednotlivé edice, J2SE, J2EE, J2ME – jejich představení a vysvětlení, k čemu která slouží. Popis architektury – jak vypadá přeložený kód (bytecode), na čem běží (virtual machine) – vysvětlení nezávislosti na architektuře OS. Základní principy Javy – objektový přístup. Představení vývojových prostředí pro Javu – Eclipse, NetBeans atp., ukázka ladění kódu – debugger.
  2. Syntaxe Javy I. Představení tříd – jak deklarovat třídu, jak vytvořit její instanci. Vše je definováno ve třídě, neexistují žádné funkce mimo tyto třídy. Definice vlastností a metod třídy. Dědičnost tříd, rozhraní a jejich implementace. Statický obsah tříd. Strukturování tříd do balíčků.
  3. Syntaxe Javy I. Základní datové typy: čísla, řetězce, data. Vybrané metody třídy Object. Kontejnerové typy pole a seznam (java.util.List). Primitivní typy a jejich operátory. Větvení a cykly (if, switch, while, for). Výjimky ("checked" a "runtime").
  4. Vstup a výstup, Reflexe. Abstrakce vstupů a výstupů pomocí tříd InputStream, OutputStream, Reader, Writer a jejich potomků. Formátování výstupů pomocí tříd Locale, NumberFormat, DateFormat a SimpleDateFormat. Práce se souborovým systémem. Práce s konfiguračními soubory (třída Properties), hledání zdrojů pomocí metody getResourceAsStream. Zjišťování informací o běžícím programu, jeho třídách a objektech pomocí reflexe.
  5. Kontejnerové typy. Omezení obyčejných polí, iterace speciální variantou cyklu for. Generické typy a jejich použití v kontejnerech. Seznam, fronta, zásobník, množina, asociativní pole. Rovnost objektů (metody equals a hashCode). Třídění kontejnerových typů, rozhraní Comparable a Comparator.
  6. Dokumentace, testování a další nástroje. Co je to javadoc – přehled tagů, generování dokumentace. Anotace. Unit testy s knihovnou JUnit.
  7. Práce s XML. Zpracování XML v Javě. Technologie JAXP. Validace XML dokumentů pomocí XML Schema. Možnosti práce přes SAX či DOM, srovnání obou přístupů. XSLT transformace. Java XML Binding – automatická serializace a deserializace, generování tříd z XML Schema, generování XML Schema ze tříd.
  8. Persistence objektů I. Mapování struktury objektového modelu do relační databáze. Synchronizace stavu objektů. Řízení transakcí. Konfigurace JPA 2.0. Základy EJB-QL.
  9. Persistence objektů II. Mapování vztahů 1:N, M:N, 1:1, vlastník vztahu. Řešení dědičnosti a polymorfní dotazy. Pokročilejší dotazy v EJB-QL.
  10. GUI I. Představení okénkových systémů Swing, AWT a SWT a jejich principů se zaměřením na Swing. Objekty  představující okna a ovládací prvky. Základní rozvrhy komponent a základy zpracování událostí.
  11. GUI II. Události - vytváření, propagace, zpracování. Anonymní třídy. Základní principy práce s vlákny (zpracování na pozadí, pouze základní synchronizace). Pokročilejší rozvrhy komponent (GridBagLayout, přehledově GroupLayout a MigLayout).
  12. GUI III Vazba mezi prvky GUI a daty. Složitějsí prvky uživatelského rozhraní - seznamy, tabulky, stromy. Spojení s databází (přes JPA). Deployment pomocí Java WebStart.

Organizace výuky

Prezenční forma

Výuka probíhá ve 12 přednáškách a 12 seminářích po 1,5 hod.

Kombinovaná forma

Výuka probíhá o víkendu ve 3 blocích po 3 hodinách.

Doporučená literatura

Základní učební texty a pomůcky

  • Učební texty k předmětu Vývoj v J2SE (intranetová učební pomůcka), Unicorn College
  • BURD: Beginning Programming in Java For Dumimes, For Dummies, 2012
  • PECINOVSKÝ, R.: Java 7 – knihovna programátora, Praha, Grada, 2014

Doplňující a rozšiřující učební texty

  • BLOCH, J: Effective Java (2nd edition), Addison Wesley, 2008