Очередная встреча московской Java User Group прошла 22 мая 2017 года традиционно в офисе компании КРОК. На ней Никита Липский и Дмитрий Чуйко рассказали о статической (Ahead-of-Time) компиляции в языке программирования Java и её реализации в продуктах компаний Excelsior и Oracle.
О докладчиках
Никита Липский представляет новосибирскую компанию Excelsior, выпускающую уникальный продукт — статический компилятор для языка Java, Excelsior JET. Приложение вполне востребовано и отлично чувствует себя на рынке, этой осенью будет отмечаться уже 20 лет его существования. Никита является одним из инициаторов создания и активным участником разработки приложения.
Блог компании достаточно интересен: кроме анонсов новых версий (с плагинами для Maven и Gradle) встречается описание и прочих полезных вещей вроде Git-плагина для Far Manager и плагина для IntelliJ IDEA (написанных программистами Excelsior). Судя по опросу, скоро можно ожидать что-то ещё.
Доклады Никиты, упорядоченные в хронологическом порядке:
- «Excelsior JET: обзор возможностей» (JUG.ru-2013: презентация, видео; с Павлом Павловым)
- «Excelsior JET: внутренняя архитектура» (JUG.ru-2013: презентация, видео; с Павлом Павловым)
- «Занимательные истории из жизни техподдержки JVM» (Joker 2013: презентация, видео; с Мишей Быковым)
- «Ahead-of-time компиляция» (Joker 2014: презентация, видео)
- «AOT компиляция» (JavaDay Kiev 2014: презентация, видео)
- «Java худеет. Уменьшение размера дистрибутива Java приложения без зависимостей» (JavaDay Kiev 2014: презентация, видео)
- «Круглый стол. Рефакторинги и технический долг» (JPoint 2015: видео)
- «Круглый стол. Будущее Java-платформы» (JPoint 2015: видео)
- «Клиентская Java вне браузера: делаем нативные клиенты на Java» (Joker 2015: презентация, видео)
- «JVM: краткий курс общей анатомии» (Joker 2015 University Day: презентация, видео; с Владимиром Парфиненко)
- «Delivering Native User Experience in Client-Side Java Applications» (JEEConf 2015: презентация, видео)
- «Поддержка Java 8 в Excelsior JET» (JBreak 2016: презентация, видео)
- «Поддержка Java 8 в Excelsior JET» (JPoint 2016: презентация, видео)
- «JVM: краткий курс общей анатомии» (JPoint 2016 Student Day: презентация, видео; с Владимиром Ивановым)
- «Java AOT compilation» (GeekOUT 2016: видео)
- «Поддержка Java 8 на уровне JVM» (JET Conference Autumn 2016: презентация, видео)
- «Java AOT Compilation» (JavaZone 2016: видео)
- «Верификация Java байт-кода: когда, как, а может отключить?» (JPoint 2017: презентация, видео пока доступно только для участников конференции)
- «JIT vs. AOT: Unity And Conflict of Dynamic and Static Compilers for Java» (Riga DevDays 2017, GeeCON 2017: презентация)
- «Java 9 Модули. Почему не OSGi?» (Oracle Code 2017 Moscow: презентация)
Аудио с Никитой:
- Выпуск 134 подкаста «Разбор полётов»
Для ознакомления с Excelsior JET наиболее полезны первые два доклада (совместное выступление Никиты с Павлом Павловым на JUG.ru в 2013 году).
Прочие ссылки: Хабрахабр, GitHub, Twitter, SlideShare.
Дмитрий Чуйко работает в компании Oracle, которая тоже с недавнего времени заинтересовалась статической компиляцией. Является активным докладчиком как конференций JUG.ru, так и прочих.
Доклады Дмитрия:
- «Новинки в java.util.concurrent» (JUG.ru-2013: видео)
- «Обзор нововведений в java.util.concurrent (JSR166e)» (JEEConf 2013: презентация, видео)
- «Java Mission Control» (Java 8 Launch 2014: видео)
- «Быстрая загрузка ваших классов» (JUG.ru-2015: видео)
- «CompletableFuture. Хочется взять и применить» (JUG.ru-2015: видео)
- «CompletableFuture уже здесь» (JPoint 2015: видео)
- «Completable Future уже здесь» (JEEConf 2015: презентация, видео)
- «Hotspot и AOT» (JBreak 2016: видео)
- «Hotspot и AOT: Пришло время компилировать» (JPoint 2016: презентация, видео)
- «Чёрная метка, StampedLock и его друзья. Как не нарушить пиратский кодекс» (JPoint 2016 Student Day: видео)
- «Hotspot & AOT» (JEEConf 2016: видео)
- «Ahead-of-Time компиляция для HotSpot JVM» (JUG.ru-2016: презентация, видео)
- «Compile ahead of time. It’s fine?» (GeeCON 2017, JEEConf 2017: презентация)
Прочие слайды на SlideShare.
О докладах
Для обоих докладчиков встреча jug.msk.ru стала частью тура выступлений на конференциях. Тур Никиты начался участием его в записи выпуска 134 подкаста Разбор полётов (из аэропорта). Далее были Riga DevDays 2017, GeeCON 2017, jug.msk.ru и Oracle Code 2017 Moscow. Тур Дмитрия включал тоже GeeCON 2017 и jug.msk.ru, далее JEEConf 2017.
Встреча и тема, которой была посвящена встреча (AOT), вызвали большой интерес. В качестве зрителей присутствовали, по крайней мере, пять спикеров конференций, проводимых JUG.ru. Т.е. всего (с учётом Дмитрия и Никиты) была редкая возможность увидеться и пообщаться с семерыми спикерами.
Андрей Когунь вместе с Никитой (первый снимок) и дополнительно Дмитрием (второй снимок) начинает встречу.
Никита выступал первым. На мой взгляд, это лучший или один из лучших его докладов. Доклад продолжался два часа, что позволило ему больше рассказать и ответить на большее количество вопросов из зала. Выступление вызвало значительный интерес. Вопросы были хорошими и подчас неожиданными для докладчика (например, про сравнение времени запуска приложений на SSD).
С выпуском JDK 9 «из коробки» появляется возможность статической компиляции, т.е. преобразования в код целевой платформы (т.н. native). Правда, пока только под Linux. O JEP 295, JEP 243 и компиляторе Graal был рассказ Дмитрия. Доклад был логическим продолжением предыдущего его доклада, представленного ранее на встрече JUG.ru.
Как и всегда, в перерыве и после докладов желающие имели возможность пообщаться и задать вопросы на волнующие их темы. И, естественно, попить чаю с плюшками.
Презентации докладов встречи: AOT для Java: Мифы и Challenges Никиты и Compile ahead of time. It's fine? Дмитрия. Фотографии со встречи: группа в VK, Google+.
К огромному сожалению, по техническими причинам не удалось записать видео (первый и, будем надеяться, последний раз за историю jug.msk.ru). Видео с предыдущих встреч доступно на YouTube.
Подписка на рассылку анонсов следующих встреч jug.msk.ru.
Автор: JUG.ru Group