Fundamenty języka Java

Niecały miesiąc temu zostałem poproszony przez Strefę Kursów o ocenę ich nowo wydanego materiału dla osób chcących zacząć naukę programowania w Javie: „Fundamenty języka Java„. Przerobiłem go kilka dni temu i dziś zapraszam do przeczytania recenzji.

Spis treści całego kursu jest dostępny tutaj, a trwa on aż ponad 12 godzin.

O autorze

Autorem wszystkich lekcji jest Piotr Dzwiniel, z wykształcenia psycholog i neurobiolog, doktorant Instytutu Biologii Doświadczalnej im. M. Nenckiego PAN. W swojej pracy wykorzystuje różne języki programowania: Java, Python, Matlab, czy Haskell. Tworzy narzędzia diagnostyczne, projektuje procedury eksperymentalne oraz zajmuje się przetwarzaniem i analizowaniem danych.

Autor wypowiada się niezwykle swobodnie i z wielką pewnością. Nie usłyszałem żadnych zająknięć, czy niezręcznych chwili zastanowienia.

Grupa docelowa

Kurs według wydawcy został stworzony z myślą o osobach, które chciałyby rozpocząć swoją przygodę z programowaniem w JAVA, ale właściwie niewiedzących od czego zacząć.

Kwestie techniczne

Tak samo jak poprzednio recenzowany kurs z Videopointu, ten również oglądałem na 4,7-calowym smartfonie. Jakość video jest bardzo dobra, jednak czcionki w IDE mogłyby być odrobinę większe.

Kurs składa się blisko z 80(!) lekcji podzielonych na kilka grup. Pod koniec każdego rozdziału przygotowany jest krótki test składający się z kilku pytań. Aby go zaliczyć należy odpowiedzieć poprawnie na wszystkie pytania. Do testów można przystąpić dowolną ilość razy.
testtest_fail

Sam interfejs platformy oparty jest na bootstrapie (v3.3.6), jest responsywny i dobrze się sprawuje na urządzeniach mobilnych. Tak na marginesie – przeglądając źródła można zauważyć, że wykorzystywany jest tu m.in. JavaScriptowy AngularJS.

Po uruchomieniu pierwszego odcinka każdy następny uruchamia się automatycznie, ale jest możliwość wyłączenia autoodtwarzania:
playlista

Do kursu załączone jest jedno zbiorcze archiwum zawierające dodatkowe materiały – listingi kodu pogrupowane według lekcji. 427 plików, 268 folderów.

Każdą lekcje można pobrać na lokalny dysk w formacie MP4. Minusem jest to, że nie da się pobrać wszystkich odcinków jednym kliknięciem (bądź nie znalazłem takiej opcji).

Po przerobieniu kilku filmów i późniejszej próbie kontynuacji nauki, wyświetli się powiadomienie: „Czy chcesz wrócić do ostatnio oglądanej lekcji?”.

Zawartość merytoryczna

Przez większość lekcji wykorzystywane jest jedno z najpopularniejszych zintegrowanych środowisk programistycznych dla Javy, czyli Intellij IDEA. Po krótkim wstępie na temat samego języka, autor poświęca ok. 30 minut na temat konfiguracji właśnie tego IDE.

W drugim rozdziale zostały omówione konwencje pisania kodu w Javie. Trafną uwagą była informacja na na temat czytelności i ilości linii kodu (przy dziesięciu warunkach if/else różnica między dwoma konwencjami kodowania to 30 wierszy).

W tematyce komentarzy autor powiedział co nieco o Javadocu i pokazał jak wygenerować dokumentację z linii komend.

W rozdziale trzecim w dosyć przystępny sposób została wyjaśniona zasada działania Garbage Collectora i wyjaśniono czym jest stos i sterta.

Cały czwarty rozdział porusza tematykę typów prostych w Javie. Tutaj daję wielki plus za omówienie kwestii wydajnościowych, bo w większości źródeł otrzymamy tylko „suchą” informację, że typy proste są wydajniejsze. Autor przedstawił jaka może być różnica wydajności między wykorzystywaniem typów prostych i obiektowych. Przy sumowaniu liczb od 1 do miliarda jest to 18-krotna różnica czasu (ponad 6 sekund vs 300 milisekund dzięki zastosowaniu typów prostych). Bardzo dobry przykład.
Minusem i rozczarowaniem tego rozdziału było nieomówienie zasad przeprowadzania operacji finansowych na liczbach zmiennoprzecinkowych. Wystarczyłoby choćby 5 minut aby przedstawić prosty przykład błędu zaokrągleń i sposobu uniknięcia tego typu problemów z wykorzystania klasy BigDecimal z pakietu java.math.

To co mnie zaskoczyło, to że w rozdziale szóstym autory wyjaśnił sposób bitowej reprezentacji typów całkowitoliczbowych w Javie, a mianowicie kodowanie z „uzupełnianiem do dwóch”. Krótko i rzeczowo. Bardzo dobrze.

Przez kolejne rozdziały omawiane są wszystkie rodzaje pętli, poruszane są kwestie obiektowości i zalet polimorfizmu  w Javie, czyli klasy, konstruktory, przeciążenia, dziedziczenie, przesłanianie, klasy anonimowe, wewnętrzne, abstrakcyjne, interfejsy, i tak dalej. Podstawy.

Bardzo dobrze, że w kursie dla rozpoczynających naukę z Javą poruszono kwestię typów generycznych, a poświecono temu ok. 50 minut. Ehh… pamiętam czasy przepisywania w projektach wykorzystywanych kolekcji na te generyczne od Javy w wersji piątej 🙂

W końcowych rozdziałach nie mogło oczywiście zabraknąć omówienia kwestii obsługi wyjątków i kolekcji (do których jeszcze wrócę w podsumowaniu). Natomiast z dodatkowych zagadnień poruszono informacje o JavaFX. Poświęcono na to ponad godzinę.

Bardzo podobało mi się to, że w jednej z lekcji omówiono strumienie dostępne od Javy 8 i autor porównał szybkość wydajności przetwarzania sekwencyjnego i równoległego (a to drugie potrafi wykorzystać wszystkie rdzenie procesora).

Podsumowanie

java_fundamenty

Kurs jest przygotowany w profesjonalny sposób, a przekaz jest łatwo przyswajalny. To czego mi zabrakło, to omówienia zasad wykonywania operacji finansowych na liczbach zmiennoprzecinkowych w Javie. Zabrakło również porównania podstaw, czyli różnic między implementacjami list i map – to jest bardzo ważna kwestia, wystarczyłoby kilka minut aby wyjaśnić różnicę między HashMapą a LinkedHashMapą, ArrayListą i LinkedListą, itd. W ogóle nie poruszono również kwestii wątków – i dobrze, na ten temat trzeba niestety poświęcić sporo, sporo więcej czasu. Jednak bardzo dobrze, że autor powiedział co nieco o reprezentacji bitowej liczb całkowitych, wyrażeniach lambda, czy kwestiach wydajnościowych.

Mimo kilku braków, moje zdanie jest krótkie – bardzo, ale to bardzo dobry kurs dla osób chcących rozpocząć naukę programowania w Javie. Bez cienia wątpliwości polecam wszystkim początkującym. Można go kupić tutaj.

UWAGA!
Aby tradycji stało się zadość, również i tym razem udało mi się dla Was zdobyć specjalny kod rabatowy na ten kurs:
NOTATNIK
Nie wiem niestety do kiedy będzie ważny. Jeśli ktoś planuje naukę Javy – zachęcam do jego wykorzystania.

 

 

 

To również może Cię zainteresować:

One thought on “Fundamenty języka Java

  1. Cześć, pytanie trochę na obrzeżu, ale w tematyce Javy i początku programowania. Czy znasz jakiś kurs dla osoby, która rozwinąć się z poziomu Angulara i podstaw Javy do tworzenia pełnoprawnych aplikacji CRUD? Jeśli coś takiego widziałaś będę bardzo wdzięczny za pomoc 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *