Odporucam vam Javu. Vyhoda Javy je, ze sa pouziva napriec roznymi odvetviami: od ultra low latency systemov na financnych burzach az po klasicke korporaty, banky, IoT, BigData a ML. Mate velky pool moznosti a mozete sa presuvat medzi roznymi odvetviami, ked vas nieco omrzi.
Ak chete mat aj "vzruso" aj cas na dieta a stabilne platit hypoteku, Java je dost dobra volba.
Se zbytkem souhlasim, ale ultra low latency? Jako vazne? To jsem jeste nevidel. Pokud se jedna o ms, tak je to asi egal, ale kdyz je treba fungovat v μs a spolehlive, tak se mi to nejak nezda.
U BigData se pouziva, protoze je velky a funkcni a ekosystem. Z velke casti i free. Bohuzel tam zas bude tvuj nejhorsi nepritel garbage collector a posleze neefektivita java jazyka - jako napr. boxovane typy. Tezko rict, jestli casem toto neprebere Rust. I kdyz bez ekosystemu tezko.
Rozumiem vasmu prekvapeniu, ale je to tak. Nerozumiem preco by Java nemohla "fungovat spolehlive v μs".
Java postupne nahradza C++ v ultra low latency domene, kvoli "time to market", transparentnosti a debugovatelnosti.
Je pravdepodobne, ze v C++ sa da napisat rychlejsi kod, ale za cas, ktory budete tunit C++, iny tim doda fungujuce riesenie v Jave, ktore bude porovnatelne rychle ako neoptimalizovane C++ a vyfukne vam potencialny naskok na trhu.
Je to cisto ekonomicky problem: ani C++ ani Java neporazi FPGA a ASIC. A teda ak chcem nieco super rychle, tak to nebudem robit v C++ alebo v Jave, ale rovno FPGA. Pokial som bohaty, urobim si batch ASICov.
Samozrejme, ultra low latency Java nie je idiomaticka Java, ktora sa pise v klasickych korporatoch. Tu sa bavime o tom, ze mi zalezi na NUMA, cachiach, forme synchronizacie, pinovanie trheadov, OS tunning, GC tuning (resp. no GC), busy spinovanie atd.
Ak ste sa o tuto domenu nikdy nezaujimali, odporucam vam prednasku:
Ultra low latency Java in the real world - Daniel Shaya