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ść to jest ostatnia lekcja w rozdziale o typach
generycznych w javie chciałbym tutaj trochę tak podsumować czego się nauczyliśmy
a też powiedzieć o kilku ograniczeniach tego mechanizmu którego się nauczyliśmy
po pierwsze jeżeli wykorzystasz dziś typ generyczny w
javie w jakiejś metodzie klasie to musisz pamiętać o tym że po
kompilacji ten typ znika on jest w momencie kiedy
już skompilujemy kod nie ma żadnego sposobu aby dostać się do tej
informacji nie jesteśmy w stanie tego odcyfrować możemy jedynie zaglądać
jakiego typu są elementy które wyciągamy z danej kolekcji ale nie mamy żadnego
globalnego takiego ograniczenia nie ma tej globalnej informacji nie możesz zrobić
na przykład na danej jakiejś kolekcji jakiejś liście
nie jesteś w stanie zrobić instance of stwierdzić jakiego typu
generycznego jest to lista to jest pierwsze ograniczenie drugim
ograniczeniem jest to że i tak nawet jeżeli używasz typów generycznych to
ciągle typy generyczne możesz hakować dowiedzieliśmy się o tym w raw types
tak możemy każdą kolekcję zrzucić na raw types a już
raw types można dowolnie później castować tak nawet nie trzeba tego
robić jawnie czyli ciągle jeżeli chcesz to możesz się skrzywdzić
nawet używając tych typów generycznych zakładam jednak że w większości przypadków
kiedy będziesz do tego zmuszony to będzie niekoniecznie
twoja decyzja ale raczej będzie to narzucone ze względu na to że używasz jakiejś
starej biblioteki która dostarcza na przykład taki a nie inny api
kolejnym ograniczeniem jest to
czego nie pokazywałem w trakcie tego rozdziału ale jest to bardzo proste korzystając
z generycznego typu nie jesteś w stanie stworzyć nowe jego instancji możesz
tworzyć nowe instancje na przykład kolekcji list czy innych
wrapperów które będą korzystały z tego typu ale samego samego
nie na przykład stringa jeżeli podasz go jako parametr nawet
i będziesz go miał w postaci jakiegoś tam e czy czegoś innego nie jesteś w stanie na
nim zrobić new okej jeżeli chodzi o to
to zasadniczo wszystko jeżeli chodzi o te typy generyczne bardzo
dziękuję ci za wszelką taką cierpliwość ponieważ ponieważ był to taki już
trochę dłuższy rozdział oraz zachęcam cię do zapoznania się
z kolejnym materiałem dzięki wielkie i trzymaj się