Programowanie w Java
Programowanie w Java
Kod szkolenia: JAVA-PRO
Szkolenie przeznaczone jest dla programistów, którzy chcą poznać od podstaw i nauczyć się programować w języku Java.
Celem szkolenia jest zdobycie umiejętności programowania w języku Java. Uwzględniając tak poznanie konstrukcji językowych, standardowych bibliotek niezbędnych do wytwarzania wysokiej jakości oprogramowania (kolekcje, IO, GUI, bazy danych, i inne), jak i narzędzia umożliwiającego szybkie wytwarzanie, testowanie i debugowanie aplikacji (Eclipse).
Ze względu na obiektowy charakter języka Java, duży nacisk kładziony jest również na zrozumienie i nabycie umiejętności wykorzystywania cech obiektowości. Specjalnie dobrane zadania rozwijają w uczestnikach umiejętność wytwarzania kodu Java o wysokiej elastyczności, dzięki zastosowaniu podstawowych cech obiektowości, czy wzorców projektowych.
5 dni, po 8 godzin. Łącznie 40 godzin(y) szkolenia.
Uwaga: Szkolenie posiada również wersję 4 dniową, bez Peryferii i integracji (aplikacje konsolowe, tworzenie GUI, komunikacja TCP, bazy danych)
Oczekiwane przygotowanie słuchaczy przed szkoleniem
Od uczestników wymagana jest umiejętność programowania w jakimkolwiek innym języku programowania.
Polecane szkolenia uzupełniające
Szkolenie dotyczy nauki programowania w Java od podstaw, a zatem nie wymaga żadnych szkoleń poprzedzających.
W naszej ofercie znajdują się również szkolenia uzupełniające w zakresie JEE:
JAVA-WYD,
JAVA-EJB,
JAVA-JSF,
JAVA-WS,
JAVA-JPA,
JAVA-JEE.
A także szkolenia na wyższych poziomach: projektowanie (JAVA-WZO) i architektura (JAVA-ARCH)
- Wprowadzenie do Java
- Maszyna wirtualna Java
- Czym jest wirtualna maszyna
- Pośrednia warstwa wykonania
- Jeden język programowania
- Wiele maszyn wirtualnych
- Jeden mechanizm wykonania kodu
- Pliki class
- Class Loader
- Bytecode Verifier
- Translator
- Optymalizacje (JIT, HotSpot)
- Założenia projektowe Javy
- Prostota
- Przenaszalność
- Bezpieczeństwo i niezawodność
- Automatyczne odśmiecanie (Garbage Collector)
- Różne dystrybucje Javy
- Java ME (Java Micro Edition)
- Java SE (Java Standard Edition)
- Java EE (Java Enterprise Edition)
- Podstawy tworzenia aplikacji Java
- Konwencje nazewnictwa klas
- Pakiety i przestrzenie nazw
- Metoda uruchamiająca program (main)
- Kompilacja kodu Java
- Uruchomienie aplikacji Java
- Uruchomienie pojedyńczego pliku Java (od Java 11)
- jshell (od Java 9)
- Dokumentowanie kodu (JavaDoc)
- Klasy i typy danych
- Typy proste
- boolean
- char
- Liczby całkowite
- byte
- short
- int
- long
- Liczby zmiennoprzecinkowe
- float
- double
- Konwersja typów
- Rzutowanie
- Automatyczna konwersja typów
- Typ wyliczeniowy (enum)
- Tablice
- Tworzenie tablic
- Operacje na danych w tablicach
- Inicjalizacja tablic
- Tablice wielowymiarowe
- Przeglądanie tablic
- Typy obiektowe
- Przykłady (String, Date)
- Tabele jako typy obiektowe
- Wywołanie metody
- Odwołanie do atrybutu klasy
- Bezpośrednie
- Notacja JavaBean (get, set)
- Klasy opakowujące typy proste (wrappery)
- Autoboxing
- Unboxing
- Tworzenie klas w Java
- Metody klasy
- Deklaracja metod
- Wynik metody
- Wynik pusty (void)
- Atrybuty metod
- Zmienna ilość atrybutów (varargs)
- Przeciążanie metod (overload)
- Atrybuty klasy
- Zmienne lokalne
- Local variable type inference "var" (od java 10)
- Zasięg widoczności zmiennych
- Konstruktory
- Tworzenie konstruktorów
- Konstruktor domyślny
- Stałe (final)
- Elementy statyczne
- Atrybuty statyczne
- Metody statyczne
- Współpraca klas
- Klasy publiczne
- Klasy pakietowe
- Importowanie klas
- Import statyczny
- Rekordy
- Składnia języka Java
- Nazewnictwo (identyfikatory)
- Klas
- Atrybutów
- Metod
- Operatory
- Operatory arytmetyczne
- Operatory logiczne
- Operator tetralny
- Operatory binarne
- Kolejność wykonywania operacji
- Konstrukcje sterowania
- Operacje warunkowe
- if
- if else
- switch
- switch z wynikiem (od JAva 12)
- Pętle
- while
- do while
- for
- "foreach"
- Instrukcje sterowania pętą
- break
- continue
- Etykiety (labels)
- Asercje (assert)
- Weryfikacja poprawności wykonania
- Włączanie/wyłączanie asercji
- Reguły używania asercji
- Java a obiektowość
- Klasa (class)
- Obiekt
- Abstrakcja
- Wysoka zwartość klas (high cohesion)
- Dziedziczenie
- Dziedziczenie między klasami
- Rozszerzanie klas (o metody i atrybuty)
- Operator instanfeof
- Klasa Object
- Nadpisywanie metod (override)
- Reguły nadpisywania
- Dostęp do metody pierwotnej (super)
- Konstruktor a dziedziczenie
- super()
- this()
- Poziomy dostępu
- public
- protected
- domyślny (package)
- private
- Ograniczenia w dziedziczeniu
- Jednokrotne dziedziczenie
- Klasy final
- Metody final
- Dziedziczyć czy delegować
- Relacja "is"
- Relacja "has"
- Hermetyzacja
- Polimorfizm
- Wkorzystanie polimorfizmu
- Rzutowanie typów
- Klasy abstrakcyjne (abstract)
- Interfejsy (interface)
- Luźne powiązanie (loose coupling)
- Błędy i wyjątki w Javie
- Sygnalizacja błędów w Javie
- Throwable
- Error
- Exception
- RuntimeException
- Ścieżka błędu (stack trace)
- Obsługa wyjątków
- Przepuszczenie wyjątku (throws)
- Wykonanie niebezpiecznej operacji (try)
- Łapanie wyjątków (catch)
- Wykonanie operacji gwarantowanych (finally)
- try-with-resources i autoclosable
- try-with-resources z final i effectively final (od Java 9)
- Tworzenie własnych wyjątków
- Własna klasa wyjątku
- Wyrzucenie nowego wyjątku (throw new)
- Wyrzucenie złapanego wyjątku (throw w catch)
- Dobre rady do obsługi błędów
- Kolekcje w Java
- Użycie klas generycznych
- Podstawy kolekcji
- Iterable
- Collection
- Comparator
- Comparable
- Zbiory (Set)
- HashSet
- TreeSet
- Mapy (Map)
- HashMap
- TreeMap
- Listy (List)
- ArrayList
- LinkedList
- Kolejki (Queue)
- Kolejki dwustronne (Deque)
- Łatwa inicjalizacja kolekcji (od Java 9)
- Klasa pomocnicza Collections
- Wstęp do kolekcji wielowątkowych
- Środowisko systemowe
- Program Java a system
- Atrybuty wykonania programu
- Zmienne systemowe
- Biblioteki Java (jar)
- Biblioteki samo-wykonywalne
- Klasy systemowe
- String
- StringBuffer i StringBuilder - wydajna praca z napisami
- Arrays - operacje na tablicach
- System
- Date i Calendar
- Instant, LocalDate/Time, Clock
- ChronoUnit, Period, Duration, TemporalAdjuster
- Locale - lokalizacja w Java (l10n)
- Formatowanie dat i liczb
- SimpleDateFormat
- DecimalFormat
- Internacjonalizacja w Java (i18n)
- ResourceBoundle
- Format
- MessageFormat
- ChoiceFormat
- Operacje IO
- Operacje na systemie plików (Path, Files)
- Operacje na zawartości plików (strumienie)
- Strumienie binarne
- InputStream
- OutpurStream
- Strumienie tekstowe
- Reader
- Writer
- Konwersja strumieni
- InputStreamReader
- OutputStreamWriter
- Praca na plikach
- FileInputStream
- FileOutputStream
- FileReader
- FileWriter
- Swobodny dostęp (RandomAccessFile)
- Strumienie wysokopoziomowe
- Łańcuchy strumieni
- Strumienie buforowane
- Serializacja danych
- Serializable
- DataInputStream
- DataOutputStream
- Wstęp do NIO (kanały)
- Channel
- Buffer
- Przegląd NIO2
- Przegląd pozostałych elementów języka Java
- Wstęp do modułów
- Konstruktor klasy (blok static)
- Szczegóły enumeracji
- Metody w enumeracjach
- Konstruktory w enumeracjach
- Atrybuty w enumeracjach
- Adnotacje
- @Deprecated
- @Override
- @SupressWarnings
- Adnotacje przy użyciu typów
- Powtarzalne adnotacje
- Podstawy JUnit - testowanie aplikacji
- @Test(timeout, expected)
- @Before
- @After
- @BeforeClass
- @AfterClass
- Metody weryfikujące - assert
- Klasy wewnętrzne
- Powiązanie z obiektem klasy zewnętrznej
- Statyczne klasy wewnętrzne
- Klasy anonimowe
- Tworzenie klas anonimowych
- Ograniczenia klas anonimowych
- Stałe metod (argumenty final), a klasy anonimowe
- Klasy anonimowe z diamentem (od Java 9)
- Wyrażenia Lambda
- Składnia
- var w Lambda (od Java 11)
- Referencje metod i konstruktorów
- Interfejs funkcyjny i metody domyslne
- Metody prywatne w interfejsach (od Java 9)
- Strumienie a Lambda
- Strumieniowanie plików
- Strumieniowanie kolekcji
- forEach, map, filter, peek, limit, sorted
- Zbieranie wyników - Collectors
- toList, toCollection, joining
- Statystyki
- Grupowanie i partycjonowanie
- Optional
- Programowanie funkcyjne - interfejs Function
- Programowanie wielowątkowe
- API wątków w Javie
- Runnable
- Thread
- ThreadGroup
- Tworzenie własnych wątków
- Startowanie wątków
- Kończenie pracy wątków
- Synchronizacja (synchronized)
- Czym jest monitor
- Metody synchronizowane
- Statyczne metody synchronizowane
- Blok synchronizujący
- Współpraca między wątkami
- sleep
- join
- yield
- wait
- notify/notifyAll
- Problemy wielowątkowości
- Zakleszczenie (deadlock)
- Zagłodzenie (starvation)
- Zmienne ulotne (volatile)
- Wstęp do java.util.concurrent
- Najczęściej popełniane błędy
- Na co uważać w Javie
- Używanie asercji
- Wydajność operacji IO
- Literówki w nadpisywaniu metod
- Operacje na kolekcjach haszujących
- Kontrakt między equals a hashCode
- Obiekty niemutowalne
- Wycieki pamięci
- Porównywanie operatorem ==
- Brak konstruktora domyślnego
- Czego unikać w Javie
- Zła współpraca z Garbage Collector
- Garbage Collector - działanie
- Pule małych obiektów
- System.gc()
- Finalizacja (finalize)
- Przestarzałe metody Thread
- Wołanie metod nieprywatnych w konstruktorze
- Zaawansowane operacje na napisach (opcjonalne)
- Formatowanie napisów
- Składnia formatowania
- Formatter
- String.format()
- PrintStream.printf() i PrintWriter.printf()
- regex – regular expression
- Wprowadzenie do regex
- Pattern
- Matcher
- Tokenizacja
- Pattern.split() i String.split()
- StringTokenizer
- StreamTokenizer
- Scanner
- Peryferia i integracja
- Aplikacje konsolowe
- Pobieranie całych linii
- Zaawansowana komunikacja z konsolą (Scanner)
- Pułapki
- Tworzenie GUI w Java (Swing)
- AWT a Swing
- Podstawowe kontenery graficzne
- JFrame
- JDialog
- JFileChooser
- JColorChooser
- JOptionPane (typy wiadomości i przycisków)
- Własne okna dialogowe
- JPanel
- Layout'y
- Rozstawienie własne
- FlowLayout
- GridLayout
- BorderLayout
- Przegląd pozostałych layout'ów
- CardLayout
- OverlayLayout
- GroupLayout
- GridBagLayout
- BoxLayout
- SpringLayout
- Podstawowe komponenty graficzne
- JLabel
- JButton
- JTextField
- JTextArea
- JComboBox
- JCheckBox
- JRadioButton
- Model nasłuchu zdarzeń
- Przegląd wybranych listener'ów
- ActionListener
- ItemListener
- FocusListener
- KeyListener
- TextListener
- MouseListener
- MouseMotionListener
- ComponentListener
- ContainerListener
- WindowListener
- Adaptery
- Komunikacja przez TCP
- Gniazdka (Socket)
- SocketServer
- Socket
- Serwer wielowątkowy
- Wstęp do RMI
- JDBC - komunikacja z bazami danych
- Nawiązanie połączenia z bazą danych
- DriverManager
- Connection
- Wysyłanie zapytania do bazy danych
- Statement
- PreparedStatement
- CallableStatement
- Przegląd wyników (ResultSet)
- Więcej o Swing (opcjonalne)
- Belka menu
- JMenuBar
- JMenu
- JMenuItem
- JSeparator
- JCheckBoxMenuItem
- JRadioButtonMenuItem
- Nasłuch w opcjach menu
- Menu - co jeszcze (krótki opis)
- JPopupMenu
- Szybki dostęp - mnemonic
- Szybki dostęp - akceleratory
- Dokładniej BoxLayout
- Dokładniej CardLayout
- Przegląd kontenerów
- JPanel
- JScrollPane
- JSplitPane
- JTabbedPane
- JTable - przykład komponentu zaawansowanego
- Inne komponenty zaawansowane
- Look & Feel
- Swing a wielowątkowość
- SwingUtilities.invokeLater(Runnable)
- SwingUtilities.invokeAndWait(Runnable)
- SwingWorker