Два сапога Java: как прошли JBreak и JPoint
Новосибирская конференция JBreak и московская JPoint — два сапога пара: обе проходят весной, обе проводятся JUG.ru, обе — главные Java-конференции своего региона. А в этом году мы и вовсе устроили их на одной неделе (и даже выжили после такого). Поэтому рассказы «как всё прошло» для JBreak и JPoint решили объединить в один, скажем так, «breakpoint». Под катом — подробности и о Новосибирске, и о Москве.
С обеими конференциями в этом году произошло одно и то же событие: смена площадки. В Новосибирске ещё год назад стало ясно, что придётся искать место вместительнее, и им стал масштабный «Экспоцентр». А JPoint, продолжающий расти, в этот раз прошёл в конгресс-центре ЦМТ.
В программах обеих конференций появились обозначения, помогающие понять, для какой аудитории предназначен доклад: «Введение в технологию», «Для практикующих инженеров», «Хардкор» и «Готовьтесь, будет подгорать». Разумеется, эти обозначения немедленно породили прорву обсуждений и споров. Правильно ли выбрано обозначение у каждого доклада? Правильна ли классификация в целом? А какая была бы правильнее?
Но хотя тут вряд ли возможно прийти к устраивающему всех варианту, и реплики «доклад обозначили неправильно» неизбежны, в целом система помогает уменьшить число ситуаций «пришёл на доклад и ничего не понял» и «жаждал хардкора, а рассказывали для новичков».
Также в обоих случаях мы решили улучшить онлайн-сопровождение: оперативно постить в Twitter и ВКонтакте качественные снимки, создать по Telegram-чату для JPoint и для JBreak. А Москве досталась ещё и «проапгрейженная» онлайн-трансляция: в перерывах между докладами, когда обычно зрителям трансляции нечего делать, в этот раз демонстрировались интервью со спикерами и репортажная съёмка. По итогам всех этих онлайн-активностей один из зрителей трансляции написал в том же Telegram-чате «Как будто на конференции находишься» — значит, получилось.
На JPoint из-за обилия стендов компаний (Сбербанк-Технологии, GridGain, Одноклассники, Альфа-Лаборатория, Deutsche Bank и не только) всю конференцию происходил какой-то экшен, связанный с ними: вот Deutsche Bank проводит собственные мини-выступления, а вот спикеры Барух Садогурский и Евгений Борисов «дерутся» у стенда Zalando, где можно снять гифку.
Горячие дискуссии на #jpoint pic.twitter.com/4RNIxGfQ3Q
— Baruch Sadogursky (@jbaruch) April 8, 2017
А что с главным, ради чего все собрались — докладами? Программы двух конференций частично пересекались, но у обоих городов были и «эксклюзивы» (особенно у JPoint, где докладов попросту гораздо больше из-за двухдневности). Обо всех выступлениях не рассказать, пройдёмся по отдельным запомнившимся моментам:
Даже как-то скучно писать, но новый доклад Алексея Шипилёва (Red Hat) про сборщик мусора Shenandoah прошёл на ура в обоих городах. Никакой интриги! Но почаще бы в нашей жизни слова «никакой интриги» означали «все опять в восторге». После того, как Шипилёв сослался на «The Garbage Collection Handbook» как на главную книгу о GC, часть слушателей решила за неё взяться — в том числе спикер Тагир lany Валеев и наш собственный директор Алексей 23derevo Фёдоров.
Помимо технических деталей GC-алгоритмов, доклад запомнился многим фразой «чтобы найти мусор, надо думать как мусор». А Алексей на время своего слота настолько выжег собой инфополе, что даже в другом зале вспоминали о нём же (пусть и с комментарием «мы люди простые, среднеквадратичные отклонения не высчитываем»).
Саше Гольдштейну (Sela Group), автору книги «Pro .NET Performance», не привыкать к аплодисментам на .NET-конференциях. Но теперь он неожиданно для многих выступил на JPoint — и от джавистов тоже получил очень высокие оценки. Как вообще возможно с первой попытки покорить «чужую территорию»? Вероятно, помогло то, что объектом его внимания был Linux-инструмент BPF, помогающий в мониторинге Java-приложений: как рассказал нам Саша в интервью, изначально Linux-инструменты интересовали его сами по себе, а Java просто стала удобной точкой применения, потому что с .NET в Linux пока что негусто.
Любопытно, что сразу после своего доклада Гольдштейн оказался ещё глубже втянут в Java. Заинтересовавшись выступлением Андрея apangin Паньгина и Вадима Цесько (Одноклассники) о тонкостях работы Java-профайлеров, он тут же принялся контрибьютить в профайлер Паньгина на GitHub, не дожидаясь даже окончания конференции:
Yesterday @AndreiPangin and @incubos introduced their new JVM profiler; today I propose a PR w/ docs and a loader: https://t.co/gviFha4Hd9 pic.twitter.com/p4fbloIm1s
— Sasha Goldshtein (@goldshtn) April 8, 2017
В отзывах на доклад Чарльза Наттера (Red Hat) про String новосибирцы жаловались, что вступительная теоретическая часть о кодировках слишком длинная. Действительно, Наттеру, живущему в стране с латинским алфавитом, может быть неочевидно, что российские программисты из-за кириллицы и так знают о кодировках не понаслышке. Зато это длинное вступление пришлось как нельзя более кстати в Москве, где на докладе Наттера возникли проблемы с проектором. Теоретическую часть Наттер как раз смог рассказать и без слайдов, а затем техника заработала ровно к тому моменту, когда он переходил к библиотекам joni и jcodings, и нужно было показывать на экране примеры кода. В итоге вовремя заработавший проектор сорвал столько аплодисментов, словно он и был докладчиком.
Тагир Валеев (JetBrains), рассказывавший в обоих городах о работе над инспекциями в IDEA, начал с чистосердечного признания «Польза моего доклада сомнительна» —, но это не помешало многим с большим интересом слушать, что стоит за возможностью улучшить свой код одним нажатием в IDE. Если не задумываться, это может показаться простой механической работой по замене одних конструкций на другие, однако доклад показывал, насколько это не так.
Вариаций одной и той же конструкции, которые надо суметь распознать, может быть множество («даже Джон Скит не распарсил бы это reg exp«ом»). В нюансы документации необходимо вчитываться даже тогда, когда это кажется излишним («оказывается, вот в этом случае map.getOrDefault и map.putIfAbsent действуют по-разному, хотя оба появились в Java 8»). При этом документация может быть неполной («ну, на Stack Overflow я нашёл-таки ответ об этом, но речь об интерфейсе, завтра появится новая реализация, мы своей IDEA начнём ломать людям код, и что я в оправдание покажу, ссылку на Stack Overflow?»). А также есть множество неочевидных моментов вроде необходимости сохранить и разместить в «правильном месте» комментарии, когда код изменяется («Где пыль со стола? Там были записаны важные телефоны!»)
А кроме того, практическую пользу в этом случае можно было извлечь благодаря дискуссионным зонам, где спикеры после своих докладов подробно отвечали желающим на вопросы. Наверняка у множества разработчиков есть вопросы, связанные с IDEA — и здесь была удобная возможность задать многие из них. В результате дошло до того, что Тагир после конференции стал работать над исправлением бага, который ему прямо на JPoint и показали. На всякий случай уточним: это не означает, что конференция является официальным каналом приёма багов, для этого всё-таки есть YouTrack!
Никита Липский (Excelsior) присутствовал на обеих конференциях, но с совсем разными темами: в Москве он рассказывал про верификацию байткода, а в родном для него Новосибирске собрал полный зал зрителей докладом «Модули Java 9: Почему не OSGi?».
Казалось бы, доклад с таким названием должен быть очень коротким — достаточно повторить слова Марка Рейнхольда о том, что с помощью OSGi можно делить на модули проект, но только с помощью Jigsaw можно «распилить» саму JDK. Что можно к этому добавить? Оказалось, много чего. «Система активации бандлов в OSGi — это бомба замедленного действия: если JVM начнёт разрешать ссылки менее лениво, OSGi-приложения попросту перестанут работать», объяснял Никита землякам, и чем больше он рассказывал про OSGi, тем привлекательнее начинал выглядеть Jigsaw. А отдельную ачивку Липскому можно дать за общую живость выступления: доклад, где в начале цитируют Хармса, в середине исполняют со зрителями мантры, а в конце заявляют «Роды неизбежны», не может быть скучным.
Другим спикером с разными темами стал Егор yegor256 Бугаенко: в Новосибирске он говорил об Utility-классах, а в Москве об аннотациях. Зная Егора, несложно догадаться, что оба явления он нещадно критиковал, и, разумеется, у обоих его докладов стояли значки «Готовьтесь, будет подгорать». В презентацию на JPoint он даже успел включить отзывы, полученные от слушателей доклада на JBreak: «Автор — маньяк», «Егор в своём репертуаре: все гондурасы, а я Д«Артаньян».
Ещё в прошлом году, обсуждая с Егором «ООП будущего», Барух jbaruch Садогурский заметил, что провокационным выступлениям Бугаенко подходит формат «пять слайдов, а теперь давайте рубиться»: поскольку слушатели в любом случае начинают громко возражать Егору на пятой минуте доклада, стоит выступление и делать сразу дискуссионным. В этом случае так и было сделано — и активнее всех на JPoint рубился с Егором сам Барух, отстаивая пользу аннотаций. Алексей Шипилёв тем временем то выходил из зала, то заходил обратно, регулярно меняясь в лице. Мы не берёмся точно расшифровать его эмоции по поводу происходившего, но ощущаем, что они были сильными.
В Новосибирске Кирилл Толкачёв (Альфа-Лаборатория) говорил о граблях Spring Boot Test в одиночку, а в Москве к нему присоединился Евгений Борисов (Naya Technologies). Также Евгений выступил и с отдельным докладом о нюансах Spring — и самый крупный зал конференции оказался переполнен людьми. Самый яркий зрительский отзыв, пожалуй, такой: «После таких докладов у меня появляется ощущение, что логику Spring можно понять».
От Сбербанк-Технологий, ставших генеральным спонсором обеих конференций, на них было сразу несколько спикеров с совсем разными темами — от архитектурных решений в работе над платформой до создания DSL-языка для тарификации. Какой из докладов полезнее — судить зрителям, но наибольшее оживление в зале явно вызывало выступление о DevOps Олега olegchir Чирухина. Его формулировки вроде «Поскольку мы на Java-конференции, тут все разбираются в том, как выбесить админа» наглядно показывали, что работа в гигантской компании не означает автоматически скуку и «застёгнутость на все пуговицы».
Любопытно получилось с Kotlin: за считанные дни до JPoint внезапно вышло техническое превью Kotlin/Native, и в результате слова Андрея abreslav Бреслава о движении языка к мультиплатформенности подкреплялись свежим конкретным шагом в этом направлении. Оглядывая зал, Бреслав замечал, что вокруг наверняка находится множество «embedded на C» — и это означает потенциальный рынок для native-решений. А из зала спрашивали о возможной поддержке WebAssembly, и Андрей в ответ сравнивал текущее состояние wasm с бункером, откуда не достучаться ни до чего: мол, когда в проекте появится нормальный доступ к DOM, тогда можно будет говорить о его поддержке.
В общем, привычного по предыдущим конференциям «мяса» на JPoint и JBreak хватало. А было ли в программе любой из них что-то уникальное, что может никогда не пригодиться, зато навсегда запомнится? Пожалуй, для зрителей JPoint таким стал кейноут популяризатора математики Алексея Савватеева.
На конференциях JUG.ru кейноуты нередко отходят далеко от основной тематики, давая возможность «переключить мозг» (например, на прошлом JPoint выступала Евгения Тимонова, известная видеоблогом о животных). Но в этом случае получился интересный «промежуточный» вариант: хотя тематика лекций Савватеева и не относится к Java, многим джавистам она близка — вплоть до такого:
Вот так ты смотришь вечерами лекции Савватеева по теории групп, а потом видишь, что вы с ним на пару читаете пленарные доклады на #jpoint.
— Aleksey Shipilëv (@shipilev) March 3, 2017
В результате примеры того, как можно бороться с нарушениями с помощью хитрых правил, слушали с громадным интересом. Узнавая, например, что даже ситуация «взятка может быть крупнее штрафа за неё» не такая заведомо проигрышная для проверяющих, как кажется на первый взгляд. Оказывается, если сообщить, что проверки будут только при крупных взятках и мелкие «пройдут под радаром», второй вариант может оказаться для взяточников привлекательнее, уменьшив размеры взяток в разы.
На этом у нас всё —, но помимо нас, участники тоже оказались активны и понаписали много сами:
- JPoint 2017. День 1
- JPoint 2017. День 2
- jpoint по горячим следам. Часть 0 из N: начало.
- jpoint по горячим следам. Часть 1 из N: банкет и его продолжение.
- Performance это праздник (хабрапост vladimir_dolzhenko)
А напоследок — фотография «Барух Садогурский гладит пушистый микрофон»: