Встречайте 95-й выпуск SDCast’а, в котором мы говорим про мир Java и JVM. В этот раз у меня в гостях ребята из компании Excelsior, чей флагманский продукт – это Excelsior JET, реализация Java™ SE на основе статической компиляции. Поэтому в этом выпуске мы обсуждаем много технических аспектов реализации Java, как рантайма, так и компилятора, утилит мониторинга и производительности и многое другое.
Итак, в этом выпуске приняли участие:
- Никита Липский, один из инициаторов проекта Excelsior JET, и на данный момент руководитель продуктовго отдела JET.
- Павел Павлов, в проекте с 1998 года, отвечает за компиляторную часть проекта, архитектуру ядра JVM, обучает и курирует стажёров и студентов.
- Иван Углянский, один из разработчиков рантайма: GC, загрука классов, многопоточность, профилирование и т.д.
В начале ребята рассказали про историю компании, предпосылки и причины появления на свет альтернативной реализации JVM. Мы обсудили чего не хватает в стандартной JVM, какие есть проблемы, которые пытаются решить другие JVM.
Далее ребята рассказали про Excelsior JET:
- Чем она отличается от других?
- Какие есть особенности и фичи?
- На чём написана?
- Как выглядит архитектура системы в целом, какие есть модули, компоненты что и как взаимодействует
- Runtime и компилятор, как они устроены, какие алгоритмы используют
- Вопросы оптимизации производительности как компилятора, так и рантайма
В процессе дискуссии обсудили в целом JIT и AOT подходы, достоинства и недостатки каждого, в каких случаях выигрывает один вариант, а в каких другой. Вспомнили и про другие реализации JVM и интересные проекты в этой области, например набирающий популярность GraalVM.
Ссылки на ресурсы по темам выпуска:
- Старый (но хороший) доклад Паши и Никиты про JET и историю его появления
- Доклад Никиты и Паши со встречи JUG.ru’13 “Excelsior JET: внутренняя архитектура”
- Доклад Никиты и Виталия Михеева с Java Day’16 “История одной JVM в картинках”
- Блог Excelsior JET, где можно найти много статей с различными техническими подробностями
- Conservative GC: Is It Really That Bad?
- Доклад Вани с JPoint’18 “Как сделать встроенный в JVM профайлер, который не боится AOT компиляции”
- Доклад Максима Казанцева с jBreak’18 “Как генератор тестов помог стабилизировать компилятор в Zing VM”
- Доклад Никиты про JetPerfect с JavaDay Kiev’14 “Java худеет. Уменьшение размера дистрибутива Java приложения без зависимостей”
- Доклад Никиты с JavaDay Kiev’14 “AOT компиляция”
- Доклад Никиты и Владимира Парфиненко с Joker’15 “JVM: краткий курс общей анатомии”
- Доклад Vojin Jovanovic с Joker’16 “Polyglot on the JVM with Graal: One VM for Java, node.js, Ruby, R, and C++!”
- Доклад Douglas Hawkins с JPoint’18 “ReadyNow — an «AOT» with profiling for Java”
- Доклад Volker Simonis со встречи JUG.ru’15 “SAP JVM Internals”
- Доклад Dan Heidinga с GeeCON’17 “OpenJ9: Under the hood of the next open source JVM”
- Доклад Marcus Lagergren с JavaDay Kyiv’15 “Design rationales in the JRockit JVM”
Понравился выпуск? — Поддержи подкаст на patreon.com/KSDaemon а так же ретвитом, постом и просто рассказом друзьям!