Szczegółowy spis treści

1. Java: nowe elementy środowiska
1. Przegląd
2. Autoboxing
3. Wstępne pojęcie o szablonach (generics)
4. Rozszerzona instrukcja for
5. Statyczne importy
6. Zmienna liczba argumentów metod
7. Enumeracje
8. Formator 
9. Skaner
10. Podsumowanie
11. Zadania

2. Typy sparametryzowane (generics)
1. Szablony - wprowadzenie
2. Typy sparametryzowane i ich instancje. Typy surowe.
3. Argumenty i parametry typu
4. Wykorzystanie refleksji w szablonach
5. Ograniczenia parametrów typu
6. Metody sparametryzowane
7. Parametry uniwersalne (wildcards)
8. Użyteczność szablonów (generics) w Javie
9. Podsumowanie
10. Zadania

3. Metadane i adnotacje
1. Wprowadzenie
2. Rodzaje adnotacji
3. Definiowanie adnotacji
4. Przetwarzanie adnotacji w fazie wykoania
5. Przetwarzanie adnotacji w fazie kompilacji
6. Adnotacje a transformowanie kodu binarnego
7. Podsumowanie
8. Zadania

4. Zaawansowane programowanie obiektowe
1. Kłopoty z przedefiniowaniem metody equals()
2. Kompozycja a dziedziczenie
3. Polimorfizm kompozycji  - zastosowanie interfejsów.
4. Reguły ponownego wykorzystania klas
5. Kopie obiektów
6. Niezmienność obiektów
7. Podsumowanie
8. Zadania

5. Wzorce projektowe (1)
1. Co to są wzorce projektowe (design patterns) ?
2. Czy i po co stosować wzorce projektowe?
3. Historia rozwoju wzorców projektowych
4. Wzorce GoF - klasyfikacja
5. Fabryki (factory method, factory, abstract factory)
6. Singleton
7. Flyweight
8. Podsumowanie
9. Zadania

6. Wzorce projektowe (2)
1. Observer
2. Visitor
3. Composite
4. Podsumowanie
5. Zadania

7. Wzorce projektowe (3)
1. Wzorzec Command
2. Model-View-Controller: idea
3. MVC - prosty przykład
4. MVC w aplikacjach WEB
5. Podsumowanie
6. Zadania

8. Współbieżna Java: zadania i wykonawcy
1. Programowanie współbieżne - przypomnienie podstawowych pojęć
2. Pakiet java.util.concurrent z lotu ptaka
3. Separacja zadań od sposobu ich wykonania
4. Kończenie zadań przez interrupt()
5. Odbiór wyników zadań. Zadania "z prawdziwego zdarzenia".
6. Obsługa wyników zadań za pomocą odwołań zwrotnych
7. Wykonawcy a pule wątków
8. Podsumowanie
9. Zadania

9. Współbieżna Java: synchronizacja i koordynacja
1. Przypomnienie: synchronizacja i koordynacja działania wątków
2. Przypomnienie: koordynacja wątków
3. Rygle jako obiekty typu Lock
4. Konieczność użycia klauzuli finally. Klasa ReentrantLock.
5. Idiomy ryglowania
6. Efektywność synchronizacji
7. Lock czy synchronized?
8.  Dodatkowe możliwości rygli
9. Warunki
10. Synchronizatory wyższego poziomu, blokujące kolejki, konkurencyjne kolekcje i atomiki.
11. Podsumowanie
12. Zadania

10. Technologie programowania rozproszonego: middleware i serwery aplikacji - przegląd
1. Koncepcyjne pole współczesnych aplikacji biznesowych
2. Architektura N-warstwowa
3. Potrzeba middleware - oprogramowania pośredniczącego
4. Architektura N-warstwowa, technologie i serwery aplikacji w J2EE
5. Podsumowanie
6. Zadania

11. Programowanie rozproszone: lokalizacja zasobów (JNDI) i protokól RMI-IIOP
1. Serwisy nazw i katalogów
2. JNDI - koncepcja i architektura
3. JNDI - praktyczne przykłady
4. Zdalne wywołanie metod - RMI-IIOP
5. RMI-IIOP od środka
6. Uruchomienie przykładowej aplikacji
7. Zadania

12. Interakcja za pomocą komunikatów (JMS)
1. Wprowadzenie
2. Architektura JMS
3. Konfigurowanie obiektów administrowanych
4. Programowanie klientów JMS
5. Komunikaty w trybie point-to-point
6. Słuchacze wiadomości - przykład
7. Działanie w trybie publisher/subscriber
9. Podsumowanie
10. Zadania

13. EJB 2.1 jako przykład klasycznego middleware API
1. Komponenty EJB
2. EJB, uslugi middleware a logika biznesowa
3. Programowanie komponentów EJB 2.1
4. Składanie aplikacji
5. Wdrażanie aplikacji
6. Podsumowanie
7. Zadania

14. Lekkie kontenery, wzorzec dependency injection i EJB 3.0
1. "Loose coupling", wzorzec "dependency injection" i lekkie kontenery
2. EJB 3.0 - przegląd
3. Praktyka EJB 3.0 i Sun Java System Application Server 9
4. Komponenty encyjne i elementy Java Persistance API
5. Podsumowanie
6. Zadania