Многие из нас ходят на конференции по Java только из-за хардкора. Это статья о том, что в этом плане изменилось за год.


Хардкор бывает нескольких видов. Можно выделить как минимум:


  • перформансные оптимизации в любых проявлениях;
  • внутренности достаточно сложных технологий (OpenJDK, GraalVM);
  • компиляторы и рантаймы в целом;
  • дизайн языков программирования;
  • проблемы computer science и прикладной математики;
  • и многое другое.



В чем разница между обычным докладом и хардкорным? Это как разница между статьей по квантовой гравитации и руководством по вкусной и здоровой пище. Правильно приготовить Spring — это, безусловно, очень сложная и интересная задача, которая для многих из нас является большой частью повседневных задач, и, соответственно, доклады Жени Борисова имеют большое практическое значение. Грубо говоря, это способ стать более хорошим специалистом и поднять больше денег. Но блеск далёких звезд находится не там.


Поэтому — только хардкор по заветам старой школы. Под катом небольшая заметка о том, как все это выглядит с точки зрения человека, который помешан на чтении статей, посещении докладов и отсмотру роликов на Ютубе, посвященных Java в широком смысле слова.


Во-первых, многие вообще не ходят по докладам и не смотрят видео от разработчиков технологий. Это, конечно, полная фигня, учитывая, что только оттуда можно достать действительно ядреный хардкор. Никому не нужен жиденький хардкорчик!


Для меня основными источниками информации являются почтовые рассылки всевозможных проектов OpenJDK, коммиты в репозиторий, оповещения на GitHub, твиттеры разработчиков и RSS-проектов.


Как правило, это live-информация, которая никак не систематизируется и жрет невероятно много времени. Чтобы сложить из букв «truffle» слово «вечность», нужно убить массу времени и сил. Пошел на несколько часов поспать — а там уже накоммитили:



Поэтому и существуют такие специальные обречённые люди — хабраавторы хаба Java — которые всё это читают, пакуют в единицы смысла и делают из них статьи и доклады.


С другой стороны, однажды я познакомился с конференциями JUG.ru Group и залип. Настолько залип, что даже пришел сюда работать. Скоро буду праздновать год в компании. Вся эта бурная деятельность по написанию постов нужна, чтобы помочь донести сакральные знания до большего количества людей. Это как раз тот момент, когда закодить за тебя веб-приложение на спринге может каждый, а вот описать это на Хабре… сам не сделаешь – никто не сделает. Моя специальность — обзоры на конференции.


В конференциях есть особый стиль и смак. Докладчик волей-неволей должен систематизировать свои знания, прежде чем выходить на сцену. Докладчик должен регулярно их обновлять, потому что никому не нужен протухший доклад. Докладчик должен отвечать со сцены или в дискуссионной зоне быстро и решительно, иначе все посчитают его самозванцем. Короче, на конфе докладчик должен тебе очень много таких вещей, что попроси ты их на гитхабе, был бы послан к лешему или выдавливал бы ответы по полгода.


Основных конференций для меня две: JVMLS и наш Joker. То есть в мире конференций предостаточно, но этих двух для меня вполне хватает, чтобы загрузиться работой на следующий год.


Если с JVMLS всё понятно, то Joker — это специальная мультифункциональная штука, которая позволяет понять о Java-разработке всё. Её знают и любят за хардкор и жесть.


Давайте немного посравниваем в формате было -> стало.


Тренды уходящего года


Как известно, Программный комитет формирует программу не как попало, а исходя из предпочтений аудитории и популярных тем. Конференция — это не аналог документации или кукбука, это во многом социальный конструкт, основанный на интересах людей в конкретное время и в конкретном географическом положении. Условно говоря, Java-конференции 2014 года в Индии сильно отличались от Джокера. Итак, что у нас было в 2017 году?


Это был год, отмеченный знаком Java 9 с их модулями и какой-то новой необычайной свободы в собственных решениях.


Целых два доклада про Грааль. Талингер с первым докладом про Грааль, в котором просто анонсировалось, что они перевели на него важнейшие сервисы Twitter, и получилось очень хорошо. Крис Ситон с подробнейшим докладом, как всё это работает внутри.


JIT vs AOT от Ionut Balosin из Люксофта и рассказ про новый JIT в Azul Zing Артура Пилипенко.


Липский со злободневным докладом про модули в Java 9. Вообще, в кулуарах было много хайпа про Java 9.


Крутой доклад Нитсана Вакарта про профайлеры, lock-free алгоритмы Никиты Коваля, и конечно же, доклад Лёши Шипилёва про Шинанду.




Выводы: в прошлом году интересны были детали реализации JDK 9 и модулей — все были слегка не в своей тарелке от этой тихой революции. Как обычно, все активно интересовались кишками JIT/AOT, в особенности — опенсорсного GraalVM, новыми GC (тогда еще не было ZGC, но была Шинанда), и в последнюю очередь — уже ставшей классикой многопоточкой.


Наше время


Во-первых, теперь мы живём в мире, в котором Java 9 и Java 10 больше не существуют. Есть какие-то дикие люди, предлагающие мигрировать вначале на JDK 10, чтобы потом было проще переползать на 11, но это странно. Мы живем в мире набирающего обороты JDK 11, самая обсуждаемая тема последних дней — «останется ли джава бесплатной». (Конечно останется, но не обязательно в виде Oracle JDK).


В этом году дичайше хайпанул Котлин. К счастью, Джокер не превратился в конференцию по Котлину, хотя, судя по количеству заинтересованных разработчиков и докладчиков, которым есть что рассказать — легко мог бы это сделать.


Соответственно, в программе появился отец Котлина — Андрей Бреслав с докладом об «одном дне из жизни дизайнера языка». Это как линуксоиду прийти на доклад Линуса Торвальдса, как джависту прийти на Рейнхольда и Роуза. Живое воплощение языка — с докладом и часом общения в дискуссионной зоне.


Недавно я ногами сходил в JetBrains на Васильевском, и мы делали вместе с Бреславом интервью для Хабра. Немногим ранее Андрей делал доклад на организованном нами фестивале TechTrain, так что если после фестиваля остались вопросы — имеется второй шанс их задать.




Кастомные компиляторы и рантаймы никуда не делись. Скоро мы выпустим на Хабре интервью с докладчиками будущего Joker — Никитой Липским и Иваном Углянским. В этом весьма немаленьком разговоре мы выясняем, что такое ExcelsiorJET и что интересного есть в «одном дне работы JVM-инженера». Собственно, этот вопрос я придумал именно как взаимодополняющий к заявке на доклад Бреслава.


Что будет в докладах Никиты и Ивана? Никита расскажет о Jigsaw Layers, а Иван — о внутренностях GC. Для тех, кто с ними еще не знаком: это разработчики из Excelsior, которые реально пишут код собственной реализации Java и обладают сверхглубокими экспертными знаниями в этой области. У ExcelsiorJET, кстати, есть бесплатная версия — если ни разу не пробовали, рекомендую скачать и оценить. С недавнего времени компилятор Котлина собирается именно им. Оба доклада — в одном и том же четвёртом зале, но в разные дни.




Андрей, Никита и Иван — наши соотечественники, ведущие работу на переднем крае современных рантаймовых технологий, которые приезжают на Joker со своими докладами. Но будут там и другие наши соотечественники, с того же переднего края, но с будкой в выставочной зоне вместо доклада. Хочется отдельно отметить Александра Белокрылова с коллегами из компании BellSoft, которые делают Либерику (дистрибутив OpenJDK для Raspberry Pi). С ними мы тоже подготовили большое интервью, которое будет выпущено в ближайшее время.


Тайна четвёртого зала, день первый


Вообще, обратите внимание на четвёртую колонку в программе Джокера: там же одна жесть! Если сходить на все доклады сразу, то можно неиллюзорно расплавиться.


Если в прошлом году всем хватало хайпа и ужаса вокруг JDK 9 и модулей, то сейчас инфраструктура немного устаканилась, и стало интересно: вот мы мучались-мучались, пережили все испытания, а какие ништяки мы за это получим?


Первейшее, что хочет получить прикладной программист — какие-то ништяки в синтаксисе и библиотеках. И тут заходит доклад Тагира Валеева про pattern matching, которого мы все годами ждём. У Николая Парлога будет обзор Java 11, включая ключевое слово var и всякие фишечки в библиотеках.




Дальше дискурс первого дня переходит на Jigsaw Layers Никиты Липского. В прошлый раз, напоминаю, был необычный доклад про то, что у OSGi есть реальные проблемы, который вызвал массу споров. Может быть, в этот раз Никита расскажет, что нужно делать.


И вот тут коварный четвёртый зал заходит с козырей: Паньгин с феерической расстановкой точек над тем, почему Java жрёт память. Да-да, и нативную память тоже. К сожалению, тут никаких комментариев дать нельзя, потому что у Паньгина все доклады индивидуальные и глубокие.


И сразу за ним Марк Хоффман расскажет о том, как рантайм изворачивается, чтобы реализовать все те фичи, которые мы любим в новых версиях Java. Это очень хорошее завершение дня, потому что в одном докладе сливаются сразу две темы: и ништяки в языке, и подкапотные кишки.


Четвёртый зал наносит повторный удар


Если в первый день три доклада из пяти были про свежие версии Java (или четыре – смотря как считать), то во второй день 4 доклада помечены тэгом #vm, а пятый – про точное профилирование с помощью нового железа Intel.


Начнем с конца: последний доклад делает Сергей Мельников из Райффайзенбанка. Возвращаясь к нашему сравнению с прошлым годом, это продолжение предыдущего доклада с JPoint. Очень рекомендуется посмотреть предыдущую часть, видеозапись имеется по ссылке. На этот раз мы плотней погрузимся в Intel Processor Trace.


Второй доклад про профилирование — от самого Маркуса Хирта, создателя компании Appeal Virtual Machines, разработавшей JRockit JVM. Насколько понял по описанию (я не спрашивал у ПК), доклад будет про множество различных инструментов вроде JCMD, JMX, JVMTI, JPLIS, HPROF, JFR, JMC и как решать с помощью этого конструктора реальные задачи JVM-профилирования.


Вот вам очень олдфажная картинка, ставь лайк если помнишь:




Два доклада непосредственно по рантайму: от Олега Шелаева и Григория Кошелева.


Олег Шелаев — единственный официальный евангелист GraalVM в мире. Ну да, разработчиков много, а Олег — один. Поэтому и приедет он чуть ли не с самой острой темой мира GraalVM — с устройством и работой SubstrateVM. Каждому году свои темы: если в 2017 для успеха доклада достаточно было просто заявить о существовании GraalVM, то сейчас люди начитались кучи хайповых новостей, начали пытаться это использовать и уперлись в ряд проблем. Кажется, самое крутое здесь — не сам доклад, а возможность поймать Олега в дискуссионной зоне, взять всё, что он рассказал, и задать уточняющие вопросы.




Кстати, уже сейчас можно задавать вопросы в нашем чатике @graalvm_ru в Телеграме (на них даже иногда отвечают).


Если GraalVM позволяет запускать на себе не-JVM языки, то в докладе Григория Кошелева раскрывается особый мир интеграции .NET и JVM без всякого Грааля. Как тебе такое, Илон Маск?


Ну и конечно же, там есть доклад Ивана Углянского, который мы уже вспоминали раньше. Доклад уникальный тем, что он про GC, но при этом имеет и некий практический смысл. Согласитесь, обычно доклады про GC — это некая астронавтика, слушать которую или интересно (если это Шипилёв), или можно уснуть посередине (не будем показывать пальцами). Тут же речь пойдёт не об абстрактном алгоритме GC, а о требованиях стандарта и о том, как он фактически воплощен.


Есть ли ещё хардкор?


Есть, конечно. «Jlink и Custom Runtime Image» Юрия Артамонова легко можно отнести к категории докладов и про современные рантаймы, «Fuzzing для тестирования JVM» Максима Казанцева из Azul Systems — тоже. Надо понимать, что Joker — это в значительной степени о хардкоре, и даже доклад Джоша Лонга про Reactive Spring не так прост, как кажется.


До Джокера осталось меньше месяца, но я все-таки попробую выделить время и обозреть оставшуюся часть программы в отдельных постах.


В заключение я могу только посоветовать самостоятельно посмотреть всю программу, и, если понравится — приобрести билеты, потому что они потихоньку дорожают. Уже пора, да-с.


Комментарии (0)