company_banner

Обзор (и видеозаписи) лучших докладов Java-конференции JPoint 2016: BigData, кишки JVM и паззлеры



    В апреле в Москве прошла 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 уже открыта.
    • +43
    • 16,9k
    • 3
    JUG.ru Group
    635,00
    Конференции для программистов и сочувствующих. 18+
    Поделиться публикацией

    Комментарии 3

      +7
      Спасибо!
        0
        Правильный вопрос задавали во время доклада, ответа на который я так и не услышал. В докладе про Compact Strings там сначала ставится проблема, что мол когда грузится String нет еще ни Unsafe, ничего, а потом решение такой раз и используем new Boolean(true). А сам булеан то откуда взялся? При чем этот вопрос судя по видео не у одного меня возник…
          0

          Судя по исходникам, обошлись инициализацией финального поля в блоке 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;
              }

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое