![](https://habrastorage.org/files/530/cb1/218/530cb121805a41c3bb9a3636bce63b8f.jpg)
Помимо «чисел Joker 2016», перечисленных нами заранее, теперь можно назвать ещё одно: на конференции наши фотографы сделали более 5000 снимков. Неудивительно, что на обработку ушло ощутимое время, и на Хабре уже успел появиться отзыв глазами участника от dbelob — а теперь мы публикуем свой.
Резкие отличия Joker 2016 от предыдущих «Джокеров» бросались в глаза сразу. В чём они состояли, о чём рассказывали на конференции в этот раз, и какие доклады по зрительским оценкам оказались лучшими?
Первый день
Иногда не требуется даже дожидаться открытия конференции, чтобы ощущить её отличие от прошлогодней: в случае с Joker 2015 достаточно было просто прийти на площадку. В этот раз, собрав более 1000 человек, петербургская конференция переросла размеры «Park Inn Пулковской» и прошла в «ЭкспоФоруме». Оказавшись под его высоченными потолками, сложно было не впечатлиться масштабом. Можно сказать, что у конференции произошло вертикальное масштабирование во всех смыслах.
![](https://habrastorage.org/files/12c/f7a/fc9/12cf7afc92394bf69832f3c4dac36755.jpg)
В разы увеличилась площадь. Это позволило размахнуться как следует, разместив множество нового: от ретро-компьютеров и фотобудки до отдельного мини-трека для IT-директоров и конкурса iCanCode. На одном и том же мероприятии присутствовали и шлем виртуальной реальности VFX1 из 90-х, и появившийся в 2016-м HTC Vive, так что можно было лично оценить путь, проделанный VR за двадцать лет. И, наконец, с площадью увеличилось главное: число треков возросло с четырёх до целых шести.
![](https://habrastorage.org/files/bce/388/083/bce3880831bc4959922078c692bcddaf.jpg)
Ещё одно отличие возникло с открытием конференции, и оно имело значение не для присутствовавших в «ЭкспоФоруме», а для всех остальных: впервые в истории Joker видеотрансляция одного из треков была бесплатной. Но в этом случае, кроме новых возможностей, появились и новые сложности. С трансляцией возникли технические проблемы (предоставленный нам канал на upload оказался меньше, чем должен был), заставившие немало людей побегать в мыле. Позже ситуацию удалось исправить, но некоторое время всё ощущалось так, как на этом нашем твите.
Тем временем за официальным открытием последовал кейноут от Алексея Шипилёва о производительности. Поскольку формат кейноута не предполагает адского хардкора, выступление было менее техническим и более обзорным, чем его обычные доклады. А значит, давало отличную возможность всем, кто давно хотел послушать Шипилёва живьём, но боялся.
![](https://habrastorage.org/files/92e/378/b89/92e378b8928d405bbd78343dbaf3f142.jpg)
Что до содержания доклада, то ключевым его слайдом стала «Кривая им. Ш». Разделив работу над оптимизацией на несколько разных «зон», Шипилёв решительно заявил, что поначалу речь идёт «просто о том, какую часть говнокода переписывать в первую очередь». Это означает, что полезен будет любой профайлер, а все слова про «преждевременную оптимизацию как корень всех зол» не более чем ментальная ловушка. Вот позже, когда очевидные ошибки устранены и проект уже перешёл из «зелёной зоны» в «жёлтую», всё становится сложнее.
![](https://habrastorage.org/files/9ba/59c/7f8/9ba59c7f857142479ca38c1ee18ecd58.jpg)
А после кейноута пришло время расходиться по залам, и тут ощущалась ещё одна сложность. Поскольку на этом Joker треков было целых шесть, выбор стал гораздо богаче, а в результате сделать его стало сложнее: куда ни пойди, упускаешь что-то интересное. И в этом тексте тоже упомянута лишь небольшая часть докладов, иначе его попросту сложно было бы дочитать. Но всем бы такие сложности, как «слишком много интересного»! В конце концов, всё пропущенное участники смогут посмотреть в записи.
![](https://habrastorage.org/files/ca2/209/f9b/ca2209f9bb154fb5b72ee3694447326e.jpg)
Так что много любопытного происходило параллельно: пока в одном из залов тему производительности развивал Андрей apangin Паньгин (Одноклассники), в другом выступление Баруха jbaruch Садогурского (JFrog) и Виктора gAmUssA Гамова (Hazelcast) тоже перекликалось с кейноутом, но совсем иначе. Их предыдущие выступления с Groovy-паззлерами были так тепло приняты, что теперь они выступали уже с третьей порцией паззлеров, и в одном из них предлагали определить, какого докладчика выбрал бы для кейноута такой groovy-код:
![](https://habrastorage.org/files/6e7/e7e/ba4/6e7e7eba4e824b51bbdad82e5e9f5ce5.jpg)
Интересные факты о Kotlin можно было узнать ещё до начала доклада Андрея abreslav Бреслава (JetBrains), руководящего разработкой этого языка: в ожидании времени начала Андрей охотно отвечал на вопросы из зала. Поэтому зрители узнали любопытные детали не только о корутинах, которым был посвящён доклад (язык обзаведётся ими в 2017-м с релизом версии 1.1), но и о другом. Например, что работа над JavaScript в Kotlin продвигается полным ходом, а вот цель добавить в язык pattern matching не ставится: «На заре проекта пытались сделать, но тогда от этого отказались, а сейчас мы без этого не страдаем, да и люди в целом тоже. Потребность в полноценном pattern matching есть в основном у тех, кто пользовался Haskell или Scala и теперь считает, что это must have».
![](https://habrastorage.org/files/f30/c63/c77/f30c63c7737147a0baf3f7e1b35b02ae.jpg)
Когда пришло время обеда, не обошлось без очередей, но при этом в зале для обеда и кофе-брейков была оборудована сцена подкаста «Разбор полётов» — так что, ожидая своей очереди, можно было слушать бодрые диалоги резидентов и гостей «Разбора». Видеозаписи этих диалогов уже доступны зрителям Joker, а спецвыпуск самого подкаста, записанный на конференции, доступен всем.
![](https://habrastorage.org/files/e4a/2bc/74a/e4a2bc74a6424d448e3a99be0e6af3a3.jpg)
У Тагира lany Валеева (JetBrains) собрался полный зал на «причудах Stream API», показывавших, сколько в этом API контринтуитивных ситуаций. Это вызывало реакцию «я-то считал использование стримов безопасным, как наивен я был», получался забавный результат: доклад одного из главных в мире энтузиастов стримов отпугивал людей от них. Более того: в YouTrack можно найти тикет, по которому получается, что с помощью Тагира IntelliJ IDEA станет помогать людям убирать стримы из кода. Что дальше, Мартин Одерски начнёт помогать людям мигрировать со Scala?
![](https://habrastorage.org/files/836/96a/729/83696a729a49441f863f9e11e477321b.jpg)
Рассказ об invokedynamic был от Чарльза Наттера (Red Hat). Понятно, что эта тема близка человеку, много лет работающему над JRuby («до появления invokedynamic JVM была построена вокруг Java, а другим языкам приходилось прибегать к грязным трюкам»). Но любопытно было узнать из его слайда, что он ещё в 2011-м твитнул «это изменит лицо платформы», сделав довольно точный прогноз: спустя пять лет invokedynamic называют «секретным оружием» Java, проторившим дорогу лямбдам.
![](https://habrastorage.org/files/07f/d03/fcb/07fd03fcb0ae468bb837d56ede89ac42.jpg)
А закрывающий кейноут первого дня органично переходил в вечеринку. Сначала Сэм Аарон объяснял, почему создал инструмент для музыкального лайвкодинга Sonic Pi: «Использовать языки программирования только для задач энтерпрайза — это всё равно что использовать русский или английский только для юридических документов». Затем демонстрировал основные принципы работы с ним и призвал желающих помочь с переводом туториала на русский (проект ориентирован и на детей, так что английского тут недостаточно).
![](https://habrastorage.org/files/1f9/fa2/5d9/1f9fa25d9cb94cdea59e193893c85320.jpg)
Затем, переместившись в другой зал, он принялся за собственно лайвкодинг, отыграв двухчасовой сет. Код крупно выводился на экран, и временами Аарон обращался к зрителям с помощью комментариев в нём. Наттер, стоявший во время сета в первом ряду, снял фрагмент выступления телефоном в 4K-разрешении:
Второй день
![](https://habrastorage.org/files/79e/048/2de/79e0482ded7e4819a2f4e62b02b33a13.jpg)
Большую сцену следующим утром занял тот же Чарльз Наттер, открывая день кейноутом «From Java to Assembly: Down the Rabbit Hole». На втором дне были студенческие треки, так что среди зрителей было много начинающих — и доклад соответствовал этому, начинаясь с объяснения ключевых терминов вроде «байткода». Но по мере углубления в кроличью нору у «взрослых» тоже появлялось о чём послушать: многие ли пользуются PrintAssembly?
![](https://habrastorage.org/files/a29/684/bcc/a29684bcc89d43c9ba715f672f464aa1.jpg)
Ожидалось, что далее пути студентов и «взрослых» полностью разойдутся по разным трекам. Однако жизнь внесла свои коррективы: оказалось, что опытные разработчики жаждут слушать Владимира vlkrasil Красильщика даже в том случае, когда его доклад ориентирован на начинающих. В итоге на его выступлении «Анти-введение в Big Data» был аншлаг: там собрались и новички, и профессионалы.
![](https://habrastorage.org/files/f12/232/c15/f12232c155624fa59aad3f3b7d3f03c4.jpg)
Резко контрастировало с этим выступление Алексея Шипилёва о Java Memory Model: поскольку разжёвывать основы было некогда, доклад сразу требовал от зрителей определённого уровня понимания JMM, и там начинающим делать было нечего. Тем временем предыдущее выступление Шипилёва продолжало откликаться в сердцах. Например, Алексей zaleslaw Зиновьев в своём докладе о Spark 2.0 объяснял: «После кейноута все только и говорят о том, у кого оптимизация в какой зоне находится. Так вот, в бигдате вам повезёт, если вы окажетесь хоть в какой-то зоне!»
![](https://habrastorage.org/files/285/971/987/28597198761048e2ad55a8d9a256fe5f.jpg)
А между докладами зрители пользовались продолжительными кофе-брейками для двух вещей. Во-первых, можно было как следует изучить всё находящееся на большой территории: и подойти к стендам спонсоров, и сфотографироваться с со «спикерами-супергероями». А во-вторых, как следует поспрашивать самих спикеров в дискуссионных зонах, не опаздывая на следующий доклад.
![](https://habrastorage.org/files/ecb/449/432/ecb44943219f4ac984e827fb9f7391cf.jpg)
Позже среди самих этих «следующих докладов» было выступление Сандера Мака о модулях Java 9, а мало кто в мире знает о них столько: сейчас Мак пишет о них книгу, а по работе давно столкнулся с фреймворком OSGi, предвосхитившим Jigsaw. Опираясь на свой опыт, он объяснял: «Зачем вообще понадобился Jigsaw при существовании OSGi? Потому что без Jigsaw не модуляризовать непосредственно JDK. А почему тогда не использовать его только для JDK, оставив OSGi для всего остального? Хороший вопрос, вообще-то можно было бы сделать и так, но сказывается то, что OSGi не пользуется большой популярностью».
![](https://habrastorage.org/files/291/445/472/29144547263d49d4836a3d77f8db7969.jpg)
Олега m0nstermind Анастасьева из «Одноклассников» можно было увидеть в этом докладе на первом ряду, а он только недавно заявил нам «переход к модулям в нашем случае не даст преимуществ, оправдывающих его». Тут было не удержаться от вопроса «Ну как, Мак не переубедил в этом?» Ответ Олега оказался примерно таким:
![](https://habrastorage.org/files/6b1/ad1/69a/6b1ad169a9584a7382c566ec71bd7b14.jpg)
Любителям Gradle на этом Joker и так было что послушать (речь о нём заходила многократно), но доклад о нововведениях ветки 3.x был особенным: рассказывал непосредственно участник команды Gradle Рене Грошке. Для начала он уточнил, почему версия 3.0 получила такой номер, если не лопается от новых возможностей: «У нас major release делается не в связи с новыми фичами, а в связи с прекращением поддержки deprecated-фич. Поэтому версия 2.0 в своё время многих разозлила!»
![](https://habrastorage.org/files/fec/40c/c5c/fec40cc5cbe94786b9b2973c24ee8813.jpg)
Если слайды о composite builds из недавней версии 3.1 вопросов ни у кого не вызывали, то изображение ниже Грошке показал со словами «Это первая конференция, на которой я ожидаю, что люди узнают изображённое». А вы узнаёте или нет? Почему посетители петербургской Joker знают это лучше других?
Узнать правду
На снимке видно часть острова Котлин, находящегося в Петербурге и подарившего название языку Kotlin. В этом году в Gradle стали использовать Kotlin для билд-скриптов.
![](https://habrastorage.org/files/329/5e4/8fe/3295e48fee5844d4a7fcfb27aef685b5.jpg)
Тем временем конференция подошла к концу, и завершал её кейноут Гиля Тене (Azul Systems) о «прагматичном перфомансе». Тене призывал оторваться от миллисекунд и задуматься, что нам вообще нужно: «Глупо сравнивать скорость в отрыве от практических задач. Возьмём спортивный автомобиль и мопед — что из них быстрее? А теперь сравним их в условиях пробки: на чём реально быстрее доберёшься до работы? С перфомансом то же самое. То, сколько запросов в секунду может обрабатывать система — это теоретический подход. Прагматичный такой: “Должны ли все её ответы до единого быть правильными?”»
![](https://habrastorage.org/files/591/874/ec0/591874ec09844ee2936e895a3c0734d8.jpg)
Остаётся подвести итоги — вот какие доклады конференции стали лучшими по оценкам зрителей:
- Близкие Контакты JMM-степени — Алексей Шипилёв (Red Hat)
- Причуды Stream API — Тагир Валеев (JetBrains)
- Анти-введение в Big Data — Владимир Красильщик (Яндекс)
- Advanced search for your legacy application — David Pilato (elastic)
- Асинхронно, но понятно: сопрограммы в Kotlin — Андрей Бреслав (JetBrains)
В общем, масштабирование произошло успешно: без сложностей не обошлось, но их в таком случае стоит ожидать, и в итоге они были преодолены. Теперь будем ждать Java-разработчиков весной в Москве и Новосибирске: уже открыт приём докладов и на JPoint, и на JBreak. А напоследок — интересный штрих: спикер Рафаэль Уинтерхалтер (Scienta) в твиттере поделился тем, что дала конференция ему. Такое за деньги не купишь, да.
![](https://habrastorage.org/files/d19/fde/54b/d19fde54b7c54182becb94dddeda21fb.jpg)
Поделиться с друзьями