Java-конференция JPoint 2017: Москва, 7-8 апреля — Обзор докладов
Если темы всех докладов разделить по тематикам, то получится следующее:
- Производительность Java, как на уровне JVM, так и в работе с фреймворками;
- Препарирование JVM и публичная демонстрация кровавых кишочков;
- Построение распределенных систем, которые работают;
- Проблемы параллелизма и многопоточности в больших проектах;
- Контейнеризация и оркестрация Java-приложений и сервисов.
Плюсом к основным блокам будут доклады на более специфические темы: Kotlin, trueOOP на Java от Егора, паттерны и, конечно, немного паззлеров!
Под катом я расскажу о тех докладах, которые уже утверждены на JPoint 2017. Чтобы все это не выглядело кашей, я попытался разбить доклады по темам.
Performance и все, что с ним связано
Излюбленная тема участников JPoint и Joker. Эти доклады подогревают мозги до смены агрегатного состояния. В этот раз, как обычно, будет много докладов про производительность.
Алексей Шипилёв — Перформанс: Что В Имени Тебе Моём?
Переработанный, дополненный и расширенный доклад с Joker 2016 об оптимизациях в больших проектах: общих принципах и соотношениях; жизненном цикле проекта и экономике оптимизаций; жизненном цикле бенчмарков; типичных ловушках, в которых оказываются перформанс-инженеры.
Больше хардкора, больше деталей, больше тайминг, еще более кривая кривая имени «Ш»!
Сергей Куксенко — Повесть о том, как один инженер HTTP/2 Client разгонял
Доклад о том, как Oracle использует (или не использует) методологии оптимизации производительности, о которых много лет вещали со сцены. На примере «JEP 110: HTTP/2 Client» (который в будущем появится в JDK) Сергей покажет, как команда запускала, где смотрела и что крутила, чтобы сделать его быстрее. Примечание: доклад не про HTTP/2. Хотя, конечно, некоторых его деталей избежать не удастся.
Николай Алименков — Сделаем Hibernate снова быстрым
Многие Java-разработчики используют ORM, но большинство из них не знает о существующих опциях для улучшения производительности. C присущей наглядностью и практической ориентированностью, Николай даст обзор этих опций на практических примерах. Доклад практика, а не теоретика.
Саша Гольдштейн, Fast and Safe Production Monitoring of JVM Applications with BPF Magic
Саша Гольдштейн, известный гуру перфомарса в .NET, решил в этот раз поэспериментировать и выступить на Java-конференции. За последние годы у него накопилось много опыта работы по оптимизации и мониторингу приложений, работающих на JVM, которым он и поделится с участниками.
JVM: Заглянем внутрь
Как и всегда, у нас есть, что послушать про кишочки: все о том, как JVM работает (или будет работать в ближайшем будущем) под капотом и что нужно делать, чтобы под капотом происходило только то, что нужно вам.
Владимир Иванов — Техники векторизации кода в JVM
В этом докладе разговор пойдёт о том, как сейчас выглядят векторные расширения процессора и на какие ухищрения приходится идти JVM, чтобы не давать им простаивать: CPU dispatching, VM intrinsic«и, автоматическая векторизация байт-кода в JIT-компиляторах. Будет упомянут и специализированный векторный API (Vector API), работы над которым активно ведутся в Project Panama.
Алексей Шипилёв — Shenandoah: сборщик мусора, который смог
Shenandoah — новый сборщик мусора от Red Hat, который пытается решить проблема перемещение объектов без остановки приложения, тем самым сбивая паузы ещё больше. Этот доклад об особенностях дизайна и реализации Shenandoah, достоинствах, которыми можно гордиться, и недостатках, с которыми приходится мириться.
Андрей Паньгин, Вадим Цесько — JVM профайлер с чувством такта
В докладе речь пойдет о различных подходах к профилированию: JVM TI, AsyncGetCallTrace, perf_events и Flame Graphs. Докладчики разберут принципы их работы, достоинства и ограничения, а также найдут способ взять лучшее от каждого из них. В завершение будет рассказано о том, как Одноклассники профилируют в Production весь стек от Java-кода до ядра Linux.
Владимир Долженко — Внутрь VM сквозь замочную скважину hashCode
Доклад о том, что таит в себе hashCode (). Вроде бы все узнают про него с первых тридцати страниц книги Хорстмана или Блоха, однако на собеседованиях постоянно вскрывается проблема непонимания работы hashCode (). В докладе Владимир расскажет о том, как на самом деле устроен механизм hashCode изнутри.
Никита Липский — Верификация Java байт-кода: когда, как, а может отключить?
Доклад о том, какую миссию в JVM несет верификатор байткода, когда и как он работает, может ли повлиять на производительность вашего приложения и почему опасно его отключать.
Volker Simonis — Analyzing HotSpot Crashes
В этом докладе будем разбираться с тем, что можно откопать в файлах с ошибками, которые создает HotSpot crash handler, а также с тем, как эти файлы могут помочь нам с анализом и воспроизведением падения системы. Кроме того, посмотрим на инструменты, такие как HotSpot Serviceability Agent, которые позволяют заглянуть в нативные файлы ядра и извлечь из них необходимые данные, которые было бы непросто достать с помощью стандартного дебаггера.
Charles Nutter — Going Native: Foreign Functions on the JVM
Есть много Java-библиотек, привычных для большинства разработчиков. Все изменится с приходом Java Native Runtime и Project Panama. Все-таки, кроме существующих Java-библиотек, существует целый мир native-библиотек: для графики, криптографии, интеграции с ОС и многого другого. В этом докладе будут рассмотрены интересные сценарии ухода в native со сравнением возможностей и обзором инструментария для интеграции.
Что еще?
Некоторые участники наших конференций жаловались, что доклады про перфоманс и JVM мало применимы в реальной жизни. Поэтому у нас будет много докладов, посвященных прикладным проблемам.
Никита Коваль — Динамический поиск потенциальных дедлоков в многопоточных приложениях на Java
Дедлоки — одна из наиболее актуальных проблем при разработке многопоточных приложений. В рамках этого доклада будет рассмотрен инструмент Dl-Check, используемый для поиска потенциальных дедлоков. В ходе разработки подобного инструмента не обойтись без инструментации байт-кода, для реализации которого стандартом де-факто является фреймворк ASM. В первой части доклада будет представлен основной алгоритм указанного инструмента, который позволяет эффективно находить потенциальные дедлоки в процессе работы приложения. Вторая часть доклада будет посвящена инструментации байт-кода, а также полезным техникам и нетривиальным проблемам, связанным с ней.
Виктор Гамов — Блеск и нищета распределенных стримов
Вы из тех, кто гонится за производительностью, запихивая в любой цикл Collection.parallelStream ()? Задумываетесь, как обойтись без глобальной переделки кода и решить все проблемы с помощью большего количества серверов? Как получить распределённую обработку с линейным ростом производительности? Если подобные вопросы звучат у вас в голове, тогда этот доклад для вас.
В нем Виктор расскажет обо всех деталях распределённой обработки, познакомит слушателей со своим другом — Ориентированным Ациклическим Графом — и покажет, как с его помощью организована обработка информации поверх API Java 8 Stream. Распределенная! Высокопроизводительная! «В памяти»!
Алексей Зиновьев — Kafka льёт, а Spark разгребает!
В типичном ТЗ по real-time аналитике часто имеются пункты о том, что необходимо подсчитывать «на лету» некоторые агрегированные величины за небольшой период времени, фильтровать поток, уменьшая нагрузку на последующие стадии вычислений. Достаточно часто мы можем видеть проекты, где команды организуют своё «озерцо данных» в Amazon, просто сваливая все приходящие ивенты в Kafka. Справится ли Spark с потоками из Kafka? А если справится, то какой ценой и что ему в этом поможет? Не ждите на докладе введения в Spark, RDD, разговоров за Big Data. Один кейс — одно решение — немного теории — правим конфиги — пишем код.
Sven Ruppert — Practical Proxy Pattern Deep Dive
Все мы читали книгу про паттерны и знаем про Proxy. Но как использовать его эффективно? Какие разновидности Proxy бывают и как с их помощью строить другие паттерны? В этом докладе будет рассказано про DynamicProxy, Dynamic/Static-ObjectAdapter, DynamicStaticProxy в рантайме и многое другое.
Евгений Борисов, Spring — Глубоко и не очень
Работая со Spring-ом, вы наверняка сталкиваетесь с разными проблемами, нюансами и задачами, требующими нестандартных решений. В этом докладе речь пойдет о spring-core с обзором последних изменений, которые внёс Spring 4.3.
Этот доклад поможет вам ещё лучше понять, как работает Spring, как его лучше и правильнее использовать. Как обычно будут кишки, расчленёнка, вопросы в зал, призы и много live-кодинга
Milen Dyankov — Microservices and Modularity or the difference between treatment and cure!
Разница между микросервисами и модулярностью почти также размыта, как и разница между DI и IoC. В live-demo докладе Милен, Developer Advocate из Liferay, специализирующийся на Java и OSGi, постарается продемонстрировать эту разницу и, сделав выводы, показать полезные способы проектирования приложений.
Евгений Борисов и Кирилл Толкачёв — Проклятие Spring Test
Каждая технология содержит определенный набор подводных камней. Знать о них и ловко обходить — задача разработчика владеющего технологий. Spring не исключени. Попробуем разобраться в различных подходах к тестированию на примере Spring Boot приложения, тестируя его шаг за шагом, используя новые фичи и собирая новые грабли. Поговорим про юнит-тестирование, интеграционные тесты, связь Spring MVC с Spring Boot и, конечно, о болях использования Spring 4+.
Тагир Валеев — Java-инспекции в IntelliJ IDEA: что может пойти не так?
IntelliJ IDEA постоянно подчёркивает ваш код, предлагая заменить его на что-нибудь получше. Иногда результаты кажутся просто волшебными. Как IDE это делает? Как разбирается в вашем коде, как генерирует новый код на замену старого и какие тут есть подводные камни?
Мы посмотрим, из чего состоит типичная инспекция кода в IntelliJ IDEA и сколько седых волос появляется у разработчиков IDE ради того, чтобы вы могли одним нажатием улучшить свой код.
Arun Gupta — Full-stack Reactive Java Application using Docker
В рамках доклада Arun вместе со слушателями создаст полностью работающее приложение на Java EE/Spring с RxJava для асинхронности, Docker для контейнеризации и масштабирования, Couchbase, JavaFX и деплоем при помощи Gluon.
Еще один доклад Аруна: Package your Java Application using Docker and Kubernetes. В нем будет рассказано, как запускать и упаковывать Java-приложения в докер, делиться ими в Docker Hub, деплоить их при помощи Maven и Kubernetes.
Иван Пономарёв — Скрытая сложность повседневной задачи: Отображение табличных данных
Табличный элемент управления (грид), отображающий данные из реляционной базы — один из самых распространённых компонентов пользовательского интерфейса, и все сталкивались с проблемами его производительности и удобства. Доклад покажет, что за кажущейся простотой грида скрываются интересные и не решённые до конца проблемы, требующие познаний в разных областях математики. Мы попробуем отыскать баланс между скоростью и удобством, параллельно научившись интерполяционному поиску, разобравшись в том, что же такое Collation Rules, и увидев, как можно «помогать» базе быстро извлекать нужные для нас данные.
На сладкое — паззлеры и холивары!
В заключительной части поста хочу поделиться «десертными» докладами: вряд ли вы узнаете из них что-то новое о платформе или получите какие-то готовые решения для внедрения в продакшене, зато после них вы выйдете с отличным настроением и бодрым духом:
Антон Кекс — Kotlin Puzzlers
Котлин — приятный альтернативный язык для JVM, старающийся улучшить удобство написания кода по сравнению с Java. Хоть он уже не нов, после выпущенной версии 1.0 в 2016 году его используемость стала резко расти. Антон сделает быстрое вступление и сразу перейдёт к паззлерам — коротким программам на Котлине, которые делают не совсем то, что кажется с первого взгляда. Несмотря на то, что Котлин разрабатывался в течение 6 лет и даже специально пытался избежать самые известные Java-паззлеры, у него всё равно появились свои заковырки и ньюансы, которые не найти в документации.
Тагир Валеев, Барух Садогурский — Java Puzzlers NG S02: Всё чудесатее и чудесатее
Ещё, ещё паззлеров! Чем больше опыта индустрия набирает с Java 8, тем чудесатее и чудесатее она нам кажется. Такое впечатление, что все эти стримы, лямбды, монады, Optional-ы и CompletableFuture-ы были понапиханы туда исключительно для того, чтобы нас запутать! И Java 9, едва замаячив на горизонте, уже сияет и переливается прекрасными загадками и непонятками. В этом сезоне паззлеров у нас, как всегда, прекрасный набор странностей, смешные (по крайней мере, ведущим) шутки
Алексей Савватеев — Коллективная ответственность
Представьте себе, что вы — дежурный милиционер в турникетном зале. Безбилетники
пытаются прыгать через турникеты, Вы их ловите. Вы один, их — много. Возможно ли им задать такие «правила игры», чтобы они не смели пытаться перепрыгивать, даже если заранее известно, что поймаете вы в любом случае только одного из них? Оказывается, возможно.
Доклад о математике и теоретико-игровых основаниях, которые стоят за изобретением различных хитроумных алгоритмов контроля. На этом докладе вы не получите академического образования, вы не научитесь писать более эффективные алгоритмы. Однако вы получите представление о том, насколько богатый математический аппарат существует.
Если вам интересна тема теории игр, если вам интересно узнать об исследованиях, за которые уже несколько раз присуждали премию Нобелевского комитета по экономике, то добро пожаловать на доклад.
Егор Бугаенко — Аннотации в Java — это ошибка
Любителям дичи — очередной вызов Java-сообществу от Егора Бугаенко! Как известно, аннотации появились в Java 5 и привели к серьезному упрощению многих библиотек, а также к появлению новых. Всем понравилась идея сокращения размера кода благодаря использованию аннотаций и возможность отказаться от сложных XML файлов конфигурации в Hibernate и Spring.
В свое время Егор тоже был большим поклонником аннотаций. Однако все изменилось, и на сегодняшний день он категорически против них и считает, что аннотации — большая ошибка в дизайне Java. Почему? Об этом и будет доклад.
Барух Садогурский — «Computer, how my cluster is doing?» и другие волшебные заклинания
Как вы все прекрасно знаете, инженеры — лентяи. Иногда мы можем потратить месяц бессонных ночей для того, чтобы потом нам не пришлось нажимать несколько кнопок. Как раз для нас (на самом деле нет) в Amazon придумали прекрасный сервис голосовых команд Alexa, с помощью которого мы можем, откинувшись в кресле с бокалом коньяка/кофейка/самогонки (нужное подчеркнуть), управлять, да пожалуй, чем угодно. В этом докладе я покажу вам пример приложения, которое добавляет голосовой интерфейс к совершенно неожиданным вещам, как IntelliJ IDEA и Jenkins, а вы уж за намного меньше, чем месяц ночей, прикрутите его к чему захотите.
Уфф, вроде я ничего не упустил из анонсированного на сегодня. В общем, интересного действительно будет много, и если вы пишете на Java — мы будем рады видеть вас на JPoint.
Нелишним будет напомнить, что кроме докладов на конференции будут действовать дискуссионные зоны: после каждого из докладов спикер и все, кто хочет задать ему вопросы, будут отбуксированы в специальную зону, где у участников будет возможность общаться со спикером еще час-полтора — до конца следующего слота с докладами.
В общем, мы в очередной раз хорошо поработали. Если вам интересно поучаствовать — поизучайте сайт конференции. Там есть и предварительное расписание, и подробности докладов и ссылки на материалы прошлых лет.
Всем Java, хабровчане!