Harmonogram 'Warsztatów Zajavka'

Wróć do strony głównej Zajavka

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.

JDBC

Przypomnienie

Notatki

Transakcje

Czym są transakcje

ACID

Poziomy izolacji transakcji

Negatywne efekty współbieżności

Notatki

Spring Data Access

JdbcTemplate

SimpleJdbcInsert

SimpleJdbcCall

NamedParameterJdbcTemplate

Programowalne zarządzanie transakcjami

Deklaratywne zarządzanie transakcjami - @Transactional

Transakcje fizyczne vs transakcje logiczne

Notatki

Test

Projekt!


Warsztat #16 - ORM I HIBERNATE - 2022/2023

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.


Wróć do strony głównej Zajavka