java.time.Clock – testowanie czasu

Proces testowania przez wielu z nas traktowany jest podobnie jak sztuka. Dobre testy powinny spełniać wiele czynników by mogły być nazwane “dobrymi”. Jednym z nich jest brak zależność od czasu. Nasze testy powinny być tak szybkie jak to tylko możliwe oraz nie powinny zależeć od czynników zewnętrznych (mówimy o testach jednostkowych). Aby pozbyć się zależności czasowych Java 8 dostarczyła nam nową klasę java.time.Clock.

Czytaj dalej


ForkJoinPool czyli dziel i zwyciężaj

ForkJoinPool jest specyficzną pulą, która została dodana w Javie 7, jednakże na dobre zaczęto jej używać w Javie 8. Pula ta służy do realizacji zadań, które da się podzielić. Do podziału problemów stosuje ona algorytm dziel i zwyciężaj, a te podzielone zadania przydzielane są dzięki wykorzystaniu algorytmu Work-Stealing. Jest to bardzo ciekawa pula, ponieważ jest współdzielona przez cały proces uruchomiony na JVM.

Czytaj dalej


ThreadFactory, czyli pool-n-thread-m

Jestem zdania, że nie ma co na siłę dorzucać wielowątkowości do każdej tworzonej aplikacji, jednakże czasem dostajemy zadanie, w którym musimy zrównoleglić wykonywanie zadań. “Dobra” wielowątkowość może poprawić wydajność i czas przetwarzania naszej aplikacji, jednakże taki przywilej niesie ze sobą także różne utrudnienia takie jak choćby debugowanie. Czy możemy to jakoś uprościć?

Czytaj dalej


Java 9 – JShell czyli read-eval-print loop

Java 9 jest już z nami oficjalnie od pewnego czasu, pewnie u niektórych osób działa już na produkcji. Najnowsza wersja nie przyniosła aż tak dużych zmian jak Java 8. Oprócz modularności czy zmian związanych ze składnią tak zwanych syntactic sugar, pojawił się mechanizm, który występuje w wielu innych językach, a mianowicie REPL (ang. Read-Eval-Print Loop). W Javie 9 nazywa się JShell i jest najczęściej wykorzystywany do prototypowania oraz nauki języka.

Czytaj dalej