Charles Nutter — JVM-разработчик из Red Hat, работающий на OpenJDK, мейнтейнер проекта JRuby, Java Champion и Ruby Hero, первоклассный специалист и спикер многих Java-конференций. Впервые в Россию он приехал в прошлом году на Joker 2016, где выступил с двумя хардкорными докладами, после чего признался в том, что не ожидал такого теплого приема и решил во что бы то ни стало вернуться в Россию:
Все сложилось удачно, и Charles запланировал визиты в Новосибирск (JBreak, 4 апреля) и в Москву (JPoint, 7-8 апреля). Обзор программы JPoint 2017 мы уже делали, вот руки дошли и до JBreak 2017. Под катом – длиннопост про всех, кто будет выступать в Новосибе, и про все, что они будут рассказывать.
Всего в программе будет 21 доклад. Давайте посмотрим, какие тематики вошли в программу в этот раз?
- Кишочки JVM (и грядущей Java 9, кстати): модуляризация JVM, AOT и JIT-компиляция, векторизация, работа GC и Foreign Functions.
- Фреймворки: Spark, Kafka, Spring, Hazelcast Jet, Elasticsearch.
- Паттерны и подходы: предотвращение дедлоков, статический анализ кода и CRDT.
- Перфоманс, конечно же. Отдельный доклад о производительности пока только один (от Алексея Шипилёва, разумеется), но почти все доклады так или иначе позволят вам улучшить производительность ваших решений.
Давайте посмотрим детально на каждый из докладов, начнем с перфоманса, а дальше пойдем по списку:
Алексей Шипилёв — Перформанс: Что В Имени Тебе Моём?
Переработанный, дополненный и расширенный кейноут с Joker 2016 об оптимизациях в больших проектах: общих принципах и соотношениях; жизненном цикле проекта и экономике оптимизаций; жизненном цикле бенчмарков; типичных ловушках, в которых оказываются перформанс-инженеры.
Больше хардкора, больше деталей, больше тайминг, еще более кривая кривая имени «Ш»!
Анатомический атлас JVM
Как и всегда, у нас есть, что послушать про кишочки (на самом деле, это самый большой раздел): все о том, как JVM работает и будет работать в ближайшем будущем под капотом, и что нужно делать, чтобы под капотом происходило именно то, что нужно вам.
Charles Nutter — More Than You Want to Know about Java's String
Вот, собственно, и ответ на вопрос из заголовка: Чарльз едет в Сибирь, чтобы рассказать о тех самых, родных и привычных всем Java-разработчикам стрингах. Ведь они везде: в API, в полях объектов, почти в любом взаимодействии JVM с внешним миром. Впрочем, реализация String в Java не лишена недостатков: об этом и пойдет речь, которая будет проиллюстрирована нетипичными примерами использования строк. Кроме того, посмотрим, как наши проблемы решали в других языках и какие библиотеки могут помочь в их решении.
Владимир Иванов — Техники векторизации кода в JVM
В этом докладе разговор пойдёт о том, как сейчас выглядят векторные расширения процессора и на какие ухищрения приходится идти JVM, чтобы не давать им простаивать: CPU dispatching, VM intrinsic’и, автоматическая векторизация байт-кода в JIT-компиляторах. Будет упомянут и специализированный векторный API (Vector API), работы над которым активно ведутся в Project Panama.
Алексей Шипилёв — Shenandoah: сборщик мусора, который смог
Shenandoah — новый сборщик мусора от Red Hat, который пытается решить проблему перемещения объектов без остановки приложения, тем самым сбивая паузы ещё больше. Этот доклад — об особенностях дизайна и реализации Shenandoah, достоинствах, которыми можно гордиться, и недостатках, с которыми приходится мириться.
Volker Simonis — Analyzing HotSpot Crashes
В этом докладе будем разбираться с тем, что можно откопать в файлах с ошибками, которые создает HotSpot crash handler, а также с тем, как эти файлы могут помочь нам с анализом и воспроизведением падения системы. Кроме того, посмотрим на инструменты, такие как HotSpot Serviceability Agent, которые позволяют заглянуть в нативные файлы ядра и извлечь из них необходимые данные, которые было бы непросто достать с помощью стандартного дебаггера.
Никита @pjBooms Липский – Java 9 Модули. Почему не OSGi?
В Java 9 с неизбежностью появятся модули. Кого-то это мало волнует, кого-то пугает, кто-то искренне недоумевает: зачем, ведь у нас уже больше 15 лет есть OSGi, который решает ровно те же проблемы, что и модули?
В этом докладе Никита попробует разобраться, какие проблемы пытается решить OSGi, как он их решает и решает ли в действительности. Затем расскажет, какие проблемы, которые пытается решить OSGi, Jigsaw совсем не решает и почему, а какие проблемы решает и как. Ну и на конец доклада: какие проблемы Jigsaw при этом привносит в экосистему Java и что с этим надо будет делать.
Дмитрий Чуйко – «Преждевременная» компиляция — это нормально?
В Oracle JDK 9 появилась статическая (ahead-of-time) компиляция кода. Мы уже обсуждали, зачем это нужно, и рамки текущей реализации. Пришло время поговорить о технических деталях: Какая информация и как генерируется при работе AOT, как скомпилированный AOT код взаимодействует с Hotspot? Что можно поделать с AOT кодом внешними инструментами, и как встроиться в процесс компиляции? И, конечно, какие крутилки можно покрутить, и какая будет производительность при использовании AOT?
Иван Крылов – Жизненный цикл JIT кода
Все знают, что делает JIT. Знаете ли вы, как он это делает? Как компилятор принимает решения и к каким последствиям могут приводить его ошибки? Иван расскажет о механизмах сбора профилей и алгоритмов перехода между разными вариантами скомпилированного кода, а также интерфейсах для взаимодействия с JITом.
Java Developer Toolbox
Иметь инструменты – хорошо, однако уметь их правильно использовать – еще лучше. В этом блоке давайте описаны доклады, посвященные тулам, позволяющим комфортно работать с bigdata, поиском, распределенными системами и параллелизмом:
Алексей @zaleslaw Зиновьев — Kafka льёт, а Spark разгребает!
В типичном ТЗ по real-time аналитике часто имеются пункты о том, что необходимо подсчитывать «на лету» некоторые агрегированные величины за небольшой период времени, фильтровать поток, уменьшая нагрузку на последующие стадии вычислений. Достаточно часто мы можем видеть проекты, где команды организуют своё «озерцо данных» в Amazon, просто сваливая все приходящие ивенты в Kafka. Справится ли Spark с потоками из Kafka? А если справится, то какой ценой и что ему в этом поможет? Не ждите на докладе введения в Spark, RDD, разговоров за Big Data. Один кейс — одно решение — немного теории — правим конфиги — пишем код.
Виктор @gAmUssA Гамов — Блеск и нищета распределенных стримов
Вы из тех, кто гонится за производительностью, запихивая в любой цикл Collection.parallelStream()
? Задумываетесь, как обойтись без глобальной переделки кода и решить все проблемы с помощью большего количества серверов? Как получить распределённую обработку с линейным ростом производительности? Если подобные вопросы звучат у вас в голове, тогда этот доклад для вас.
В нем Виктор расскажет обо всех деталях распределённой обработки, познакомит слушателей со своим другом – Ориентированным Ациклическим Графом – и покажет, как с его помощью организована обработка информации поверх API Java 8 Stream. Распределенная! Высокопроизводительная! «В памяти»!
Philipp Krenn – Full-Text Search Explained
Полнотекстовый поиск это то, чего многие ожидают от современных приложений. Вопрос в том, сложно ли его реализовать. Ответ – не так сложно, как кажется.
Из этого доклада вы узнаете, как работает полнотекстовый поиск, и в чем разница в работе с разными БД; как правильно оценивать качество и скорость поиска; как все это внедрить в свое приложение при помощи Elasticsearch.
Кирилл @tolkkv Толкачев — Проклятие Spring Test
Чем проще инструмент, тем больше магии он делает «под капотом». Spring Boot не исключение. Более того, мало кто задумывается, что происходит при использовании привычных всем инструментов, описанных в документации Spring Test.
Вместе с Кириллом, главным разработчиком Альфа-Лаборатории, будем разобраться в деталях того, какие грабли нам аккуратно подложили тут и там. Для этого протестируем «типичное» приложение и зададим себе вопросы, которые должен задавать любой разработчик, использующий Spring и яростно внедряющий Spring Boot на своих проектах.
Яков Жданов — Масштабируемость в распределенных in-memory системах
К сожалению, производительность распределенных систем на больших масштабах почти никогда не показывает линейного роста относительно количества задействованных машин. На примере Apache Ignite посмотрим, в чем заключается работа программиста в построении распределенной системы, а в чем – работа фреймворка. Посмотрим на внутренние компонены Apache Ignite, отвечающие за параллелизм и масштабирование и рассмотрим наиболее важные компромиссы и противоречия, возникающие при проектировании приложений на основе in-memory систем.
Code Complete: JBreak edition
Программирование – это не только про написание кода, это, как в свое время говорил Макконелл, конструирование. У вас может быть свой стиль, однако для того, чтобы он имел право на жизнь, вам следует знать о том, как правильно решаются задачи. Здесь мы собрали доклады, из которых вы сможете узнать о правильных подходах и способах решения известных проблем из области параллелизма, конкуренции и анализа кода.
Тагир @lany Валеев — Java-инспекции в IntelliJ IDEA: что может пойти не так?
IntelliJ IDEA постоянно подчёркивает ваш код, предлагая заменить его на что-нибудь получше. Иногда результаты кажутся просто волшебными. Как IDE это делает? Как разбирается в вашем коде, как генерирует новый код на замену старого и какие тут есть подводные камни?
Мы посмотрим, из чего состоит типичная инспекция кода в IntelliJ IDEA и сколько седых волос появляется у разработчиков IDE ради того, чтобы вы могли одним нажатием улучшить свой код.
Андрей Ершов – CRDT. Разрешай конфликты лучше, чем Cassandra
Подумайте только: инфраструктура из несколько дата-центров с асинхронной репликацией и отсутствием координации, дающая доступность и корректную работу в условиях сетевой сегментации, а также молниеносный отклик на клиенте и оптимистичный UI. Почему этого еще нет у всех? Всё это может привести к конкурентным изменениям, а конкурентные изменения приводят к конфликтам, которые не решить простым conflict resolver на timestamp’ах.
Однако проблему можно решить при помощи CRDT (Conflict-free replicated datatypes). В этом докладе Андрей расскажет о различных видах CRDT, их преимуществах и недостатках, а также границах применимости CRDT.
Никита Коваль — Динамический поиск потенциальных дедлоков в многопоточных приложениях на Java
Дедлоки – одна из наиболее актуальных проблем при разработке многопоточных приложений. В рамках этого доклада будет рассмотрен инструмент Dl-Check, используемый для поиска потенциальных дедлоков. В ходе разработки подобного инструмента не обойтись без инструментации байт-кода, для реализации которого стандартом де-факто является фреймворк ASM. В первой части доклада будет представлен основной алгоритм указанного инструмента, который позволяет эффективно находить потенциальные дедлоки в процессе работы приложения. Вторая часть доклада будет посвящена инструментации байт-кода, а также полезным техникам и нетривиальным проблемам, связанным с ней.
Егор @yegor256 Бугаенко — Аннотации в Java — это ошибка
Любителям дичи — очередной вызов Java-сообществу от Егора Бугаенко! Как известно, аннотации появились в Java 5 и привели к серьезному упрощению многих библиотек, а также к появлению новых. Всем понравилась идея сокращения размера кода благодаря использованию аннотаций и возможность отказаться от сложных XML файлов конфигурации в Hibernate и Spring.
В свое время Егор тоже был большим поклонником аннотаций. Однако все изменилось, и на сегодняшний день он категорически против них и считает, что аннотации — большая ошибка в дизайне Java. Почему? Об этом и будет доклад.
Олег @olegchir Чирухин – Девопс: теперь Java не тормозит
Пользуясь случаем, напомню, что DevOps — он как Слава КПСС, — вообще не человек. И доклад Олега посвящен тому, как правильно «готовить» DevOps на Java-проектах, чтобы старушка Java дала прикурить модным Golang и node.js в вопросах поддерживаемости и деплоя. Какие инструменты управления инфраструктурой позволяют сделать жизнь админов лучше, а жизнь разработчика интереснее, насыщеннее и продуктивнее.
Нелишним будет напомнить, что кроме докладов на конференции будут действовать дискуссионные зоны: после каждого из докладов спикер и все, кто хочет задать ему вопросы, будут отбуксированы в специальную зону, где у участников будет возможность общаться со спикером еще час-полтора — до конца следующего слота с докладами.
В общем, интересного действительно будет много, и если вы живете в Сибири и пишете на Java — мы будем рады видеть вас на JBreak. Регистрация открыта, милости просим на сайт конференции.
Автор: JUG.ru Group