1. Úvod
    1. Historie a současnost
    2. Základní termíny Javy
      1. Jazyk nebo platforma?
      2. JDK nebo JRE?
      3. JVM
      4. Java Core API
      5. Java a JavaScript (ECMAScript)
      6. Aplikace a aplet
    3. Výhody, nevýhody a konkurenti Javy
    4. Knihy a weby
      1. knihy
        1. Učebnice jazyka Java - Pavel Herout, Kopp
        2. Java bohatství knihoven - Pavel Herout, Kopp
        3. 1001 tipů a triků pro jazyk Java - Bogdan Kiszka, CPress
        4. Thining in Java - Bruce Eckel
        5. Effective Java - Joshua Bloch
        6. NE doporučuji cokoli od R. Pecinovského
        7. Java tutoriál - CPress
      2. weby
        1. Java sborník
        2. www.javapractices.com
        3. Oficiální JSE7 dokumentace a javadoc
        4. Oficiální Java Tutorial
        5. javarevised.blogspot.com
        6. http://www.algoritmy.net/category/21338/Java-pro-zacatecniky
    5. Další znalosti programátora
      1. příkazová řádka a proměnné prostředí
      2. Kódování znaků
      3. Verzování
      4. CI server
      5. Bugzilla
      6. Návrhové vzory
    6. Praxe
      1. FingBugs
      2. PDM
      3. Tool na hledání vlákenných chyb?
    7. JDK
      1. stažení a instalace
      2. dodavatelé a verze JDK
      3. $PATH (%PATH%)
      4. $JAVA_HOME (%JAVA_HOME%)
      5. $CLASSPATH (%CLASSPATH%)
      6. java
      7. javac
      8. jar
      9. javadoc
      10. native2ascii
    8. IDEs
      1. Eclipse
      2. NetBeans
      3. InteliiJ IDEA
      4. programátorské editory
    9. Ahoj světe - první program
      1. Zdrojové kódy
      2. Struktura programu
      3. Překlad a spuštění
        1. V příkazové řádce
        2. V Eclipse
  2. Základy jazyka
    1. Komentáře
      1. řádkový - //
      2. blokový - /* až */
      3. javadoc - /** až */
    2. Identifikátory a proměnné
      1. Pravidla
      2. klíčová slova
      3. Literály
        1. celočíselné
        2. znakové
        3. řetězové
        4. racionální
        5. logické
        6. class literal
        7. null - jen pro ref typy
      4. Jmenné konvence identifikátorů
    3. Anotace
      1. @Depracated
      2. @Override
      3. @SupressWarning
    4. Datové typy
      1. Primitivní typy
        1. celočíselné typy
          1. byte
          2. short
          3. int
          4. long
        2. znakový typ
          1. char
        3. racionální typy
          1. Proč se nehodí na peníze ap.?
          2. float
          3. double
        4. logický typ
          1. boolean
        5. typ void
      2. Referenční typy
        1. objekt
        2. pole
      3. Primitive wrappers
      4. Enumerace -- příklad
    5. Výrazy a operátory
      1. operátory
        1. přiřazení
        2. přetypování
        3. aritmetické
        4. relační
        5. logické
        6. bitové
        7. zkrácené operátory
        8. ternární operátor
        9. operátor new
        10. Priority operátorů
      2. operandy
    6. Příkazy, bloky
      1. Prázdný příkaz
      2. Výrazový příkaz
      3. Blok {, } a obor platnosti
      4. Deklarace proměnných
      5. Defaultní hodnoty a zastínění
    7. Terminálový I/O
    8. Systémové proměnné
  3. Příkazy řízení toku
    1. If, if-then
    2. Příkaz switch
    3. Příkazy while a do-while
      1. while
      2. do-while
    4. Příkaz for a for-each
    5. break a continue
    6. Návěstí
    7. return
    8. KONEC - 1. DEN
  4. Metody
    1. Deklarace metody
    2. Návratové typy
    3. Rekurzivní metody
      1. zde vyzkoušet i Eclipse Debugger
    4. Parametry
      1. Počet parametrů
      2. Formální a skutečné parametry
      3. Bezparametická metoda
      4. Zastítění (hiding)
      5. Finální parametry
      6. Předávání hodnotou (by value)
    5. Přetížené (overloaded) metody
    6. Proměnný počet argumentů (varargs)
      1. příklad na metoda((String[] ... varargs)
  5. Pole
    1. Deklarace a vytvoření pole
    2. Anonymní pole
    3. Operace s poli
    4. Vícerozměrná pole
    5. Délka pole
    6. Kolekce
  6. Objektové programování
    1. Teorie OOP
      1. Třídy a objekty
      2. Zapouzdření (encapculation)
      3. Dědičnost (inheritence)
      4. Polymorfizmus (vícetvarost)
      5. Vlastnosti a metody
      6. Rozhraní
    2. Třídy a objekty
      1. Deklarace třídy
      2. Vytváření a rušení objektů
        1. operátor new
        2. Konstruktor
          1. super
          2. this
        3. Statický inicilizátor
        4. factory metoda
        5. rušení
      3. Členské proměnné
        1. instanční
        2. statické
    3. KONEC - 2. DEN
    4. Topless typy
      1. top-level (outer, enclosing)
      2. topless (embedded, vnořené)
        1. static (nested, vnořené)
          1. nemá přístup k private členům
          2. přístup i k private členům
        2. non-static (inner, vnitřní)
          1. anonymní
          2. local class
          3. přístup i k private členům
          4. přístup i k private členům
        3. typ v souboru jiného typu
          1. nemá přístup k private členům
          2. nemá přístup k private členům
    5. Výčtový typ
    6. Dědičnost
      1. Přetypování a dědičnost
      2. Překrývání metod a členů
      3. Klíčová slova super a this
      4. Finální metody a třídy
      5. Abstraktní metody a třídy
      6. Metody třídy java.lang.Object
    7. Rozhraní
      1. Naming convention
      2. Definice rozhraní
      3. Implementace rozhraní
      4. Použití rozhraní jako typu
      5. Dědění rozhraní
        1. Doplnit obrázek z Asty a dát ho na wiki
      6. Rozhraní nemůže definovat k-or
    8. JavaBeans a POJO
  7. Balíčky
    1. Co je balíček?
    2. Jmenná konvence balíčků
    3. Deklarace balíčku
    4. Default package
    5. Import balíčků
      1. statický import
    6. Přístupová práva
      1. private
        1. ne
        2. ano
        3. ne
        4. ne
        5. ne
      2. package-default (friendly)
        1. ano
        2. ano
        3. ano
        4. ne
        5. ne
      3. protected
        1. ano
        2. ano
        3. ano
        4. ano
        5. ne
      4. public
        1. ano
        2. ano
        3. ano
        4. ano
        5. ano
    7. package-info.java
  8. Formátování výstupu a čas
    1. Kódování znaků
    2. Řetězce
      1. Vytvoření řetězce
      2. Porovnání
      3. Převody na malá či velká písmena
      4. Spojení řetězců
      5. Hledání v řetězci
      6. Náhrady řetězců
      7. Konverze z/na řetězec
      8. Třídy StringBuffer a StringBuilder
    3. Znaky
      1. Escape sekvence
    4. Regulární výrazy
    5. Čas
      1. Date
      2. Calendar a GregorianCalendar
      3. SimpleDateFormat
      4. JodaTime
      5. JDK8 Time
  9. Generické typy a metody
    1. Generické typy
      1. Diamond operátor
    2. Generické metody a konstruktory
    3. Omezení a zástupné znaky (wildcards)
      1. extends
      2. super
      3. ?
      4. &
    4. Mazání typu (erasure) -- příklad!
    5. Omezení generik a zákazné operace
      1. Primitivní typ jako typový parametr
      2. Typové parametry třídy ve statických členech
      3. Vytváření instance typového parametru
      4. Parametrizované vyjímky
  10. KONEC - 3. DEN
  11. Vyjímky
    1. Druhy vyjímek
      1. Error
      2. RuntimeException
      3. Exception
    2. Vlastní vyjímky
    3. Vyvolání vyjímky
    4. Ošetřování vyjímek
      1. throws
      2. try-catch a try-catch-finally
      3. multicatch
    5. Propagace vyjímek
    6. Užitečné vyjímky z JDK
  12. Soubory a I/O proudy
    1. Soubory - Old I/O (OIO)
      1. Třída File
      2. RandomAccessFile
    2. Soubory - New I/O 2 (NIO2)
      1. Proč?
      2. Třída Path
      3. Třída Files
    3. I/O proudy
      1. Bajtové proudy
      2. Znakové proudy
      3. Standardní vstup a výstup
      4. try-with-resources
    4. Serializace
      1. Serializable
      2. Externalizable
  13. Kolekce
    1. Výhody kolekcí oproti polím
    2. Klíčová rozhraní a implementace
    3. Seznamy - rozhraní List
    4. Množiny - rozhraní Set
    5. množinové operace
    6. Mapy - rozhraní Map
    7. příprava třídy do kolekce
    8. Převody pole-kolekce a naopak
    9. Staré kolekce
  14. Souběžné zpracování
    1. Procesy a vlákna
    2. Třída Thread
    3. Rozhraní Runnable
    4. Synchronizace vláken
  15. GUI
    1. Swing
    2. SWT/JFace
    3. JavaFX
  16. JEE
    1. JDBC, JPA
    2. Servlety, JSP, JSF
    3. JAX-WS, JAX-RS
    4. JNDI