#72 - 15.12.2021

#72 Bare metal Java

Prelegent: Jarek Pa艂ka

Java, a tak naprawd臋 JVM, cieszy si臋 zas艂u偶on膮 s艂aw膮 platformy nieprzyjaznej dla sprz臋tu, a co za tym idzie, nikt powa偶ny (opr贸cz Apache Kafka, Elastic, Cassandra i Neo4j) nie b臋dzie budowa艂 baz danych, kolejek i innych rozwi膮za艅 gdzie „mechanical sympathy” jest kluczowe.

Garbage collector, spekuluj膮cy JIT, brak kontroli nad „object layout”, fatalne wsparcie (g艂贸wnie przez brak abstrakcji) dla funkcji nowoczesnych procesor贸w i system贸w operacyjnych. I do tego jeszcze JNI (kto tam by艂 to wiem o czym m贸wi臋). O implementacji IO nawet przez szacunek do samych siebie, nie wspominam.

Celem tej prezentacji jest odczarowanie tych mit贸w i pokazanie jak wiele wysi艂ku ostatnio idzie ostatnio w uczynienie JVM bardziej przyjaznego dla sprz臋tu.
B臋dzie o API kt贸rych s膮 jeszcze w fazie inkubacji (cho膰 niekt贸re jeszcze nie dojrza艂y do tego, a niekt贸re s膮 ju偶 stabilne). API kt贸rych, by膰 mo偶e nigdy w 偶yciu nie zobaczycie, a kt贸re b臋d膮 w przysz艂o艣ci stanowi膰 fundament baz danych, czy kolejek.

Zaczniemy od Unsafe, by nada膰 rys historyczny. By potem pokaza膰, foreign memory access, czyli jak bezpiecznie pracowa膰 z pami臋ci膮 poza stert膮 oraz foreign functions interface, czyli jak wywo艂a膰 C z Java (i w drug膮 stron臋).

Wszystko polane sosem niedzia艂aj膮cych przyk艂ad贸w i przek艂amanych micro benchmark贸w i OpenJDK skompilowanego na pi臋膰 minut przed prezentacj膮.


Jarek Pa艂ka

Od ponad 20 lat w bran偶y IT, jako administrator baz danych, programista, architekt, manager i 鈥瀒n偶ynier od spraw katastrof鈥. Bra艂em udzia艂 w ma艂ych, 艣rednich i nonsensownie du偶ych projektach, prowadzonych zgodnie zasadami 鈥瀢aterfall鈥, Agile oraz przy braku jakichkolwiek metodyk, z tym samym zawsze skutkiem. Co doprowadzi艂o mnie do wniosku, 偶e niewa偶ne co robisz tak d艂ugo, jak robisz to dobrze, w najprostszy z mo偶liwych sposob贸w i u偶ywasz w艂a艣ciwych narz臋dzi, kt贸re wykonaj膮 prac臋 za ciebie. W mi臋dzyczasie da艂em si臋 porwa膰 ide膮 TDD oraz Software Craftmanship, do granic mo偶liwo艣ci wyeksploatowa膰 tak pi臋kne w swej prostocie pomys艂y jak REST i NoSQL, by potem porzuci膰 je, by zg艂臋bi膰 tajniki 鈥瀞ystem thinking鈥 i zachwyci膰 si臋 si艂膮 jak膮 niesie z sob膮 鈥瀖etafora鈥 i odkry膰, 偶e rz膮dz膮 nami te same prawa 鈥瀗atury鈥. Niepokorny wyznawca ko艣cio艂a JVM, badacz bytecode鈥檜 i JIT oraz wszelkiej ma艣ci parser贸w, interpreter贸w i kompilator贸w. Na co dzie艅 walcz膮cy o lepsz膮 wydajno艣膰 w Neo4j. Od czasu do czasu mo偶na us艂ysze膰 moje niskiej jako艣ci 偶arty na temat architektury na konferencjach w Polsce. W wolnych chwilach trener w http://symentis.pl i autor bloga na http://geekyprimitives.wordpress.com/ oraz samozwa艅czy dyktator w radach programowych konferencji CoreDump, SegFault, JDD oraz 4Developers.


Nie zapomnij si臋 zarejestrowa膰!