W sumie odpowiedź na pytanie o biblioteki, które trzeba mieć w swoim arsenale, jeżeli ruszamy do boju przeciwko Javie 8 🙂

Na podstawie tego tekstu plus moje rozszerzenia:

  • Google Guava – Nie tylko kolekcje, ale też ESB, net, czy grafy (o tym nie pisałem). Tam jest dużo różnych ciekawych rzeczy ponad kolekcjami.
  • Lombok – generatory kodu, obiekty niezmienne itp. Robienie sobie dobrze na poziomie objętości kodu. Przy czym trzeba uważać, bo dookoła śmiga też JPA czy Spring ze swoimi proxy i aspektami.
  • pCollections – kolekcje, które czasami się przydają. Nie zastąpią tych z API, ale czasami potrzebujemy specyficznych funkcjonalności czy też niezmienności. To jest jakiś pomysł.
  • Javaslang – różne elementy funkcyjne, dość ciekawe strumienie i duża naturalność w pisaniu. Przy czym z tyłu głowy pytanie o wydajność… ale to jest Java 😉
  • JOOQ/JOOL – biblioteka, która ma podobne zadanie co pCollection. Generalnie czasami potrzebujemy jakiegoś ekstra API dla strumieni. Tu je zapewne znajdziemy.

Miła pani, która o to zapytała – kto ty?

Pytanie od Tomka Nurkiewicza o użycie parallel streamów. Wersja krótka – wątki potrzebują RAMu, którego nie mogliśmy zapewnić. Wersja trochę bardziej rozbudowana. „Optymalizacje” zrównoleglające mają taki dziwny „defekt”, że JVM próbuje alokować pamięć dla każdego wątku, ale nie swapując pamięci wątków nieaktywnych. Inaczej mówiąc, jeżeli chcemy za alokować np. 500MB pamięci dla każdego z 10 wątków (zakładając, że możemy puścić 10 wątków na raz) to potrzebujemy 5GB i jeżeli damy maszynie 2GB to się wyjebie (albo nie wiem jak to skonfigurować). Dlatego też trzeba delikatnie z mechanizmami wielowątkowymi.

Tyle na dziś.