Хабр, привет! Раньше мы проводили в Новосибирске Java-конференцию JBreak. В 2019-м решили её не проводить, но от этого доклады JBreak 2018 не перестают быть полезными, так что традиционно делимся подборкой лучших (по мнению зрителей). Тем более, что многие попавшие в эту подборку спикеры скоро приедут с новыми докладами в Москву на JPoint — можно как раз «заочно познакомиться» с ними и понять, хочется ли на московскую конференцию.
Как обычно, доклады идут от «младшего» к «старшему» по рейтингу, но отличия между местами небольшие — так что лучше не сравнивать придирчиво места, а смотреть всё по интересующим темам!
Под катом видео разбиты с оглавлением по содержимому поста, презентациями и короткими описаниями.
А для тех, кому недостаточно лучших 10 докладов и нужны все-все, у нас есть отдельный плейлист.
Class data sharing in the HotSpot VM
Спикер: Volker Simonis
Место: 10
Рейтинг: 3,96
Презентация доклада
Наша подборка начинается с подробного доклада о Class Data Sharing — фиче, предназначенной для улучшения скорости загрузки и уменьшения количества используемой оперативной памяти. Появилась она ещё в Java 5, но в последние годы история получила развитие, и в OpenJDK 10 возникло дополнение в виде AppCDS. Фолькер сначала коротко представляет CDS и AppCDS, объясняя, что это вообще и зачем нужно — а затем ныряет глубже.
По словам слушателей, это пример «образцово выполненной рабочей задачи» — Фолькер заглянул в исходники JDK, разложил по полочкам способ достижения результата и подводные камни, показал конкретные цифры по использованию RAM и скорости работы и расписал всё так, что вы поймёте, стоит ли использовать эту технологию для своих приложений.
Строим криптотрейдинг-платформу, используя Spring 5 и Reactor 3
Спикер: Олег Докука
Место: 9
Рейтинг: 4,02
Презентация доклада
Нет, здесь не будет механизма работы блокчейна, секретов быстрого обогащения на криптовалюте и тому подобного. Зато будет то, что нужно для лучшего понимания Spring 5 и Reactor 3: опытный докладчик, подготовленная речь и презентация, демонстрация современной технологии и практический пример (в виде той самой простой криптотрейдинг-платформы).
Подход к докладу максимально доступный: Олег задает базовые вопросы: «Что нужно?», «Зачем это нужно?», «Как это реализовать?» раскладывает по полочкам каждый ответ. К примеру, он подробно и просто разъясняет, как построить Reactive System, используя Spring Reactive Stack, зачем это нужно бизнесу, где Reactive-подход работает лучше всего и оптимально решает сложные задачи.
На протяжении всего доклада Олег разбирается, как Reactor 3 и реактивный Spring 5 помогают или не помогают в решении проблем, что нового они дают.
На пути к быстрой многопоточной хеш-таблице
Спикер: Никита Коваль
Место: 8
Рейтинг: 4,04
Презентация доклада
Хеш-таблицы — популярнейшая и полезная структура данных, от производительности которой зависят многие компоненты приложения. А ещё производительность зависит от многопоточности. Что в Java с хэш-таблицами, которые использовали бы все возможности современного многоядерного мира?
Никита Коваль (ndkoval) видит тему многопоточности и с теоретической стороны (преподавая её в ИТМО), и с практической (он причастен к корутинам в Kotlin). Неудивительно, что и доклад получился всесторонним: в нём есть и теоретические аспекты, и практические подходы.
Side Effect Injection, или добродетельные костыли
Спикер: Владимир Плизга
Место: 7
Рейтинг: 4,11
Презентация доклада
У вас бывали случаи, когда случайно (или нет) отправляли на продакшн кусок кода, предназначенный для теста? Или вставляли временный if, к примеру, с Thread.sleep() или логированием для отладки? Вы не одиноки: есть множество реальных примеров, когда на продакшн частенько уезжает тестовый/отладочный код, превращаясь там в бомбу замедленного действия, попутно преумножая технический долг и увеличивая пятно на карме разработчика.
В докладе Владимир по косточкам разбирает подход Side Effect Injection, который позволит внедрять в тестируемое приложение почти любое поведение: задержки, заглушки, логирование, обход безопасности и т.д., но при этом не пачкать репозиторий грязными хаками и даже не пересобирать само приложение. Таких костылей вы еще не видели :)
Верификация Java-байткода: когда, как, а может отключить?
Спикер: Никита Липский
Место: 6
Рейтинг: 4,13
Презентация доклада
Чтобы реализовать те или иные трюки, которые сложно выразить на Java, разработчики используют библиотеки для порождения байткода в рантайме. Но нужно очень строго следить за корректностью байткода, иначе при загрузке классов всплывет VerifyError. И что делать в такой ситуации?
Нужно знать не только семантику байткодных инструкций, но и то, как работают верификаторы и то, какой байткод можно считать корректным. Никита разбирается, какую миссию в JVM несёт верификатор байткода, когда и как он работает, может ли повлиять на производительность вашего приложения и почему опасно его отключать.
Как и в пункте выше про другого Никиту (Коваля), тут спикеру очень помогает его бэкграунд. Для понимания байткода полезно работать на уровень ниже «обычных» Java-разработчиков, а Никита Липский (pjBooms) много лет занимается «сибирской JVM» Excelsior JET, о которой мы недавно взяли у него большое интервью.
Балансируем клиентские запросы вместе со Spring Cloud
Спикер: Александр Тарасов
Место: 5
Рейтинг: 4,14
Презентация доклада
Очень «живой» доклад в смысле лайв-демонстрации всего, о чём говорится. Александр пробегается по теории Spring Cloud, а затем ныряет в разбор типового решения проблемы — и тогда вместо сатичных слайдов на экране постоянно видны то IDE с кодом, то браузер с графиками от Hystrix.
По ходу демо будет рассмотрена внутренняя реализация клиентской балансировки запросов с примерами из официальных библиотек и собственной библиотеки автора. Вы узнаете как балансировать нагрузку, и на примере увидите, почему даже даже весьма незначительное увеличение нагрузки может привести к катастрофическим последствиям, и как этого можно избежать.
Spring Boot Starter — как и зачем?
Спикер: Максим Гореликов / Кирилл Толкачев (tolkkv)
Место: 4
Рейтинг: 4,16
Презентация доклада
Spring — уже не магия (спасибо «Spring-потрошителю» и Евгению Борисову), а вот Spring Boot довольно часто клеймят магической поделкой. Но многим нравится, особенно новичкам!
Парный доклад о том, зачем вообще в рамках типовой компании, использующей Spring Boot, могут понадобиться собственные стартеры; как скоро инквизиция приходит за новичками, если они бездумно используют готовые стартеры и насколько Spring Boot самостоятелен и что это значит для разработчиков.
Доклад рассчитан на практикующих Spring (а лучше Spring Boot) инженеров, которые уже сталкивались с различными трудностями поддержки увесистой инфраструктуры, разрабатываемой с использованием Spring.
Это кто там такой твитит про #jbreak?
Спикер: Виктор Гамов
Место: 3
Рейтинг: 4,18
Презентация доклада
Кто знает Виктора Гамова gAmUssA (по подкасту «Разбор Полётов» или чему-то ещё), то вряд ли удивится, что вроде бы серьёзный доклад про системы конвейерной обработки данных он превратил в интерактивное шоу. Виктор прямо на конференции устроил лайв-кодинг для разбора потока твитов с конференции, используя модные технологии — Apache Kafka, Kafka Connect и KSQL.
Мы же все знаем и любим SQL, правда? Так вот, KSQL — это почти как SQL, только для Kafka. KSQL позволяет создавать сложные системы обработки потоковых данных, без написания Java или Scala кода.
Смузи ML вместе со Spark MLlib
Спикер: Алексей Зиновьев
Место: 2
Рейтинг: 4,18
Презентация доклада
Для работы над BigData нужны не только data scientist’ы, тюнящие параметры моделей из пакетов на R или Python, но и Java-разработчики, способные понять построенные модели и воплотить их на Java/Scala, в том числе при помощи Spark MLlib.
Алексей в максимально простых формулировках знакомит слушателей с этой самой мощной библиотекой распределенного машинного обучения, заодно обсуждая особенности использования стандартных алгоритмов машинного обучения и структур данных в Spark. После доклада BigData станет куда понятнее, захочется заниматься ей и покопаться «ручками» самостоятельно — проверено на слушателях.
Кейноут: JDK 9, Mission Accomplished: What next for Java?
Спикер: Simon Ritter
Место: 1
Рейтинг: 4,29
Презентация доклада
А больше всего зрителям понравился кейноут, открывавший конференцию. Сейчас, когда с JBreak 2018 уже прошло много времени, он по названию может показаться страшно устаревшим: уже есть JDK 11, что теперь про девятый-то вспоминать? Но если учесть, что именно с выходом «девятки» сменился релизный цикл и новые версии стали выходить часто, то получится, что как раз на эту версию есть смысл оглядываться: она стала важным «водоразделом», последним по-настоящему масштабным обновлением.
А если от Саймона вам всё-таки хочется чего-то более актуального, это будет в апреле на JPoint: там из двух его докладов один как раз будет посвящён JDK с 10 по 12 (а другой — выводу типов).
Кого ещё из этих спикеров можно будет увидеть в апреле на JPoint? На данный момент уже известно, что Олег Докука расскажет про RSocket, а Никита Липский поведает, как AOT-компиляция сочетается со Spring Boot-приложениями. Никита Коваль тоже будет, но тема доклада ещё не объявлена.
Кроме этого, будет множество других докладов — и описания части из них уже можно прочитать на сайте. Если вы считаете, что и вам есть что поведать — приём заявок на доклады закрывается 31 января, так что сейчас последний шанс успеть. А ещё стоит торопиться с приобретением билетов: это можно будет сделать и позже, но с 1 февраля цена повысится.