Pull to refresh

Comments 18

Этот слайд, там оказался случайно, забыл выкинуть. На презентации, он не показывался
На самом же слайды не наши замеры, а одного деятеля, которые он действительно провел довольно давно, 10 лет назад — http://www.stefankrause.net/wp/?p=6
Спасибо большое за отчет.

Не все мои выступления представлены в списке, но покрытие докладов почти полное.
Из непокрытого:

«История одной 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 минут).

Что и когда планируется по результатам проведённого опроса?
Спасибо!

Мы хотим в сентябре/октябре запустить технический блог. Будет несколько авторов, соответственно будет некоторое разнообразие в топиках, и надеемся, что благодаря множеству авторов он будет довольно регулярным. Блог предполагается будет на английском с его переводом на русский на хабр. Я собираюсь некоторые свои выступления переработать в текст. Начну пожалуй с верификации байткода, я его начинал именно как хабропост, но потом сделал презентацию. Рассказать нам есть о чем, но посмотрим как пойдет.
Блог предполагается будет на английском с его переводом на русский на хабр.

Здорово! Ждём, в том числе на Хабре.

Не забудьте прикрутить к блогу RSS.

Из всего вышесказанного (да и не только, напр. тут тоже Эксельсиор) неясно, какой от 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», которую цитируют во всех статьях про АОТ, немного противоречит текущему тренду (да и здравому смыслу) и если убрать постулат про приложения из тысячи классов, то получается что АОТ не привносит ничего кроме деградации?
Можете расшифровать аббревиатуры: WLS, СП?

В современном мире микросервисов JVM даже с достаточно сложным кодом (напр. СП wildfly) стартует меньше чем за полсекунды.

Бывают довольно разные приложения, в том числе микросервисы. И если вам нужно запустить целую пачку микросервисов, то ускорение старта, скажем в два раза, может быть не лишним. То есть, если вы распилили свое приложения на микросервисы, то свою изначальную сложность из тысячей классов вы перенесли в сотни микросервисов, и издержки на старт таким образом скорее выросли, потому что для каждого микросервиса нужно поднимать отдельную JVM.

если убрать постулат про приложения из тысячи классов

Так или иначе сложность в тысячи классов остается, если у вас не HelloWorld приложение, размазаны ли эти классы по микросервисам или нет. К тому же даже HelloWorld SpringBoot приложение уже состоит из десятков тысяч классов + десятки тысяч классов самой платформы. Понятно не все эти классы грузятся на старте, но чем больше функционала нужно, в том числе микросервису, тем больше этих классов может потребоваться.

Можете расшифровать аббревиатуры: WLS, СП?

Предполагаю, WebLogic Server и сервер приложений (application server).
Ok, тогда ответ следующий:

Тема про WLS тоже совсем не понятна, каким образом АОТ-код можно запускать под управлением СП

Если имеется в виду HotSpot AOT, то на данный момент возможно запускать только AOT-код платформы. В общем же случае, для конкретного сервера приложений можно запилить специальную AOT поддержку: как он грузит классы внутри себя тоже информация известная до исполнения. Я про это собственно и рассказываю в своей презентации. Когда сервера приложений модулиризируют и код будет грузится согласно зависимостям в модулях (ссылки между классами будут разрешаться согласно зависимостям), то для таких приложений возможен AOT и в общем случае.

К тому же warmup — это не только время, которое печатается в строчке «Server startup in»: туда не входит время поднятие самой JVM, что для непрогретой JVM может быть существенным и не входит время, которое потребуется, чтобы ваше приложения начало работать в полную силу: для этого надо возможно еще пособирать профиль, покомпилировать. В конце концов JIT'у не всегда хватает ресурсов, чтобы даже горячий код оптимизировать максимально эффективно. Плюс те оптимизации, что он применяет, часто спекулятивны и при небольших изменениях в окружающей среде система неожиданно может уйти в интерпретатор со всеми вытекающими.
Sign up to leave a comment.