Дополнение к обзору с подведением итогов конференции JPoint 2019 для Java-разработчиков, проходившей 5-6 апреля 2019 года в Москве. Ещё больше обзоров докладов, больше фотографий, больше эмоций и впечатлений.
Два дня с утра до вечера (почти в буквальном смысле «от рассвета до заката») 1600 человек (со спикерами и командой JUG.ru — все 1700) близкого возраста со сходными профессиональными интересами провели в Конгресс-центре Центра Международной Торговли. При перемещении по площадке и переходе из зала в зал в перерывах чувствовалось, что такое количество народа близко к предельному в данном месте проведения конференций. Надо отдать должное всем причастным к подготовке мероприятия — всё прошло практически идеально. При заблаговременном попадании в зал места находились, дополнительно видео транслировалось в маленький пятый зал. Все были вовремя накормлены и не обижены отсутствием докладов на любой вкус («хлеба и зрелищ»).
Стенды компаний
Из стендов спонсоров большое внимание привлекли компании, чьи программные продукты либо используются большинством участников конференции, либо потенциально могут заинтересовать значительную их часть. Естественно, в первую очередь это стенд компании JetBrains (средний снимок). Каждый день проводя изрядную часть суток, пользуясь свежей версией IntelliJ IDEA, испытываешь глубочайшее уважение и благодарность к работникам компании. На конференции доклады сделали её работники Тагир Валеев и Антон Архипов.
Небольшая компания (официальное её название «Системы программной верификации»), флагманским продуктом которой является статический анализатор кода PVS-Studio. В продукте недавно появилась поддержка языка Java. Компания очень активна на Хабре. Значительная доля статей написаны техническим директором Андреем Карповым (на первом фото он на стенде компании).
Ещё одна интереснейшая компания — BellSoft и их Liberica JDK. Отличительной особенностью данного дистрибутива является поддержка архитектуры ARM. На первом фото — генеральный директор Александр Белокрылов, который успел сделать ещё и мини-доклад на Demo Stage. Кроме того, Дмитрий Чуйко рассказал дополнительно о Java в контейнерном окружении.
Стенд jug.msk.ru
Сообщество московских Java-разработчиков jug.msk.ru выступало в качестве информационного партнёра. Встречи сообщества проходят регулярно, неизменно собирая большое количество участников. Стенд был установлен на первом этаже, на стенде практически постоянно присутствовал Андрей Когунь (лидер jug.msk.ru, по совместительству участник программного комитета конференции). За два дня существования стенда число подписчиков Twitter-аккаунта заметно подросло.
Антон Черноусов (подкастер, организатор конференций, просто хороший человек) и Андрей Когунь (первое фото). Андрей и участники конференции, посетившие стенд (второе фото). Докладчики прошедших встреч jug.msk.ru: Иван Пономарёв, Никита Липский и Алексей Стукалов (третье фото).
Demo Stage
Популярное место для коротких докладов. Весьма привлекательная форма докладов, позволяющая и при пребывании вне залов основных докладов приобщиться к каким-то новым темам и получить информацию из интересной тебе области. Как уже отметили, единственный недостаток — шумновато, но это особенности площадки.
Открытие конференции
Андрей Дмитриев открывает конференцию, представляя программный комитет. Андрей Когунь и Владимир Ситников подробно рассказывают о программе конференции, акцентируя внимание на возможных типах докладов.
Доклады первого дня
Антон Кекс в своём докладе The world needs full-stack craftsmen пропагандировал мысль о как можно большей многофункциональности каждого участника команды. На примере своей компании Codeborne приводил доводы, почему это важно: компактность команды по причине многих знаний и умений каждого, снижение рисков проекта (пресловутый грузовик, под колёсами которого, кроме работника, может погибнуть и продукт ввиду утраты знаний), просто интересно получать всё больше знаний в разных областях (трудно не согласиться). Доклад вдохновил не только слушателей, но и спикера — Bruno Borges включил в свою презентацию слайд с цитатой Антона: «Craftsman can be 5x even more efficient by knowing what not to do».
Владислав Сенин с докладом Логи: чем больше, тем лучше — но как с этим жить? выступил в уютном пятом зале. Влад — активный участник московского Java-сообщества, это его дебют в качестве спикера на конференциях JUG.ru. Была показана эволюция использования инструментов для хранения логов и поиска по ним. Источниками логов являются приложения на Java и Python. Для поиска основой служит Elasticsearch. После доклада были услышаны дополнительные увлекательные подробности (в том числе детективная история поиска причины пропадания символа в JSON), которые не были рассказаны по причине ограниченности времени, поэтому можно ожидать в ближайшем будущем более обстоятельный рассказ Влада на данную тему.
Доклад The Proxy fairy and the magic of Spring от Victor Rentea был посвящён магии шаблона проектирования Proxy, широко используемой в Spring Framework. В анонсе доклада было обещание познакомить с шестью способами перехвата вызовов методов, двумя способами применения шаблона Decorator вместе со Spring и много ещё чему в ходе сеанса лайв-кодинга. Очень живое выступление, вдохновляющее после него поэкспериментировать со Spring и покопаться в коде показанных примеров (они здесь на GitHub). Если Вы любите Spring, шаблоны проектирования и живое кодирование — определённо, это Ваш доклад, надо смотреть.
Абсолютно применимый на практике доклад Bulletproof Java Enterprise applications for the hard production life от Sebastian Daschner про то, насколько важны стабильность и отказоустойчивость у enterprise-приложений, и как её достичь. Во время доклада нашёл и открыл проект Microprofile Fault Tolerance на GitHub, использование аннотаций из которого докладчик активно демонстрировал (мне больше всего запомнилась @CircuitBreaker). Единственный недостаток презентации доклада — тяжело читаемые заголовки (первая фотография даёт представление об этом, на картинку можно щёлкнуть для её увеличения).
Доклад Нас Spring Boot, а мы крепчаем: невыносимая легкость AOT-компиляции Spring-приложений от Никиты Липского стал своеобразным ответом на вопрос про поддержку Spring Boot в GraalVM, который был задан Олегу Шелаеву в предыдущий день на встрече (в GraalVM пока проблемы с поддержкой как Spring Boot, так и операционной системы Windows, что Олег и сказал). В продукте Excelsior JET, который представляет Никита, с поддержкой разных операционных систем всё хорошо. Кроме того, недавно было официально объявлено о поддержке при AOT-компиляции Spring Boot, о чём и был доклад. Дополнительный интерес к статической AOT-компиляции Java-приложений сейчас связан с тем, что приложениям (микросервисам) особенно важен быстрый старт. Наиболее часто приложения построены на базе Spring Boot. Интересный доклад, умело балансирующий на грани хардкора и доступного для понимания изложения.
Совместные доклады Кирилла Толкачёва и Евгения Борисова традиционно пользуются большой популярностью у слушателей, Reactive или не reactive, вот в чем вопрос не стал исключением — на первом фото можно видеть полный зал. Идеей доклада было показать привычную реализацию какой-то задачи (взаимодействие трёх систем в данном случае), чтобы потом переделать её в реактивном стиле. Вдохновившись просмотром в этот же день доклада Олега Докуки про протокол RSocket, докладчики даже успели доработать примеры. Получилось всё достаточно удачно и увлекательно.
BOF-сессии
Формат BOF был уже несколько раз опробован на нескольких последних конференциях и стал популярным. Слушать доклады уже тяжеловато, а силы и желание на неформальное общение всё ещё есть — естественное завершение первого дня. Ниже фото с BOF-сессии Microservices, cloud и куда все это двигается, проходившей в дискусионной зоне.
Доклады второго дня
Отличительной особенностью, «изюминкой» технических конференций JUG.ru является присутствие в программе одного нетехнического доклада. В этот раз таким докладом был Игра в Бога. Перешла ли наука границу от Александра Панчина. Подобные доклады расширяют кругозор, позволяют настроиться на день (в этот раз доклад был открывающим второй день). Наконец, они взаимно интересны и спикеру (нестандартная аудитория), и слушателям (непривычная предметная область). Естественно, доклад был научно-популярным, но очень интересным. Изменение генетического кода и коррекция генетических дефектов, успехи и современные подходы в борьбе с ВИЧ и раком. Перечисление личностей учёных, занимающихся подобными проблемами, и их достижения.
Легковесный (в хорошем смысле этого слова — лёгкий для восприятия и понимания) доклад Local variable type inference: Friend or foe? был представлен Simon Ritter. Тема доклада — выведение (inference) типов локальных переменных при использовании var (возможность, появившаяся в Java 10). При ближайшем рассмотрении оказалось, что в столь простом, на первый взгляд, вопросе много нюансов, на которые нужно обращать внимание. Чувствуется, что у докладчика большой конференционный опыт (в послужном списке присутствует работа в Sun Microsystems, Oracle, Azul и звания Java Rockstar, Java Champion). Рассказ очень легко и слушался, и был хорошо проиллюстрирован слайдами. Один из примеров докладов с явной практической направленностью.
Выступление Суперкомпиляция, partial evaluation, проекции Футамуры и как GraalVM спасет мир в исполнении Олега Шелаева было продолжением темы GraalVM, рассказ на которую он начал 4 апреля на встрече jug.msk.ru. Очень полезно было сначала послушать подробный вводный трёхчасовой рассказ непосредственно перед конференцией, потом в первый день сходить на доклад Никиты Липского (про поддержку Spring Boot при AOT), после чего опять вернуться к GraalVM. Разговор касался теоретических основ компилятора Graal и GraalVM — проекций Футамуры. Второй темой была демонстрация использования Truffle — фреймворка для создания языков программирования на основе GraalVM. Олег также порекомендовал послушать доклад Thomas Wuerthinger, который читался в предыдущий день конференции.
Любопытную концепцию атомарных изменений при выполнении рефакторинга кода представил Тагир Валеев в докладе Атомарный рефакторинг в IntelliJ IDEA: прогибаем IDE под себя. Идея атомарных изменений на каждом-каждом маленьком шаге модификации строк кода была показана в среде разработки IntelliJ IDEA — Тагир представляет компанию JetBrains, сам лично участвуя в её разработке. Кроме того, подавляющее большинство сидевших в зале (включая и меня) ежедневно используют IntelliJ IDEA, поэтому рассказанное и показанное легло на благодатную почву. Признаться, никогда не задумывался, атомарен ли мой самый-самый маленький шаг изменений, но теперь постараюсь обращать на это внимание, возможно, пересмотрев видео доклада.
Ещё один пример доклада, информация после прослушивания которого может быть применена на практике, — Java тормозит: CodeCache edition от Владимира Ситникова. Речь в нём шла о CodeCache — области, в которой JVM хранит байткод, скомпилированный в нативный код (native, исполняемый код целевой платформы). Случай, речь про который шла в докладе, произошёл при использовании WebLogic Server, но конкретный тип сервера приложений не имеет особого значения. Интересна последовательность шагов, которая должна быть выполнена при ошибках подобного типа, и знание значений по умолчанию размера CodeCache в разных версиях Java (или хотя бы факта, что они разные, и, возможно, потребуется вручную указать больший размер).
В какой-то степени Как распутать клубок ниток: анализ и отладка приложений в IntelliJ IDEA, доклад Антона Архипова, перекликался с первой частью его трёхчасового выступления в ноябре прошлого года. Полезной оказалась информация и полученная на вышеупомянутом выступлении, и на этом конкретном докладе. Приёмы исследования кода были показаны на примере Spring Initializr. О структурном поиске в IntelliJ IDEA многие знают, но используют. Возможно, демонстрация этой возможности Антоном подтолкнёт кого-то к повседневному её использованию.
Bruno Borges завершающий конференцию доклад Making sense out of serverless computing начал с сообщений о том, что, несмотря на его работу в Microsoft, он никогда не использовал операционную систему Windows (презентация выполнялась с MacBook), имея богатый опыт Java-разработки и поработав ранее в компании Oracle. Сейчас он developer advocate в Microsoft, занимается популяризацией использования облаков. Подробно были рассмотрены ключевые особенности «безсерверного» использования: управляемость событиями (event-driven), гибкость при тарификации (micro-billing), отсутствие необходимости самостоятельной установки чего-либо и поддержки (no server setup or maintenance) и самомасштабируемость (self-scaling) инфраструктуры. Своеобразной связующей нитью с началом конференции стало, как уже отмечалось, использование цитаты из презентации Антона Кекса.
Закрытие
Заключительное слово Андрея Дмитриева с просьбой ответить на письмо с обратной связью. Традиционные фотографии участников программного комитета, команды JUG.ru и спикеров.
Итоги
Конференция совершенно неожиданно ещё подросла в количестве участников. Переехав некоторое время назад из гостиницы «Radisson Славянская» в Конгресс-центр Центра Международной Торговли, теперь и в текущем месте проведения чувствует себя стеснённо. Вероятно, при сохранении тенденции роста интереса можно ждать в ближайшее время замены площадки на ещё более просторную.
Мысли, высказанные Барухом Садогурским в интервью Егору Бугаенко на Joker 2018 о недостатке прекрасного пола в IT, были услышаны — на конференции было заметно больше девушек, чем на предыдущих.
Незначительные организационные и технические накладки были скорее связаны с большим количеством участников, да и то были оперативно моментально исправлены. Видео докладов для участников конференции уже доступно на YouTube, так же как и общедоступны файлы презентаций на сайте конференции.
25-26 октября 2019 года в Санкт-Петербурге состоится конференция для Java-разработчиков Joker 2019, открыт приём заявок на доклады и уже можно купить билеты (по минимальной цене до 1 мая).
Автор: Дмитрий Белобородов