Techniki Zaawansowane
8 godz. 35 min · Java · Full-stack i Programowanie
Rafał SolarskiW poczatkowych lekcjach przyjrzymy sie pokladowi, na jakim bedziemy uruchamiali nasze programy. Wykorzystamy VisualVM do podgladania parametrów JVM. Zobaczymy równiez jakie zasoby sa tam dostepne oraz dowiesz sie jak monitorowac to, czy dobrze z nich korzystamy. Opowiemy Ci tez miedzy innymi o tym, jak zrobic heap i thread dump, oraz jak wlaczyc logi GC.
Kolejne lekcje kursu zostaly poswiecone wyrazeniom regularnym. Wyrazenia regularne mozemy wykorzystac nie tylko do walidacji danych wprowadzania przez uzytkownika, ale równiez do dzielenia tekstu oraz wyluskiwania wystapien wzorców w duzym tekscie. W tym rozdziale dowiemy sie miedzy innymi tego, jak mozemy wykorzystac ten potencjal z poziomu Javy.
Dzieki typom generycznym jestesmy w stanie osiagnac bezpieczenstwo typów w trakcie kompilacji przy zachowaniu elastycznosci pisanego kodu. W nastepnym rozdziale kursu przyjrzymy sie temu, jak mozemy je wykorzystac, oraz w jaki sposób czasami nalezy z tego bezpieczenstwa zrezygnowac.
Interfejsy funkcyjne to sposób na przeniesienie odrobiny swiata programowania funkcyjnego do Javy. Gdy polaczymy je z wyrazeniami lambda oraz API strumieni pozwola nam pisac te sama logike w duzo bardziej przejrzysty sposób.
Kolekcje, czyli listy, mapy, zbiory i kolejki to jedne z najczesciej wykorzystywanych klas w codziennej pracy. To jak dobrze poznamy ich mozliwosci ma ogromny wplyw na to, w jaki sposób bedziemy podchodzili do rozwiazywania wyzwan na naszej drodze.
System plików to zasób bez którego ciezko sobie poradzic. Pozwalaja nam na dostarczanie konfiguracji, danych wejsciowych i wyjsciowych, a przez to równiez integrowanie ze soba calych systemów.W tym rozdziale nauczymy sie korzystac z tych dobrodziejstw w bezpieczny sposób wykorzystujac m.in. IO Streams.
Trzymanie daty w String to niekoniecznie najwygodniejszy sposób. Juz od pewnego czasu Java dysponuje bardzo wygodnym Date&Time API - zobaczymy, co mozemy w nim znalezc.
Wielowatkowosc nie jest prosta... i dlugo tak jeszcze pozostanie. Nawet jesli korzystamy z frameworków, które próbuja ja przed nami ukryc, to ciagle musimy byc swiadomi problemów jakie sie z nia wiaza. W tym rozdziale poznamy glówne problemy na jakie mozna natrafic programujac wielowatkowo w Javie. Poznamy równiez klasy, które zdecydowanie pomoga nam zapanowac nad ta zlozonoscia.
JDBC to najbardziej podstawowy sposób laczenia sie z baza SQL z poziomu Javy. W wielu systemach/aplikacjach stosuje sie rozwiazania ORM takie jak JPA/Hibernate. Mimo wszystko warto wiedziec jak to pod spodem dziala oraz umiec poradzic sobie w aplikacjach, gdzie wybrano bardziej "lekkie" podejscie niz Hibernate.
Na koniec kursu wykorzystamy zdobyta wiedze, aby stworzyc prosta aplikacje pozwalajaca na przechowywanie danych o wydatkach. Po stworzeniu coreu aplikacji, mozesz spróbowac uzupelnic go za pomoca GUI.
Ten kurs stworzony zostal przede wszystkim z mysla o osobach, które juz poznaly podstawy jezyka, takie jak zmienne, mechanizmy kontroli wykonania, klasy, typy generyczne.Jezeli chcesz poczuc sie swobodnie nie tylko jesli chodzi o mechanizmy jezyka, ale równiez pod wzgledem znajomosci standardowej biblioteki Javy - to kurs w sam raz dla Ciebie. Materialy beda przydatne dla studentów, którzy znaja juz podstawowa skladnie Javy; programistów Javy chcacych poszerzyc lub uporzadkowac swoja wiedze; programistów innych jezyków, którzy chca poznac inny stack technologiczny.
Cześć zanim wystartujemy
potrzebujemy uzbroić się w kilka narzędzi pierwszą rzeczą
której oczywiście będziemy potrzebowali jest zintegrowane środowisko programistyczne środowiskiem
jakiego ja będę używał to IntelliJ IDEA w wersji community
jest to wersja darmowa więc jeżeli powiedzmy jesteś
zainteresowany może ją sobie po prostu pobrać i zainstalować jeżeli wykorzystujesz
jakieś inne narzędzie i jesteś powiedzmy do niego przyzwyczajony to możesz
jak najbardziej wykorzystywać jakiś inny tytuł netbeans przy eclipse okej
teraz pokaże jak otworzyć w idei templates do takiego powiedzmy
projektu czy takiej podstawowej lekcji tak który jest też załączony
do tej lekcji możesz go sobie pobrać okej klikam prostu w open znajdujemy
katalog gdzie rozpakowaliśmy sobie nasze zasoby tak naszą
lekcję i tutaj wybieramy plik pom czym on dokładnie jest
to jeszcze się dowiemy okej teraz wybieramy open as a project okej
projekt nam się powinien odpalić w idei jeszcze przejdę do trybu prezentacji
żeby cokolwiek było widać i teraz jak sobie zajrzymy to sobie zobaczmy
jak wygląda taki template naszego projektu okej
to przede wszystkim jest to katalog src w którym znajduje się kod tak powiedzmy
tutaj będą jakieś pakiety taki main powiedzmy tak no
i tutaj właśnie będą jakieś source'y java prawda okej
okej żeby odpalić samego intellij nie potrzebowaliśmy javy
ponieważ ona jest tak jakby zembendowana już w tę paczkę instalacyjną
intellij ale żeby powiedzmy kompilować nasz kod
i powiedzmy go pakować i wykonywać będziemy potrzebowali jrm
i jdk prawda tym jdk którego ja używam to
jest jdk open jdk w wersji 10 tak
ty możesz używać jakiegoś innego możesz używać na przykład 11 9
tak niektóre rzeczy mogą się lekko różnić tak raczej
nie powinien być to większy problem ważną rzeczą tylko to że jeżeli
mamy tutaj pom czyli uzywamy maven to żeby tutaj powiedzmy wskazać
jakiego powiedzmy jdk i na jakim jrm
kompilujemy kolejnym narzędziem którego
będziemy potrzebowali jest narzędzie które będzie budowało dla nas jar'y tak
czyli będzie zarządzało kompilacją oraz będzie odpowiedzialny
za dostarczenie odpowiednich bibliotek u
nas to będzie maven zasadniczo ten plik pom.xml którego
klikaliśmy odpalając projekt jest właśnie pewnego rodzaju deskryptor projektu
dla maven'a w nim możemy definiować poza jakąś meta wiedzą
o naszym projekcie tak jak wersję i nazwa tak to poza tym w
nim możemy definiować jakie zależności ma nasz projekt teraz jeżeli
coś takiego sobie zdefiniujemy tak każdy powiedzmy tutaj wpis
mniej więcej powiedzmy przypada na jednego pobranego jara przez maven'a
tak teraz jeżeli ktoś inny pobierze sobie nasz projekt tak
to on nie będzie musiał powiedzmy już pobierać tych jar'ów tylko maven
zrobi za niego to automatycznie okej dobra
możemy zobaczyć że w external libraries tutaj
te takie jar'y się pojawiły i tutaj jest trochę więcej bo one
też mają swoje zależności jeszcze okej a więc
to jest coś do czego będziemy potrzebowali maven'a lub jakiś inny analogiczny
tool tak jak na przykład sbt albo grails tak
drugą rzeczą który maven nam jest w stanie zapewnić jest
budowanie a mianowicie on potrafi na łatwo zbudować paczkę takiego
jar'a i ponadto on jeszcze potrafi zbudować takiego jar'a który
jeszcze w sobie zawiera jeszcze inne jakieś biblioteki rozpakowane prawda
okej dobra i maven jest też darmowym
narzędziem które możesz sobie albo pobrać binarkę a właściwie jar'a bo
to jest projekt java tak albo możesz go sobie na przykład
pobrać w jakimś package menadżerze który jest typowy dla twojej platformy
już takim ostatnim narzędziem które tutaj omówimy jest
junit a mianowicie junit w wersji piątej jest to powiedzmy
narzędzie czy może biblioteka która jest pewnego
rodzaju engine'em do uruchamiania testów możemy sobie zobaczyć w
ścieżce w maven domyślnie powiedzmy szuka testów ścieżce
src test więc powiedzmy nazwa języka czyli java
tak no i tutaj mamy przykład jakiegoś prostego testu on nic nie robi
tylko sprawdza czy jedynka jest równa jedynce i teraz używając
tego junit'a jesteśmy w stanie po pierwsze pisać testy
czyli powiedzmy w jakiś zautomatyzowany sposób testować
sprawdzać działanie naszych klas metod się nie zmieniło
tak czy ciągle jest poprawne to jest pierwsze zadanie a
drugą taką powiedzmy mniej standardową rzeczą do której będziemy wykorzystywali
testy to jest do prezentacji pewnych uruchamialnych
snippetów kodu zasadniczo w niektórych lekcjach będziemy omawiali
różne api i tam będzie dużo przykładów żebyś
nie musiał powiedzmy dostawać paczki w której jest tylko
ostatnia powiedzmy klatka z materiału tak ten kod który tam
się znajdował to po prostu będę starał się zrzucać te ważniejsze rzeczy
do oddzielnych testów jak się przyjrzymy jak jest zbudowana taka
klasa testów w junit jest to po prostu zwyczajna klasa
my ją wrzucamy do tej właśnie powiedzmy pod tym
drugim path'em czyli pod tym test tak i tutaj java tak tu ją umieszczamy
i powiedzmy ta klasa zawiera metody które są
odnotowane adnotacją test tak i
te metody to są po prostu poszczególne testy ich może być tutaj kilka prawda
każdy z nich możemy uruchomić na przykład z wykorzystaniem idei oddzielnie ale
możemy odpalić wszystkie naraz prawda teraz jeszcze jedną
rzeczą którą warto wiedzieć to poza tym że możemy mieć do tej metody odnotowane test
to jeszcze możemy mieć dwie metody to są
odnotowane before each oraz after each teraz tutaj jest powiedzmy
przykład który pokazuje jak one działają jeżeli to sobie odpalimy to
widzimy że metody odnotowane before each są uruchamiane tak jak
nazwa mówi przed każdą metodą testową czyli przed każdą
z tych tak oraz po dzięki takiej konstrukcji jesteśmy
w stanie przygotować powiedzmy jakiś środowisko przed uruchomieniem testu na
przykład stworzyć bazę stworzyć katalog usunąć stary katalog tak skinować bazę
żeby powiedzmy każdy każdy test miał świeżą bazę tak
żeby nie było jakiś zależności tak oraz później jeszcze po tym teście na przykład
posprzątać prawda czyli na przykład zamknąć jakieś połączenie przykładowo
klasa może wyglądać w ten sposób powiedzmy mamy sobie tę klasę
tak tutaj mamy jakieś testy które obrazują różne powiedzmy jakieś
przykłady z lekcji tak i dzięki temu powiedzmy że to jest w teście
junit'owym tak to możemy sobie odpalić na przykład wszystkie przykłady na
raz tak tutaj powiedzmy mamy na konsoli jeszcze z nich wyjścia po
prostu możemy wziąć jakiś jeden snippet który nas interesuje uruchomić
go sobie możemy go sobie gdzieś przekleić tak możemy powiedzmy go tutaj jakoś
zmodyfikować tak coś z nim zrobić trochę poeksperymentować z
tym też z tego względu że powiedzmy każdy z nich możesz odpalić oddzielnie
tak nie musisz tego wszystkiego przyklejać to wydaje mi się że jest to powiedzmy
trochę łatwiejsze w dostępie z tych narzędzi te są wszystkie jeszcze
jedne narzędzie którego będziemy używali jest visualvm ale
o nim już usłyszysz w kolejnym rozdziale jak będziemy się przyglądali samemu jvm'owi
okej skoro jesteśmy uzbrojeni to możemy startować powodzenia