1. Podstawowe pojęcia, przygotowanie środowiska i narzędzi programistycznych
- Platforma i język Java – charakterystyka technologii, specyfikacja języka programowania oraz platformy uruchomieniowej
- JVM, JRE & JDK – wyjaśnienie pojęć maszyny wirtualnej, platformy uruchomieniowej oraz narzędzi deweloperskich
- narzędzia Java SE – omówienie dostępnych Zintegrowanych Środowisk Programistycznych - IDE
- kompilacja i uruchomienie – proces przetwarzania kodu źródłowego do kodu binarnego oraz jego uruchomienie
- dystrybucja i archiwum Java – sposoby dystrybuowania aplikacji, wprowadzanie formatu JAR
2. Narzędzia
- Zintegrowane środowiska programistyczne
- Narzędzia kontroli wersji i wspierające pracę zespołową – przykładowe rozwiązania umożliwiające zespołową pracę nad projektem
3. Podstawy języka – podstawowa charakterystyka języka, omówienie konstrukcji umożliwiających programowanie sekwencyjne
- Zmienne – czym jest zmienna, przekazywanie danych przez referencje i przez wartości
- typy proste i obiektowe – wbudowane typy podstawowe jako nieobiektowe reprezentacje danych, klasy opakowujące jako obiektowe reprezentacje typów danych
- operatory – wbudowane operatory arytmetyczne, logiczne, bitowe
- instrukcje sterujące, warunkowe – sterowanie przebiegiem programu przy wykorzystaniu bloków warunkowych, pętli itp
- wyrażenia – tworzenie rozbudowanych wyrażeń ewaluowanych do pojedynczych wartości
4. Programowanie obiektowe – podstawowe konstrukcje programowania zorientowanego obiektowo
- obiekty i klasy – pojęcie obiektu jako struktury złożonej oraz klasy jako wzorca obiektu
- składowe obiektu - pola i metody, stan obiektu i jego funkcjonalność
- konstruktory i bloki inicjalizacyjne – sposoby dostosowania procedury utworzenia obiektu
- elementy statyczne – składowe przynależące do klasy
- dziedziczenie i polimorfizm – definiowanie typów rozszerzających istniejące klasy, reużywanie klasy bazowej
- klasy abstrakcyjne i interfejsy – typy abstrakcyjne
- nadpisywanie i przeciążanie metod – modyfikowanie funkcjonalności dziedziczonych z klas bazowych
5. Przetwarzanie tekstu – zestaw klas i metod wspomagających przetwarzanie łańcucha znaków
- szczegóły klasy String
- bufory tekstowe (StringBuilder, StringBuffer) – synchronizowane I niezsynchronizowane klasy buforów pomagające efektywniej łączyć i transformować fragmenty łańcuchów
- wyrażenia regularne
- atomizacja (StreamTokenizer, StringTokenizer, Scanner) – podział łańcucha znaków na fragmenty wedle zadanych znaków separatorów
- podstawy lokalizacji i formatowania
- obsługa daty i czasu w Javie
6. Wyjątki – obsługa błędów
- mechanizm działania wyjątków – omówienie ogólnego mechanizmu tworzenia, rzucania i łapania klas wyjątków
- hierarchia typów – hierarchia klas wyjątków, wyjątki „checked” i „unchecked”
- przegląd wbudowanych typów – podstawowe klasy wyjątków reprezentujące konkretny problem
- tworzenie własnych wyjątków – deklarowanie własnych typów wyjątków
- asercje – wbudowany mechanizm asercji jako sposób walidowania kodu
7. Tablice, kolekcje i klasy generyczne – przegląd typów tabelarycznych
- deklaracja, utworzenie tablicy – zasady tworzenia tablic typów podstawowych i obiektowych
- tablice wielowymiarowe
- Kolekcje platformy: Java Collection Framework – omówienie wbudowanych interfejsów i implementacji dla struktur kolekcyjnych: lista, zbiór, kolejka i mapa – porównanie poszczególnych implementacji
- porównanie obiektów, metody equals & hashCode, interfejs Comparable – sposoby sortowania struktur kolekcyjnych
- typy generyczne – tworzenie klas parametryzowanych typami, praktyczna użyteczność typów generycznych, metody generyczne
8. Zaawansowane elementy obiektowe
- Klasy wewnętrzne
- Klasy anonimowe
9. Programowanie funkcyjne w Java 8
- Metody domyślne i statyczne w interfejsach
- Interfejsy funkcyjne – tworzenie interfejsów funkcyjnych oraz przegląd wbudowanych interfejsów funkcyjnych
- Lambda-wyrażenie – implementacja interfejsów funkcyjnych przy pomocy lambda- wyrażenia
- Referencje do metod – pobieranie referencji do metod, rodzaje referencji
- Stream API, zastosowanie do kolekcji