Zajavkowa ścieżka nauki to oprócz Bootcampu Zajavka także dwadzieścia dwa warsztaty. Dopiero
po
ukończeniu obu tych elementów (Bootcamp i Warsztaty) będziesz mieć pełen
arsenał umiejętności, w które chcemy Cię wyposażyć. Dlatego udział w warsztatach traktuj jako
opcjonalne ale
zalecane następstwo
ukończenia Bootcampu Zajavka.
Warsztaty w swojej naturze mają troszkę inną konstrukcję niż Bootcamp Zajavka. Aby dowiedzieć
się jak
skonstruowane są warsztaty i dlaczego się tak nazywają, zapoznaj się z poniższym materiałem, w
którym
wyjaśniamy, na czym polega koncepcja warsztatu oraz zapraszamy do udziału w warsztacie #1. Pod
filmem
znajdziesz harmonogram i rozpiskę tematów poruszanych w obrębie każdego z warsztatów.
Warsztat #1 - JAVA GENERICS I BARDZIEJ ZAAWANSOWANE KOLEKCJE
Z tego warsztatu dowiemy się, czym są typy generyczne w Javie oraz jak zachowuje się mechanizm
określania
typu, na jakim chcemy operować w danej klasie. Dowiemy się, jak można stosować typy generyczne
na
przykładzie różnych rodzajów kolekcji (Listy, Sety, Kolejki i Mapy). Do tego dowiemy się, jak
można
efektywnie określać, w jaki sposób chcemy posortować elementy w kolekcji. Pogłębimy wiedzę o
kolejne
kolekcje, które nie zostały poruszone w Bootcampie.
Generics
Klasy generyczne
Interfejsy generyczne
Metody generyczne
A co by było, gdyby nie było generyków?
Podsumowanie z Bartkiem K.
Unbounded Wildcards
Upper bound wildcard
Lower bound wildcard
Dziwne przykłady
Podsumowanie z Bartkiem K.
Notatki
Test 1
Zadania
Comparing
Wstęp
Comparator
Comparable
Podsumowanie z Bartkiem K.
Notatki
Test 2
Zadania
Kolekcje
Podsumowanie podstaw
Listy - ArrayList, LinkedList i inne
Podsumowanie z Bartkiem K.
Set - HashSet, LinkedHashSet, TreeSet
Podsumowanie z Bartkiem K.
Map - HashMap, LinkedHashMap, TreeMap
Podsumowanie z Bartkiem K.
Queue - ArrayDeque, Stack, PriorityQueue
Podsumowanie z Bartkiem K.
Obsługa null w kolekcjach
Notacja BIG O
Podsumowanie z Bartkiem K.
Notatki
Test 3
Zadania
Projekt!
Warsztat #2 - PROGRAMOWANIE FUNKCYJNE W JAVA
W Javie da się programować funkcyjnie. Powiemy sobie, o co w ogóle chodzi w programowaniu
funkcyjnym.
Przejdziemy do omówienia jak robić to w Javie na podstawie interfejsów funkcyjnych dostarczanych
nam przez
API Javy. Na koniec poruszymy tematykę Streamów, które ułatwią nam pracę na kolekcjach, które
poznaliśmy już
wcześniej.
Przypomnienie czym jest lambda
Lambdy - powtórka z materiałów omówionych w ramach Bootcampu
Podsumowanie z Bartkiem K.
Notatki
Test - Przypomnienie o lambdach
Wprowadzenie, czym jest programowanie funkcyjne
Podstawy programowania funkcyjnego
Często zadawane pytania
Podsumowanie z Bartkiem K.
Notatki
Interfejsy funkcyjne
Czym jest interface funkcyjny
Podsumowanie z Bartkiem K.
Czym jest method reference
Podsumowanie z Bartkiem K.
Notatki
Interface funkcyjny - Predicate
Interface funkcyjny - Consumer
Interface funkcyjny - Supplier
Interface funkcyjny - BiPredicate
Interface funkcyjny - BiConsumer
Interface funkcyjny - Function
Interface funkcyjny - BiFunction
Interface funkcyjny - UnaryOperator
Interface funkcyjny - BinaryOperator
Podsumowanie z Bartkiem K.
Ciekawe przykłady związane z interfejsami funkcyjnymi
Podsumowanie z Bartkiem K.
Notatki
Test 1
Zadania
Projekt!
Streams
Stream - wprowadzenie
Stream - tworzenie
Podsumowanie z Bartkiem K.
Operacje terminujące Stream
Podsumowanie z Bartkiem K.
Operacje pośrednie w Streamach
Podsumowanie z Bartkiem K.
Po co te Streamy
Streamy a typy prymitywne
Podsumowanie z Bartkiem K.
Zaawansowane kolektory
Podsumowanie z Bartkiem K.
Notatki
Test 2
Zadania
Projekt!
Warsztat #3 - LOKALIZACJA I OPERACJE NA PLIKACH
Porozmawiamy o regionalizacji aplikacji, ustawieniach regionalnych, wspieraniu kilku języków
przez
aplikację oraz formatach danych, które są z tym związane. Przejdziemy do operacji na plikach,
czyli
wczytywaniu pliku z dysku, zapisywanie plików na dysku oraz ich edycję. Porozmawiamy również o
serializacji
obiektów, czyli jak można utworzony w Javie obiekt zapisać do pliku. Powiemy sobie do tego, czym
jest IO
oraz NIO.2.
Lokalizacja
Internationalization i Localization
Podsumowanie z Bartkiem K.
Notatki
Resource bundle
Podsumowanie z Bartkiem K.
Notatki
Formatowanie w zależności od lokalizacji
Podsumowanie z Bartkiem K.
Notatki
Test 1
Exceptions - rozszerzamy wiedzę pod operacje na plikach
Try-With-Resources
AutoCloseable
SuppressedExceptions
Podsumowanie z Bartkiem K.
Notatki
IO - in/out
Koncept systemu plików
Klasa File
Podsumowanie z Bartkiem K.
Notatki
Streamy - teoria
Podsumowanie z Bartkiem K.
Notatki
InputStream, OutputStream
Podsumowanie z Bartkiem K.
Notatki
BufferedInputStream, BufferedOutputStream
Podsumowanie z Bartkiem K.
Notatki
Reader, Writer
Podsumowanie z Bartkiem K.
Notatki
Serialization, Deserialization
Podsumowanie z Bartkiem K.
Notatki
PrintStream, PrintWriter
Podsumowanie z Bartkiem K.
Notatki
Scanner
Podsumowanie z Bartkiem K.
Notatki
Test 2
NIO.2
Interface Path
Podsumowanie z Bartkiem K.
Notatki
Klasy Paths and Files
Porównanie NIO.2 vs IO
Podsumowanie z Bartkiem K.
Notatki
Test 3
Zadania
Projekt!
Warsztat #4 - PODSTAWOWE OPERACJE NA BAZACH DANYCH, JDBC
W tym warsztacie będziemy mieli pierwszy kontakt z bazami danych. Opowiemy sobie czym są bazy
danych, po co
się je stosuje. Porozmawiamy o języku, który jest stosowany, aby pobierać i umieszczać dane w
bazach danych.
Poruszymy pojęcie JDBC, będące podstawowym mechanizmem, który zapewnia Java, aby móc podłączyć
się z bazą
danych i się z nią komunikować.
Wprowadzenie
Czym są bazy danych, po co to? DBMS oraz RDBMS
Notatki
SQL
Instalacja PostgreSQL
Notatki
Podstawowe typy danych
Notatki
Zapytania SQL
Notatki
Relacje
Notatki
Test 1
Projekt!
JDBC
Czym jest JDBC
Notatki
Wywołanie SQL z Javy
Notatki
Prepared Statement
Notatki
ResultSet
JDBC i ResultSet
Notatki
Test 2
Projekt!
Warsztat #5 - BUILDING TOOLS
Na tym etapie umiemy już tworzyć proste aplikacje, które są w pełni oparte o kod napisany przez
nas. W
praktyce natomiast, oprócz pisania kodu samodzielnie, bardzo często będziesz korzystać z
narzędzi i
bibliotek, które napisał już wcześniej ktoś inny. Można tym zarządzać manualnie, ale lepiej jest
znać
narzędzia do automatyzowania takiego zarządzania. Narzędzia takie dają nam również możliwość
przygotowania
jednego pliku, który będzie w sobie mieścił całą naszą aplikację i o tym też będziemy rozmawiać
w ramach
tego warsztatu. Narzędzia, które omówimy to Maven i Gradle.
Maven
Czym jest Maven?
Notatki
POM
Notatki
Dependencies
Notatki
Repositories
Notatki
Plugins
Notatki
Fat Jar
Notatki
Test 1
Zadania
Gradle
Czym jest Gradle?
Notatki
Konfiguracja projektu Java w Gradle, Gradle Wrapper
Notatki
Dependencies
Notatki
Gradle czy Maven? Maven czy Gradle?
Notatki
Test 2
Zadania
Warsztat #6 - JAK PISAĆ MNIEJ KODU? LOMBOK
W aplikacjach Java często piszemy kod taki jak np. konstruktory, gettery, settery itp. Taki kod
można pisać
szybciej. Z tego warsztatu dowiemy się jak.
Lombok
Czym jest Lombok?
Integracja Lombok z Intellij
Notatki
Adnotacje Lombok
Notatki
Test
Zadania
Projekt!
Warsztat #7 - JAK ZANOTOWAĆ PRZEBIEG DZIAŁANIA APLIKACJI? LOGOWANIE
Przy działaniu aplikacji bardzo przydatne jest zapisywanie co się w tej aplikacji dzieje,
zapisywanie
przebiegu jej działania. Proces taki nazywa się logowaniem, poruszymy ten temat w obrębie tego
warsztatu.
Logging
Czym jest logowanie?
Dostępne rozwiązania
Logowanie w Javie
SLF4J i Logback
Wracamy do Lomboka
Notatki
Test
Zadania
Projekt!
Warsztat #8 - JAK ZABEZPIECZYĆ SIĘ PRZED BŁĘDAMI? TESTY JEDNOSTKOWE
Wyobraź sobie, że napisaliśmy już dużo kodu, który działa, sprawdziliśmy, że robi to, co
powinien. Teraz
chcemy zmodyfikować sporą część aplikacji. W jaki sposób możemy upewnić się, że nic nie
popsuliśmy? Albo
możemy zrobić to ręcznie, albo napisać testy.
Testy jednostkowe
Czym jest testowanie? Po co się testuje?
Notatki
JUnit
Notatki
Zasady pisania dobrych testów jednostkowych
Notatki
Pokrycie kodu testami
Notatki
TDD
Notatki
Test
Zadania
Projekt!
Warsztat #9 - JAK NARYSOWAĆ OPROGRAMOWANIE? DIAGRAMY UML - 2022
W pracy bardzo często, zanim napiszesz jakikolwiek kod, trzeba będzie przedyskutować to z innymi.
Bardzo
możliwe też, że Twój pomysł będzie musiał być przedstawiony komuś, kto nie ma zielonego pojęcia
o kodowaniu.
W takich sytuacjach pomocne stają się obrazki lub tablica i mazak. Oprogramowanie da się
narysować, z tego
materiału dowiemy się o standardowych oznaczeniach używanych podczas rysowania oprogramowania.
UML
Czym jest UML?
Po co znać UML?
Things
Relationships
Diagrams
Notatki
Warsztat #10 - DESIGN PRINCIPLES I DESIGN PATTERNS - 2022
Jakie są zasady pisania dobrego i czystego kodu? Jak rozwiązywać popularne problemy w taki
sposób, żeby
rozumieli nas inni programiści? Jak nie wymyślać koła na nowo. W programowaniu często powtarzają
się te same
problemy i ktoś już dawno temu wymyślił do nich gotowe rozwiązania. Każdy na swojej ścieżce
nauki
programowania w końcu otrze się o tematykę Design Principles i Design Patterns. O tym
porozmawiamy w ramach
tego warsztatu.
Design Principles
DRY
KISS
YAGNI
SOLID
Notatki
Test 1
Zadanie
Design Patterns
Singleton
Factory
Abstract Factory
Builder
Prototype
Adapter
Composite
Facade
Proxy
Decorator
Bridge
Template method
Chain of Responsibility
Observer
Strategy
Visitor
Notatki
Test 2
Zadania
Warsztat #11 - FUNKCJONALNOŚCI WPROWADZANE W KOLEJNYCH WERSJACH JAVA. AKTUALIZACJA DO NAJNOWSZEJ
WERSJI
JAVA - 2022
Języki programowania i technologie cały czas żyją. Oznacza to, że czy tego chcemy, czy nie, cały
czas
musimy się uczyć i aktualizować naszą wiedzę. Cały kurs celowo został podzielony w ten sposób,
żebyśmy w
pierwszej kolejności skupili się na fundamentalnych zagadnieniach Javy. Na tym poziomie nauki,
gdy już
umiemy z powodzeniem stosować ten język w praktyce, przyszedł czas, żeby dowiedzieć się jakie
nowości były
wprowadzane w kolejnych wersjach Javy.
JDK 8
Zarys historyczny wersji Java
Interfejsy
Date & Time
Functional programming
Optional
IO
Kolekcje
Notatki
JDK 9
JShell
Kolekcje
Interfejsy
try-with-resources
Optional
Streams
Klasy anonimowe
Notatki
JDK 10
var
Kolekcje
Optional
Streams - Collectors
Notatki
JDK 11
javac
String
var i lambda
Files
Notatki
JDK 12
Preview features
switch (preview)
Streams - Collectors
String
Notatki
JDK 13
switch (preview)
Text Blocks (preview)
Notatki
JDK 14
switch
NullPointerException
Pattern Matching instanceof (preview)
Records (preview)
Text Blocks (preview)
Notatki
JDK 15
Text Blocks
Pattern Matching instanceof (preview)
Records (preview)
Sealed Classes (preview)
Notatki
JDK 16
Records
Pattern Matching instanceof
Streams
Day Period
jpackage
Sealed Classes (preview)
Notatki
JDK 17
Sealed Classes
Pattern Matching for switch (preview)
Notatki
JDK 18
Deprecated finalize()
Pattern Matching for switch (preview)
Notatki
Test
Projekt!
Warsztat #12 - JAK ZAPISAĆ HISTORIĘ WPROWADZANYCH ZMIAN? GIT - 2022
No to Git, że Git. W praktyce projekty nie są pisane przez jednego dewelopera i wysyłane innym w
postaci
plików .zip, albo .7z - wygląda to troszeczkę inaczej. W tym materiale dowiemy
się, w jaki
sposób można zapanować nad historią zmian w naszym kodzie i jak można go współdzielić pomiędzy
programistami.
Wstęp do VCS
Czym są VCS i do czego to służy?
Rodzaje VSCów
Notatki
Wstęp do Git
Czym jest Git i w jaki sposób z nim pracować
Stany plików
Instalacja
Konfiguracja
Zakładamy konto na GitHub
Notatki
Praca ze zmianami w Git
Sprawdzamy wprowadzone zmiany
Dodajemy zmiany do repozytorium
Sprawdzamy historię zmian
Ignorujemy zmiany
Wycofujemy dodane zmiany
Notatki
Praca z branchami w Git
Czym są branche
Tworzymy nowy branch
Praca z branchami
Czym jest Merge
Czym jest Rebase
Notatki
Test
Praca z repozytorium zdalnym w Git
Pobieranie zmian z repozytorium zdalnego
Wysyłanie zmian do repozytorium zdalnego
Praca z ze zdalnymi branchami
Notatki
Jakie funkcje Git warto jeszcze znać?
Git Tag
Aliasy
Obwinianie innych
Cherry Pick
Do czego służy plik README.md
Notatki
Sposoby pracy z Git
Gitflow
GitHub Flow
Pull Request
Notatki
Test
Zadania
Warsztat #13 - SPRING BEANS - 2022
W obrębie tego warsztatu raz na zawsze wyjaśnimy sobie, czym jest framework i zaczniemy omawiać
chyba
najbardziej popularny framework Java, czyli Spring. Dowiemy się, w jaki sposób Spring pomaga nam
zbudować
szkielet aplikacji i jakie założenia muszą spełniać nasze klasy, abyśmy mogli poprawnie z tego
frameworka
korzystać.
Spring Intro
A na co to komu potrzebne?
Spring vs Java EE
Potrzebne definicje
Notatki
Spring Beans
Konfiguracja w oparciu o plik XML
Konfiguracja w oparciu o adnotacje
Skanowanie komponentów
Stereotypy
Spring with Lombok
Notatki
Test
Zadania
Warsztat #14 - MOCKING I SPRING - 2022
Na wcześniejszych etapach nauki pojawiały się takie stwierdzenia jak zaślepka, albo mock. Czas
najwyższy
żeby wyjaśnić sobie o co w tym chodzi, jaki jest cel mockowania i jak można to zrobić
zastawiając to
wszystko ze Springiem.
Rodzaje testów
Rodzaje testów
Testy integracyjne
Piramida testów
Notatki
Mockowanie
Czym jest mockowanie?
Stub vs Mock vs Spy
Mockito
Notatki
Testowanie aplikacji Spring
Jak testować aplikacje Spring?
Notatki
Test
Zadania
Warsztat #15 - SPRING DATA ACCESS - 2022/2023
W obrębie tego warsztatu dowiemy się, jak można wykorzystać Spring, żeby uprościć sobie życie przy wykorzystaniu JDBC. Tematyka ta będzie jednocześnie krokiem w kierunku kolejnego warsztatu, czyli Hibernate. W końcu poruszymy również zagadnienia dotyczące transakcji bazodanowych oraz ACID. Zarządzanie transakcjami również oprzemy o mechanizmy Springa.
Z tego warsztatu dowiemy się jak stosować chyba najpopularniejszy framework do połączenia ze sobą
klas Java
i tabel bazodanowych w bardziej zautomatyzowany sposób niż robienie tego ręcznie.
Warsztat #17 - SPRING DATA - 2022/2023
Ten warsztat to będzie pomieszanie Hibernate, baz danych, mapowania klas na tabelki, tabelek na
klasy i to
wszystko obsypiemy Springową posypką.
Warsztat #18 - CONCURRENCY - 2022/2023
Myślisz, że nie jest możliwe wykonywanie kilku czynności jednocześnie? Java tak potrafi, a z tego
warsztatu
dowiemy się jak powiedzieć Javie, że ma to robić.
Warsztat #19 - SPRING MVC - 2022/2023
Dowiemy się jak napisać aplikację webową na podstawie wzorca model-view-controller.
Warsztat #20 - SPRING BOOT - 2022/2023
Z tego warsztatu dowiemy się, jak można uprościć konfigurację Springową i od razu zabrać się do
pracy!
Warsztat #21 - SPRING REST - 2022/2023
Z tego warsztatu dowiemy się, w jaki sposób wystawić REST API przy wykorzystaniu Spring.
Warsztat #22 - HOW TO DEPLOY - 2022/2023
Z tego warsztatu dowiemy się jak napisaną aplikację w Java + Spring umieścić w Internecie.