Назад в будущее: как прошёл Joker 2017

jbeydfo2xbz3kyaryy3p7v2etms.jpeg

Давно в Java-мире не было такого оживления, как этой осенью: наконец-то вышла «девятка», завершены и другие «долгострои» (Java EE 8, JUnit 5, Spring Framework 5), Java EE отправляется в Eclipse Foundation, коммерческие фичи Oracle JDK решено опенсорснуть, а сама Java переходит на полугодовой релизный цикл.

Как в таком урагане новостей может выглядеть Java-конференция? Надо сосредоточиться на этих новых темах, или думать о тех разработчиках, которые не то что на «девятку», а на «восьмёрку» ещё не перешли? Мы провели в Петербурге пятый по счёту Joker — и под катом подробно написали о том, как это было.

Как и в прошлом году, местом действия стал «Экспофорум». Собралось около 1200 человек, так что на площадки поменьше конференция уже просто не влезает, а здесь было вдоволь места и для докладов, и для дискуссионных зон, и для спонсорских стендов. В этот раз дело обошлось без прошлогодних шести залов: ограничились «всего лишь» четырьмя, решив сосредоточиться на качестве. Из-за этого отбор докладов превратился в «мясорубку» с конкурсом в несколько заявок на одно место — зато зрительские оценки докладов оказались высоки.

np-1vzf6bzdltm3feqjoxqffw9c.jpeg

Онлайн-трансляция отличалась от прошлого раза. Во-первых, она велась в разрешении 1440p: это позволяет одновременно выводить и изображение с ноутбука спикера в 1080p, и самого спикера. Во-вторых, в прошлом году мы в экспериментальном режиме попробовали демонстрировать один из треков бесплатно, а между докладами выводить в трансляцию интервью со спикерами. Тогда дело не обошлось без технических проблем, но сама идея себя зарекомендовала. Так что в этот раз мы сделали то же самое уже увереннее — и на YouTube доступны трансляции обоих дней.

Открывал всё кейноут Кая Хорстманна, уже 20 лет известного благодаря книге «Core Java» (на конференции его даже просили расписаться на ней). И тут сразу проявлялась актуальная повестка: он говорил о нововведениях Java 9 (кроме модулей). На эту тему за последнее время было написано столько текстов, что возникал вопрос: будет ли доклад хоть чем-то отличаться от них? И требуется ли для этой темы легендарный Хорстманн, или такой же доклад получился бы у любого, внимательно почитавшего источники?

wvjwjkzrfyyxzwihxbf-fk1zehc.jpeg

Но опыт Хорстманна давал о себе знать. Внимательно наблюдая за развитием Java на протяжении многих лет, он мог не просто пересказывать текущие факты, как в большинстве статей, а показывать картину в перспективе: «В 2009-м Джош Блох предложил collection literals для Project Coin. Тогда это не воплотилось в жизнь. Сейчас мы тоже не получаем именно это, но при этом получаем вот что…» Судя по фидбэкам, часть зрителей убаюкивала равномерность вещания Кая (ему привычнее читать лекции в университете, чем доклады), но таким могли помочь просыпаться встречавшиеся в докладе паззлеры.

jacbr_gqdvgitmtj28biemfqxfm.jpeg

Когда после кейноута все разошлись по четырём залам, в одном из них тоже начались как раз паззлеры, но вот там уже никому было не до сна: когда на сцене Барух Садогурский, заснуть не получится физически. А выступавший вместе с ним паззлеры Тагир Валеев не может пожаловаться на дефицит новых паззлеров для докладов: при работе над инспекциями в IntelliJ IDEA с ними волей-неволей сталкиваешься. Самый первый был об особенностях module-info.java — то есть и тут не обошлось без новостей из девятой Java.

Тем временем в другом зале ещё активнее приближали будущее: там Кристиан Тэлинджер из Twitter рассказывал об использовании нового компилятора Graal. Со стороны Twitter это смелый шаг (большинство людей пока что считают проект слишком экспериментальным для продакшна), но Кристиану отчасти помогает прежний опыт работы в Sun и Oracle. А в итоге, немного выигрывая в производительности, Twitter со своими масштабами уже сейчас экономит ощутимые суммы — то есть это не просто лихой эксперимент ради эксперимента, а совершенно практичный шаг. Впрочем, общую оптимистичность доклада многим подпортила концовка: там Тэлинджер признался, что наблюдаемый им прирост производительности может объясняться сочетанием Graal и Scala (которую в Twitter активно используют), а с чистой Java результаты были бы менее впечатляющими.

Крист рассказал как все становится лучше с Граалем, а потом добавил, что возможно это все из-за скалы.Ну вот (#twittervmteam #jokerconf pic.twitter.com/9g41dAHNVf

— Дима Волыхин (@volyx) November 3, 2017

По разряду «можно выиграть в производительности, но актуально для немногих» проходит и доклад Дмитрия Александрова об использовании Java с GPU. И своеобразность этого доклада, пожалуй, лучше всего сформулировал один из участников в своём отзыве: «Смузи, приготовленное с помощью лопастей вертолёта».

За этим следовал обед, и, кажется, обеденный гарнир вызвал больше разногласий, чем любой из докладов: пока одни с большим интересом открывали для себя киноа, другие сравнивали его с «лошадиным овсом». Мы, конечно, учтём реакцию, но имейте в виду, что производство киноа в последние годы на диком подъёме. То есть такими темпами от него всё равно будет нигде не скрыться, как от Docker и микросервисов.

nzf02gjhtiq3tuvhx38mwqzs1yk.jpeg

После обеда сначала Нитсан Вакарт рассказывал о сложностях с Java-профайлерами, а затем Алексей Шипилёв продолжил свой путь вглубь Shenandoah — точнее, он говорил уже даже не конкретно о Shenandoah, а о том, как на работе GC сказываются особенности рантайма. И любопытно, что для обоих спикеров важной темой стали safepoints. В случае с сэмплирующими профайлерами они могут сбивать результаты — и Вакарт говорил, что помогает этого избежать. В случае с GC они связаны с накладными расходами — и Шипилёв подробно расписывал, как именно. Интересно, сколько участников при вопросе Шипилёва «кто знает, что такое safepoint» подняли руку из-за того, что часом ранее узнали это от Вакарта? :)

А в конце дня Николай Алименков выступал с докладом об антипаттернах при использовании Java 8 — и интерес публики был так высок, что в программе два зала были объединены вместе. Хотя в дни Joker самые известные Kotlin-спикеры находились за океаном на KotlinConf, благодаря Николаю без упоминания языка на конференции не обошлось: рассказывая про Optional, он подчёркивал, что это скорее частичное решение вопросов с nullability, чем более радикальный Kotlin-подход. А затем принялся критиковать «опшионализм», при котором Optional начинают использовать и тогда, когда не стоило бы.

gneykhgn47s66bixxi32rtngmeg.jpeg

В начале второго дня можно было наглядно увидеть разницу в интересе к двум разным темам. Когда Кирилл Толкачёв и Евгений Борисов вышли разбирать «подкапотную магию» Spring Boot, возник аншлаг —, а в это же время на докладе «Ceylon в продакшне» было малолюдно. Конечно, нет никакого сюрприза в том, что Spring Boot волнует людей на порядки сильнее Ceylon, но визуальный контраст впечатлял.

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

a-vujuahdveloqy5kjtuo4c9isy.jpeg

Тем временем Барух Садогурский и Леонид Игольник устраивали битву «Google Home против Amazon Alexa», демонстрируя, какие дополнительные скиллы можно написать на Java этим голосовым помощникам. В конференционных условиях не все голосовые команды корректно отработали, но зрители ощутили главное: благодаря «умным колонкам» отчасти возвращается романтика «сам купил домой устройство, сам запрограммировал».

Главным форс-мажором стало то, что авиасложности не дали добраться до конференции Саше Гольдштейну. Но залу не пришлось пустовать: в качестве замены был быстро организован круглый стол с участием Алексея Шипилёва, Андрея Паньгина, Владимира Ситникова, Глеба Смирнова и Фолькера Симониса. Диалог таких людей всегда интересно послушать —, а в итоге среди зрительских отзывов можно встретить даже радость из-за отмены доклада Гольдштейна.

l-_vi9pxwzomfv5agktqjnhesta.jpeg

Впрочем, количество зрителей на круглом столе было не слишком большим — вероятно, из-за того, что многие пошли слушать Тагира Валеева про то, что ждёт нас в будущем благодаря Project Amber. Там всё проходило бодро: «Кто считает, что вывод типов локальных переменных делают зря? Ну, вы же понимаете, что от вашего мнения ничего не зависит. Выводить типы в Java начали раньше, тогда и надо было жаловаться». Тагир, изначально ставший известным со своими докладами про стримы, теперь вроде как ушёл от этой темы —, но от нашего зоркого глаза не ускользнуло, что у Тагира даже на слайдах совсем другого доклада при большом желании можно найти «стрим»:

xf2hymbq3yl44_zi8w-xrbxhg8q.jpeg

Наконец, завершал конференцию кейноут Сергея Абдульманова, известного хабрапользователям по блогу @mosigra. Его рассказ был не о Java, а о том, как в «Мосигре» с разработки 10 игр в год пытались выйти на 120 игр в год — и этот рассказ показывал как сходства, так и отличия от разработки софта. С одной стороны, в IT Сергей привык к чёткой проверке проекта по чек-листу, и был удивлён, когда сотрудники ставили в чек-листе галочки «на авось». А с другой, озвученный способ работы с фрилансерами вызвал в зале смех узнавания ситуации: «Посмотрев, что львиная доля рабочего времени уходит на переделки, мы ввели правило, когда при отсутствии переделок оплата удваивается. Фрилансеры-переводчики, которые раньше вечно что-то недоделывали, очень быстро усвоили эту схему!»

htrdv02foceuntdsd1eqct4fgae.jpeg

Какой вывод из всего этому можно сделать? Что сейчас актуально для зрителей — прошлое Java (продолжающее работать в продакшне), наступившее недавно модульное настоящее, или вовсе будущее? Судя по тому, сколько зрителей было на различных докладах и какой фидбэк они дали, верны все три варианта сразу: оживление вызывали и ошибки при использовании Java 8, и расширения свежевышедшего JUnit 5, и ещё не используемое ключевое слово var.

И поэтому можно сказать так: конференция Joker успешно поддерживает несколько разных версий Java одновременно.

1ejynar_ryxu7u-xqaleu-qvfde.jpeg

© Habrahabr.ru