Java-конференция Joker 2016: больше, сильнее, интереснее
Период, непосредственно предшествовавший конференции, был весьма насыщенным и богатым на события:
- запуск Java-портала JUG.ru;
- многочисленные выступления спикеров Joker на встречах питерской и московской Java User Group;
- интересные статьи на Хабрахабре с инсайдом от JUG.ru о подготовке конференций (о спонсорах, о подготовке онлайн-трансляций, об административной составляющей);
- классические интервью «один на один» Алексея Фёдорова из серии «Без слайдов» (с Русланом Черёминым, с Барухом Садогурским);
- новая форма — тематические интервью (о производительности, о Java DevTools, о Java Stream API, о Legacy-коде, об ООП, о тестировании, о проекте Panama, о проекте Jigsaw, о технических докладах, о контейнеризации, о внутренностях JVM);
- интервью со спонсорами Joker 2016 (T-Systems, Luxoft, SEMrush, EPAM, Одноклассники, Сбербанк-Технологии).
Настоящими жемчужинами из перечисленного выше, на мой взгляд, стали интервью с Барухом Садогурским и Владимиром Красильщиком (оба — спикеры Joker 2016).
По сравнению с предыдущими годами конференция ещё подросла — в полтора раза стало больше параллельных треков (шесть вместо четырёх). Выбор докладов для просмотра из нескольких практически равноценных вариантов стал ещё сложнее. Часто возникало ощущение себя ребёнком в кондитерской лавке — ярко, вкусно и трудно выбрать.
Была освоена новая площадка для проведения конференции — питерский Экспофорум. Прекрасные декорации (раз, два) и спикеры с организаторами, украшающие своим присутствием конференцию.
Открытие конференции
Организаторы конференции (Алексей Фёдоров, Андрей Дмитриев) и её докладчики (Олег Анастасьев, Андрей Паньгин, Дмитрий Бугайченко) на открытии.
Доклады первого дня
Доклады первого дня были так же хороши, как и доклады дня второго. Выбор облегчала мысль, что все доклады записываются и позднее можно будет посмотреть и всё остальное.
Что В Имени Тебе Моём?
Алексей Шипилёв, Red Hat
Первым докладом, задающим общий настрой конференции (т.н. кейноутом), начал Алексей Шипилёв. «Разогревающим» любой доклад Алексея просто быть не может по определению. Даже слегка облегчённая для кейноута тема изобиловала техническими подробностями, формулами и, естественно, традиционными афоризмами («кривая им. Ш», «не бойтесь смотреть на ваше приложение», «немножко поиграем членами»).
В непринуждённой форме давались пошаговые рекомендации для достижения «достаточной и удовлетворяющей» производительности. Во второй день Алексей продолжил более сложным докладом «Близкие Контакты JMM-степени».
Незадолго до конференции Алексей перешёл из Oracle в Red Hat, поэтому красный цвет курточки (с надписью «Oracle» на груди) здесь был вполне уместен.
Groovy Puzzlers S03 — Грувить так Грувить!
Барух Садогурский и Виктор Гамов
Барух с Виктором зажигательно представили третий сезон Groovy Puzzlers (вслед за первым сезоном на Joker 2015 и вторым сезоном на JPoint 2015).
Правила всё те же — пытаться догадаться (не ища подсказки), активно голосовать, правильно объяснить свой ответ. К середине доклада аудиторию удалось расшевелить. Думаю, что получившееся в итоге одинаково понравилось и зрителям, и докладчикам.
Native код, Off-heap данные и Java
Владимир Иванов, Oracle
С интересом слежу за судьбой проекта Panama, результаты которого станут доступны не ранее Java 10. Владимир является одним из наиболее авторитетных экспертов в данной области. Было проведено развёрнутое сравнение с Java Native Interface (JNI) и Java Native Runtime (JNR), показаны преимущества и недостатки каждого из решений.
В какой-то степени рассказанное (кроме Panama было ещё и про VarHandles) дополнило доклад Алексея Шипилёва про VarHandles c JPoint 2016.
Причуды Stream API
Тагир Валеев, JetBrains
Ещё один постоянный докладчик Java-конференций (и по совместительству звезда Java-хаба на Хабре lany), который сменил работу с прошлой конференции (апрельской JPoint). С недавнего времени Тагир работает в компании JetBrains, что не может не радовать всех поклонников продуктов данной компании.
Доклад продолжил тему о Stream API, начатую в докладах на JBreak 2016 и JPoint 2016. Именно в этом докладе речь шла о причудливом, странном, нелогичном, на первый взгляд, поведении в некоторых случаях при работе со стримами. На второй фотографии Тагир демонстрирует генератор случайных чисел в виде кубиков, как вспомогательный реквизит к «Причуде №3». Думаю, что зрители не пожалели о выборе докдада, зал был полон.
Верхом на реактивных стримах
Виктор Гамов, Hazelcast
Тему использования стримов подхватил в следующем докладе Виктор Гамов, сооснователь и соведущий подкаста Разбор полётов, одновременно являющийся и работником компании Hazelcast.
Традиционное (на одном компьютере) применение стримов было заменено распределённым с использованием Hazelcast и Hazelcast Jet. В показанном коде манипуляции с данными производились с английским текстом «Войны и мира», при желании примеры можно посмотреть и запустить.
Beating Threads — live coding music
Sam Aaron, University of Cambridge
Весьма любопытный и познавательный доклад Сэма Аарона завершал первый день конференции. Сэмом была продемонстрирована его программа Sonic Pi (очень красивый и удобный сайт программы), предназначенная для музыкального лайвкодинга.
Кроме развлекательного использования (диджеем на дискотеке) Сэм позиционирует её и как вспомогательный инструмент для изучения программирования (на сайте даже есть план занятий). Доступны дистрибутивы для Raspberry Pi, macOS, Windows, Linux. Исходный код — на GitHub.
Доклад носил, скорее, академический характер, по-настоящему Сэм оторвался на вечеринке первого дня конференции (см. видео). Ещё больше видео — на официальном канале YouTube Сэма.
Гости «Разбора полётов» в первый день
Нововведением конференции стала площадка подкаста Разбор полётов. Резиденты подкаста брали интервью у организаторов, спикеров и участников.
Алексей Фёдоров в окружении ведущих подкаста (Антон Архипов, Виктор Гамов, Алексей Абашев, Барух Садогурский). Интервью с представителями компании Crossover.
Разговор с Иваном Крыловым, Алексеем Шипилёвым, Андреем Дмитриевым. Интервью с Глебом Смирновым.
Закрытие первого дня
Вручение подарков участникам программного комитета — Андрею Когуню (jug.msk.ru, первый снимок), Владимиру Ситникову и Владимиру Красильщику (второй снимок). Получающий подарок Тагир Валеев (третий снимок).
Доклады второго дня
Первые три доклада близкой тематики просто идеально складывались в последовательность для просмотра: «From Java to Assembly: Down the Rabbit Hole», «Жизненный цикл JIT кода» и «Байткод для любознательных».
From Java to Assembly: Down the Rabbit Hole
Charles Nutter, Red Hat
Чарльз является одним из лидеров проекта JRuby. Название доклада совпадает с наименованием первой главы Alice’s Adventures in Wonderland (Алисы в стране чудес). В презентации были использованы классические иллюстрации Джона Тенниела из первых изданий обеих книг Кэрролла об Алисе.
Аналогия между Wonderland и JVM вполне удачна, стиль изложения и построение доклада также весьма оригинальны. В занимательной форме был показан путь от исходного кода Java до нативного кода — компиляция в байткод, интерпретация байткода, JIT-компиляция в нативный код. Кроме того, были раскрыты особенности реализации final-полей, synchronized, volatile, оператора switch для строк, лямбда-выражений.
Жизненный цикл JIT кода
Иван Крылов, Azul Systems
Логичным продолжением предыдущего доклада стал доклад Ивана Крылова про Just-in-time (JIT)-компиляцию. Кроме трансформации кода, профилей и случаев деоптимизации были упомянуты 5 уровней компиляции (с возможными переходами между ними) и 4 имеющиеся API для тюнинга компиляции.
Интересным был рассказ про ReadyNow — технологию, специфичную для виртуальной машины Azul Zing. Упомянул и про ещё более возросший интерес со стороны компании Oracle к статической компиляции Ahead-in-time (AOT), см. JEP 295.
Байткод для любознательных
Антон Архипов, ZeroTurnaround
Антон Архипов отлично завершил серию из трёх первых докладов второго дня, рассказав про Java-байткод: набор и типы инструкций, особенности работы со стеком и таблицей локальных переменных, обзор имеющихся инструментов.
Из инструментов были упомянуты Java Bytecode Editor, плагин ASM Bytecode Outline для IntelliJ IDEA и ObjectWeb ASM. Демонстрировавшийся пример доступен на GitHub.
Java 9 Modularity in Action
Sander Mak, Luminis Technologies
Животрепещущая тема, с которой всем неминуемо предстоит столкнуться в скором времени (или не в скором, если выход Java 9 в очередной раз будет отложен) — модульность (проект Jigsaw). Сандер является соавтором книги Java 9 Modularity издательства O’Reilly, поэтому вполне сведущ в данном вопросе.
Кроме общих вопросов (цели модульности, история модульности в рамках экосистемы Java) показано и текущее состояние (Java 9 ещё не вышла) с примерами кода.
Эволюционный дизайн
Кирилл Толкачёв и Александр Тарасов, Альфа-Лаборатория
Блистательный дуэт Кирилла Толкачёва и Александра Тарасова на этот раз заинтересовала тема эволюционного дизайна. В ходе стремительного и живого повествования (189 слайдов за час доклада) продемонстрирована эволюция архитектуры и стека технологий под влиянием меняющихся требований, накапливающегося опыта и появляющихся новых инструментов и методологий.
Особенно заинтересовала грандиозная «таблица технологий», которая была сформирована в процессе доклада.
Pragmatic Performance
Gil Tene, Azul Systems
Гил — сооснователь и CTO компании Azul Systems. Его доклад перекликался с первым докладом Алексея Шипилёва, также призывавшего к более прагматичному подходу в отношении к производительности приложений.
Были приведены различные метрики и подходы в оценке производительности. Даны рекомендации для понимания истинных потребностей при проектировании и реализации продуктов.
Как завершающий доклад конференции, неперегруженный техническими деталями, был более чем уместен и лёгок для восприятия.
Гости «Разбора полётов» во второй день
Общение с Александром Тарасовым. Тагир Валеев и Андрей Когунь.
Сергей Егоров и Дмитрий Чуйко. Антон Архипов и Алексей Фёдоров, подводящие итоги.
Закрытие конференции
Общая фотография всех, причастных к подготовке конференции, — организаторов, волонтёров и спикеров.
Андрей Дмитриев, Алексей Фёдоров, Гил Тене. Екатерина Курилова в окружении волонтёров.
Итоги
Полезность любой конференции заключается в
- ценности информации, содержащейся в докладах;
- удобстве восприятия этой самой информации.
Для достижения этих целей на данной конференции
- значительно увеличено количество докладов (докладов почти в шесть раз больше, чем в этом обзоре);
- стало больше спикеров, как русскоязычных, так и англоязычных;
- организованы дискуссионные зоны, в которых за счёт увеличенных перерывов между докладами можно продолжить общение со спикерами;
- экспериментально появилась и хорошо себя зарекомендовала площадка подкаста «Разбор полётов»;
- впервые дана возможность бесплатного просмотра основного трека конференции.
Увы, в первый день были некоторые проблемы с трансляцией, успешно решённые к началу дня второго (самокритичный твит про это). Незначительные неудобства вызвал вынужденный перенос на более позднее время в первый день доклада Антона Архипова. Все прочие технические и административные вопросы решались по мере их возникновения и вряд ли были замечены участниками.
Файлы презентаций доступны на сайте коференции, ссылка на видео всех докладов уже выслана участникам, заполнившим отзыв.
Какие впечатления от конференции остались у Вас?