[Bydgoszcz JUG - Meetup #42] Paweł Kowalski - AOT vs JIT: Dawid i Goliat

youtube.com 2 lat temu


Według jednej z legend 8. dnia po stworzeniu świata Wielki Programista stworzył JVMa... zaraz, to nie tak było? W każdym razie - od zawsze inżynierowie systemu dążyli do tego, by ich kod działał jak najszybciej, zużywał jak najmniej pamięci oraz był prosty w instalacji i utrzymaniu. Kolejne języki programowania korzystały z różnych strategii kompilacji, poprawiając jedną cechę kosztem drugiej, np. uzyskując dużą szybkość wykonania programu w zamian za konieczność utrzymywania osobnych wersji w zależności od architektury procesora. Z Javą nie jest inaczej - przez wiele lat prym wiodła (i przez cały czas wiedzie) kompilacja typu JIT, która pozwala na jak najlepsze dostosowywanie bytecode'u do procesora, który go przetwarza, bez konieczności rekompilacji - jedna paczka działa na różnych środowiskach (oczywiście z pomocą maszyny wirtualnej). Z drugiej strony nie tak dawno pojawiła się możliwość budowania natywnych obrazów i kompilacji typu AOT. W mojej prezentacji postaram się skonfrontować oba typy kompilacji, opisać ich wady i zalety oraz wyjaśnić dlaczego obie te metody kojarzą mi się z bohaterami biblijnej przypowieści.