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