"Hat eppen ez az, hogy a JVM es a Java sulyosan korlatolt a sebesseg teren."
Hát ebben igen nagyot tévedsz... :)
"Ha nem igy lenne akkor a scyllanak nem lenne letjogosultsaga, mert mar valaki reg optimalizalta volna a C* kodbazist."
A Cassandra kódbázisban elég sok olyan rész van, hogy sun.misc.Unsafe metódust hív, ami pont azt csinálja, amit a pure C/C++ kód: kikapcsolja a homokozó védelmeit, mert
a, tudod, hogy nem okoz a biztonsági szint csökkenése problémát,
b, tudod, hogy problémát okoz, de nem érdekel.
A teljes kódbázist nyilván nem lehet Unsafe hívásokra alapozni, viszont nem is kell minden egyes sornál azzal törődni, hogy nyitsz-e kiskaput ezzel a külvilág számára vagy sem.
Alapvetően az Unsafe szintről indulsz C/C++ esetén, csak fel kell rá készülni, hogy ki fogják használni, ha eléri a kritikus tömeget a felhasználóbázis vagy van olyan értékes adat, aminek a megszerzése megéri a befektetést.
Ezen túl végtelen sok példa van arra, hogy mennyire közel vannak egymáshoz teljesítményben a Java és a C++ implementációk, lásd például a https://www.techempower.com/benchmarks/ méréseket.
"Es hidd el a teljesitmeny kulonbsegek *messze* tulmennek azon, hogy leellenorzom-e a tomb hatarait vagy nem, ez egy massziv lebutitasa a problemanak."
Nyilván nem csak tömb határértéket vizsgál a JVM, ez egy példa volt, ezen túl is van nagyon sok olyan vizsgálat, amit nehéz vagy egyenesen lehetetlen megkerülni, viszont hostile környezetben kénytelen vagy használni, különben azon veszed észre magad, hogy hónapok óta egy új feature se került bele a szoftverbe, csak támadási vektorokat szüntetsz meg és ezzel komplexitást viszel bele a rendszerbe, a komplexitással pedig újabb kockázatokat és teljesítményproblémákat.
Csodák nincsenek, ha elég mélyen ismered a JVM működését, akkor tudod, hogy a C/C++ kód nem azért _lehet_ gyorsabb, mert a JVM annyi felesleges dolgot csinál, hanem azért _lehet _gyorsabb, mert a saját döntésed, hogy mennyi kockázatot viszel a szoftverbe: ha ugyanannyit teszel azért, hogy a C/C++ kódból se lehessen egyszerűen kijönni, mint amit a JVM tesz, akkor sebességben is ugyanott leszel.
JVM esetén például teljes természetességgel meg lehet oldani - gyakorlatilag 0 hozzáadott kóddal - hogy egy tetszőleges UDF class ne tudjon hozzáférni olyan memóriaterülethez, amihez nem kellene vagy nem lenne szabad. C/C++ dinamikusan hozzáadott bináris esetén ehhez gyakorlatilag vért kell hugyozz hónapokon át, mire meg tudod oldani és akkor is lesznek olyan rések, amire esetleg nem gondoltál.
"Igen lehet ugy is lehet programozni C++ ban ahogy te mondod. De a C++ rengeteget fejlodott a C++98 ota es mi mar a C++17-et hasznaljuk. A C++11 ota nagyon mas vilag a C++."
Lehet, hogy meglepő dolgot mondok, de a Java is fejlődött... :D