Недавно мы открыли для всех видеозаписи докладов Joker 2017. А когда в публичный доступ попадают сразу сорок Java-докладов, в чём тут может быть проблема? В том, что глаза разбегаются! Когда столько всего, непонятно, на что обратить внимание в первую очередь.
Можно ориентироваться на зрительские оценки: начать с докладов, которые сильнее всего понравились людям, сидевшим в зале. Поэтому мы составили для вас десятку главных видеозаписей, снабдив их небольшими описаниями.
Обычно мы в таких топах строго обозначаем места. Но в этот раз топовые доклады шли «ноздря в ноздрю», и разница между ними порой символическая. Поэтому, хотя видеозаписи ниже расположены по возрастанию оценок к наивысшей, это деление довольно условное: важнее не то, в каком порядке они идут, а то, что все они очень понравились зрителям.
Profilers are lying hobbitses
Спикер: Nitsan Wakart
Ссылка на презентацию доклада
Что вы сказали бы, если бы приложение «Учёт расхода мобильного трафика» порой указывало вам «Вот он ест трафик!» не на тот сервис, который действительно потратил всю вашу квоту, а на ни в чём не виновный другой? Вероятно, вы возмутились бы: приложение не справляется со своей главной задачей и только вводит вас в заблуждение.
С Java-профайлерами вообще-то похожая ситуация. При определённых условиях многие из них могут так привирать, что если не знать об этом, их использование способно усложнить вашу жизнь вместо облегчения. Но это не значит, что надо выкинуть их все и замерять производительность «на глазок». Куда конструктивнее будет разобраться, что именно не так и как нам с этим жить. Об этом и рассказывает Нитсан Вакарт, известный многим по блогу «Psychosomatic, Lobotomy, Saw».
Текстовый редактор — это вам не высшая математика, тут думать надо
Спикер: Алексей Кудрявцев
Ссылка на презентацию доклада
Название у доклада, конечно, провокационное, но оно появилось не на пустом месте. То же самое с самим докладом: в нём хватает как иронии, так и «мяса». Алексей работает в JetBrains над IDE (что тоже в определённом смысле текстовый редактор) — и ему хорошо известно, каково иметь дело с текстами такой длины, какая нам всем в наших String и не снилась. И какая возникает специфика, когда по этому тексту постоянно проходятся инспекции.
Тут, конечно, возникает вопрос о практической применимости. Многим ли из нас придётся когда-либо работать над текстовым редактором? Если нет, то что нам даст этот доклад? Но он может дать как минимум вот что: на ту же IDE, которую видишь каждый день, после этого смотришь немного другими глазами.
Event sourcing, event-driven architecture and CQRS
Спикер: Sebastian Daschner
Казалось бы, в интернете нет нехватки в текстах, объясняющих понятия event sourcing и Command Query Responsibility Segregation («восстановление текущего состояния на основе исходного и произошедших событий», «разделение чтения и записи», вот это всё). Но одно и то же можно объяснять по-разному, и зрительский фидбэк показал: людям нравится, как объясняет Себастьян Дашнер.
Вот приведённый в докладе пример: «Представьте, что вы заказали в кафе бургер, сидите в предвкушении, и тут официант возвращается со словами «извините, на кухне сказали, что нужного ингредиента сейчас нет». Конечно, это неприятно. Но чтобы гарантированно избежать подобного, официанту пришлось бы сразу после слов «можно заказать бургер?» бежать на кухню и не возвращаться, пока он не будет готов: «да, можно, и вот он». Очевидно, что такой подход вообще не сработает. Поэтому сложную систему из многих элементов разумнее делать не абсолютно consistent, а eventually consistent».
А отдельную ачивку «дух старой школы» Себастьяну хочется вручить за то, что его презентация вместо Powerpoint сделана, похоже, в Vim (и схемы там старательно вырисованы ASCII-артом).
One-cloud DC/OS на Java и для Java
Спикер: Олег Анастасьев
Ссылка на презентацию доклада
Слово «облако» за последние годы уже истрепалось до невозможности. Но если во многих случаях его можно мысленно заменить на «Амазон», то тут ситуация совсем другая.
Изначально в Одноклассниках каждый сервер отвечал только за одну задачу, что многое упрощало (например, сразу очевидно, какая задача сколько «ест»). Но по мере развития стало ясно, что самый ценный инфраструктурный ресурс — это не сервер, а место в стойке, и надо повышать утилизацию дата-центра, деля ресурсы каждого сервера между разными задачами. Как с помощью Docker правильно делить ресурсы между задачами класса «важен быстрый отклик» и класса «важна пропускная способность»? Что получается, когда Kubernetes не подходит, зато есть силы сделать собственное решение?
По описанию доклад может показаться совсем уж «девопсным» и инфраструктурным, а не разработческим. Но на самом деле «совсем уж девопсным» он стал не на Joker, а на другой нашей конференции DevOops: для двух разных мероприятий Олег подготовил различающиеся версии доклада.
Java Puzzlers NG S03 — Откуда вы все лезете-то?!
Спикеры: Тагир Валеев и Барух Садогурский
Ссылка на презентацию доклада
Паззлеры, конечно, хочется демонстрировать на конкретном примере. Поэтому перескажем вторую из задачек, озвученных Тагиром и Барухом. Предположим, что мы вложили один тернарный оператор в другой (не спрашивайте, зачем):
System.out.println(isUltimateQuestion ? 42 : isUltimateQuestion ? 42 : null);
Также предположим, что у isUltimateQuestion значение false. Вопрос: что выдаст код и почему?
Варианты:
- null
- Не скомпилируется
- 42
- NullPointerException
Правильный ответ — под спойлером.
Впрочем, в докладах-паззлерах сами задачки — это полдела, не менее важна подача. И тут она, как и можно ожидать от этих спикеров, тоже яркая: в зал летят футболки, на сцене шутит Барух, на экране волк гонится за зайцем. На конференции из соседнего зала пожаловались, что слышно было даже там!
Проект Amber: вести с полей
Спикер: Тагир Валеев
Ссылка на презентацию доклада
А тут Тагир уже без Баруха. Он решил как следует разобраться, «что день грядущий нам готовит», и изучил информацию по Project Amber — подборке небольших изменений.
Сегодня главная проблема с этим докладом, конечно, в том, что за прошедшее время многое изменилось. Скажем, начинается доклад с локального вывода переменных — а теперь мы уже его получили его в Java 10, и уже есть много материалов формата «как это есть», а не «как это будет». Но доклад всё равно остаётся интересным: и потому что он помещает всё в контекст («вообще-то вывод типов как таковой появился ещё в восьмой версии»), и потому что интересно посмотреть, как всё выглядело по состоянию на конец 2017-го.
Shenandoah: сборщик мусора, который смог (часть 2)
Спикер: Алексей Шипилёв.
Этот доклад требователен к зрителю по двум причинам:
Во-первых, он требует предварительного знакомства с предыдущим докладом Алексея, сделанным на JPoint 2017 (собственно, отсюда и «часть 2» в названии). Теперь, когда оба эти доклада доступны всем, можно сразу рассматривать их как цельную «дилогию о GC».
А во-вторых, это доклад Алексея Шипилёва. Не самый зубодробительный из всего, что он когда-либо рассказывал, так что совсем уж бояться подходить не стоит — но, тем не менее, определённые знания от зрителя требуются. И тут видеоформат может стать преимуществом по сравнению с личным присутствием на докладе. Потому что можно поставить видеозапись на паузу и погуглить непонятное!
Java 8: Хороший, плохой, злой
Спикер: Николай Алименков
Ссылка на презентацию доклада
Новые версии Java теперь сменяют друг друга быстрее, чем новые айфоны, и не подходе уже одиннадцатая. Но если мы спросим «хорошо, а в продакшне-то у вас какая», вероятнее всего, что вы ответите «восьмая». А это значит, что доклад об особенностях её использования сейчас по-прежнему остаётся актуальным.
Несомненно, «восьмёрка» дала нам много прекрасных новых возможностей — но нет такой прекрасной возможности, которую нельзя было бы испортить неправильным использованием. И доклад как раз об этом: как их использует неправильно, а как стоило бы по уму. В пару к докладу идёт GitHub-репозиторий — если вам так удобнее, можете смотреть на конкретных примерах прямо там.
GraphQL — API по-новому
Спикер: Владимир Цукур
Ссылка на презентацию доклада
Опрос зала в самом начале доклада показывает: среди зрителей слышали про GraphQL очень многие, а вот использовали его «в бою» очень немногие. Конечно, для всего Java-сообщества это может быть нерепрезентативной выборкой (неудивительно, что такие люди стягиваются на такой доклад), но всё же есть ощущение, что эта технология сейчас в статусе «пришло время познакомиться». Доклад именно это и предлагает — бодрое и беглое знакомство.
Сейчас вопросы, связанные с API, могут становиться зоной напряжённости между фронтендом и бэком. Для фронтенда это может выглядеть как «у меня поменялись требования и нужно кое-что изменить в endpoints, а они там не чешутся», для бэкенда — «приходят тут всякие и срочно хотят чего-то, когда у нас другие задачи горят». Если бы фронтендеры могли просто сами запрашивать нужные им данные и получать ровно их, не больше и не меньше, разве не настал бы при этом рай на Земле?
На самом деле, не настал бы: у GraphQL есть и свои недостатки. Но зрители хвалили этот доклад отчасти за то, что он не обходил их стороной и не превращался в красивую рекламную картинку. И при этом в фидбэке многие указали, что теперь хотят опробовать технологию в рабочем проекте. Это ли не успех?
Boot yourself, Spring is coming
Спикеры: Евгений Борисов и Кирилл Толкачёв
Часть 1:
Часть 2:
Наконец, венчает рейтинг не просто доклад, а докладище. Он занял два временных слота и, кажется, с лёгкостью мог бы продолжаться ещё столько же. Он собрал в зале и платной онлайн-трансляции суммарно более тысячи человек. Наконец, он потребовал сразу двух человек на сцене, и это тоже вызов: парный доклад — это формат, который получается не у всех.
Пожалуй, учитывая популярность Spring Boot в Java-экосистеме, был нужен доклад именно такого размаха. И отзывы показали, что всё не зря: получился не только замах на рубль, но и соответствующий удар.
А если вы фанат сериалов и сразу увидели в названии отсылку к «Brace Yourselves, Winter is Coming», то вы правы: Кирилл и Евгений все два часа обыгрывают «Игру престолов».
Если доклады из списка вас заинтересовали, обращаем ваше внимание: мы уже анонсировали следующий Joker, и там вам может быть не менее интересно. При этом билеты со временем дорожают, и ближайшее повышение цен произойдёт уже 1 июля. Так что не стоит откладывать с покупкой билета на новый Joker до того, как пересмотрите все доклады с предыдущего!
Автор: Евгений Трифонов