Kolejny z serii artykuł o Class Loaderach. W dwóch poprzednich poznaliśmy podstawowe Class Loadery wbudowane w JVM oraz w jaki sposób możemy stworzyć własny Class Loader. Dziś na tapetę weźmiemy to co dzieje się pod spodem Class Loadera. Zapraszamy!
Dołączyliśmy do grona Media Partnerów 4Developers 2019!
Mamy zaszczyt poinformować was, iż zostaliśmy Media Partnerem konferencji 4Developers! Będzie to kolejna edycja, na której dostaniemy ogromną dawkę wiedzy dostępną aż na trzynastu ścieżkach tematycznych. W tym roku powróciła ścieżka Mobile oraz zostały uruchomione dwie nowe ścieżki: Cloud Computing i Data Science. Do końca stycznia można zgłaszać propozycje prezentacji na CallForPapers.
Własny Class Loader
W poprzednim wpisie pozyskaliśmy informację na temat wbudowanych w JVM Class Loader’ów. Dowiedzieliśmy się także, że część z nich napisana jest w Javie. Informacja ta sprawia, iż sami możemy napisać własny Class Loader. Tworzenie własnych Class Loader’ów jest tematem dzisiejszego wpisu, zapraszamy!
Domyślne Class Loadery w Javie
ClassLoader’y są mechanizmem odpowiedzialnym za ładowanie klas. Pełnią one bardzo istotną rolę w trakcie działania wirtualnej maszyny Javy. ClassLoader’y są to klasy napisane w Javie, no dobra to kto załadował pierwszą klasę? Zapraszam do wpisu, aby się tego dowiedzieć!
Stos operandów i tablica zmiennych lokalnych
Aby zrealizować obietnicę “Write Once Run Everywhere” autorzy Javy musieli rozwiązać kilka problemów. Jednym z nich była zmienna liczba rejestrów procesora. Rozwiązaniem tego problemu było zastosowanie stosu jako struktury danych do wykonywania operacji na operandach. Aby przekonać się jak to działa “pod spodem” zapraszam do wpisu!
Sprawdzamy rozmiar naszych obiektów z Java Object Layout
Jeśli ktoś podobnie jak ja zastanawia się “ciekawe ile ten obiekt zajmuje miejsca w pamięci?” to mam dla was dobrą wiadomość! Java Object Layout (JOL) jest mini-programem, który potrafi policzyć jaki będzie rozmiar obiektu przechowywanego w pamięci. Oczywiście dobrze wiemy, iż w aktualnych czasach pamięć jest “tania”, jednakże jeśli chcielibyśmy się przekonać, który obiekt zajmuje mniej miejsca w pamięci to zapraszam do artykułu.
Manipulacja kodem bajtowym z JiteScript
W moim przypadku praca z kodem bajtowym zawsze uczy mnie czegoś nowego. Postanowiłem dodać ten wpis, aby zachęcić was do eksperymentów. Aktualnie kompilator oraz JIT wykonuje za nas całą robotę. Prowadzi to do sytuacji, w których bardzo wiele aspektów języka przyjmujemy na zasadzie “no bo tak jest”. Odczarujmy trochę ten kod bajtowy!
Daemon Thread – wątek demoniczny
Chociaż tytuł wpisu brzmi bardzo złowieszczo to nie zapowiada on niczego złego. Pojęcie wątków demonicznych pojawiło się już we wpisie związanym z ThreadFactory, natomiast dziś chciałbym przedstawić wam jak tworzyć takie wątki. Ponadto odpowiemy sobie na pytanie kiedy warto stosować ten typ zadań.
Exchanger – czyli wymieniamy obiekty pomiędzy wątkami
Dalej pozostajemy w tematach związanych z pakietem java.util.concurrent. Dzisiejszy synchronizator pracy to Exchanger. Jak nazwa sugeruje służy on do wymiany danych pomiędzy dwoma wątkami. Podczas tworzenia tego synchronizatora określamy jakiego typu dane chcemy wymienić. Dane zostaną wymienione dopiero, gdy dwa wątki będą gotowe.
Stany wątków w Javie
Stany wątków są częstym pytaniem na rozmowie kwalifikacyjnej z działu wielowątkowości. W Javie wątki mogą znajdować się w sześciu stanach. Każda zmiana stanu poprzedzona jest jakimś zdarzeniem. Co to za zdarzenia? Zapraszam do wpisu, aby się o tym dowiedzieć!