Comments 18
Этот слайд, там оказался случайно, забыл выкинуть. На презентации, он не показывался
Спасибо большое за отчет.
Не все мои выступления представлены в списке, но покрытие докладов почти полное.
Из непокрытого:
«История одной 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
Не все мои выступления представлены в списке, но покрытие докладов почти полное.
Из непокрытого:
«История одной 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
Дополнил список докладов указанными ссылками.
Наиболее близкое к рассказанному Никитой (увы, на jug.msk.ru возникли проблемы с записью) — видео с JavaZone 2016 (в т.ч. с ответами на вопросы в последние 10 минут).
Что и когда планируется по результатам проведённого опроса?
Наиболее близкое к рассказанному Никитой (увы, на jug.msk.ru возникли проблемы с записью) — видео с JavaZone 2016 (в т.ч. с ответами на вопросы в последние 10 минут).
Что и когда планируется по результатам проведённого опроса?
Спасибо!
Мы хотим в сентябре/октябре запустить технический блог. Будет несколько авторов, соответственно будет некоторое разнообразие в топиках, и надеемся, что благодаря множеству авторов он будет довольно регулярным. Блог предполагается будет на английском с его переводом на русский на хабр. Я собираюсь некоторые свои выступления переработать в текст. Начну пожалуй с верификации байткода, я его начинал именно как хабропост, но потом сделал презентацию. Рассказать нам есть о чем, но посмотрим как пойдет.
Мы хотим в сентябре/октябре запустить технический блог. Будет несколько авторов, соответственно будет некоторое разнообразие в топиках, и надеемся, что благодаря множеству авторов он будет довольно регулярным. Блог предполагается будет на английском с его переводом на русский на хабр. Я собираюсь некоторые свои выступления переработать в текст. Начну пожалуй с верификации байткода, я его начинал именно как хабропост, но потом сделал презентацию. Рассказать нам есть о чем, но посмотрим как пойдет.
Ставшее доступным пару дней назад видео доклада с Riga DevDays 2017 можно посмотреть по ссылке (ссылку на видео тоже добавил в список докладов Никиты).
Из всего вышесказанного (да и не только, напр. тут тоже Эксельсиор) неясно, какой от 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», которую цитируют во всех статьях про АОТ, немного противоречит текущему тренду (да и здравому смыслу) и если убрать постулат про приложения из тысячи классов, то получается что АОТ не привносит ничего кроме деградации?
В современном мире микросервисов JVM даже с достаточно сложным кодом (напр. СП wildfly) стартует меньше чем за полсекунды. Если мы берем небольшие демонообразные приложения (т.е. на самом деле Ъ микросервисы), написанные прямыми руками, то они столько стартовали еще 10 лет назад на 1.4.
Вообще фраза «Java programs can become so large that it takes a long time for the JIT to warm up completely», которую цитируют во всех статьях про АОТ, немного противоречит текущему тренду (да и здравому смыслу) и если убрать постулат про приложения из тысячи классов, то получается что АОТ не привносит ничего кроме деградации?
Я тестировал — в виртуалке неразогретая Ява стартует секунд 10
Можете расшифровать аббревиатуры: WLS, СП?
Бывают довольно разные приложения, в том числе микросервисы. И если вам нужно запустить целую пачку микросервисов, то ускорение старта, скажем в два раза, может быть не лишним. То есть, если вы распилили свое приложения на микросервисы, то свою изначальную сложность из тысячей классов вы перенесли в сотни микросервисов, и издержки на старт таким образом скорее выросли, потому что для каждого микросервиса нужно поднимать отдельную JVM.
Так или иначе сложность в тысячи классов остается, если у вас не HelloWorld приложение, размазаны ли эти классы по микросервисам или нет. К тому же даже HelloWorld SpringBoot приложение уже состоит из десятков тысяч классов + десятки тысяч классов самой платформы. Понятно не все эти классы грузятся на старте, но чем больше функционала нужно, в том числе микросервису, тем больше этих классов может потребоваться.
В современном мире микросервисов JVM даже с достаточно сложным кодом (напр. СП wildfly) стартует меньше чем за полсекунды.
Бывают довольно разные приложения, в том числе микросервисы. И если вам нужно запустить целую пачку микросервисов, то ускорение старта, скажем в два раза, может быть не лишним. То есть, если вы распилили свое приложения на микросервисы, то свою изначальную сложность из тысячей классов вы перенесли в сотни микросервисов, и издержки на старт таким образом скорее выросли, потому что для каждого микросервиса нужно поднимать отдельную JVM.
если убрать постулат про приложения из тысячи классов
Так или иначе сложность в тысячи классов остается, если у вас не HelloWorld приложение, размазаны ли эти классы по микросервисам или нет. К тому же даже HelloWorld SpringBoot приложение уже состоит из десятков тысяч классов + десятки тысяч классов самой платформы. Понятно не все эти классы грузятся на старте, но чем больше функционала нужно, в том числе микросервису, тем больше этих классов может потребоваться.
Можете расшифровать аббревиатуры: WLS, СП?
Предполагаю, WebLogic Server и сервер приложений (application server).
Ok, тогда ответ следующий:
Если имеется в виду HotSpot AOT, то на данный момент возможно запускать только AOT-код платформы. В общем же случае, для конкретного сервера приложений можно запилить специальную AOT поддержку: как он грузит классы внутри себя тоже информация известная до исполнения. Я про это собственно и рассказываю в своей презентации. Когда сервера приложений модулиризируют и код будет грузится согласно зависимостям в модулях (ссылки между классами будут разрешаться согласно зависимостям), то для таких приложений возможен AOT и в общем случае.
Тема про WLS тоже совсем не понятна, каким образом АОТ-код можно запускать под управлением СП
Если имеется в виду HotSpot AOT, то на данный момент возможно запускать только AOT-код платформы. В общем же случае, для конкретного сервера приложений можно запилить специальную AOT поддержку: как он грузит классы внутри себя тоже информация известная до исполнения. Я про это собственно и рассказываю в своей презентации. Когда сервера приложений модулиризируют и код будет грузится согласно зависимостям в модулях (ссылки между классами будут разрешаться согласно зависимостям), то для таких приложений возможен AOT и в общем случае.
К тому же warmup — это не только время, которое печатается в строчке «Server startup in»: туда не входит время поднятие самой JVM, что для непрогретой JVM может быть существенным и не входит время, которое потребуется, чтобы ваше приложения начало работать в полную силу: для этого надо возможно еще пособирать профиль, покомпилировать. В конце концов JIT'у не всегда хватает ресурсов, чтобы даже горячий код оптимизировать максимально эффективно. Плюс те оптимизации, что он применяет, часто спекулятивны и при небольших изменениях в окружающей среде система неожиданно может уйти в интерпретатор со всеми вытекающими.
Sign up to leave a comment.
Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru