Programowanie Java

4999,00 

Dla chcących rozpocząć swoją przygodę z programowaniem. Kompleksowy kurs poruszający tematykę: programowania w Java, framework Spring, bazy danych oraz system ORM Hibernate, narzędzia programistyczne (Maven, Git).

SKU: programowanie-java
Category:

Opis

Czas trwania

20 spotkań x 6 godzin lub 40 spotkań x 3 godziny
Uwaga: kurs rozpocznie się po zebraniu minimum 5 uczestników.

Tematyka kursu

WSTĘP DO JĘZYKÓW PROGRAMOWANIA
  • Czym jest architektura systemu komputerowego?
  • Architektury client-server oraz peer-to-peer.
  • Porównanie systemów frontend (FE) i backend (BE).
  • Języki programowania: kompilowane a interpretowane.
WSTĘP DO JĘZYKA JAVA
  • Wprowadzenie do języka Java.
  • Wirtualna maszyna Java (JVM), JRE, JDK.
  • Język Java: typy, zmienne, wyrażenia, bloki, instrukcje.
  • Wstęp do CLI oraz uruchamianie programów z poziomu CLI.
  • Środowisko programistyczne IDE (IntelliJ, Eclipse).
JĘZYK JAVA
  • Tablice.
  • Metody.
  • Wprowadzenie do programowania obiektowego.
  • Czym jest klasa oraz czym się charakteryzuje? Pojęcie klasy i obiektu, atrybuty i metody.
  • Metody i pola statyczne.
  • Przeciążanie metod.
  • Struktura programów Java.
  • Pakiety: podział programu.
  • Instrukcje sterujące i warunkowe (for, while, do, if, case, switch).
  • Autoboxing.
  • Klasa i konstruktory.
  • Słowa kluczowe: this oraz super.
  • Identyfikatory, zmienne i stałe.
  • Zasięg oraz widoczność zmiennych.
  • Cechy programowania obiektowego (hermetyzacja, polimorfizm, dziedziczenie, kompozycja).
  • Przesłanianie metod.
  • Operator instanceof.
  • Interfejsy i klasy abstrakcyjne.
  • Klasa Object oraz kontrakt Object.equals i Object.hashCode.
  • Typy generyczne oraz klasy i metody szablonowe.
  • Wbudowane kolekcje oraz mapy.
  • Typy wyliczeniowe.
  • Klasy zagnieżdżone oraz anonimowe.
  • Słowo kluczowe final.
  • Rzutowanie typów.
  • Adnotacje.
  • Refleksja oraz klasa Class.
  • Standard Unicode oraz kodowanie UTF-8/UTF-16.
  • Klasa String oraz operacje na ciągach znaków.
  • Wyrażenia regularne.
  • Interfejs funkcyjny oraz wyrażenia lambda.
  • Strumienie (streams).
  • Klasa Optional.
  • Referencje do metod.
  • Typy wyjątków oraz ich obsługa.
  • Operacje wejścia/wyjścia.
  • Obsługa systemu plików.
  • Obsługa czasu.
  • Konstrukcja varargs.
WSTĘP DO ALGORYTMÓW I STRUKTUR DANYCH
  • Wprowadzenie do podstawowych pojęć: problem, algorytm, program.
  • Złożoność obliczeniowa algorytmów oraz notacja dużego O.
  • Podstawowe metody sortowania.
  • Algorytmy rekurencyjne: charakterystyka i przykłady.
  • Struktury danych (tablice, listy, stosy, kolejki, grafy, drzewa, kopce, zbiory, mapy).
NARZĘDZIA PROGRAMISTYCZNE
  • Archiwa oraz tworzenie bibliotek (pliki JAR).
  • Automatyzacja procesu budowania.
  • Systemy budowania aplikacji.
  • Wprowadzenie do Ant oraz Maven.
  • Budowanie aplikacji przy użyciu narzędzia Maven.
  • Kontrola wersji oraz współdzielenie kodu.
  • Wprowadzenie do Git.
  • Zarządzanie wersjami przy użyciu narzędzia Git.
  • Wzorce projektowe.
  • Biblioteka Project Lombok.
  • Logowanie oraz biblioteki Java Logging, SLF4J, Logback i Log4J.
  • Biblioteka Jackson oraz serializacja i deserializacja danych.
  • Wprowadzenie do biblioteki Spring.
  • Idea ziaren, Inversion Of Control oraz Dependency Injection.
  • Spring oraz kontener IoC.
  • Spring Context oraz konfiguracja poprzez pliki w formacie XML, kod Java i adnotacje.
  • Automatyczne wiązania poprzez adnotację Autowired.
BAZY DANYCH
  • Wprowadzenie do zapisu danych oraz formatów przechowywania danych (CSV, JSON).
  • Wprowadzenie do baz danych.
  • Relacyjne bazy danych – podstawowe pojęcia (relacje, krotki, atrybuty).
  • Typy relacji.
  • Wprowadzenie do MySQL.
  • MySQL w praktyce.
  • Podstawowe struktury oraz zapytania.
  • MySQL w praktyce.
  • Łączenia.
  • Funkcje oraz procedury.
  • Klucze oraz indeksy.
  • Transakcje.
  • Zasady ACID oraz poziomy izolacji.
  • Normalizacja baz danych.
MAPOWANIE OBIEKTOWO-RELACYJNE (ORM)
  • Połączenie z bazą danych.
  • JDBC.
  • Sterowniki baz danych.
  • Obsługa bazy danych przy pomocy pakiety java.sql.
  • Ładowanie zasobów.
  • Porównanie ORM, JPA oraz Hibernate.
  • Klasy a tabele.
  • Hibernate i mapowania.
  • Hibernate w szczegółach
  • Konfiguracja przez pliki typu XML, pliki typu properties oraz adnotacje.
  • Sesje oraz zapytania i transakcje.
  • Stany obiektów w sesji.
  • POJO vs Java Bean vs encje
  • Sesja oraz zapisywanie, ładowanie, modyfikowanie i usuwanie.
  • Zapytania w oparciu HQL (Hibernate QL).
  • Interfejs programistyczny zapytań w Hibernate.
  • Natywny SQL w kontekście Hibernate.
  • Odwzorowywanie relacji oraz łączeń.
  • Mapowanie struktur dziedziczenia na model relacyjnych baz danych.
WIELOWĄTKOWOŚĆ W JAVA
  • Wprowadzenie do wielowątkowości.
  • Process a wątek.
  • Podstawowe problemy dla aplikacji wielowątkowych.
  • Wątki w Javie: tworzenie i zarządzanie.
  • Wyścigi oraz synchronizacja.
  • Optymalizacja oraz zmienne volatile.
  • Klasy Thread oraz interfejsy Runnable i ExecutorService.
APLIKACJE WEBOWE OPARTE O SPRING FRAMEWORK
  • Protokół HTTP.
  • Aplikacje webowe.
  • Jakarta Enterprise Edition (JEE).
  • Java Servlet.
  • Serwer Apache Tomcat.
  • Wzorzec projektowy MVC.
  • Spring Web MVC oraz Dispatcher Servlet.
  • Konfiguracja kontekstu aplikacji opratej o Spring Web MVC.
  • Podejście JSP.
  • Tworzenie aplikacji webowej przy użyciu podstawowych adnotacji (Controller, RequestMapping).
  • Zakresy ziaren.
  • Moduły Spring.
  • Spring Boot oraz komponenty.
  • Tworzenie aplikacji w oparc iu o SpringBootApplication.
  • Tworzenie aplikacji webowej przy użyciu podstawowych adnotacji (RequestBody, ResponseBody, ResponseEntity, ResponseStatus).
  • Obsługa błędów poprzez ControllerAdvice oraz ExceptionHandler.
  • Serwisy RESTful oraz związanie z nimi reguły.
  • Walidacja danych.
  • Klasa RestTemplate i komunikacja pomiędzy serwisami.
  • Zmienne aplikacji oraz pliki typu properties.
  • Klasy EntityManager oraz DataSource i natywna obsługa JPA.
  • Interfejs JpaRepository oraz generowanie zapytań.
  • Actuator oraz żywotność aplikacji.
  • Wprowadzenie do Spring Security.
TESTOWANIE APLIKACJI
  • Wdrażanie aplikacji.
  • Rodzaje hostingu aplikacji.
  • Rozwiązania w chmurze.
  • Continuous Integration oraz Continuous Delivery.
  • Integracja kodu przy pomocy Git.
  • Testowanie aplikacji: ręczne oraz automatyczne.
  • Rodzaje oraz poziomy testowania.
  • Wprowadzenie do JUnit5.
  • Adnotacje do sterowania testami w JUnit5.
  • Asercje oraz biblioteka AssertJ.
  • Testowanie w kontekście budowania przy pomocy Maven.
  • Biblioteka Mockito oraz „mockowanie” obiektów i zachowań.
  • Testy integracyjne oraz uruchamianie kontekstu Spring.
  • Test Driven Development (TDD).
  • Behavioral Driven Development (BDD).
  • Narzędzie Cucumber oraz język Gherkin.
  • Narzędzie Selenium oraz automatyzacja testów.
  • Narzędzie Gatling oraz wprowadzenie do testów wydajnościowych.
DODATKI
  • Bazy danych NoSQL oraz teoria CAP.