Что расскажут на Joker 2024: безумие в хорошем смысле слова

jimrpa-mzl2puggaklavg_6uv0g.jpeg

Пока многие ждут фильм «Джокер: Безумие на двоих», Java-разработчиков сильнее волнует приближающаяся конференция Joker 2024.

Про что-то на ней тоже можно сказать «безумие», но в хорошем смысле. Например, некоторым разработчикам безумно важна производительность, и они хотят считать каждую миллисекунду там, где другие скажут «и так сойдёт». На Joker будет подходящий им контент — вроде доклада о профилировании «Что можно успеть за половину миллисекунды?»

А кто-то из небольшой компании скажет: «По нашим меркам в VK Видео безумные масштабы и нагрузки». И на конференции можно будет заглянуть под капот этого проекта — в докладе о собственной реализации HTTP (S)-сервера для быстрой раздачи видеоконтента.

Отдельная история — «кейноуты», общие открывающие/закрывающие доклады. Они могут отходить от Java-специфики, так что один из них будет посвящён использованию ИИ современными художниками. И судя по описанию «ИИ сегодня — главный Джокер», там без некоторого безумия тоже не обойдётся.

А для тех, кому безумия не хочется, есть и много «обычных», но полезных докладов: о Spring, хранении данных, популярных инструментах… Публикуем всю программу конференции — смотрите, что в ней интересно для вас.

Содержание

  • Библиотеки и фреймворки

  • Инструменты и инфраструктура

  • Spring

  • JVM

  • Данные и их хранение

  • Производительность

  • Дизайн и архитектура

  • Асинхронное программирование

  • Фичи

  • API

  • Кейноуты

  • Другое

Библиотеки и фреймворки

jOOQ. Лекарство от Hibernate?

ii8jursal5s6-jmwz2d120qrceq.pngИлья Спицын

X5 Tech

Поговорим об SQL-driven работе с БД. Илья сравнит инструменты и расскажет о преимуществах jOOQ для построения сложных запросов. Покажет несколько примеров, где jOOQ может пригодиться разработчику.

Доклад будет полезен разработчикам, которые задумываются о поиске альтернативных инструментов для работы с БД.

Spring и kotlinx.serialization: мультиформатная десериализация

a6o5u2i0tkc7gdux4kxpl5b4j5q.pngАндрей Кулешов

Positive Data

В докладе вам расскажут, как работает kotlinx.serialization с точки зрения обычного пользователя. На реальном примере покажут, как ей пользоваться и что происходит у нее под капотом. Бонусом станет пример необычной проблемы, которую решали в Positive Data: десериализация данных, приходящих в один контроллер из разных форматов в единый формат GenericRecord без явного описания схемы класса в коде. Для этого будет использована Avro-схема, передаваемая на runtime, и знакомая всем, кто активно работает с Kafka.

Where Is the Logic of My Application?

6igg-8a-sq431bhk5gufpctz0rm.pngAndres Sacco

TravelX

Андрес рассмотрит в своем докладе следующие проблемы:

  • Как определить возможную архитектуру приложения?

  • Как создать тесты, которые валидируют различные слои приложения?

  • Как валидировать взаимодействие различных слоев?

  • Как вывести правила в библиотеку, чтобы импортировать во все приложения?

Цена докторской степени по Spring

kzdg5f0yszz6hi2irroypn8pfz8.pngАнтон Курако

Т-Банк

Копнем вглубь главной рабочей лошадки Spring Boot и поговорим о накопившихся проблемах, архитектурных особенностях и процессе разработки в Spring. Возможно ли современному разработчику писать Spring Boot-приложения без получения докторской степени, и какова ее цена? Также Антон расскажет, как в Т-Банке пришли к написанию фреймворка Kora.

Инструменты и инфраструктура

Автоматическая генерация тестов как битва с драконами

-9tvmmdfgf2ndlvuretmr9-lpps.jpegЕгор Куликов

Explyt

frvpxi6v3waemhqpgxvlaj5kyag.jpegИлья Муравьёв

Explyt

После анализа тестов в Java-приложениях становится ясно, что большинство из них подчиняется одному из шаблонов, чья реализация вручную требует большого количества рутинной работы. Если сгенерировать шаблон программно, останется только заполнить его данными и подкорректировать.

А если пойти дальше и автоматизировать подбор данных, чтобы не забыть про неочевидные сценарии? Можно — для этого существуют техники символьного исполнения и фаззинга. А что, если какие-то тесты в вашем проекте уже есть? Их можно использовать в качестве образцов для языковой модели при генерации новых тестов. В какой степени это скажется на качестве результата? Разберемся вместе.

Kubernetes, Grafana, Kibana и прочий смрадъ. Раньше было лучше

Обсудим тенденцию к искусственному усложнению ведения разработки проектов.

В настоящее время сетап любого Java-проекта начинается с разворачивания большого количества инструментов, и это отнимает большое количество времени и ресурсов. Есть ли в этом смысл и насколько целесообразно использование этих инструментов?

Вокруг много разговоров про Kubernetes, выступлений на конференциях, и многие разработчики уже не задумываются о целесообразности использования тех или иных решений. Действительно ли они облегчают нам жизнь, или это очередной хайп ради хайпа? Рассмотрим обратную сторону медали, поделимся опытом.

Spring

Spring Data R2DBC. Последний раз объясняю

h4klvyd9sw2ukmdq_igp5mqmpva.pngМихаил Поливаха

Сбер

В кругах Java-разработчиков существует довольно много неопределенности при работе с реактивными драйверами, в частности, с реализациями R2DBC. Несмотря на то, что уже имеется определенное понимание в отношении перформанса таких драйверов, очень важно понимать детали реализации реактивных драйверов, чтобы понять причину результатов.

Знание деталей реализации также позволяет понять работу транзакций в реактивном мире. И, наконец, часто достаточно полезным является рассмотрение исторической части вопроса, т. к. довольно много аспектов объясняются просто историческими обстоятельствами.

Рассмотрим все это шаг за шагом, начиная с наиболее старых реализаций реактивных драйверов и вплоть до самых современных.

Spring Kafka. Как приготовить и не выстрелить себе в ногу

bnbttmxyjul9qda2rxr1ynhkfq0.pngИван Головко

Альфа-Банк

Рассмотрим способы конфигурации Consumer / Producer при помощи Spring Kafka.

Пройдем по списку граблей и подводных камней в следующих темах (и не только):

  • Serde.

  • Concurrency.

  • Error Handling.

  • Committing Offsets.

Погрузимся в прикладные преимущества высокоуровневой абстракции над Apache Kafka Clients.

Spring Cloud Gateway MVC: гейтвей без проблем реактивного стека

zjfjxoqjqlxoxd--f_8d36xnd2g.pngАлександр Митин

Холдинг Т1

Последнее время в микросервисной архитектуре получил распространение паттерн API Gateway. В Java-мире практически стандартом стало использование Spring Cloud Gateway на Reactive стеке. Однако такая реализация часто приводит к кодовой базе, которую сложно писать, интерпретировать и поддерживать. Осознавая эти проблемы, в конце 2023 года команда Spring представила обновленный продукт Spring Cloud Gateway MVC, построенный на классических принципах.

Спикер расскажет о подводных камнях использования Spring Cloud Gateway MVC и порассуждает о целесообразности его использования и уходе от Reactive-стека.

Секреты в Java-сервисах на Spring: откуда взять и как обновлять «на горячую»

wnh6viudyxjvlfj1dubtmwccsii.jpegАндрей Чернов

СберТех

Практически всем современным сервисам для выполнения своих функций необходимы секретные параметры. Откуда их взять? Как безопасно доставить секреты в приложение и не скомпрометировать? Как обновлять секреты прямо под нагрузкой? В докладе вы найдете ответы на эти вопросы, а именно:

  • как безопасно получить секреты из HashiCorp Vault в приложении на Java;

  • как применить полученные файлы с секретами при старте Spring Boot-приложения;

  • как обновлять секреты «на горячую», не снимая нагрузку с сервиса, не рестартуя его и не используя rolling update.

Для большего понимания рассмотрим все это на примере конкретного сервиса Platform V Sessions Data.

JVM

Патчим байт-код сторонних библиотек в рантайме

d0tq3mw7ctwogc9qflzvuamaotg.pngАлександр Токарев

Яндекс

В докладе вам расскажут о способе, который разработали для патчинга Apache Spark в рантайме через хук на classloader c помощью JVM-функции javaagent и библиотеки Javassist, позволяющей манипулировать байт-кодом JVM на высоком уровне. Сначала Александр объяснит, как пришли к этому способу, вдохновившись технологией monkey patching в Python. Затем покажет, как можно поставить хук на classloader, используя javaagent.

В основной части доклада обсудим, как можно изменять байт-код на высоком уровне абстракции, и рассмотрим библиотеки, позволяющие это делать. Затем вам покажут четыре разных способа, которые придумали для патчинга исходных классов библиотеки, и как их реализовали с использованием библиотеки Javaassist.

В заключение немного порассуждаем о том, насколько этот способ удобен и надежен и как тестировать патченные классы.

FFM API — ничего общего с радио

4kzs54g1_pf6s0jqwhh90ky5pbw.pngНастя Лисицкая

Яндекс

Поговорим о Foreign Function & Memory API — альтернативном способе вызова нативных методов (например, на других языках) и работе с памятью неуправляемой JVM. Настя расскажет, зачем в Яндексе используют FFM API в сценарной разработке Алисы. Посмотрим, как пробовали внедрить, с чем по дороге столкнулись, какие эмоции испытали и что получили.

А можно погорячее? Чем и как мы прогреваем Spring-микросервисы

rrhytfrtoky7whvysntunfoewvw.pngСергей Балдин

Т-Банк

Обсудим проблематику прогрева Spring-микросервисов. Выясним, как обеспечить стабильные показатели latency при старте Spring-микросервисов в кластере Kubernetes и чем здесь может помочь прогрев. Посмотрим на различные методы прогрева, разберем их плюсы и минусы. Узнаем, почему ребята из команды надежности Т-Банка написали собственный инструмент для прогрева. Рассмотрим его основную функциональность и эффект от внедрения в продуктовые сервисы.

Во что компилируется Java

utbqfuxaeg3cyhlbbocs04pfsic.pngЮрий Баринов

VK

Краткий обзор байт-кода JVM и формата .class файла. Где применяется инструкция invokedynamic. В чем же разница между лямбдой и анонимным классом. Как работает конкатенация строк под капотом и зачем так сложно. Немного о том, как под капотом работает MethodHandle и что представляет собой скрытая инструкция invokehandle.

GraalVM Native Image: как правильно подойти к переходу на Native на примере тонкого клиента Ignite

yjtrayjhfkmb7ked70d63k8orju.pngАндрей Чухлебов

Сбер

В интернете много примеров использования GraalVM Native Image в рамках «hello world» проектов, где почти не возникает проблем, но не всегда все так радужно. В рамках доклада соберем грабли и решим проблемы, с которыми вы наверняка столкнетесь при переходе на Native Image, на примере тонкого клиента Ignite.

Данные и их хранение

Как PostgreSQL может сделать больно, когда не ожидаешь?

aslqfyblwbmlpc_nlntmomeq5n0.pngМихаил Жилин

Postgres Professional

На примере нескольких ярких инцидентов Михаил поделится опытом исследования проблем с производительностью в PostgreSQL:

  • Почему index scan / index only scan могут тормозить при адекватном плане запроса?

  • Почему индексы вообще могут не использоваться?

  • Почему может блокироваться таблица, если код приложения этого не делал?

  • Как время между приложением и базой может стать критическим фактором для производительности системы?

Spring Data Redis как неудачное решение

fpyrcfpsn3dxuux7x2icafpagmc.pngВалерий Торопов

Axenix

Валерий подробно рассмотрит особенности работы Spring Data, в частности, как этот фреймворк хранит данные, в каком формате и какие команды выполняет. Расскажет о возможных ограничениях и проблемах, с которыми можно столкнуться, и даст советы, как эффективно использовать Spring Data с Redis, несмотря на эти сложности.

Интеграция распределенных SQL-хранилищ с Java-фреймворками на примере YDB

ua6rcrbjxdvf2xxxr0rkld2guyq.pngКирилл Курдюков

YDB

Во время доклада рассмотрим, как поверх нативного клиента можно реализовать стандарт JDBC. Особое внимание уделим вопросам переиспользования существующего пула сессий клиента в сочетании с внешними пулами, такими как Hikari. Также рассмотрим различия между сессией и объектом java.sql.Connection.

С реализацией JDBC открывается возможность интеграции с популярными Java-фреймворками. Обсудим, как создать полноценные диалекты для двух версий Hibernate — 5 и 6. Поговорим об интеграции со Spring Data JDBC/JPA. Кирилл осветит тонкости и подводные камни, с которыми можно столкнуться, например, в методе save.

Для управления миграциями баз данных на примере YDB рассмотрим работу с инструментами Flyway и Liquibase. Эти фреймворки требуют реализации механизмов распределенной блокировки, что будет детально изложено в контексте различных СУБД.

Кроме того, разберемся, как разработать собственное расширение для фреймворка JOOQ. Завершим обсуждением реактивного стека, включая интеграцию R2DBC и выгоды, которые может предложить YDB в контексте реактивного программирования.

Jimmer ORM: альтернатива JPA

ssic6zpstxb-la_ofm1adpixajc.pngАлександр Белов

Сбер

Начнем с Hibernate и его болевых точек: overfetching, nested projections, Criteria API, nullability, L2 cache invalidation. Далее рассмотрим, как эти проблемы решены в Jimmer и насколько проще он позволяет решать типовые задачи.

Spring Data JDBC + функциональная архитектура = 4 года в проде. Полет отличный

ylqo-qd6isbxkyfjfpykvtv-gcm.jpegАлексей Жидков

Алексей расскажет свою историю о поиске простого девелоперского счастья и превращения своих проектов из больших комьев грязи в простые (насколько это возможно) и поддерживаемые системы.

Покажет на примере матрицы структуры зависимостей (DSM) и графа вызовов реальных проектов, что имеет в виду под большим комом грязи. Кратко расскажет, что такое декомпозиция модели на агрегаты и практичная функциональная архитектура, и как их применение влияет на DSM и граф вызовов.

По ходу дела расскажет, почему решил, что JPA не совместима с декомпозицией модели и функциональной архитектурой и почему среди всех альтернатив выбрал Spring Data JDBC.

Наконец, расскажет, с какими проблемами в использовании Spring Data JDBC в пяти проектах с 2021 года столкнулся и как их обошел.

Производительность

Непоследовательные последовательности: производительность sequence, stream и collection в JVM

zqutak3na7denukvvozanfnmcwo.pngМаксим Сидоров

SberDevices

qg-lc6bdc6lgnau6kwebhafmhwk.jpegМаксим Митюшкин

SberDevices

Устроим соревнование, измерим и сравним производительность sequence, stream и collection.

Рассмотрим, как устроены под капотом Kotlin sequence и Java stream. Сравним их с коллекциями и определим, в каких случаях они дают профит и насколько он большой. А также поговорим о некоторых нюансах работы виртуальной машины.

Обсудим странные закономерности, которые удалось обнаружить в ходе исследования, и попробуем объяснить их с помощью JIT-профайлера.

Эволюция раздачи видео VK: от 10 Гбит/с по HTTP до 160 Гбит/с по HTTPS с одной машины

jef90edycoagm4l5m8rl6culis4.pngОлег Ларионов

VK / VK Видео

В докладе Олег опишет путь разработки собственной реализации HTTP (S)-сервера для быстрой раздачи видеоконтента в VK Видео.

Сервер написан на Java под Linux с использованием фреймворка one-nio, библиотеки OpenSSL. Вместе пройдем путь в 10 лет от первой версии сервера на 20 Гбит/с до экспериментальной на 160 Гбит/с. Олег покажет, с какими сложностями при вертикальном масштабировании приложения столкнулись, как использовали async-profiler для поиска причин. Расскажет, какие фичи OpenSSL 3 прикрутили к one-nio. Даст несколько советов по увеличению производительности.

Что можно успеть за половину миллисекунды?

0jcqcpyo2d35dahg5v5iymibrag.jpegСергей Мельников

Dijkstra Markets

Оптимизация производительности кода — ключевой вызов для разработчиков, особенно когда небольшой участок кода работает медленно. В докладе рассмотрим различные подходы к профилированию, их достоинства и недостатки, а также современные технологии. Начнем с постановки проблемы медленного выполнения небольших кусков кода и перейдем к обзору профилировщиков, сравнивая статистические и трассирующие методы.

Обсудим основные недостатки статистических профилировщиков и их влияние на точность результатов, а затем рассмотрим способы минимизации накладных расходов в трассирующих профилировщиках. Простыми методами использования счетчиков производительности, такими как в async-profiler, упростим профилирование. Изучим, как эффективно анализировать профили с помощью FlameChart, а также поговорим о том, почему он не всегда помогает.

Путеводитель по анализу памяти JVM-приложений

ea85vtyohtbls_bjkb5-jmkyf-u.jpegВладимир Плизга

Tibbo Systems

Проблемы производительности JVM часто заставляют ковыряться в памяти приложения: то общие метрики надо посмотреть, а то и залезть в самую глубь за тем самым байтом. И хорошо бы знать заранее, где, что и как можно найти, а не судорожно гуглить и перебирать варианты, когда на production уже пригорело…

В докладе посмотрим на типичные проблемы с памятью приложений на HotSpot JVM и подходящие им способы анализа:

  • вручную и полуавтоматически;

  • на горячую и постмортем;

  • встроенными средствами JVM/JDK и сторонними инструментами.

По следам 1BRC: трюки и подходы к оптимизации производительности

0momyqxe1f6lni50fiygrr05nos.jpegАлександр Ланцов

Мир Plat.Form

Не так давно завершился One Billion Row Challenge (1BRC) — это забавный конкурс на тему того, насколько далеко можно зайти в погоне за производительностью в современных версиях Java.

В докладе последовательно пойдем от самой простой базовой реализации задачи к самым быстрым, рассмотрев многочисленные трюки, связанные с агрегированием миллиарда строк из текстового файла.

Разумеется, помимо самого кода, обсудим трюки и методы, которые давали наибольший прирост производительности, и порассуждаем над их использованием в реальных проектах.

Kotlin Coroutines: нужны ли они нам и стоит ли переходить на них?

fl31ea4y5urqnvzbshpciguymtu.pngАндрей Соловьев

Группа «Рексофт»

В ходе доклада будем решать типичную рабочую задачу агрегации данных для пользователя из несколько источников. Например, поиск авиабилетов из пяти источников для каждого пользователя.

Рассмотрим известные технологии для async программирования и сравним с корутинами. Начнем с обзора задачи, затем перейдем к технологиям для ее решения. Обсудим билдеры и «кишки» корутин, а также решения на известных технологиях. Сравним производительность.

Дизайн и архитектура

Фоновые процессы — на чем реализовывать и почему мы выбрали Temporal

u_j7yta9gi8dh0ctdef_dgz2muc.pngПётр Сальников

поле.рф

На JPoint 2024 спикер уже рассказывал про свой опыт использования Temporal.

В этот раз он затронет более узкую тему — фоновые процессы. Расскажет как про джобы по расписанию, так и про асинхронную обработку запросов и данных. Сравнит с другими вариантами реализации логики по расписанию.

Java с правильной ориентацией: DOP

q_s7ozwjhzkq9-ydrd9deyfram8.pngФеликс Десятириков

Холдинг Т1 | Иннотех

Поговорим про дата-ориентированное программирование в контексте эволюции Java.

Посмотрим, как зарождался DOP в рамках проекта Amber. Увидим, как по пути DOP идет Java. Какие фичи появляются по дороге и как они друг друга за собой тянут. Немного коснемся матчасти: рассмотрим, что у DOP под капотом и как алгебраические типы данных делают код более безопасным.

В ходе доклада реализуем систему иерархического разделения доступов и проследим ее качественное изменение от одной версии Java к другой.

Универсальный оркестратор бизнес-процессов Conductor. Обзор возможностей и их расширение

yyrhsxuq4q1vgv8wphp7-ep7rrk.pngГлеб Королькевич

Совкомбанк Технологии

В докладе Глеб представит квинтэссенцию пятилетнего опыта использования Conductor и оркестрации бизнес-процессов. Три года провели на продуктиве, столкнулись с множеством вызовов, наломали дров, баги превращали в фичи, а гневные отзывы пользователей — в точки роста. Все разработчики любят страдать, так что спикер с радостью расскажет о всех бедах, которые ждут избранников продукта Conductor!

Он ответит на вопросы: какой оркестратор выбрать? В чем их разница, какой лучше в конкретной ситуации? Workflow engine или BPMN? В чем преимущества и недостатки Conductor? Community-версия — prod ready? Как написать свои модули для оркестратора?

Примеры кода прилагаются.

Разрабатываем модульный бэкенд, используя стандартные возможности Spring Boot

vlcdjsdkbfibbxa5u2vllrycb60.pngВадим Бубликов

Газпромбанк

Опыт Вадима во многом связан с разработкой бэк-офисных приложений, т. е. приложений, обеспечивающих внутренние процессы компании. Такие приложения обычно содержат большое количество бизнес-логики и в то же время обслуживают небольшое количество пользователей. Исходя из этого, применение микросервисной архитектуры к подобным приложениям неоптимально, поскольку возникает дополнительная сложность на всех этапах разработки и дальнейшей эксплуатации.

В ходе доклада обсудим ситуации, когда монолитное приложение — лучшее решение. Рассмотрим несколько подходов к разбиению таких приложений на модули.

Асинхронное программирование

Надежно отправляем события в Apache Kafka. От CDC до паттерна Transactional Outbox

lxx7vioqfqby4mf6ejyop8fn0d8.pngАлексей Кашин

Т-Банк

Алексей рассмотрит ключевые сложности и особенности надежной отправки событий в Apache Kafka, используя разные решения и подходы, и поделится опытом выбора оптимальных решений для различных ситуаций.

Доклад будет полезен инженерам, использующим Apache Kafka для надежной отправки событий после сохранения данных в реляционных базах, с акцентом на гарантии доставки и предотвращение потерь.

Functional Streams

zsbppxgyo41_xown-r_sqkmjciy.jpegАхтям Сакаев

Яндекс

О бесконечных и не очень стримах вокруг нас — данные, состояние, процессы и время.

Рекурсия и корекурсия, полезные для решения практических задач.

Будет особенно интересно любителям функционального программирования и просто интересно всем разработчикам без исключения.

Построение event-driven приложения с Apache Flink

dhfbtigkzwp_d9zt6xcr8secof4.jpegДаниил Туликов

Т-Банк

Изначально в Т-Банке стояла задача: построить платформу расчета предложений по кредитным (и не только) продуктам, не требующим долгих проверок, гарантирующую одобрение с вероятностью 99,9% после принятия предложения клиентом. Иными словами, создать систему, которая гарантирует «что на коробке, то и внутри коробки».

Даниил расскажет на основе схожего с задачей примера, как использовать фреймворк потоковой обработки для решения задачи из реального мира.

Использование акторной модели в системах финансовых транзакций

tbwkg1twwf-2xmjaiq3gfkum_b8.pngНикита Мельников

Atlantic Money

В докладе рассмотрим использование Actor Model в системах обработки денежных переводов.

Поговорим о том, как Kafka помогает создать устойчивое решение, которое минимизирует проблемы, связанные с конкурентностью. Показывая, что идеальная конкурентность — это ее полное отсутствие.

Вы узнаете о типичных проблемах при обработке финансовых транзакций. Обсудим возможные пути их решения и подробно рассмотрим архитектуру, к которой пришли в проекте докладчика.

Фичи

Продвинутые системы типов. Чего еще мне не хватает в Java из Rust

i3prnkwqrdrv4aumzjwtvj5gvb4.pngПётр Портнов

Ozon

Один из известных подходов к написанию хорошо понятного и лишенного определенного класса ошибок кода — использование языковых фич, позволяющих на уровне системы типов более строго и логично описать структуру всего и вся. Поговорим о том, что для этого уже доступно в Java, особенно с учетом нововведений вроде паттерн-матчинга. Чего не хватает, что уже идеально, а что «не светит». Попытаемся понять, так ли все это нужно или лучше жить в мире POJO.

Разберем, что не так с err в Go, что такое never-тип и при чем тут монады. Пётр сравнит подходы в других языках внутри и вне JVM-экосистемы и подкрепит это личным опытом написания удобного API для продвинутого парсинга Protobuf-запросов.

Будут холивары о том, какой язык «сделал все правильно», веселое применение скучной теории и споры о том, что такое void. Поразмышляем, что джавистам стоит украсть у других языков.

Java 23. Горячие JEP’ы

Поговорим про новый релиз Java 23: какие JEP повлияют на каждодневное написание кода, какой API изменился, а какие JEP прошли дальше без изменений — и чего ждать в будущем.

Во время круглого стола обсудим:

  • Паттерн-матчинг и новый матчинг по примитивным типам.

  • Импорт модулей.

  • Вторую версию Class-File API от Брайана Гетца.

  • Дефолтный режим сборки поколениями для ZGC.

  • Маркдаун для документации.

  • Изменения в JEP, которые пришли из предыдущего релиза.

  • Продолжение депрекации Unsafe.

  • JEP, которые опять в превью и без изменений.

  • Structured concurrency, stream gatherers, Vector API.

API

Кунг-фу кастомизации OpenAPI

0d_mdcqvre0yojy4cza4ykpbvkq.jpegАлександра Волушкова

Axenix

Во время интеграции OpenAPI в проекты и разработки собственных продуктов в Axenix столкнулись с рядом сложностей. Пришлось изучить принципы работы SpringDoc и OpenAPI-генератора, чтобы научиться настраивать их под нужды проектов.

Александра расскажет о возможных способах настройки OpenAPI-генератора и SpringDoc UI. На примерах покажет, как можно кастомизировать генерацию кода, генерацию спецификации по коду, а также решить проблемы с наследованием.

CRUD REST API. Просто, быстро, надежно

gfowaoq8g_uatudok_lrsgqdw_u.jpegИлья Кучмин

Amplicode

Разработка CRUD REST API — дело несложное: четыре REST-эндпоинта, и дело в шляпе. Хотя, постойте. Четыре ли? Может, все-таки пять? Матерые «крудоделы» вам сразу скажут — минимум семь. И это далеко не единственный вопрос, на который нужно ответить при проектировании и разработке CRUD REST API.

В рамках доклада детально разберемся в том, что представляет собой CRUD REST API. Выясним, что его делает именно CRUD API и какие требования к нему предъявляются. А также разберемся в деталях реализации и подводных камнях.

Так ли ваш CRUD API хорош, как вы думаете?

Кейноуты

Обратная совместимость в Java-мире

4i14plsysbqjvztmqjfmnra-vey.jpegВладимир Ситников

Вспомним и разберем примеры того, как соблюдается и не соблюдается обратная совместимость, чего это стоит и какие есть рекомендации.

Что такое LLVM и при чем здесь Java?

farkobztzgio_mhabyjuctbloao.pngАндрей Боханко

LLVM — один из самых важных проектов с открытым исходным кодом в мире. На его основе построено огромное количество инструментов, которыми все мы, прямо или косвенно, пользуемся каждый день. И да, некоторые инструменты из мира Java тоже сделаны на основе LLVM!

Этот доклад — введение в проект LLVM простыми словами и для простых смертных. Приходите, если вы никогда не разрабатывали компиляторы, всегда хотели узнать что такое LLVM, но боялись спросить.

Искусственный Joker-интеллект: версия современных художников

ytpalbluef6t4of6pnjrvzgayfg.pngДмитрий Галкин

Томский государственный университет

ИИ сегодня — главный Джокер. Но современные художники это знали давно! И полюбили его.

Дмитрий покажет это на кейсах и неординарных сюжетах. С одной стороны, современные художники используют передовые технологии, порождая инновационные идеи и разработки. Это видно в истории различных проектов технологического искусства. Но современный художник работает не столько с самим технологическим решением — гаджетом или интерфейсом, —, но и концептами будущего мира. Например, такого, где можно «на коленке» реконструировать по ДНК с помощью нейросети образ (портрет) человека, случайно насорившего своим биомусором в кафе или чьем-то будуаре. Насколько веселая жизнь нас ждет с гигантским истерическим роботом, который якобы пытается найти с человеком психологический контакт. А может, мы станем добрее, когда ИИ расшифрует язык птиц и животных, чтобы подарить нам новый мир и радость общения?

Creating Independent Development Tools: The Gitee Experience

csuyrvcw5wehq3rxk7wljjrrkng.pngYong Xu

OSChina

В ответ на блокировку российских репозиториев на международных платформах российские разработчики активно работают над созданием независимого ПО для хостинга своих проектов, таких как среды разработки, Git-сервисы для хостинга, инструменты для управления сообществами и многое другое. В Китае уже есть успешный опыт создания собственной платформы — Gitee. Она разработана для хостинга репозиториев исходного кода. На этой платформе разработчики ведут проекты, управляют версиями кода и сотрудничают с другими разработчиками.

Спикер поделится историей создания проекта, развития системы, расскажет, как строится взаимодействие сообщества, какие инструменты платформа предоставляет разработчикам, а также о том, какие будущее ждет эти технологии. Он также затронет тему интеграции платформы с искусственным интеллектом.

Другое

Круглый стол «Concurrency»

За круглым столом обсудим тему Concurrency:

  • Поговорим про проблемы, свойственные concurrent-коду.

  • Обсудим рецепты и инструменты против concurrent-ошибок.

  • Разберем популярные заблуждения, касающиеся многопоточности, производительности и того, как код на самом деле работает.

В фокусе внимания будет server-side, но так или иначе затронем концепции из других языков.

Альтернативные фреймворки для Spring

mes7mgjmdvf6oo5mys6gutvvre0.pngДенис Рылеев

РСХБ-Интех

Рассмотрим причины увеличения размера дистрибутива Spring и медленной скорости запуска приложений на нем. Обсудим реактивный подход, его популярность и возможности кастомизации. Оценим альтернативные фреймворки — Vertx, Micronaut и Quarkus, их ключевые особенности, такие как поддержка RxJava и другие библиотеки для реактивного программирования, собственные реализации потоков и встроенную поддержку WebSocket и HTTP/2. Также проанализируем технические метрики этих фреймворков и возможные ниши для каждого из них.

В конце сделаем вывод о выборе фреймворка, зависимости от требований проекта и важности учета технических метрик и возможностей кастомизации.

Инструменты Java-разработки: прошлое, настоящее, будущее

Поговорим на следующие темы:

  • Что такое IDE 3.0?

  • Как ускорить разработку на 200% с помощью AI?

  • Облачные среды разработки: дичь или спасение?

  • Стоит ли при жизни стремиться в облако, или остаемся на desktop?

  • Кроссплатформенная разработка 22 века — что нас ждет?!

Lightning Talks

Lightning talks — это отличный формат, чтобы динамично обсудить тему и найти единомышленников. Вас ждут пятнадцатиминутные доклады на профессиональные или околопрофессиональные темы и живые обсуждения. Давно хотели попробовать себя в роли спикера? Вам не терпится поделиться с миром идеями или кейсами из рабочей практики? Посмотрели выступления Joker и чувствуете, что можете добавить к докладам что-то свое? Тогда подавайте заявку заранее по ссылке или записывайтесь на выступление прямо на площадке!

Заключение

Что из этого вам интереснее всего? Пишите в комментариях, фидбек всегда полезен.

А нам остаётся напомнить главное:

  • Докладами конференция не ограничивается, общение не менее важно. Но это мы уже не можем описать хабрапостом, всё зависит от вас.

  • 9 октября у конференции онлайн-день, а вот 15–16 октября на ваше усмотрение: можно лично поучаствовать в Петербурге, можно подключиться удалённо.

  • Вся информация — на сайте, билеты — там же.

© Habrahabr.ru