
Najważniejsze podstawowe informacje o języku JAVA i jego architekturze, które ułatwia zrozumienie jak działa JAVA i programy napisane w tym języku
Instalacja JDK oraz konfiguracja JAVA na komputerze. Jest to pierwszy krok w przygotowaniu srodowiska pracy programisty
Zazwyczaj w pracy będziemy używać kilku wersji JAVA, w zależności od projektu na którym pracujemy. Jak doinstalować inna wersje i jak przełaczać się pomiedzy wersjami JDK
Omówienie czym jest IDE i do czego służy, jakie sa najpopularniejsze oraz instalacja IntelliJ
Jakie mamy rodzaje komentarzy i do czego je wykorzystujemy
Metody drukujace:
println
printf
Jakie mamy typy proste w JAVA
Jak tworzyć zmienne lokalne
Standardowy strumień wyjścia - System.out
Strumień wyjścia dla błędów - System.err
Strumień wejścia - System.in
Scanner dla strumienia wejścia
Operatory matematyczne:
dodawanie +
odejmowanie -
mnożenie *
dzielenie /
modulo %
Podsumowanie sekcji 3 - Rewiev
Czym jest Agile. Procesy w Scrum
Czym jest klasa, jak się ją tworzy i z jakich elementów (artefaktów) się składa
pola, domyślna inicjalizacja pól, kompozycja
Co to są modyfikatory static i final oraz jaka rolę pełnią na polach
Jak tworzyć metody, rodzaje metod, sygnatura metody
słowo kluczowe 'this' - do czego służy, jakie problemy rozwiązuje i jak z niego korzystać
Co to są metody statyczne, do czego służą i jak je tworzyć
Kontruktory: jak tworzyć, jak je wywoływać, do czego służą.
Konstruktory domyślne - kiedy się generują.
Przeciążanie konstruktorów.
Czym jest blok statyczny, kiedy jest wywoływany i jak się go tworzy
W jakiej kolejności są tworzone, inicjalizowane pola, wywoływane metody i konstruktory.
Jak tworzymy pakiety, do czego służą. Przy okazji pakietów omówimy sobie w jaki sposób tworzymy importy klas i dlaczego
Na czym polega referencja, czym jest, jak się z niej korzysta
Jaka jest różnica w przekazywaniu argumentów do metody przez wartość i przez referencje
Operatory AND, OR, XOR i negacja
Operatory porównania, czyli zmienne są równe, różne, większe, czy mniejsze
Warunki if-else, skrócone warunki, operacja instanceof
Tworzymy aplikację kalkulator. Będzie również jak dzielić zadanie na mniejsze, jak dzielony jest kod na metody, a także rekurencja, Object Value, typy klas
Dzielimy kod na klasy, poznajemy pierwszą zasadę SOLID - Single Responsibility Principle, pzonajemy Singleton - jak go tworzymy, w jaki sposób z niego korzystać
Nowy typ - Enum. Jak go tworzyć, jak go wykorzystywać. Pola i metody w enumie.
Warunki za pomocą switch case. Jak tworzyć, kiedy najlepiej się sprawdzają. Przykład z liczbą, String, enumem. Będzie również break, yield oraz switch w JAVA 17 z wyrażeniem lambda.
Uzbrojeni w wiedzę o enumach i switch'ach zrobimy refaktor naszej aplikacji - kalkulator.
Poznamy pętlę for. Wykorzystamy ją w praktyce z użyciem tablic. Uzupełnimy tablicę losowymi liczbami, a następnie wydrukujemy wyniki. Na koniec pokarzę jak odwrócić kolejność wartości w tablicy
Teoria w praktyce, czyli refaktor kalkulatora z użyciem tablic, pętli i wyjątków
Czym jest code smell, jak powstaje, czym się charakteryzuje i jakie niesie za sobą konsekwencje
Co to są wrappery, jak je tworzyć, co potrafią, przegląd metod
W tym filmie pokażę, jak w prosty i efektywny sposób wykorzystać pętlę for-each w języku Java. Dowiesz się, jakie są zalety tej metody i jak ją stosować, aby ulepszyć swój kod.
Instrukcje przerwania: return, throw, break, continue, label
Jakie operacje na plikach możemy wykonać na plikach? Jak zapisywać do plików i jak je odczytywać? W tej lekcji dowiemy się jak pracować z plikami.
Jak używać konstrukcji try-with-resources i kiedy powinniśny.
Opowiemy sobie, jak tworzyć biblioteki, jak dołączać biblioteki do projektu w IntelliJ oraz jak kompilować i pakować projekt do pliku .jar zarówno dla bibliotek, jak i tzw. jar runable
Omówienie formatu danych JSON oraz użycie jego w JAVA z wykorzystaniem biblioteki gson
Poznajmy kolekcję mapa. Jest to kolekcja bardzo przydatna w algorytmice.
Poznajemy strumienie i metody: .stream() .map() .filter() i .toList()
Poznajemy sposoby grupowania danych w strumieniach
W tym odcinku poznamy metodę collect(), która służy do transformacji strumienia na kolekcję
Omówiliśmy sobie przechodzenie z kolekcji do strumieni i ze strumieni do kolekcji. Teraz poznamy metody, które pozwolą nam pracować na kolekcji.
Odkryjemy teraz jedną z najpotężniejszych i najbardziej wszechstronnych metod dostępnych w strumieniach Java - metodę reduce(). Ta technika pozwala na transformację i agregację danych w strumieniach w sposób bardziej czytelny i zwięzły, co może znacząco poprawić jakość twojego kodu.
Jak tworzyć obiekty Optional za pomocą metod of(), ofNullable(), empty() - różnice i kiedy którą metodę wykorzystać
W jaki sposób wyciągnąć wartość z Optional? Opis metod get(), orElse(), orElseGet(), orElseTrhow() - kiedy z której metody skorzystać, aby nie było wtopy.
Omówimy sobie metody na Optionalach takie jak: .map(), .filter(), ifPresent(), or(). Zobaczymy jak z nich korzystać i w jakich sytuacjach będą przydatne
Poznamy metodę .flatMap() - do czego służy i jak wykorzystywać. Będzie również w jak i kiedy przechodzić z Optional do Stream
Sposób na wykorzystanie kodu w wielu klasach za pomocą dziedziczenia
interface jako inny sposób na dziedziczenie
W jaki sposób można dziedziczyć w adnotacjach? Czy się różni nested annotation vs. meta annotation
Czym jest programowanie refleksyjne? Omówimy co możemy robić robić na klasie w refleksji
Czym różni się typ i klasa. Najlepiej to widać w programowaniurefleksyjnym
Opowiemy jakie operacje można wykonać na polu w refleksji
Opowiemy o konstruktorach w refleksji, czyli jak tworzyć obiekty i jak decydować którego konstruktora użyć przy programowaniu refleksyjnym
Jak korzystać z metod w refleksji? Jak wybierać metody które możemy wywołać i jak je wywoływać? Tutaj omówimy wszystkie te zagadnienia
Uczymy się języka JAVA.
W tym kursie będzie SE, czyli Standard Edition. Będziemy pracować na najnowszej wersji JAVA 17.
Zaczynamy od wprowadzenia, czyli do czego służy programowanie, jakie są języki programowania i jak działają.
Potem przechodzimy do JAVA. Bardzo szybko przechodzimy do programowania obiektowego (inaczej niż zazwyczaj na kursach), aby mieć jak najwięcej czasu na oswojenie się z tym paradygmatem.
Na bieżąco również będą wprowadzane rzeczy z wersji 8+, takie jak Optional, Stream, wyrażenia lambda, Functional Interface.
Plan jest taki:
Wstęp (o komputerze i językach programowania) - pomoże zrozumieć po co uczymy się programowania
Pierwszy kod - oswajamy się z językiem, poznajemy jego strukturę, typy itd.
Klasy i OOP - poznajemy artefakty języka takie jak klasa, pole, metoda, konstruktor, pakiety, a także jak tego powinno się używać
Sterowanie przebiegiem - będzie o warunkach, pętlach oraz kolekcjach, a także wyjątki
Piszemy aplikację - poznamy przydatne klasy, pierwsze wzorce projektowe. Zrobimy też pierwszą aplikację okienkową
Dziedziczenie - tu się zacznie dziać, bo poznamy różnicę między kompozycją, a dziedziczeniem. Będą klasy abstrakcyjne, interface'y, kolejne wzorce projektowe i klasy wykorzystywane w strumieniach.
Storage - będziemy tworzyć różne pliki. Dużo plików... obrazy, excel, html, pliki typu yaml, json. Będziemy uczyć się przechowywać dane
Refleksja - i wchodzimy na wyższy poziom abstrakcji, będziemy robić rzeczy, których się nie da zrobić. Poznamy adnotacje
Współbieżność - gdy jeden wątek to za mało, będziemy uruchamiać kilka procesów równolegle - będzie o wątkach - jak je pisać poprawnie i jak je synchronizować