В апреле в Москве прошла JPoint 2016 – крупнейшая Java-конференция в России. Напомню, что на конференции было 50 докладов, которые шли в 4 треках в течение двух дней. В сентябре мы открыли доступ к видео для наших читателей, однако руки всё никак не доходили до публикации топ-10 докладов на Хабре.
Чтобы определить, какие спикеры понравились участникам конференции, мы собираем фидбеки, на основании которых получаем весьма достоверную взвешенную оценку для каждого из докладов.
Конечно, какие-то доклады оказываются лучше, какие хуже. Но в этом посте речь пойдет о 10 жемчужинах, лучших докладах, оценка каждого из которых оказалась выше 4.6 по пятибалльной шкале. Ссылка на остальные доклады по катом, так что вам будет чем заняться до Нового Года:)
Евгений EvgenyBorisov Борисов — Мифы о Spark или может ли пользоваться Spark обычный Java-разработчик
Доклад о том, каково это – работать на Scala-фреймворке под Java, – и почему стоит это делать, в свое время вызвавший бугурт в комментариях. В докладе рассмотрены структура и принципы работы Spark, преимущества Java 8, которые делают работу со Spark удобной и лакончиной.
Захватывающий доклад, начинающийся с философии и наполненный демками является редким исключением, заслуженно занявшим первую строчку. Если вы пишете на Java и работаете с BigData – must see:
Тагир lany Валеев — Странности Stream API
Доклад для тех, кто уже работает со Stream API и кого не пугает слово spliterator. Основное внимание уделено странному поведению стримов в области производительности, жора памяти и параллелизма. Тагир постарался не заострять внимания на микроэффектах, а поговорить о проблемах, решение которых позволяет ускорить ваш код в 2-10 раз.
В докладе подробно разбирается, какие баги есть в Java 8 Stream API и что будет исправлено в Java 9. Также даются решения некоторых нетривиальных задач, в том числе при помощи библиотеки StreamEx (автором которой
Алексей Шипилёв — The Lord of the Strings: Two Scours
Доклад, вошедший в ТОП-3 всех наших Java-конференций (Joker/JPoint/JBreak). Доклад помогает понять, насколько сильно отличается разработка JDK от обычных проектов. В рамках выступления Алексей показывает две фичи во все еще грядущем JDK 9, направленные на оптимизацию строк: Compact Strings, сжимающие строки с однобайтовыми символами, что улучшает футпринт и даже общую производительность; и Indify String Concat, использующий магию invokedynamic для конкатенации строк, позволяющий подкручивать реализацию конкатенации без рекомпиляции программ.
Максим Дорофеев — Воспитай свою обезьяну
Единственный нетехнический доклад, получивший высокую оценку аудитории. Впрочем, это же JPoint, у нас даже нетехнические доклады оказываются низкоуровневыми. Вы узнаете, что за «обезьяна» живет в мозгу каждого из нас и каким образом она заставляет нас смотреть еще одну серию « Stranger Things» вместо того, чтобы работать или читать полезную книгу.
Этот доклад о том, как приспособиться к себе и окружающим нас людям, чтобы успевать выполнять возложенные на вас задачи и при этом уходить с работы вовремя. Возможно, залог его успеха в том, что многие разработчики –
Сергей Walrus Куксенко — Quantum Performance Effects II: Beyond the Core
JPoint и Joker – конференции, которые пробуждают в обычных, казалось бы, разработчиках тягу к «железным» оптимизациям. Именно доклады Сергея позволяют утолить жажду крови и хардкора: ниже видеозапись второй части доклада, в котором речь идет о том, как «маленькие-маленькие хреновинки внутри архитектуры современных процессоров влияют на производительность ваших приложений». Первая часть, посвященная тому что происходит в ядре процессора.
Новый доклад посвящен эффектам, которые можно достичь за счет оптимизаций на кристалле, лежащих за пределами ядра. Если вы любите перфоманс пожестче, вам сюда:
Алексей Шипилёв — Если не Unsafe, то кто: восход VarHandles
Как известно, Java-разработчики любят sun.misc.unsafe, а разработчики JDK не любят, когда люди пишут unsafe код. Почему? Потому что «Java is exceptionally safe. Except Unsafe which is unsafe. But it is an exception».
Этот любовный треугольник привел к тому, что в Java 9 доступа к ансейф не будет, а на смену ему придет VarHandles – новый API, сравнимый по скорости с Unsafe, но более безопасный. В докладе Алексей живо с примерами и бенчмарками рассказывает о причинах появления нового API, о его возможностях, ограничениях и скорости работы (которая иногда даже выше, чем unsafe):
Барух jbaruch Садогурский, Евгений Борисов, Тагир Валеев — Java 8 Puzzlers
Ну, вы знаете. Puzzlers + Java 8 = win. Кортеж из трех Java-звезд не мог не войти в ТОП, особенно с паззлерами. Часовая подборка из смешных и весьма непростых загадок по Java 8: идеально подходит для проверки остроты ума, а также для того, чтобы понять, при чем здесь яйца.
Смотреть можно дома, с кружкой чая/кофе/пива заходит лучше сериалов:
Руслан cheremin Черемин — Escape Analysis и скаляризация
Окей, back to hardcore с Русланом Череминым о тонкостях работы Escape Analysis, позволяющем понять, можно ли без последствий произвести Scalar Replacement (аллоцировать объект прямо на стеке и не тратить время на работу со ссылками и сборку мусора). Доклад начинается с азов, но возможно перед просмотром вы захотите ознакомиться с блогом Руслана, в котором на эту тему есть много интересного.
В докладе на примерах рассматриваются сильные и слабые стороны алгоритмов escape analysis применяемые в Java JIT:
Роман Гребенников — Страх и ненависть в распределённых системах
Бывало у вас такое, что ваш кластер внезапно теряет и портит данные, страдает раздвоением мозга и живет своей насыщенной жизнью против вашей воли? Этот доклад проясняет:
- Какие проблемы встречаются при создании распределенных систем;
- Как можно налажать и допустить типичные ошибки при проектировании;
- Матчасть о целостности, CAP-теореме, линеаризации, консенсусе и CRDT;
- Как все эти знания применять на практике и какие бывают инструменты для облегчения нелегкой жизни разработчика распределенных систем.
Доклад о том, как сделать распределенную систему, не прострелив себе ногу: типичные ошибки и способы их решения, а также немного лайв-кодинга на Scala с Docker'ом с потерей данных в прямом эфире:
Олег m0nstermind Анастасьев — Распределенные системы в Одноклассниках
Доклад о том, как работает одна из наиболее высконагруженных систем в России, обрабатывающая до 500 000 (полумиллиона, да) запросов в секунду на 8000 серверов в трех датацентрах. Олег прочитал этот доклад на трех наших Java-конференциях (Joker, JPoint, JBreak) и вошел в список лучших на каждой – это, как говорится, неспроста.
Здесь вы найдете пример построения отказоустойчивой распределенной системы на Java, основный ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет и об авариях в распределенных системах и методах их предупреждения.
Остальные видео смотрите на нашем YouTube-канале.
А в тот момент, когда вы поймете, что интересные видео уже кончились — обратите внимание, что регистрация на JPoint 2017 уже открыта.
Поделиться с друзьями
Комментарии (3)
KeLsTaR
23.12.2016 14:10Правильный вопрос задавали во время доклада, ответа на который я так и не услышал. В докладе про Compact Strings там сначала ставится проблема, что мол когда грузится String нет еще ни Unsafe, ничего, а потом решение такой раз и используем new Boolean(true). А сам булеан то откуда взялся? При чем этот вопрос судя по видео не у одного меня возник…
Maccimo
24.12.2016 13:24Судя по исходникам, обошлись инициализацией финального поля в блоке
static {}
:
/** ... * @implNote * The actual value for this field is injected by JVM. The static * initialization block is used to set the value here to communicate * that this static final field is not statically foldable, and to * avoid any possible circular dependency during vm initialization. */ static final boolean COMPACT_STRINGS; static { COMPACT_STRINGS = true; }
moxnoryl
Спасибо!