О докладчиках
Никита Липский представляет новосибирскую компанию Excelsior, выпускающую уникальный продукт — статический компилятор для языка Java, Excelsior JET. Приложение вполне востребовано и отлично чувствует себя на рынке, этой осенью будет отмечаться уже 20 лет его существования. Никита является одним из инициаторов создания и активным участником разработки приложения.
Блог компании достаточно интересен: кроме анонсов новых версий (с плагинами для Maven и Gradle) встречается описание и прочих полезных вещей вроде Git-плагина для Far Manager и плагина для IntelliJ IDEA (написанных программистами Excelsior). Судя по опросу, скоро можно ожидать что-то ещё.
Доклады Никиты, упорядоченные в хронологическом порядке:
- «История одной JVM в картинках» (Java Day Новосибирск 2011: презентация, видео; с Виталием Михеевым)
- «Веб 3.0. Футуристический рассказ о будущем интернета и IT» (DevDay 2GIS 2012: видео)
- «Java худеет. Спроси меня как» (JavaOne Moscow 2013: презентация, видео)
- «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: презентация, видео)
- «Java restart with WebFX» (FOSDEM 2015: презентация, видео)
- «Круглый стол. Рефакторинги и технический долг» (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.
Комментарии (17)
pjBooms
31.05.2017 09:23+4Спасибо большое за отчет.
Не все мои выступления представлены в списке, но покрытие докладов почти полное.
Из непокрытого:
«История одной JVM в картинках» с Виталием Михеевым на JavaDay Новосибирск 2011
«Веб 3.0. Футуристический рассказ о будущем интернета и IT», выступление на DevDay @2gis 2012 год,
«Java худеет. Спроси меня как», JavaOne Moscow 2013
«Java restart with WebFX», FOSDEM 2015
Были еще JavaDay Новосибирск 2012, CodeFest 2012, 2013, 2016, TechTalks @ NSU
dbelob
31.05.2017 11:24Дополнил список докладов указанными ссылками.
Наиболее близкое к рассказанному Никитой (увы, на jug.msk.ru возникли проблемы с записью) — видео с JavaZone 2016 (в т.ч. с ответами на вопросы в последние 10 минут).
Что и когда планируется по результатам проведённого опроса?pjBooms
31.05.2017 12:50+2Спасибо!
Мы хотим в сентябре/октябре запустить технический блог. Будет несколько авторов, соответственно будет некоторое разнообразие в топиках, и надеемся, что благодаря множеству авторов он будет довольно регулярным. Блог предполагается будет на английском с его переводом на русский на хабр. Я собираюсь некоторые свои выступления переработать в текст. Начну пожалуй с верификации байткода, я его начинал именно как хабропост, но потом сделал презентацию. Рассказать нам есть о чем, но посмотрим как пойдет.dbelob
31.05.2017 13:07+1Блог предполагается будет на английском с его переводом на русский на хабр.
Здорово! Ждём, в том числе на Хабре.
zam0th
01.06.2017 14:06+2Из всего вышесказанного (да и не только, напр. тут тоже Эксельсиор) неясно, какой от AOTа великий бенефит по сравнению с JITом. Тема про WLS тоже совсем не понятна, каким образом АОТ-код можно запускать под управлением СП?
В современном мире микросервисов JVM даже с достаточно сложным кодом (напр. СП wildfly) стартует меньше чем за полсекунды. Если мы берем небольшие демонообразные приложения (т.е. на самом деле Ъ микросервисы), написанные прямыми руками, то они столько стартовали еще 10 лет назад на 1.4.
Вообще фраза «Java programs can become so large that it takes a long time for the JIT to warm up completely», которую цитируют во всех статьях про АОТ, немного противоречит текущему тренду (да и здравому смыслу) и если убрать постулат про приложения из тысячи классов, то получается что АОТ не привносит ничего кроме деградации?
pjBooms
01.06.2017 14:45+1Можете расшифровать аббревиатуры: WLS, СП?
В современном мире микросервисов JVM даже с достаточно сложным кодом (напр. СП wildfly) стартует меньше чем за полсекунды.
Бывают довольно разные приложения, в том числе микросервисы. И если вам нужно запустить целую пачку микросервисов, то ускорение старта, скажем в два раза, может быть не лишним. То есть, если вы распилили свое приложения на микросервисы, то свою изначальную сложность из тысячей классов вы перенесли в сотни микросервисов, и издержки на старт таким образом скорее выросли, потому что для каждого микросервиса нужно поднимать отдельную JVM.
если убрать постулат про приложения из тысячи классов
Так или иначе сложность в тысячи классов остается, если у вас не HelloWorld приложение, размазаны ли эти классы по микросервисам или нет. К тому же даже HelloWorld SpringBoot приложение уже состоит из десятков тысяч классов + десятки тысяч классов самой платформы. Понятно не все эти классы грузятся на старте, но чем больше функционала нужно, в том числе микросервису, тем больше этих классов может потребоваться.
dbelob
01.06.2017 15:13Можете расшифровать аббревиатуры: WLS, СП?
Предполагаю, WebLogic Server и сервер приложений (application server).pjBooms
01.06.2017 15:32+1Ok, тогда ответ следующий:
Тема про WLS тоже совсем не понятна, каким образом АОТ-код можно запускать под управлением СП
Если имеется в виду HotSpot AOT, то на данный момент возможно запускать только AOT-код платформы. В общем же случае, для конкретного сервера приложений можно запилить специальную AOT поддержку: как он грузит классы внутри себя тоже информация известная до исполнения. Я про это собственно и рассказываю в своей презентации. Когда сервера приложений модулиризируют и код будет грузится согласно зависимостям в модулях (ссылки между классами будут разрешаться согласно зависимостям), то для таких приложений возможен AOT и в общем случае.
pjBooms
01.06.2017 15:42+1К тому же warmup — это не только время, которое печатается в строчке «Server startup in»: туда не входит время поднятие самой JVM, что для непрогретой JVM может быть существенным и не входит время, которое потребуется, чтобы ваше приложения начало работать в полную силу: для этого надо возможно еще пособирать профиль, покомпилировать. В конце концов JIT'у не всегда хватает ресурсов, чтобы даже горячий код оптимизировать максимально эффективно. Плюс те оптимизации, что он применяет, часто спекулятивны и при небольших изменениях в окружающей среде система неожиданно может уйти в интерпретатор со всеми вытекающими.
Siemargl
В каком году делалась презентация ?
А то в ней JDK 6 сравнивается с GCC 4.2.3
o_O
dbelob
Да, слайд 90 можно обновить (на заметку pjBooms).