Какой способ бенчмаркать появился в 2022-м? Как эволюционировала вариантность типов от первых версий Java и до Kotlin? Как хранить JSON в базе данных, не привлекая внимания DBA?
В программе конференции Joker нашлось место и этим вопросам, и многим другим. Сейчас в эту программу вносят последние штрихи, и делимся с Хабром описаниями всех докладов, разбитыми по тематике.
Сам Joker пройдёт уже скоро. Дни 8 и 9 ноября будут полностью онлайновыми, а вот 19 ноября можно будет прийти на московскую площадку и как следует пообщаться (но для тех, кто не готов добираться до Москвы, в этот день тоже возможно удалённое участие).
Подробности вроде точного расписания — на сайте конференции, билеты там же.
Оглавление
Производительность
Вызов нативных методов без JNI-оверхеда
Андрей Паньгин
Есть немало способов вызвать из Java код, написанный на другом языке: JNI, JNA, JNR-FFI и, конечно, долгожданный проект Panama. Проблема в том, что с любым из этих интерфейсов переход из Java в Native сопряжен с накладными расходами. Чаще всего оверхедом можно пренебречь, но бывают случаи, когда он превышает даже стоимость полезной работы.
До недавнего времени в погоне за производительностью Java-хакеры применяли недокументированное расширение HotSpot, однако в новых версиях JDK его уже нет. На замену удаленным Critical Natives была разработана библиотека для быстрого вызова внешних функций. В ее основе лежит JVMCI — интерфейс для подключения сторонних JIT-компиляторов.
В докладе мы познакомимся с JVMCI, увидим, чем он поможет в ускорении нативных вызовов, разберем ограничения подхода и сравним производительность с альтернативами.
Нельзя просто так взять и отправить все логи в Elastic
Григорий Кошелев
Контур
Почему писать все логи в Elastic — не такая простая задача, как кажется. Поговорим про особенности использования ElasticSearch для логов, подводные камни Java-клиента (и не только) и инженерную (бес)культурность.
Tussle — новый формат бенчмаркинга реальных приложений
Алексей Игнатенко
Азул Системс
Команда Азул Системс заопенсорсила новый фреймворк для измерения производительности реальных приложений — Tussle. В своем докладе Алексей опишет старые способы замеров и пояснит, почему throughput и latency больше не могут рассказать вам о производительности приложения. Он также объяснит, почему SPECjbb2015, на которой меряются основные производители железа, — большой обман и расскажет про суперсовременную методологию на основе Tussle.
Cloud Native JVM. Cloud Compiler
Владимир Воскресенский
Azul Systems
Микросервисы или распределенные приложения выполняются множеством JVM на множестве нод. Все современные JVM имеют JIT-компиляторы для достижения максимальной скорости исполнения приложений. Мощные спекулирующие JIT-компиляторы требуют CPU & Memory ресурсы. Обычно JIT используется интенсивно на warmup-фазе приложения, но выделенные для этого дополнительные ресурсы остаются в системе до конца на всех нодах.
Но что если вынести JIT-компилятор из клиента куда-нибудь в облако в качестве JIT Cloud Compilation Service и пользоваться этим сервисом для всех клиентских JVM? Как это повлияет на необходимые ресурсы на стороне клиента и как изменится warmup Java-приложений? Могут ли JVM помогать друг другу?
В этом докладе рассматриваются:
основы JIT-компиляций в современных JVM;
спекуляции, которые позволяют достигать максимальной производительности;
будущее Java-мира, в котором у клиентских виртуальных машин появляется возможность пользоваться безграничными ресурсами удаленного облака.
Асинхронный транспорт Cassandra
Вадим Цесько
Одноклассники
Cassandra является основным хранилищем (мета)данных в Одноклассниках, где развёрнуты сотни высоконагруженных кластеров из сотен узлов и тысяч клиентов, распределённых по нескольким датацентрам. В ОК используют и активно развивают собственный форк Cassandra 2.x с рядом отличий, и этот доклад сосредоточен на подходе FatClient.
Он переносит роль координатора запросов на клиента, который становится полноценным участником кластера Cassandra. Это позволяет устранить лишние сетевые задержки, разгрузить ноды Cassandra от сетевых задач координации и значительно повысить производительность и стабильность поведения всей системы. Но несмотря на все достоинства подхода, на практике столкнулись с неэффективностью и ограничениями существующего транспорта Cassandra на масштабах кластеров состоящих из тысяч участников: узлов, хранящих данные, и клиентов, работающих с этими данными.
Вадим подробно рассмотрит собственную реализацию асинхронного транспорта Cassandra в ОК, позволившую сэкономить ресурсы и упростить жизнь разработчиков. Новый транспорт основан исключительно на Java SDK и лаконичной, но эффективной реализации Actor Model. Помимо устройства решения ОК, речь пойдёт про различные оптимизации, возникшие по пути проблемы, а также переключение на асинхронный транспорт нагруженных кластеров Cassandra в продакшене.
Тулинг
Checkstyle: практические советы
Андрей Пайкин
ALM Works / Tempo
Вы узнаете, как происходит анализ под капотом, какие достоинства и недостатки есть у Checkstyle по сравнению с другими анализаторами, и какие проблемы с его помощью решить не получится.
Спикер рассмотрит на примерах возможности для создания своих проверок «штатными» средствами. Также вы узнаете про методику внедрения Сheckstyle в существующий проект — как облегчить себе жизнь и сделать процесс максимально полезным.
В основе доклада — практические кейсы из вопросов пользователей со Stack Overflow и GitHub, а также собственный опыт.
Есть что новое в поиске? А если найду?
Михаил Хлуднев
Apache Software Foundation
Обсудим недавние изменения в поисковых серверах на основе Apache Lucene: Elasticsearch, OpenSearch, Apache Solr.
Перейдём к практике: для слушателей незнакомых с Elasticsearch будут показаны основные операции, которые поисковые инженеры выполняют каждый день: конфигурирование мэппинга (схемы) и отладка текстового анализа.
Детально рассмотрим одну специфическую функциональность Elasticsearch: search_as_you_type. В завершении поговорим о расширенном булевом поиске: фразовых запросах и их обобщении — спэнах и интервалах.
Дмитрий Иванов
Huawei
В докладе будет показано, как техника динамического символьного исполнения может быть использована для поиска глубоких ошибок в Java без ложных срабатываний. Дмитрий классифицирует виды анализа кода и покажет современные техники для этих задач. Он раскроет детали реализации символьного исполнения в Java — и вы сможете написать свой собственный анализатор. Спикер рассмотрит современное состояние дел в этой области, а также покажет простой интерфейс для решения NP-полных задач в вашем Java-приложении — SMT-решатель. В рамках доклада будет возможность закодировать хорошо известные NP-полные задачи (например, Судоку) в SMT на Java, используя самый популярный решатель — Microsoft Z3.
Этот доклад вдохновлен прошлогодним докладом на конференции DotNext.
Spring и базы данных
Spring Boot с Amazon Web Services SDK: взаимодействие основных сервисов
Август Вилакия
Альфа-банк
Август расскажет про построение микросервисной архитектуры с использованием инфраструктуры Amazon Web Services. Это актуальная тема работы с облачными технологиями: более 350 вакансий на HeadHunter с одновременным упоминанием Java и AWS. Спикер сравнит существующие российские облачные провайдеры и посмотрит, насколько развита их инфраструктура. Пример типичной архитектуры будет показан с использованием Spring Boot, стартеров, разработанных сообществом Spring, и сервисов доступных в облаке Amazon.
В докладе затрагиваются следующие темы:
Конфигурация Spring Cloud AWS.
Добавления AWS Secret Manager.
Взаимодействие Spring с Amazon Aurora (в разы быстрее PostgreSQL).
Плюсы и минусы self-managed сервисов в разработке.
Будет также показано, как провести локальное тестирование, симулируя сервисы AWS и используя LocalStack.
Как хранить JSON в базе данных, не привлекая внимания DBA
Федор Сазонов
Сбер
Илья Сазонов
Всегда.Да
Рано или поздно перед любым разработчиком встает проблема рассогласования импеданса между объектной и реляционной моделью. Звучит дико, конечно. Скажем проще. Рано или поздно каждому разработчику приходится хранить в базе данных что-то такое, что там хранить неудобно. Например, какой-то сущности надо приписывать какие-то дополнительные атрибуты, названия и типы данных. Или кто-то хочет отобразить на реляционные таблицы дерево наследования. Для этих задач есть известные проработанные и неудобные способы решения, которые к тому же легко могут привести к проблемам с производительностью.
Альтернатива этому всему — хранение таких данных в виде JSON. Но реляционные СУБД JSON не любят. Дошло даже до того, что Mongo, киллер-фичей которой как раз является хранение данных в виде JSON, набрала на этом нешуточную популярность. Но, к счастью, эти времена потихоньку отступают. Во многом благодаря усилиям разработчиков PostgreSQL. Раньше все попытки положить JSON в базу данных встречали враждебную реакцию со стороны DBA, аналитиков и QA. Эту реакцию можно описать так: «У нас же тогда будет не база данных, а помойка!»
Спикеры поговорят о связанных с этим проблемах, расскажут, как их можно решить не выходя из реляционной структуры, и продемонстрируют, что с этими решениями не так. Также вы узнаете, в каких случаях для решения этих проблем можно применить JSON и почему львиная доля опасений DBA, аналитиков и QA теперь неактуальна. А еще — как при использовании JSON не выстрелить себе в ногу, потому что нюансы есть.
Hibernate 6: что нового и почему это важно
Андрей Беляев
Haulmont
В марте вышла стабильная мажорная версия Hibernate 6. Помимо смены названия пакетов с javax на jakarta и переезда на Java 11, появилось несколько нововведений, которые могут заинтересовать тех, кто активно использует JPA в своей работе. Спикер рассмотрит как внешние изменения — новые классы и API, так и внутренние. Вторые не так заметны разработчикам, но более важны, потому что от них зависит быстродействие фреймворка.
Что видно сразу:
Новый маппинг типов данных — теперь не нужны сторонние библиотеки, чтобы работать с JSON.
Поменялась генерация ID: API стал более гибким и менее запутанным.
SQL в логах стало намного проще читать.
Что поменялось внутри:
Semantic Query Model — новая структура данных для представления запросов в фреймворке, что открывает новые возможности для написания запросов. Например, появилась поддержка оконных функций.
Поменялся обход дерева сущностей, теперь генерируется меньше JOIN-запросов при обходе циклических ассоциаций.
В докладе разберем эти нововведения на примерах и посмотрим, на что стоит обратить внимание при переезде на эту версию.
Урок географии для Java-разработчиков. География и Java в одном чайнике
Павел Кислов
Домклик
Этот доклад — обзор технологий, которые существуют в Java для работы с геоданными. Это не мудрость для мастеров GIS-систем, а доклад для тех, кто всегда думал: «А как?», но не находил ответов на свои вопросы. Геоданные в Java для неискушенного геодезией прилежащим инструментарием разработчика. Заваривайте чай и устраивайтесь поудобнее. Здесь есть о чем поговорить.
Разработка распределенной очереди с отложенными задачами на основе PostgreSQL
Максим Иванов
Тинькофф
Максим покажет процесс создания очереди задач на основе реляционной БД. Она поддерживает ретраи и выполнение задач в строгой последовательности по одной сущности. В слайдах будет показан код на Java и SQL: структура таблиц и строчек. Сам метод основан на блокировках Postgres и ожидании блокировки внутри транзакции, пока задача выполняется. Спикер также расскажет про статистику, про то, сколько весит очередь, ее индексы и про то, откуда вообще взяты эти данные (немного обучения диагностике в Postgres). А в конце — еще и результаты нагрузки.
Архитектура
Platform V User Sessions — распределенное хранилище сессионных данных
Андрей Чернов
Сбер
Доклад про то, как в команде Андрея создавали микросервис на Java для распределённого хранения данных сессий СберБанк Онлайн. Вы посмотрите на путь создания собственного сервиса с нуля, начало его промышленной эксплуатации и реальное применение.
Вы узнаете, как в команде изначально справлялись с highload Сбербанка Онлайн и каких показателей удалось достичь после выполненных оптимизаций сервиса.
Спикер расскажет, как добивались соответствия жёстким требованиям к высокой доступности в СберБанк Онлайн на уровне «четырёх девяток», с какими вызовами при этом пришлось столкнуться и как с ними справились. Также Андрей поделится планами по дальнейшему развитию сервиса и расскажет про наиболее интересные планируемые фичи.
Архитектура приложения и ошибки проектирования
Рустам Ахметов
Usetech
В этом докладе вы увидите обзор архитектур Java-приложений и их проблемы.
Спикер даст краткий экскурс в эволюцию и виды архитектур и затронет следующие темы:
Что такое Vertical Design.
Что такое Horizontal Design и Three layered architecture.
Почему появилась Hexagonal architecture, какую проблему она решает.
Какие проблемы не решены этими архитектурами и куда можно двигаться?
Почему это важно?
Будет много кода и примеров. Доклад будет интересен всем Java-разработчикам, независимо от грейда.
Поваренная книга программиста: Vert.x
Даниил Солодухин
IT Territory (MY.GAMES)
Спикер расскажет о фреймворке для создания реактивных приложений Vert.x и его применении для разработки игрового сервера. Почему Vert.x хорошо подходит для подобного применения, какие преимущества он дает? Обсудим, с какими подводными камнями могут столкнуться разработчики при использовании этого фреймворка.
Доклад будет интересен специалистам, знакомым с реактивным подходом к разработке приложений, которые находятся в поиске новых инструментов или хотят лучше узнать используемые.
Слушатели узнают о практических особенностях применения фреймворка Vert.x, с которыми можно столкнуться при использовании его для такого сложного и нагруженного приложения, как игровой сервер.
Internet of Harvesting на базе Apache Ignite
Виталий Куценко
Ростсельмаш
Современные задачи часто требуют накапливать и оперативно анализировать большое количество разнородных данных. В силу специфики конечных устройств, которые создаются на комбайновом заводе «Ростсельмаш», в такой задаче возникают различные сложности:
большое количество данных о каждом устройстве;
широкая номенклатура устройств;
неравномерность поступления данных;
оперативное наблюдение за текущим состоянием и реакция на возникающие отклонения;
накопление данных для разнообразных отчетов, а также для ИИ.
Из доклада вы узнаете, какие архитектурные решения позволяют решать такие задачи, и в том числе, как в этом помогают решения от ClickHouse и Apache Ignite.
Proxyless Service Mesh for gRPC Java Services
Александр Козлов
СберТех
Максим Чудновский
СберТех
Спикеры поговорят про микросервисы и паттерн Service Mesh. Что это вообще такое и для чего придумано? Микросервисы давно вошли в набор практик архитектуры ПО и многим, конечно же, известны. В докладе вы окунетесь в мир известных и зрелых технологий, а также в новейшую историю, которая пишется прямо сейчас. Вы узнаете, почему практически каждый крупный энтерпрайз переводит свой софт в облака.
Мало кого можно удивить тем, что на смену HTTP приходит HTTP 2.0 и вместе с ним gRPC — быстрый, легкий и удобный протокол. Из доклада вы узнаете, как с помощью усилий разработчиков из Google можно вывести gRPC-приложение на новый уровень, подключив его к сервисной сети и используя подход Proxyless.
Спикеры разберут теорию, посмотрят на код и соберут на его основе небольшую демонстрацию. Также погрузятся в механику происходящего и расскажут, что такое XDS и как оно работает.
Вы получите знания о современных подходах и работе с микросервисами, первый взгляд на Proxyless и готовый код, чтобы можно было поэкспериментировать!
От PostgreSQL к Tarantool: выбор в отсутствие выбора
Евгений Демкин
РТЛабс
Любовь Вайнштейн
РТЛабс
Мы все используем очереди для асинхронных обменов, все знакомы с RabbitMQ и Kafka, но что делать, когда к очередям предъявляются необычные требования? Что делать, если нужно фильтровать сообщения, если вариантов фильтров бесконечно много? Если нужно работать в режиме Active-Active? Если нужно обеспечивать высокую нагрузку? В этом докладе мы хотим поделиться опытом, как мы решали эту задачу на PostgreSQL, как уперлись в его ограничения и почему выбрали Tarantool и перешли на него.
Жизнь Java-приложений в облачных контейнерах
Максим Чернухин
Альфа-Банк
Максим — архитектор / IT leader цифровой платформы продаж в Альфа-Банке. Занимается разработкой архитектуры и инфраструктуры проектов с учетом полного жизненного цикла ПО. Создал платформу, которая успешно используется за пределами компании, а ее внедрение увеличило число продаж в 2-4 раза. Ведет проект по внедрению облачных технологий в Альфа-Банк.
Любит сложные и интересные задачи, которые находит как в IT, так и в смежных областях таких, как найм сотрудников, управление мотивацией или восхождение на Эльбрус. Окончил МГТУ им. Баумана и за 8 лет в IT успел поработать с разными языками back- и front-разработки и поучаствовать в проектах с машинным обучением и большими данными.
Как с помощью BPMS (jBPM) заместить продукты SAS
Дмитрий Бугайченко
Сбер
Олег Терёшкин
Сбер
В феврале 2022 года компания SAS покинула российский рынок. В итоге Сбер, как и многие другие компании, лишился поставщика основных компонент для кампейнинга в x-sell бизнесе, целью которого является формирование персонализированных предложений для клиентов. Основные компоненты, которые мы использовали в legacy-системах — SAS RTDM, Viya, ID, MA, MO, EG. Каждая из перечисленных компонент покрывает ту или иную потребность системы, например:
1. исполнение ML-моделей (MA);
2. ETL (DI, EG);
3. оптимизация x-sell-предложений (MO);
4. low-code инструменты настройки бизнес-логики (RTDM, Viya, ID).
В докладе спикеры расскажут об импортозамещении компонент RTDM, Viya, ID. На вышеперечисленных движках в промышленной эксплуатации работают highload-процессы под нагрузкой ~50 000 TPS и c доступностью 99,99% (53 минуты простоя в год). Максимально схожими движками по функционалу являются системы класса BPMS: Camunda, jBPM, Kogito и другие. Взяв за основу функциональные и нефункциональные требования, спикеры покажут, почему выбрали jBPM, погрузятся в архитектуру решения, а также разберут баги, с которыми столкнулись, и методы их исправления.
Андрей Богданов
VK Cloud
Инженерам постоянно приходится решать технические задачи разного уровня сложности. Часто, смотря на задачу, хочется применить уже знакомое решение, но, как правило, не совсем подходящее или относительно медленное. После этого наступает следующая фаза, и инженера поглощает синдром «Not invented here». Возникает жгучее желание написать собственную реализацию с учетом чужого опыта. Как правило, путь этот тернист. В некоторых случаях он приводит к результату, но процент таких случаев очень мал. Как правило получается достаточно куцая по функциональности реализация.
В докладе попробуем пойти другим путем и подобрать компонент, пусть даже неизвестный, опираясь на требования. Постараемся изучить компонент, насколько это возможно в ограниченном временном интервале. И посмотрим на проблемы, которые это принесло, и способы их решения.
Kotlin и другие JVM-языки
Вариантность типов в Java и Kotlin
Иван Пономарев
Synthesized / МФТИ
Если сравнить программу со зданием, то ее API — это фундамент. Невозможно недооценить важность гибких и удобных API для сопровождаемости кода. И невозможно создать такие API без понимания того, как использовать вариантность типов в классах и методах с параметризацией типов.
Спикер рассмотрит эволюцию вариантности типов в мире JVM, начиная с ковариантных массивов из самых первых версий Java, через подстановочные типы Java, до вариантности в месте объявления и в месте использования в Kotlin.
Из примеров — от простых к сложным — вы сможете получить устойчивое понимание того, как и когда использовать вариантность типов в своих API.
Николай Рыжиков
Health Samurai
Язык определяет мышление. Язык программирования является матрицей для формирования архитектуры. Николай расскажет о том, что вырастает из Clojure. А получаются решения с DSL на данных и решения, гравитирующие к Model Driven Architecture.
Невыносимая легкость визуализации данных в Kotlin full stack
Александр Нозик
МФТИ
Сочетание «full stack разработка» у всех на слуху. Тут всё понятно: есть клиент (браузер), а есть сервер. Клиент — источник потока управления, сервер — источник данных. Можно делать на разных языках, но лучше всего, разумеется, на Kotlin. Однако такая схема подходит не всегда. Бывает, что «сервер» является управляющим, а «клиент» занимается только отрисовкой. Это типовая ситуация в системах визуализации процессов и данных (например, в системах сбора данных). Всё чаще возникает ситуация, что UI и визуализация делаются в вебе даже тогда, когда приложение не является по сути веб-сервисом. Просто потому, что в браузере рисовать удобнее.
Спикер разберет именно такую ситуацию: когда «сервер» является клиентом, а браузер — «сервером для визуализации». Вы узнаете, как можно организовать обратный поток контроля и данных в Kotlin, и какие проблемы могут возникнуть.
Spring и React на Kotlin: фантомные боли от full stack
Андрей Кулешов
Huawei
Андрей расскажет про свой опыт написания опенсорс-экосистемы SAVE для бенчмаркинга анализаторов кода. Изначально для ее создания авторы выбрали, казалось бы, стандартный стек: Spring Boot WebFlux, S3, Docker, Kubernetes, React. Но потом что-то пошло не так, и приложение было полностью написано на Kotlin, а не на Java: Kotlin/JVM, Kotlin/JS и даже немного на Kotlin/Native.
О том, что из этого вышло, почему фуллстек-разработчик может испытать фантомные боли на Kotlin и почему не хочется возвращаться на Java, и пойдет речь в этом докладе. Также поговорим про Kotlin MPP и о том, действительно ли удобно, когда всё приложение — это монолит, написанный на одном языке с общей частью. А бонус доклада — лирическая часть о бэкендерах, благодаря Kotlin ставших фуллстеками, и открытия Spring на Kotlin.
Женим Kafka на Kotlin Native: удивительные приключения Java Dev в стране Kotlin Native
Дмитрий Морозовский
Huawei
Автор расскажет о своем опыте написания Kafka-клиента на Kotlin Native. Вы узнаете ответы на следующие вопросы:
Что такое Kafka client и какие его основные функции?
Почему понадобилось писать Kafka client на Kotlin Native?
Какие проблемы и задачи возникают при создании c-interop с нативной библиотекой?
Как незамутненному Java Dev не сломать мозг при работе с корутинами и в чем их особенность в Kotlin Native?
Как организовать Kotlin MPP-проект на Gradle чтобы все работало?
В конце будет демо, в котором этот клиент используется в качестве библиотеки.
О дивный контекстный мир Scala
Иван Лягаев
Тинькофф
Обычно в бэкенд-разработке мы хотим понимать: что происходило в рамках одного запроса? Сколько этот запрос выполнялся? Какой пользователь/система инициировал запрос?
Иначе говоря, мы хотим получать всестороннюю телеметрию запроса к сервису. И помогает нам с этим контекст запроса.
Спикер разберет несколько подходов работы с контекстом на языке Scala. Затронет классические подходы, которые перекочевали в Scala из мира Java, посмотрит на альтернативные подходы из мира функционального мира, а в конце приведет плюсы и минусы каждого.
Другое
Один день из жизни JVM-инженера
Иван Углянский
Huawei
Наш JVM-мир состоит из двух слоев: на одном Java- и Kotlin-разработчики, крутые специалисты про Spring и Hibernate, мастера энтерпрайза и огромных серверных приложений. Но есть мнение, что внутри этого Земного шара имеется другой шар, значительно больше наружного! Речь про второй слой: разработку самой виртуальной машины Java, которой пользуются Java-разработчики.
Иван заглянет в этот другой мир: как живут разработчики JVM? Какие задачи и вызовы перед ними стоят? Чем их жизнь отличается от классической Java-разработки? И может ли Java-разработчик перейти на другую сторону, став JVM-инженером?
Сутки профилирования на одной странице
Артем Дроздов
Одноклассники
С недавних пор в «Одноклассниках» начали профилировать Java-сервисы в облаке в режиме 24/7. Это означает порядка 40 000 одновременно профилируемых приложений. Для задачи такого масштаба требуется комплекс решений: написать свой профилировщик, известный как async-profiler, обернуть его eBPF-программой для повышения производительности в рамках собственного облака, постоянно сохранять результаты в собственную имплементацию S3-совместимого хранилища.
Обо всём этом уже неоднократно было рассказано, но в этом докладе спикер подробно остановится на своем маленьком кирпичике — проблеме обработки и отображения этих данных. Как именно с алгоритмической точки зрения сжать гигабайты профиля в одну HTML-страницу без потери значимых данных, а также, как с инженерной точки зрения вывернуть JS на изнанку, чтобы браузер мог приемлемо справляться с такими объёмами.
JEP-400 или UTF-8 РєРѕРґРёСЂРѕРІРєР° РїРѕ умолчанию
Дмитрий Сугробов
Не прошло и пяти лет, как в Java 18 докатилось небольшое, но очень ожидаемое и обсуждаемое изменение: теперь во всех стандартных API используется UTF-8 кодировка по умолчанию. Это изменение, которое сделает выражение «Write once, run anywhere» действительно правдой, так как теперь поведение приложения будет еще меньше зависеть от системы. В докладе рассказывается, как развивались события по работе над JEP-400 и как сделать так, чтобы у вас ничего не поломалось после перехода на новую Java.
Александр Раковский
ITentika
Ключевые концепции современной разработки, к сожалению, страдают от глубоких заблуждений и сильного недопонимания специалистами их сути и истории. Спикер уверен, что важнее всего объяснять эти идеи именно разработчикам, а не менеджерам, тестировщикам и отдельным девопс-специалистам, потому что среди них эти идеи и зарождались.
Доклад начнется с исторической справки аж с 60-х годов прошлого века, а закончится открытиями середины второго десятилетия XXI века.
Спикер разберет, за что ругают гит флоу, фича-ветки и пулл-реквесты. Поговорит о том, в чем беда ручных тестов и почему автотесты — это ответственность разработчиков. Обсудит, как DevOps должен был стать головной болью разработчиков, но превратился просто в профессию. И между делом расскажет, почему Scrum — не очень Agile и почему он может быть без спринтов, эстимейтов и тысячи митингов, однако едва ли возможен без хороших технических практик.
Современное шифрование для Java-разработчика
Григорий Скобелев
ЮMoney
Спикер затронет вопросы, которыми нужно задаваться при обсуждении безопасности. Поговорит о том, какие алгоритмы шифрования бывают. Рассмотрит применимость алгоритмов — какой алгоритм для какой задачи выбрать. На практике разберет прикладные алгоритмы шифрования для бэкенд-разработчика. Также вы узнаете про актуальные техники, которые входят в требование службы безопасности.
В заключение
Описанное выше — это не всё, что предлагает конференция. Например, ещё будет интервью с Тагиром Валеевым (@tagir_valeev), чьи доклады и хабрапосты давно многим полюбились. Будут и другие интервью, и доклады от компаний-партнёров, и «дискуссионные зоны» после каждого доклада с возможностью как следует расспросить спикера (и в офлайне, и в онлайне), и конференционные чаты.
Но тут многое уже зависит от вас: описать, какие обсуждения возникнут после докладов, мы не можем. Знаем только по опыту, что порой они бывают жаркими и продолжительными. Так что, если хочется яркого общения с другими Java-разработчиками — всё в ваших руках.
А нам напоследок остаётся напомнить: все подробности и билеты — на сайте конференции.