Aktywne Wpisy
ZygmuntJedyny +214
Kociaraa +23
Właśnie zobaczyłam te ,,okropne” filmiki Anny Lewandowskiej, gdy tańczy bachate. Spodziewałam się czegoś innego, bo taki hejt spadł na nią xD Zwykły taniec, w którym momencie ona tańczyła wulgarnie z jakimkolwiek partnerem? Może coś pominęłam ( ͡° ʖ̯ ͡°) #annalewandowska #lewandowski #lewandowska #bachata
Ej wytłumaczcie mi jedno - czemu za każdym razem jak programiści Sun/Oracle robili coś w wawce to biblioteki i frameworki tworzone przez community zazwyczaj są lepsze?
1. Spring >>> Java EE aka obecnie Jakarta EE (swoją drogą czemu to gówno nie chce zdechnąć xDD) [tak wiem, spring obecnie nie ma nic wspólnego z "lightweight" i stał się podobną kobyłą co Java EE kiedyś)
2. VAVR.IO >>> Java 8 streams
3. Guava/apache collections >>> Java collections
4. Teraz ludzie piszą, że "virtual threads" to będzie rewelacja i zaora frameworki i biblioteki zwłaszcza reaktywny Web Flux xD No chyba coś znowu nie wyszło programistom Oracla ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
Oczywiście, Spring WebFlux to zawsze była opcjonalna ścieżka, bo jakieś popularne (przynajmniej w naszym kraju) to to nie jest. I tak, większość developerów już pewnie #!$%@? 2-3h po godzinach ucząc się wątków virtualncyh, bo świat na spring-web developerce się nie kończy. Aczkolwiek gdy firma będize poszukiwać performace... to i tak wybierze web-fluxa a nie jakieś śmieszne virtual threadsy xDDD
https://medium.com/deno-the-complete-reference/springboot-virtual-threads-vs-webflux-performance-comparison-for-jwt-verify-and-mysql-query-ff94cf251c2c
@nad__czlowiek: spring jest nowszy. Wczesny spring też mocno się różnił w porównaniu do tego jest teraz.
@nad__czlowiek: vavr to zupełnie nowy rodzaj kolekcji. Java była projektowana jako język imperatywny z mutowalnymi kolekcjami i streamy to dobry dodatek do już istniejący klocków
@nad__czlowiek: biblioteka standardowa ma ten problem, że nie może za dużo dodawać, bo
@nad__czlowiek: nie, z czasem virtual thready będą wydajniejsze (bo streamy nie zapewniają niczego poza abstrakcją) i webflux będzie używany tylko w przypadkach, gdy ktoś uzna, że model reaktywny ma sens w danej aplikacji. W normalnej apce nie ma takiej potrzeby, bo typowy CRUD dla typowego endpoinu chce coś pobrać z bazy, zawołać parę
@Saly: Green thready nie są w niczym szybsze od wątków systemowych, a w szczególności nie robią szybciej I/O, bo mają dodakowy narzut na mapowanie wątków Javy do wątków systemowych, a samo I/O w jednym i drugim przypadku wymaga przełączenia kontekstu na systemowy. Ponadto I/O blokujące jest starsze i wydajniejsze (lepiej zoptymalizowane) niż asynchroniczne na większości systemów (paradoksalnie nawet iouring
@Krolik: czytałem, że context switch natywnych wątków jest dosć kosztowny, pamięć to na pewno największy plus
@Krolik: dla mnie zawsze główną motywacją było możliwość użycia asynchronicznego io w sposób synchroniczny. Green thready pozwalają na użycie takich zabawek jak epoll minimalizujących
@Saly: problem w tym, że jeśli robisz I/O to niezależnie od sposobu realizacji współbieżności ten context switch do systemu musisz zrobić. Inna sprawa że z tym "dość kosztowny" to znowu nie tak bardzo - kilkaset nanosekund do max kilku mikrosekund, to raptem tyle co zrobisz parę alokacji na heapie w Javie i już masz porównywalny koszt ;) Gamechangerem w tej kwestii ponoć
@Krolik: tak, ale zbiórczo dla wszystkich operacji IO.
epoll_wait
czeka aż pojawi się cokolwiek przez co czas trwania takiego syscalla jest dużo krótszy (bo czekamy na cokolwiek a nie na określoną akcję). Przy jednowątkowym reaktorze masz jeden wątek, który wołaepoll_wait
, gdzie w takim tradycyjnym podejściu mam N wątków czekających