Как ускорить запуск JVM? Каково переходить с SQL на Cassandra? Что нас ждёт в Java 21? Как профилируют в Alibaba? Какие части Java были сделаны в России? И как в доклады на Java-конференции прокралось не только слово «Kotlin», но и «Python» с «PHP»?

На все эти и многие другие вопросы ответит Joker 2023. До конференции остался месяц, её программа готова — представляем её Хабру.

Содержание

  • Кейноуты

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

  • Spring

  • Языки (Java и не только)

  • Работа с базами данных

  • Архитектура

  • Другое

  • В заключение


Кейноуты

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


Демистифицируем машинное обучение – из разработчика в ML-инженеры

Дмитрий Бугайченко

Сбер

На Joker собираются опытные разработчики, но многие из них ещё не имели дел с машинным обучением — а тем временем эта тема становится всё актуальнее. Этот доклад поможет быстро наверстать главное.

Разберем общие понятия (data mining, machine learning, artificial intelligence, big data), посмотрим на основные принципы на примерах и обсудим инструменты, которые используют в промышленном ML. Также спикер расскажет о новой востребованной специализации – ML-инженере: кто это, какие задачи решает и что нужно, чтобы войти в эту нишу.


Java в России: от самого начала до наших дней

Владимир Воскресенский

Azul Systems

Зачастую российские Java-разработчики толком не знают, что некоторые части этой платформы создавались в России. Владимир в Java-мире уже 20 лет, работал в Sun и Oracle — так что может рассказать об этом как следует.

Какие продукты создавались в России и кем? Как вообще так получилось, что Java частично разрабатывалась и разрабатывается в России? Кто были главными игроками? Кто и как принимал решения? Как эти решения сказались на судьбе платформы Java? Будут факты, домыслы, сплетни и слухи. Всё, как мы любим.


Квантовые вычисления: основные идеи и современное состояние технологии

Станислав Страупе

МГУ имени М.В. Ломоносова/Российский квантовый центр

В повседневной жизни Java-разработчика квантовые компьютеры не фигурируют, но будет нелишним понимать и «что это вообще», и «до какой стадии всё уже дошло».

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

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


Запредельный язык: нелитературный русский, акустика речи и фонетика рэпа

Игорь Исаев

Институт языкознания РАН

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

Обсудим русские диалекты: как они звучат, почему такие, почему так долго не исчезают.

Поговорим об акустическом анализе речи. Затронем распознавание и порождение речи, а также как филологи читают акустический спектр. Узнаем, зачем гуманитариям акустическая физика.


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

Прогревая JVM: CRaC и другие фокусы

Александр Ланцов

Мир Plat.Form

Из-за наличия JIT-компиляции в «классических» JVM пиковая производительность приложений достигается не мгновенно при запуске, а в продолжительном процессе сбора профиля текущего исполнения и компиляции кода, который может занимать секунды, минуты, а иногда и часы. В некоторых задачах (например, алгоритмической торговле на бирже) долгое время старта и прогрева приложения может быть критическим фактором, который нужно минимизировать.

Для решения этой проблемы существует несколько подходов: ручной прогрев, AOT-компиляция, переиспользование существующего JIT-профиля, новая технология Coordinated Restore at Checkpoint. Рассмотрим их достоинства, недостатки и особенности.


Observability Beyond the Three Pillars — Continuous Profiling With Alibaba Dragonwell

Sanhong Li

Alibaba

В Alibaba активно используют Java, и на JPoint 2018 уже можно было послушать интересное об опыте компании. А теперь узнаем больше о её подходе к профилированию.

Observability — важное понятие, и обычно в него включают три компонента: логи, метрики и трассировку. Однако здесь также важно профилирование в качестве дополнительного сигнала, помогающего получить лучшее представление о работе вашего приложения. JFR — малозатратная технология профилирования, реализованная в OpenJDK — отличный базовый инструмент для обеспечения observability в Java.

В докладе Sanhong представит основы JFR, поделится подробностями того, как JFR используется в Alibaba Cloud. Он опишет, как в Alibaba Dragonwell разрабатываются основанные на JFR фичи для непрерывного профайлинга, а потом расскажет, как они используют возможность непрерывного профайлинга для решения проблем в реальном мире. Хотя специфика ваших проектов отличается от Alibaba, ход мысли команды может в любом случае оказаться полезным.


Как писать в Apache Ignite быстро

Григорий Доможиров

Joom

Казалось бы, запись данных в cache – базовая операция. Однако есть как минимум 3 способа это сделать, и рекомендуемый – не всегда самый быстрый.

Спикер сравнит методы API, расскажет про подводные камни, продемонстрирует несколько трюков и представит бенчмарки влияния на скорость записи различных параметров: наличия SQL, размера кластера, количества реплик и прочего.


Дебаггинг продакшена: без перекладывания, без остановок, без риска

Артём Дроздов

Lightrun

Обсудим, в чем сложность дебаггинга продакшена в сравнении с обычной отладкой на локальной (или удаленной) машине. Посмотрим на традиционный подход: обложить логами и попробовать воспроизвести проблему. И чуть менее традиционный: Hot Code Replacement с помощью java.lang.instrument.Instrumentation. Взвесим их ограничения и перейдем к сладенькому: использованию JVMTI и коммерческому продукту на его основе.


Off-heap вместо трех JEP'ов

Дмитрий Погорелов

Дзен

Дмитрий расскажет, как использовать off-heap: поделится «рецептами» реализации и идеями эффективного использования. Сore Java для тех, кому интересны низкоуровневые оптимизации.


Java в контейнере: особенности эксплуатации

Алексей Рагозин

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

Но если что-то может пойти не так, надо ставить вопрос не «если», а «когда». Что же может пойти не так в контейнеризованной JVM? Чтобы дать некоторые ответы на этот вопрос, копнуть придется глубоко. В докладе будут освещены нюансы работы Linux, контейнеризации и JVM друг с другом.

Основные темы доклада: использование ресурсов системы и особенности работы лимитов, сетевые особенности контейнеров и диагностика JVM в контейнере.


IR JIT Framework: база для следующего поколения JIT в PHP

Дмитрий Стогов

Zend by Perforce

В 2020 году команда спикера выпустила PHP-8.0, в котором впервые представили сразу два JIT компилятора (function и tracing JIT). Решения, которые были приняты при разработке тех версий, позволили получить результат за сравнительно небольшое время. Однако эти же решения создают трудности при оптимизации кода, поддержке и т. д.

В PHP-9 они собираются строить JIT на основе IR Framework, разрабатываемого отдельно. PHP JIT будет только генерировать некий IR, а все вопросы, связанные с оптимизацией, распределением регистров и генерацией кода, будут решаться отдельной библиотекой, которая ничего не знает про PHP (это своего рода аналог LLVM, но заточенный под JIT).

Проект доступен на https://github.com/dstogov/ir — про него спикер и будет рассказывать. Разработчики, знающие Java HotSpot C2 или V8 TurboFun, увидят много знакомого.


Thread Wars: войны клонов на страницах Wiki

Александр Шахов

Тинькофф

Даниил Любаев

Разрабатывать программы сложно. Разрабатывать высокопроизводительные программы еще сложнее. И многопоточность в этом только добавляет проблем. На примере приложения, единственной целью которого является поиск пути между статьями Wikipedia, спикеры покажут, как использование различных технологий для написания параллельного кода влияет на читаемость и производительность.

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


Удивительная история развития сортировки в JDK

Владимир Ярославский

Сбер

С момента появления JDK для сортировки простых типов использовалась классическая (с одним опорным элементом) быстрая сортировка (Quicksort). В ноябре 2009 года в JDK 7 появился предложенный спикером улучшенный алгоритм быстрой сортировки Dual-Pivot Quicksort, который в 1,5–3,5 раза быстрее предыдущей версии. Тогда же и Timsort заменил Merge sort для сортировки объектов.

За последние 14 лет Dual-Pivot Quicksort неоднократно улучшался по сравнению с первоначальной версией. Какие оптимизации и приемы использовались? Как повышалась производительность? Как правильно тестировать сортировку? Эти и многие другое вопросы затронет спикер.

Доклад заинтересует не только разработчиков, но и математиков, любителей алгоритмов, тестировщиков, а также всех тех, кто стремится к еще более эффективному коду и кто хочет внести свой вклад в развитие JDK.


Spring

Генерация тестов для Spring: из чего же, из чего же сделаны тесты

Денис Фокин

Huawei

Егор Куликов

Huawei

Как правило, чем проще написать тест, тем сложнее фреймворк для его написания. Денис и Егор взяли UnitTestBot – инструмент для автоматической генерации тестов – и познакомили его с миром Spring-приложений.

Спикеры расскажут о пути, который прошел их инструмент: как познакомили его с юнит-тестами, а потом с интеграционными тестами. Теперь UnitTestBot знает о Spring-аннотациях, контекстах, постпроцессорах, тестовых конфигурациях.

Приходите послушать о том, как UnitTestBot учился анализировать Spring, а вместе с ним училась и команда.


Spring Security: повседневное и неочевидное

Павел Кислов

Домклик

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

Такой Spring Security — это удобно, привычно и понятно. Совсем другая тень Spring подступает к нам за плечи, когда мы садимся делать что-то с нуля, особенно если всё, что касается Security, чуть более сложно, чем в обучающих курсах. Мы пишем код, и в нашей голове возникает масса вопросов. Оказывается, в понимании и системности знаний есть пробелы.

В докладе покрутим Spring Security на примере домашнего проекта, поговорим об аспектах Spring Security, которым уделено мало внимания, словим «видеоэффекты» и сделаем выводы.


Разгоняем вставку больших данных Spring + PostgreSQL

Дмитрий Фатов

Газпромбанк

Всем нам очень часто приходится встречаться с оптимизацией различных бизнес-процессов. В докладе спикер расскажет о проблемах медленной вставки данных в БД с использованием Spring, а также о том, как можно ускорить этот процесс от простых настроек до использования кастомных методов PostgreSQL.


Reactive для CRUD: фантазии и реальность

Антон Котов

Ростелеком ИТ

Казалось бы, что может быть проще самого простого CRUD-сервиса, тем более на Spring? Тем не менее, многообразие технологий и подходов для решения самых базовых проблем не дает нам однозначного ответа, когда лучше использовать ту или иную технологию.

В последнее время набирают популярность реактивные технологии, такие как WebFlux, в том числе на уровне взаимодействия с реляционными базами данных R2DBC. Появился и новый подход Project Loom.

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


Java, сделай мне больно!

Егор Зиборов

Сбер

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

Спикер на примерах (где будет фигурировать Spring) расскажет о неочевидных ошибках, которые ловили в продакшене, как искали их причины и как их можно было бы избежать.


Языки (Java и не только)

Прокачка от 17 до 21. Большое путешествие к новой Java LTS

Олег Чирухин

Axiom JDK

Обзор основных фич Java 21. Поговорим о длинной дороге до Java 21, а также обсудим, как устроен процесс разработки в OpenJDK и что такое JEP и JSR. Пройдемся по всем основным JEP'ам, останавливаясь на самых интересных типа Virtual Threads, и посмотрим, чего стоило сюда добраться.


За кулисами эволюции Java на примере pattern matching

Олег Естехин

Yandex Cloud

С точки зрения прикладного программиста новые возможности Java появляются сами собой и сразу в финальном виде – когда к моменту выхода новой версии Java есть все необходимые обзоры и руководства, IDE предлагают рефакторинг имеющегося кода в новый вид, а инициативные коллеги приносят PR'ы, в которых уже все сделано.

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

На примере новых возможностей pattern matching в Java 21 спикер покажет несколько находок, которые позволили ему не только глубже понять работу шаблонов, но и проникнуться тем, как процесс разработки языка программирования отличается от программирования на этом языке.


Пишем на Idiomatic Kotlin

Александр Нозик

МФТИ

Часто приходится слышать, что Kotlin – это «синтаксический сахар» для Java. Но большинство из тех, кто так говорит, не знают о том, что на самом деле существует два разных Kotlin. Один из них – это better Java, позволяет писать код на Java более удобным способом. Второй открывают для себя люди, которые пишут на Kotlin полгода и больше. Это Idiomatic Kotlin.

Во время воркшопа попробуем понять, в чем разница. А сделаем мы это на практике. Возьмем присланные вами примеры кода на Java и других языках (при условии, что спикер сможет прочитать этот язык), попробуем переписать их на Idiomatiс Kotlin и обсудим, в чем отличия.

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


А тем временем Kotlin: фичи последних версий и его новый компилятор

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

Huawei

Анжелика Походун

За последний год для Kotlin активно выпускались релизы, а основным лейтмотивом года стала работа над K2.

В докладе спикеры разберут, что скрыто под часто встречающимися акронимами IR и K2, и раскроют, почему ведется активная работа над компилятором. А также расскажут про обновления языка с 7 по 9 версии и бонусом – про планы разработчиков на будущее и про другие обновления, которые вы могли упустить.


Путешествие из Java в Python: два мира — один JEP

Дмитрий Морозовский

Huawei

Спикер расскажет о своем опыте запуска Python-кода внутри JVM: зачем это нужно, какие подходы существуют, какая производительность, какие есть плюсы и минусы.

Дмитрий подробно расскажет о технологии JEP — как отлаживать и запускать такие приложения. А еще разберет пример запуска GPT inference внутри Spring Boot-микросервиса.


Работа с базами данных

Batch select, корутины и миллион RPS

Александр Маторин

Сбер

В спецификации JDBC и различных Java-библиотеках есть API, позволяющие делать batch update и insert. Данный подход позволяет увеличить производительность обращения к БД в десятки раз. Но нет стандартного способа использования batch select.

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

В докладе будут примеры на Kotlin (с корутинами) и PostgreSQL, но принципы можно использовать на Java с асинхронным фреймворком и любой реляционной БД.


С SQL на Cassandra

Александр Пащенко

VK

Доклад посвящен нашему переходу от SQL к Cassandra. И это не так просто: не получится просто перенести таблицы и заменить запросы с SQL на CQL.

В докладе демонстрируются практики построения схем и запросов на реальных примерах, а наши требования к быстродействию запросов достаточны высоки — 99 персентиль менее 10 мс.

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

Доклад будет полезен как тем, кто уже начинает использовать Cassandra, так и тем, кто только думает переходить на нее.


50 оттенков Join в Apache Lucene

Михаил Хлуднев

RNT Group

Операция Join, как правило, объявляется бедным родственником в NoSQL, в отличие от глубокой проработки в реляционных базах. Доклад рассматривает случаи, когда операция соединения является необходимой — ее основные аспекты и имеющиеся реализации. Предметно рассматриваются поисковые сервера Apache Lucene/Solr, Elasticsearch, OpenSearch, а также Cassandra и ClickHouse.


Отказоустойчивый конечный автомат на Java и SQL, который не дает встрече в Яндекс Телемосте раздвоиться

Дмитрий Некрылов

Yandex Технологии

Медиасерверы иногда падают. Автохилинг пытается их подменить, но пользователи могут оказаться на разных медиасерверах — и конференции раздваиваются.

Как от такого защищаться? С помощью высокопроизводительной и математически корректной реализации конечного автомата на Java и SQL!

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


Индексация в поисковой платформе Ozon

Денис Габайдулин

Ozon

Доклад посвящен созданию поискового движка Ozon, который успешно функционирует уже более двух лет. Рассмотрим в деталях архитектуру и реализацию важной части поискового движка — подсистемы индексации документов. Разберем, как различные архитектурные решения помогли нам обеспечить масштабируемость и отказоустойчивость сервиса. Также рассмотрим ряд практических оптимизаций в Java-приложении с использованием инструментов профилирования.

Движок основан на популярной библиотеке Apache Lucene, которая является стандартом в области поисковых решений на языке Java (Elasticsearch, Solr, OpenSearch и многие проприетарные поисковые системы). В рамках доклада рассмотрим возможности этой библиотеки для сборки индексов и наилучшие способы ее эффективного использования.

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


Утилита стратегического мониторинга PostgreSQL — pg_profile

Андрей Зубков

Postgres Professional

Основная задача стратегического мониторинга — предоставление количественной информации о наиболее ресурсоемких активностях СУБД. Такая информация очень полезна для анализа нагрузки СУБД, например, при проведении нагрузочного тестирования.

Стратегический мониторинг сам по себе никакие проблемы не решает, но может подсказать, на что обратить внимание. Одним из средств стратегического мониторинга является расширение pg_profile/pgpro_pwr. Спикер расскажет об архитектуре, возможностях, особенностях работы и способах применения этих расширений.

Доклад будет интересен всем, кто работает с СУБД Postgres — администраторам баз данных, инженерам нагрузочного тестирования и разработчикам приложений, непосредственно взаимодействующих с базами данных Postgres.


Переписывая историю: от инструментов версионирования БД к практике

Александр Шустанов

Haulmont

Работа с реляционными базами данных часто сопровождается проблемами версионирования. Технологии Liquibase и Flyway, казалось бы, обещают легкое их решение. Однако иметь молоток не значит, что вы сможете успешно забить гвоздь.

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

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


Архитектура

Правда ли, что Dubbo — это как gRPC, но из Китая?

Александр Козлов

СберТех

Максим Чудновский

СберТех

Когда перед нами встает потребность разработать новый микросервис, то муки выбора сетевого стека и фреймворка нас практически не донимают: мы просто возьмем HTTP для REST-like API, ⁣а для RPC будет gRPC. Но правильно ли мы поступаем? Стоит ли нам рассматривать другие решения, и главное, стоит ли использовать что-то необычное в нагруженном продакшне?

В докладе разберем эти вопросы. Возьмем экзотичный ⁣фреймворк Dubbo, разберем его архитектуру по полочкам, а потом напишем на нем сервис и узнаем, насколько просто это сделать.


Стейт-машины (The Good, The Bad and The Ugly)

Дарья Андреева

Яндекс 360

На примере Биллинга 360 узнаем, как Дарья с командой решили проблему реализации стейт-машин с помощью spring-state-machine, а также как можно было иначе к ней подойти. Рассмотрим и антипримеры того, когда решать такую задачу не нужно вовсе.

Будет интересно всем, кто когда-либо сталкивался с проектированием систем, основанных на состояниях.


OpenAPI и как его можно применить для Kafka

Александра Волушкова

Axenix

API-First — один из популярных подходов к проектированию серверных приложений. Для обеспечения этого подхода создано множество программных продуктов. Однако сложно найти продукт, который поможет реализовать этот подход для серверных приложений, использующих брокеры сообщений в качестве средства интеграции — такие, как Apache Kafka, RabbitMQ, Apache ActiveMQ. Команда спикера решила это исправить.

Что нужно для применения подхода API-First:

  • Спецификация API в заданном формате.

  • Генерация кода (моделей и сигнатуры) по спецификации.

  • Легкий способ перейти на использование подхода API-First.

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


Как построить платформу для стриминга данных на Kafka?

Андрей Серебрянский

Райффайзен Банк

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

Если удалось все это преодолеть, то как открыть эту платформу для всех команд в компании и справиться с нагрузкой?

Кроме ответов на эти вопросы, спикер также расскажет, как данные в Kafka можно изменить, поджойнить, агрегировать, используя только SQL (и Java, если очень хочется).

Как Product Owner стриминговой платформы в Raiffeisen Bank, спикер поделится, как они построили такую платформу. Сейчас ей пользуются уже 20 команд и стримят через нее больше 200 топиков.


Другое

Лиллипут на горизонте

Максим Дегтярёв

Huawei

JIT-компилятор постоянно совершенствуется, и нередко прирост производительности можно получить, просто мигрировав на новую версию JDK. А что насчет памяти? Может ли JVM сэкономить ее для нас?

В докладе рассмотрим проект Lilliput (JEP 450) и то, на какие ухищрения идут JVM-инженеры ради экономии памяти.


Карты, схемы и Compose

Александр Нозик

МФТИ

Доклады по Compose в основном подают на соседнюю конференцию Mobius, но в этот раз говорим не про Android. Более того, не будет традиционной истории о покраске кнопок. На примере https://github.com/SciProgCentre/maps-kt/ обсудим, как работает Compose-multiplatform для отрисовки графики. Посмотрим внимательнее на более эзотерические API Compose и выясним, можно ли с этим жить. И конечно, обсудим, мертва ли desktop-разработка или нет. В качестве бонуса — проблемы реализации картографии.


Java Code Analysis with Database and Domain Specific Language

Linjie Pan

Huawei

Традиционно для анализа кода требовалась очень значительная экспертность от разработчиков, создающих инструменты проверки checkers. Для упрощения задачи в индустрии предложили новые решения, основанные на использовании баз данных и DSL. Идея в том, чтобы сохранить анализируемый код в базе данных, а затем использовать DSL для checkers, которые обращаются к этой БД. Спикер поделится опытом использования таких инструментов в Huawei.


Знакомство с фаззерами

Максим Пелевин

Huawei

Фаззер — простой на первый взгляд инструмент, который позволяет находить потенциальные уязвимости. Интерес к нему в последнее время растет, но его устройство порой остается не до конца понятным.

Автор одного из фаззеров расскажет, что нужно сделать, чтобы написать не самый сложный, но работающий фаззер, способный находить ошибки. После доклада может возникнуть острое желание попробовать фаззер на реальных проектах: от студенческих работ до замысловатых веб-сервисов.


Пишем рекомендательную систему музыки на Java

Андрей Кузнецов

Одноклассники

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

Используя открытый датасет, мы с нуля напишем на Java рекомендательную систему музыки и разберем, какие из наивных решений могут не сработать в реальных системах. На примере технологий Одноклассников спикер расскажет, как решаются ML-задачи в гетерогенных продакшенах, где необходимо использовать вместе Java и Python.

Мастер-класс подойдет разработчикам, которым интересна тема машинного обучения, но они либо еще не погружались в нее, либо сделали самые первые шаги.


The show must go on: инструменты нагрузки и рецепты оптимизации онлайн-конференции

Владимир Красильщик

JUG Ru Group

С 2019 года в JUG Ru Group разрабатывают решение для проведения онлайн-конференций. Также команда стала использовать это же решение для проведения митапов внешних заказчиков. Одним из требований к решению является масштабируемость и отказоустойчивость: несмотря ни на что решение должно «держать» конференцию с 10К онлайн-участников. The show must go on!

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


Работаем с Kafka в условиях Big Data

Евгений Ненахов

МТС Digital

Многие информационные системы используют Kafka для различных целей. Для работы с Kafka потребуется написать немного кода на Java, чтобы настроить и запустить consumer и producer. Все выглядит просто и понятно, но когда приходит время запускать свое решение в продакшен на длительный срок, начинают всплывать неочевидные ошибки, происходит деградация производительности, ресурсы используются неэффективно.

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

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


Как обработка XML приводит к проблемам с безопасностью? Разбираемся с XXE

Сергей Васильев

Обработка XML может приводить к неожиданным проблемам с безопасностью приложений. Например, к утечкам данных. Как? Этому и будет посвящён доклад.

Основная тема — уязвимость XXE. Поговорим о том, из-за чего вообще при работе с XML возникают дефекты безопасности. Разберёмся с тем, какие виды XXE бывают и в чём их особенности. Конечно, затронем вопросы атаки и защиты. Для лучшего понимания материала спикер продемонстрирует примеры реальных уязвимостей из open source-проектов.


Как ежедневно рассчитывать цены из 1,5 ТБ данных на Java и ClickHouse

Алексей Топчий

X5 Tech

Алексей с командой реализовали высоконагруженный сервис ежедневного расчета цен на Java – обрабатывающий несколько сотен миллионов цен для 20+ тысяч магазинов. Спикер расскажет, какой прошли путь от выбора и проверки подходящих технологий через прототипирование до раскатки на все магазины. Узнаем, какие подходы пробовали и с какими проблемами и неочевидными решениями команда столкнулась на каждом этапе.


В заключение

Если вы раньше не были на наших конференциях и хотите лучше понять «а как доклады там вообще выглядят» — можете посмотреть на YouTube-канал, где их за годы собрано много, а сейчас мы постепенно выкладываем записи весеннего JPoint.

Но конференция — это, конечно, не только основные доклады. Например, ещё будут короткие Lightning Talks, где может выступить любой желающий — если вам есть о чём рассказать на 10 минут, смело подавайте заявку.

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

А напоследок напомним про нестандартный формат конференции:

  • 9-10 октября пройдёт онлайн-часть

  • 13-14 октября будет офлайн в Санкт-Петербурге, но кто не готов лично до него добраться — сможет и к этой части подключиться удалённо

Все остальные подробности — на сайте Joker.

Комментарии (0)