Любое событие, особенно если оно завершилось, можно сравнить с чем-то необычным. Например, был на митапе, и он оказался слетом ведьм для обмена премудростями, или, допустим, забежал на вечеринку — как будто попал под ливень с грозой. И вот уже в конце месяца 25-26 октября в Санкт-Петербурге пройдет Joker 2019, еще ничего не произошло, но я для себя сравниваю эту конференцию с парадом планет.
Парад планет — не такое частое астрономическое явление, чтобы можно было себе позволить его пропустить. Дальше я попытаюсь рассказать, какие планеты нас ожидают и почему нужно спешить попасть в этот мчащийся поезд. Под катом много ссылок на предыдущие доклады и поблочный обзор программы.
VM/runtime
Первой планетой, традиционно находящейся в фокусе конференции Joker, является блок докладов VM/runtime. В этом блоке традиционно много зажигательного.
Меня как слушателя всегда поражает возможность JUG Ru Group доставать крутых спикеров из-за рубежа. И хочу начать с Remi Forax, он выступит с докладом «The sinuous path toward Valhalla». Много байткода, внутренности компонентов VM, кровь, кишки, расчлененка — все, как мы любим.
Несмотря на то, что Remi работает в небольшом университете в пригороде Парижа, он изрядно успел поучаствовать в жизни Java-сообщества: является одним из отцов invokedynamic introduces в Java 7, помог создать спецификации lambdas (Java 8), modules (Java 9) и constant dynamic (Java 11). В настоящее время участвует в проектах Amber и Valhalla, по мнению некоторых экспертов именно в этих проектах сейчас происходит самое интересное в мире Java.
Заранее можно познакомиться с манерой повествования Remi из 2015 и 2017 годов соответственно:
- Design Pattern Reloaded
- Project Amber (французский, субтитры рулят)
И пока мы касаемся проекта Valhalla, невозможно пройти мимо Сергея Куксенко Walrus, он выступит с докладом — «Нужны ли в Java «инлайн»-типы? Узкий взгляд инженера по производительности на проект Valhalla»
Сергей работает в Oracle, и в августе мы опубликовали на Хабре большое интервью с ним — «Тысячи вещей, которые в Java стоило бы поправить с первой версии»
Конечно, Сергей как докладчик знаком многим уже очень длительное время. А те, кого он заинтересовал только сейчас, могут напасть на следующие доклады:
- Алексей Шипилёв и Сергей Куксенко — Оптимизация производительности Java-приложений: теория (2012)
- Сергей Куксенко и Алексей Шипилёв — Через тернии к лямбдам, часть 1, часть 2(2012)
- Сергей Куксенко — «Квантовые» эффекты производительности (2013)
- Сергей Куксенко — Stream API часть 1, часть 2(2014)
- Сергей Куксенко — Железные счётчики на страже производительности (2015)
- Сергей Куксенко — Повесть о том, как один инженер HTTP/2 Client разгонял (2017)
Вообще программный комитет Joker 2019 не мог пройти мимо новинок в Java, и Dan Heidinga, ведущий архитектор OpenJ9 и член экспертной группы JSR 292 (invokedynamic), — один из тех, кого следует послушать. Название его доклада — «Condy? NestMates? Constable? Understanding JDK 11 & 12's JVM features» — говорит само за себя. Сотрудник IBM, канадец и просто отличный спикер с прекрасным и понятным произношением ведет твиттер, в котором, помимо зарубежных экспертов по JVM, мелькают наши соотечественники: Алексей Шипилёв, Иван Крылов, Роман Елизаров и т.д. Количество полезной информации в твиттере Dan Heidinga зашкаливает.
- Dan Heidinga, Paul Sandoz — CONSTANT_Dynamic: oxymoron or powerful new tool?
- Dan Heidinga — Migrate Early, Migrate Often! JDK Release Cadence Strategies
- Devoxx US 2017: Create high performance runtimes with Eclipse OMR
И вот представим, вам хочется настоящего хардкора. Вы уже много знаете о компиляторах, знакомы с основами теории графов, моделью выполнения байт-кода, Java-загрузкой и выгрузкой кода, а также зачатками генерации кода. И вот вы хотите глубже погрузиться в JIT HotSpot «C2», тогда вам обязательно нужно попасть на выступление Cliff Click «The Sea of Nodes and the HotSpot JIT»
Около 15 лет Клиф работал в HotSpot JVM. Он участвовал в изначальной разработке JVM, был одним из создателей знаменитого HotSpot Server Compiler (C2), улучшил значительную часть технологического стека Azul и доказал миру, что JIT-компиляция имеет право на жизнь. Просто Клифф Клик — легенда Java-мира.
Пара выступлений Клиффа этого года:
В этом же блоке масса интересного и про другие VM (GraalVM, TornadoVM, TeaVM):
- Ionut Balosin — A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers better runtime performance?
- Juan Fumero — TornadoVM: A Virtual Machine for Exploiting High-Performance Heterogeneous Hardware of Java Programs
- Алексей Андреев — TeaVM: сложности перевода из Java в JavaScript
Language
Второй планетой в параде Joker 2019, безусловно, является блок докладов Language. И тут для многих просто подарок судьбы — возможность встретиться с человеком, открывшим многим дверь в мир Java.
Cay Horstmann собственной персоной выступит с докладом — «Feature Evolution in Java 13 and Beyond». Кей Хорстманн является одним из известнейших авторов в мире Java и есть вероятность что вы читали одну из его книг (есть ненулевая вероятность получить автограф, несите книги с собой), из последнего вас может заинтересовать:
- Core Java (11th Edition) часть 1, часть 2
- Core Java SE 9 for the Impatient
Вы могли уже видеть выступление на Joker 2017:
Нельзя пройти и мимо парочки интервью:
- «Работаю над проектами, объединяющими книгу и интерактив»: Кей Хорстманн о книгах и не только
- How to Become a Better Java Developer
Многим кажется, что Java так быстро бежит вперёд, что проекты за ней не поспевают. Олег Ненашев oleg-nenashev в докладе «War Story: как мы внедряли поддержку Java 11 в Jenkins» расскажет о том, с какими проблемами он столкнулся в реальном крупном Maven-проекте при переезде, а точнее, при желании поддержать Java 11.
Олег является разработчиком в CloudBees, состоит в core team проекта Jenkins. Для многих будет полезно посмотреть на доклады разных лет от Олега, посвященные Jenkins:
- Встреча c Олегом Ненашевым — Groovy DSL в Jenkins и Pipeline часть 1, часть 2
- SPB Jenkins Meetup #12. Олег Ненашев, Краткий обзор Jenkins X
- Олег Ненашев — Управляем безопасностью в Jenkins
Мы знаем Тагира Валеева lany как разработчика JetBrains, он занимается статическим анализатором кода IntelliJ IDEA, инспекциями и квик-фиксами. И как человек, буквально на кончиках пальцев ощущающий изменения в Java, Тагир выступит с докладом «Java 9-14: Маленькие оптимизации» Незаметно для нас с вами Java становится немного быстрее тут или там каждый день, эта работа в стандартной библиотеке идет постоянно. В этом докладе Тагир расскажет о маленьких улучшениях производительности в самых базовых и вездесущих классах вроде String, ArrayList, HashSet, которые были реализованы после выхода Java 8 и делают нашу жизнь лучше.
Предыдущие доклады Тагира:
- Тагир Валеев — Stream API: рекомендации лучших собаководов
- Тагир Валеев — Pattern matching и его воображаемые друзья
- Тагир Валеев — Проект Amber: вести с полей
- Тагир Валеев — Атомарный рефакторинг в IntelliJ IDEA: прогибаем IDE под себя
И буквально парочка интервью:
- «При работе над инспекциями кода встречаешь Java-паззлеры каждый день»: Тагир Валеев о работе над IntelliJ IDEA
- «Изучил что-то — пробуй это объяснить, пока не поймёшь сам»
В этом блоке нельзя пройти мимо следующих докладов:
- Simon Ritter — Keeping Up With Java: Look At All These New Features!
- Roberto Cortez — GraalVM and MicroProfile: A Polyglot Microservices Solution
- Jacek Kunicki — ScalaTest: you're asserting it wrong
Tooling
Третья планета Tooling не может состояться без сотрудников компании JetBrains, главной кузницы кодо-тулов в мире.
Никита Коваль ndkoval, один из членов команды Kotlin, выступит с докладом «Тестирование многопоточных алгоритмов с помощью Lincheck». Никита в своем докладе расскажет про инструмент Lincheck, который помогает в тестировании и отладке многопоточного кода, затронет API и внутреннее устройство. Учитывая, что отладка многопоточного кода — не самое легкое занятие, освоить новый инструмент будет не лишним.
Никита многократно выступал, и иногда стоит пересмотреть что-то из недавнего прошлого:
- Никита Коваль — Тестирование lock-free алгоритмов, или Поиск иголки в стоге сена (2017)
- Никита Коваль — Как найти дедлок, не попав в него (2017)
- Никита Коваль — Как устроены каналы в корутинах в Kotlin (2018)
- Никита Коваль — Аппаратная транзакционная память в Java (2018)
- Никита Коваль — На пути к быстрой многопоточной хеш-таблице (2018)
- Никита Коваль — Сказ о том, как мы алгоритм каналов в Kotlin Coroutines делали (2019)
Ну и куда деться в этой секции Tooling без Developer Advocate, на этот раз Sebastian Daschner выступит с докладом — «Striving towards more productive development workflows». Нас ожидает сессия лайв-кодинга на сцене, а мы это любим и жить без этого не можем. Sebastian расскажет о подходах и технологиях, которые поддерживают команды в разработке более продуктивных рабочих процессов разработки. К тому же есть что-то гипнотическое в выступлениях Sebastian, ты сам можешь в этом убедиться, посмотрев одно из последних его выступлений:
- Sebastian Daschner — Cloud native Java EE (2017)
- Sebastian Daschner — Create effective tests or create excuses — testing the Java EE way (2018)
- Sebastian Daschner — Cloud native, service-meshed Java Enterprise with Istio (2019)
- Sebastian Daschner — 7 Principles of Productive Software Developers (2019)
А еще Sebastian Daschner ведет совершенно замечательный блог, например, в сентябре у него стартовала серия из шести постов — «Thoughts on efficient enterprise testing»
И если мы заговорили о тестировании, то невозможно пройти мимо библиотеки Testcontainers. Она позволяет быстро и кроссплатформенно запускать из ваших JUnit (и не только) тестов Docker-контейнеры с популярными базами данных, Selenium-браузерами и вообще всем, что умеет бегать в Docker. С возможностью запускать как локально при разработке, так и на CI-серверах без изменений, а это немаловажно. Сергей Егоров bsideup из компании Pivotal как раз выступит с докладом «Testcontainers: год спустя»
Чтобы быть в теме, достаточно посмотреть ряд предыдущих докладов Сергея:
- Сергей Егоров — TestContainers: Docker Docker Docker… и тесты (2017)
- Сергей Егоров — TestContainers — интеграционное тестирование с Docker (2017)
- Сергей Егоров — Не будь Гомером Симпсоном для своего Reactor-а! (2019)
Пока все призывают вас быть эффективными и автоматизировать рутину, Юрий Артамонов jreznot из компании JetBrains выступит с докладом — «Краш-курс по IntelliJ IDEA Plugin DevKit». После его выступления вы воскликнете «Хватит это терпеть!» и запилите собственный плагин. В докладе Юрий расскажет, как быстро разобраться в Plugin DevKit и написать что-то полезное, не погибнув под грузом новых знаний.
Может быть полезным посмотреть что-то из ранних выступлений Юрия:
- Юрий Артамонов — Jlink и Custom Runtime Image — мастерская Франкенштейна (2018)
- Юрий Артамонов — Хочется странного — web UI на Java для desktop-приложений (2018)
- Юрий Артамонов — Анатомия и физиология Vaadin Flow (2019)
Spring и Reactive
Ни одна Java-конференция не может пройти мимо такого звездного явления, как Spring, особенно если его представляют Josh Long, Juergen Hoeller и Mark Heckler. Все из ранее упомянутой компании Pivotal.
Пользоваться Spring и не знать, кто такие Холлер и Лонг, наверное, странно, потому в представлении они не нуждаются. Во-первых, они проведут совместный открывающий доклад «Reactive Spring revisited», в рамках которого ожидается сессия лайв-кодинга на Spring Framework 5.2 с применением Spring Boot 2.2, особенно полезно будет посмотреть, как со стороны одного из основателей Spring Framework и, пожалуй, главного Spring Developer Advocate в мире должно выглядеть создание реактивных микросервисов нового поколения для облачных архитектур.
А во-вторых, у каждого из них есть и сольный доклад:
В докладе Юргена основное внимание уделяется основным средствам для оптимизированных архитектур приложений в современных средах развертывания с поддержкой Java, а также Kotlin в качестве основы для функций более высокого уровня в Spring Data и Spring Boot. В то же время выступление Джоша учит тестировать Spring Boot-приложения. Оба доклада предназначены для практикующих инженеров.
Что у Джоша, что у Юргена всегда есть что посмотреть и чему поучиться:
- Josh Long — Reactive Spring (2018)
- Juergen Hoeller — 15 Years of Spring: Evolving a Java Application Framework (2018)
- Juergen Hoeller — Current and Future State of Java (2018)
- Juergen Hoeller — Spring Framework 5 1 on JDK 8 & 11 (2018)
- Josh Long — Bootiful TDD (2019)
- Josh Long — Reactive Streams (2019)
Mark Heckler выступит с докладом «Spring Security for N00bz: A quick introduction for the terminally insecure» С одной стороны, простой доклад посвященный Spring Security, а с другой именно та часть нашей работы о которой подавляющее большинство разработчиков даже не задумывается. Spring Security обеспечивает проверенную платформу безопасности приложений. Она интегрируется с многочисленными языками и компонентами для обеспечения сквозной безопасности. Если вы не знакомы со Spring Security самое время подтянуть свои знания в этой области.
А вот пара докладов Марка для разогрева:
- Mark Heckler — Full-stack Reactive Java with Project Reactor & Spring Boot 2
- Mark Heckler — Drinking from the Stream: How to Use Messaging Platforms for Scalability&Performance
В этом блоке помимо Spring есть еще три доклада по теме Reactive, и я вам расскажу только про один, но какой! Если вы были на весенней конференции JPoint 2019, то вы не могли пройти мимо выступления Евгения Борисова и Кирилла Толкачёва tolkkv. Доклад дуэта стал третьим популярности. И с тем же названием, но совершенно другим содержанием доклад — «Reactive или не reactive: вот в чем вопрос» — обрушится на аудиторию утром второго дня конференции.
Коллеги рассмотрят пример системы, в которой есть проблемы. Наживую попробуют отрефакторить систему в реактивном стиле. В ходе доклада рассмотрят преимущества и недостатки не только подхода, но и API конкретных реализаций. И самое важное, помогут разобраться, что игрушки, а что нет.
Доклад «Reactive или не reactive: вот в чем вопрос» — один из тех докладов, который я ожидаю, скрестив пальцы, со словами «Хоть бы, хоть бы». А если вы не убеждены, то рекомендую взглянуть на некоторые из предыдущих докладов, например «Boot yourself, Spring is coming» (в двух частях: раз, два).
Тренинги
Чтобы два раза не вставать сразу, расскажу о двухдневном тренинге ранее упомянутого дуэта. Евгений Борисов и Кирилл Толкачёв 27 и 28 октября, сразу после конференции, проведут спаренный тренинг «Spring Boot Mastering + Spring Cloud Mastering».
Если вы хотите реально понимать:
- что именно делает Spring Boot, когда вы пишете микросервисы;
- как можно всё кастомизировать;
- как решать проблемы асинхронных запросов, чтобы у Tomcat не заканчивались потоки;
- как правильно разбивать микросервис на модули;
- писать тесты;
- строить модель без наследования, чтобы не иметь потом проблем с десериализацией;
то Spring Boot Mastering для вас.
На выходе вы серьезно увеличите своё понимание того, как писать микросервисы, а вторая часть Spring Cloud Mastering позволит вам углубиться в вопросы, связанные с микросервисной архитектурой, так как с микросервисами приходят новые возможности, но и новые проблемы, ответственность решать которые никуда не уходит. Нужно уметь грамотно обходить их, что тоже позволяет нам Spring Cloud (конечно же, не всё). Если вы хотите понимать, какие проблемы будут вас ожидать при переходе на микросервисную архитектуру, так пропагандируемую Spring Cloud, уметь бороться с ними, а также просто быть в курсе этого динамично развивающегося стека — то Spring Cloud Mastering для вас.
С другой стороны конференции, а точнее до её начала, 23-го и 24-го октября, пройдет тренинг «Эффективное профилирование Java-приложений», автором и ведущим которого является Алексей Рагозин. Алексей имеет более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях, активный докладчик на российских и зарубежных конференциях в области ПО и контрибьютор в open source.
Под руководством Алексея вы получите ключевые знания и навыки для эффективного применения профайлера в своей работе. Думаю, многие понимают, что столкновение с задачей, требующий применения профайлера — не самый частый кейс. По этой причине у многих разработчиков обычно нет возможности научиться эффективно владеть этим инструментом на собственном опыте. Алексей передает свой опыт и знания в рамках тренинга и в критической ситуации это может драматически сократить время решения проблемы.
Звездопад
И вот, казалось бы, основные планеты покрыты, но среди участников могут быть настоящие нераскрытые звезды, которым есть что сказать. И у них есть для этого время и место. В первый день, 25 октября, начиная с 20:30 во время вечеринки будут проходить мини-доклады. Каждые десять минут на сцену выходит докладчик со слайдами, и это его звездный час. Если вы — один из таких, и вам есть что сказать, смело отправляйте заявку — вы ещё успеваете.
Если вы всё это время сомневались, идти ли на Joker 2019, то надеюсь, мне удалось вас убедить. Приходите и разделите отличное настроение с 2000 участниками конференции Joker, которые уже приобрели билет и предвкушают настоящий Java-хардкор. Все еще есть возможность приобрести билеты, спешите запрыгнуть в последний вагон.
Автор: golodnyj