Хотите тред о разработке независимой JVM в святой Сибири?
1 лайк = 1 segfault, т.е. факт
11 Инженеров,
2 Стажера,
2 QA/QE,
и еще 2 человека занимаются продажами
Полный список разработчиков за все время гораздо шире и включает Оззи Осборна (хотя он почему-то не приходит на корпоративы)
У нас даже предусмотрена премия тому, кто приведет первого "местного" клиента из академа. Но за все годы существования JET-а, никто ее так и не получал.
Последние несколько лет наконец кто-то кроме нас стал говорить про AOT компиляцию Java. Забавно наблюдать, как люди впервые сталкиваются с проблемами тех же клинитов (и очень удивляются!), хотя для нас то это всегда было важно.
в компиляцию бейзлайном - "метод завазелинился". Со стороны звучит странно, конечно, так что люди удивляются =)
Ерунда, конечно, на Обероне написан всего один из компиляторов, и это легаси. Молодые инженеры туда заходить не любят (вы бы тоже не любили).
Популярная шутка: прокричать на работе "есть здесь Java разработчик?".
Все смеются, потом плачут.
Правда из-за этого @pjBooms на стоячих собраниях использует всякие непонятные слова из мира enterprise, какие-то микросервисы, спригбуты, вот это все.
запустить базовые тесты. И это только на одну платформу (из 6 возможных). Мы называем это checkin-test (по историческим причинам).
Фитовцы, вы это, заходите, если чо.
-- Пишет реферат по какой-нибудь крутой (настоящей) статье на компиляторную или рантаймовскую тему,
-- Со временем допускается до коммита в мастер и делает хотя бы одну правку, которая улучшает JET в продакшне
[1/3]
-- В идеале продуктизирует свой диплом, добавляя его в JET. Это не всегда случается, т.к. не любой ресерч сразу можно/нужно продуктизировать.
[2/3]
Кстати в этом году защитился (и кстати продуктизировал свой диплом) мой студент, @GlushkoAl! Это здорово, даже не смотря на всякую бумажную работу, которую приходится делать.
Конечно же инженеры JET-team чаще всего делают что-то необычное, но все равно связанное с JET, на что обычно не хватает времени
Кстати, скоро уже хакатон, надо бы начинать готовиться.
Основные преимущества JET:
-- Быстрый стартап из-за AOT (при этом хорошая производительность и после старта, а не как у некоторых)
-- Protection: исходный код вы не достанете никак
-- Меньше memory footprint
После всех оптимизаций, от вашего Java кода остается фарш, который обратно в барана не собрать.
Единственная сложность с protection, что все это плохо стыкуется с внешними тулами для мониторинга, поэтому многие из них мы не поддерживаем.
Кроме того, это позволяет собрать мотивационные примеры для реализации конкретных оптимизаций в будущем. Так что пишите в саппорт, да.
Но это не очень хорошо стыкуется с пропускной системой на ВЦ. Вот недавно вечером с @FOODzzzEATamA и @liontiger23 выходили через окно, т.к. все уже было закрыто.
Недавно мы сделали здоровенный плагин к gdb, знающий особенности JET. Позволяет делать вещи, например дергать методы из рантайма. Удобно и работает везде.
Откуда оно появилось? Спросите у @conwor ;)
3 Владимира
3 Ивана (при том все сидим в одном кабинете)
теперь еще 2 Никиты
Спасаемся никами и добавлением порядкового номера/первой буквы фамилии. Но стереотипы о русских Иванах и Владимирах прям напрашиваются!
Лично мне кажется, что вокруг GraalVM слишком много хайпа, при том он не очень честный (говорят про хорошее, молчат про плохое).
Ну и нарушение спеки - это опасный путь, мы это проходили
Мы перезапустили его чуть больше года назад и стараемся периодически публиковать лонгриды. Скоро будет большой пост от @conwor, и это будет первый настоящий компиляторный пост! Подписывайтесь, в общем.
С другой стороны, в мире ведь на англ. читают гораздо большее людей, чем на русском, поэтому блог именно на нем.
Впрочем, когда ты плотно занимаешься каким-нибудь под-проектом, ты можешь получить иммунитет от саппорта на какое-то время.
Этому еще способствует, что саппортный адрес java[at]excelsior-usa.com, так что типа саппорт по Java.
Все ухудшается тем, что у нас более жесткие проверки стоят в реализации JNI (на HS для этого нужно включать -Xcheck:jni, а у нас сразу ломается).
И они дропнули поддержку gdb из коробки, ну как так :(
Чат про компилятор, про рантайм, про блог, про учебу, про профайлеры, про GC. В общем, больше чатов Богу чатов!
Когда общаешься со старшими, это просто взрыв мозга, насколько они шарят. Учишься чему-нибудь каждый день, это просто кайф.
Покажите человеку вот такую гифку.
Если он начинает протестовать и кричать "эй, тут не так должно быть!!",
либо смеяться, то перед вами явно JVM инженер.
Косяки в разных оптимизациях дают разные смешные картинки, мы их коллекционируем.
Ну, немного профессиональный юмор, да =)
Со стороны, наверное, выглядело очень глупо: "вот видишь, кубы. Они должны быть... ну.. кубами".
Но на самом деле реально запоминаешь эти картинки
Мы решаем эту проблему с помощью инкрементальной компиляции: при повторной компиляции компилируется гораздо меньше классов, только то, что реально поменялось
"кролик" - пример, на котором воспроизводится проблема;
"сослать в Сибирь" - перенести холодный код в конец метода;
"gc-points" вместо "safe-points" (как ни пытались, термин safe-points не приживается)
советы от опытных спикеров, ревью слайдов, прогоны в узком кругу, а потом и перед всей компанией. Это очень ценно.
Например, после поста про mm scalability (excelsiorjet.com/memory-manager…) появился ответный пост от разработчика OpenJ9 из IBM: curcuitousthoughts.blogspot.com/2018/07/double….
Вот так и должна выглядеть наука!
Вообще, если вы находитесь в академе и интересуетесь темой, то рекомендую на него походить (он не только для студентов).
Лучше курса про трансляторы/компиляторы вы в Нск не найдете.
Со временем начинаешь быстро узнавать паттерны инструкций: вот это safe-point, вот это заполнение стекаллоцированного объекта, вот это виртуальный вызов.
Смысл в том, чтобы статическим анализом понять, какие компоненты из платформы не используются приложением, и выкинуть их из сборки.
В результате - минимальный размер .exe. [1/2]
для embedded: быстрый стартап, маленький memory-footprint, поддержка arm (для этого нам и нужна тестовая ферма из Raspberry Pi).