• JUG.EKB #1

    Freelance-cafe (ТЦ Мытный двор, ул. 8 марта 8Д)

    15/05/2014


    Практики тестирования кода
    Андрей Старовойт, JetBrains

    Как не наступить на грабли,
    внедряя скрипты в java приложение
    Сергей Целовальников, NAUMEN
    Подробнее о докладах
  • JUG.EKB #2

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    29/06/2014


    Миллионы котировок в секунду на чистой Java
    Роман Елизаров, Devexsperts

    Оковы тяжкие падут:
    как перевести сборку проекта с Ant на Gradle
    Андрей Хитрин, Naumen
    Подробнее о докладах
  • JUG.EKB #3

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    13/11/2014


    Динамическая (JIT) компиляция в JVM
    Владимир Иванов, Oracle

    Наскальное программирование
    Евгений Пальмов, Naumen
    Подробнее о докладах
  • JUG.EKB #4

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    14/05/2015


    Разработка высоконагруженного
    сервера на Java
    Андрей Паньгин, Одноклассники

    10 человеко-лет GWT
    Денис Кирпиченков, Naumen
    Подробнее о докладах
  • JUG.EKB #5

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    01/10/2015


    Нужен ли нам JMS
    в мире современных Java-технологий?
    Николай Алименков, EPAM/XPInjection

    Yet another technology
    stack in web-app development
    Григорий Кошелев, СКБ Контур
    Подробнее о докладах
  • JUG.EKB #6

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    11/02/2016


    Что должен знать о соцсетях
    каждый Java разработчик?
    Алексей Рагозин, Deutsche bank

    Kotlin + Android: практический ликбез
    Дмитрий Полищук, Яндекс
    Подробнее о докладах
  • JUG.EKB #7

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    22/09/2016


    Escape Analysis и скаляризация
    Руслан Черемин, Deutsche bank

    Ahead of time компиляция для Hotspot
    Дмитрий Чуйко, Oracle
    Подробнее о докладах
  • JUG.EKB #8

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    03/03/2017


    G1 GC: опыт миграции
    Александр Мохов, Naumen

    Микросервисы - Огонь, Вода и Медные трубы
    Александр Тарасов, Одноклассники
    Кирилл Толкачёв, Альфа-Лаборатория
    Подробнее о докладах
  • JUG.EKB #9

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    05/10/2017


    Application Performance Monitoring:
    сравнение возможностей, проблемы и решения
    Ярослав Киселев, КРОК

    Организация многопоточности
    по модели подписки в Java 9
    Дмитрий Чуйко, BellSoft
    Подробнее о докладах
  • JUG.EKB #10

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    01/03/2018


    Спасти поиск в приложении и не сойти с ума
    Дмитрий Колмогорцев, Naumen

    Эволюция синхронной системы
    со Spring 5/Progect reactor
    Максим Гореликов, Альфа-Лаборатория
    Подробнее о докладах
  • JUG.EKB #11
    Лофт «Титры» (проспект Ленина, 50Д)
    13/09/2018


    Deep links, strong drinks
    Андрей Чернопрудов, Naumen

    API на переправе не меняют -
    как построить стабильный API?
    Алексей Стукалов и Юрий Артамонов, HAULMONT
    Подробнее о докладах
  • JUG.EKB #12

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    28/02/2019

    Хватит это терпеть: внедряем
    свеженький SpringBoot в большой legacy-проект
    Андрей Аркаев, Naumen

    Большое Enterprise приложение
    для маленькой такой компании
    Владимир Янченко, Naumen

    Построение микросервисного
    приложения на Netflix OSS
    Петр Попов, Tinkoff
    Подробнее о докладах
  • JUG.EKB #13
    Атриум Палас Отель (ул. Куйбышева, 44)
    12/09/2019


    Мигрируй вчера
    Юрий Калеми, Naumen

    Ах, эти строки
    Сергей Цыпанов, EPAM
    Подробнее о докладах
  • JUG.EKB #14
    Атриум Палас Отель (ул. Куйбышева, 44)
    12/09/2019


    Java 11: Золотей теленок
    Владимир Тарасов, Naumen

    Kotlintest
    Павел Финкельштейн, JetBrains
    Подробнее о докладах
  • JUG.EKB #15 Online
    12/11/2020


    Чем меньше, тем лучше.
    Эффективные Java-докеры
    Дмитрий Чуйко, Bellsoft

    Типизируй это немедленно
    Павел Зыков, Naumen
    Подробнее о докладах
  • JUG.EKB #17 Online
    16/12/2021

    Spring-data-commons — скрытое сокровище
    Андрей Беляев, Haulmont

    Linkerd — Service Mesh, который смог!
    Александр Тарасов, ANNA Money

    Гималайские пики тестирования дата-пайплайнов
    Павел Финкельштейн, JetBrains
    Ксения Томак, Dodo Engineering

    Готовим Java-приложение, приправленное
    Groovy-скриптами
    Матвей Носков, NAUMEN

    Тестирование руками разработчиков
    Константин Воливач, Контур

    Можно ли написать библиотеку так,
    чтобы потом не грызть локти?
    Леонид Старцев, JetBrains
    Подробнее о докладах
  • JUG.EKB #18
    12/05/2022

    Ниспадающее программирование и его преимущества
    Вячеслав Пыжьянов, NAUMEN

    Экскурсия в бэкенд Интернета вещей
    Владимир Плизга, AggreGate
    Подробнее о докладах
  • JUG.EKB #19
    17/11/2022

    Обновление Hibernate через боль
    Андрей Аркаев, Naumen

    Добровольно-принудительный Spring
    Илья Сазонов, Всегда.Да
    Фёдор Сазонов, Сбер
    Подробнее о докладах
  • JUG.EKB #1

    Freelance-cafe (ТЦ Мытный двор, ул. 8 марта 8Д)

    15/05/2014


    Практики тестирования кода
    Андрей Старовойт, JetBrains

    Как не наступить на грабли,
    внедряя скрипты в java приложение
    Сергей Целовальников, NAUMEN
    Подробнее о докладах
  • JUG.EKB #2

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    29/06/2014


    Миллионы котировок в секунду на чистой Java
    Роман Елизаров, Devexsperts

    Оковы тяжкие падут:
    как перевести сборку проекта с Ant на Gradle
    Андрей Хитрин, Naumen
    Подробнее о докладах
  • JUG.EKB #3

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    13/11/2014


    Динамическая (JIT) компиляция в JVM
    Владимир Иванов, Oracle

    Наскальное программирование
    Евгений Пальмов, Naumen
    Подробнее о докладах
  • JUG.EKB #4

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    14/05/2015


    Разработка высоконагруженного
    сервера на Java
    Андрей Паньгин, Одноклассники

    10 человеко-лет GWT
    Денис Кирпиченков, Naumen
    Подробнее о докладах
  • JUG.EKB #5

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    01/10/2015


    Нужен ли нам JMS
    в мире современных Java-технологий?
    Николай Алименков, EPAM/XPInjection

    Yet another technology
    stack in web-app development
    Григорий Кошелев, СКБ Контур
    Подробнее о докладах
  • JUG.EKB #6

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    11/02/2016


    Что должен знать о соцсетях
    каждый Java разработчик?
    Алексей Рагозин, Deutsche bank

    Kotlin + Android: практический ликбез
    Дмитрий Полищук, Яндекс
    Подробнее о докладах
  • JUG.EKB #7

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    22/09/2016


    Escape Analysis и скаляризация
    Руслан Черемин, Deutsche bank

    Ahead of time компиляция для Hotspot
    Дмитрий Чуйко, Oracle
    Подробнее о докладах
  • JUG.EKB #8

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    03/03/2017


    G1 GC: опыт миграции
    Александр Мохов, Naumen

    Микросервисы - Огонь, Вода и Медные трубы
    Александр Тарасов, Одноклассники
    Кирилл Толкачёв, Альфа-Лаборатория
    Подробнее о докладах
  • JUG.EKB #9

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    05/10/2017


    Application Performance Monitoring:
    сравнение возможностей, проблемы и решения
    Ярослав Киселев, КРОК

    Организация многопоточности
    по модели подписки в Java 9
    Дмитрий Чуйко, BellSoft
    Подробнее о докладах
  • JUG.EKB #10

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    01/03/2018


    Спасти поиск в приложении и не сойти с ума
    Дмитрий Колмогорцев, Naumen

    Эволюция синхронной системы
    со Spring 5/Progect reactor
    Максим Гореликов, Альфа-Лаборатория
    Подробнее о докладах
  • JUG.EKB #11
    Лофт «Титры» (проспект Ленина, 50Д)
    13/09/2018


    Deep links, strong drinks
    Андрей Чернопрудов, Naumen

    API на переправе не меняют -
    как построить стабильный API?
    Алексей Стукалов и Юрий Артамонов, HAULMONT
    Подробнее о докладах
  • JUG.EKB #12

    Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

    28/02/2019

    Хватит это терпеть: внедряем
    свеженький SpringBoot в большой legacy-проект
    Андрей Аркаев, Naumen

    Большое Enterprise приложение
    для маленькой такой компании
    Владимир Янченко, Naumen

    Построение микросервисного
    приложения на Netflix OSS
    Петр Попов, Tinkoff
    Подробнее о докладах
  • JUG.EKB #13
    Атриум Палас Отель (ул. Куйбышева, 44)
    12/09/2019


    Мигрируй вчера
    Юрий Калеми, Naumen

    Ах, эти строки
    Сергей Цыпанов, EPAM
    Подробнее о докладах
  • JUG.EKB #14
    Атриум Палас Отель (ул. Куйбышева, 44)
    12/09/2019


    Java 11: Золотей теленок
    Владимир Тарасов, Naumen

    Kotlintest
    Павел Финкельштейн, JetBrains
    Подробнее о докладах
  • JUG.EKB #15 Online
    12/11/2020


    Чем меньше, тем лучше.
    Эффективные Java-докеры
    Дмитрий Чуйко, Bellsoft

    Типизируй это немедленно
    Павел Зыков, Naumen
    Подробнее о докладах
  • JUG.EKB #16 Online
    25/03/2021

    Kotlin для разработки серверных
    приложений. Взгляд Java-разработчика
    Антон Архипов, JetBrains

    Отдел по борьбе с временными
    аномалиями: BTrace как рулетка времени
    Мария Газизова, Naumen

    Data Scientist в погоне за взмахом колибри
    Артем Селезнев, Сбер
    Подробнее о докладах
  • JUG.EKB #17 Online
    16/12/2021

    Spring-data-commons — скрытое сокровище
    Андрей Беляев, Haulmont

    Linkerd — Service Mesh, который смог!
    Александр Тарасов, ANNA Money

    Гималайские пики тестирования дата-пайплайнов
    Павел Финкельштейн, JetBrains
    Ксения Томак, Dodo Engineering

    Готовим Java-приложение, приправленное Groovy-скриптами
    Матвей Носков, NAUMEN

    Тестирование руками разработчиков
    Константин Воливач, Контур

    Можно ли написать библиотеку так, чтобы потом не грызть локти?
    Леонид Старцев, JetBrains
    Подробнее о докладах
  • JUG.EKB #18
    12/05/2022

    Ниспадающее программирование и его преимущества
    Вячеслав Пыжьянов, NAUMEN

    Экскурсия в бэкенд Интернета вещей
    Владимир Плизга, AggreGate
    Подробнее о докладах
  • JUG.EKB #19
    17/11/2022

    Обновление Hibernate через боль
    Андрей Аркаев, Naumen

    Добровольно-принудительный Spring
    Илья Сазонов, Всегда.Да
    Фёдор Сазонов, Сбер
    Подробнее о докладах

Freelance-cafe (ТЦ Мытный двор, ул. 8 марта 8Д)

15/05/2014
JUG.EKB #1
Практики тестирования кода
Андрей Старовойт, JetBrains

Я расскажу про способы борьбы с ошибками прямо из IDE, минуя стадию запуска приложения.

Как не наступить на грабли, внедряя скрипты в java приложение
Сергей Целовальников, NAUMEN

Однажды вы решаете добавить динамики приложению и в вашем Java коде появляется Groovy, либо любой другой скриптовый язык. И Groovy приносит свою магию.
Сначала её мало, но затем её становится все больше и больше! Вместе со скриптами появляется много вопросов - а если?, а как?, а почему? А если я переименую этот класс? А как удобно писать скрипты? А почему скрипты сломались? И т.д.
Я расскажу как сделать так, чтобы написание скриптов приносило радость, их поддержка не была болью, а Groovy стал вашим лучшим другом!

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

29/06/2014
JUG.EKB #2
Миллионы котировок в секунду на чистой Java
Роман Елизаров, Devexsperts

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

Оковы тяжкие падут: как перевести сборку проекта с Ant на Gradle
Андрей Хитрин, Naumen

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

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

13/11/2014
JUG.EKB #3
Динамическая (JIT) компиляция в JVM
Владимир Иванов, Oracle

Java абстрагирует большое количество технических деталей о платформе, на которой исполняется Java-приложение. получить приемлемую скорость исполнения, Java-платформа активно использует динамическую компиляцию в виртуальной Java-машине (JVM). Динамическая (Just-In-Time) компиляция повышает производительность за счет трансляции Java байткода в машинный код в процессе работы приложения. Принцип работы существенно отличается от статических компиляторов и для получения высокопроизводительного кода JVM использует другой набор методик компиляции. В докладе будут описаны общие принципы динамической компиляции и ее особенности в применении к Java. Обзор JIT-компиляторов в HotSpot JVM будет включать рассмотрение инструментов и методик анализа их работы (от высокоуровневых решений и до машинного кода) и диагностирования проблем.

Наскальное программирование
Евгений Пальмов, Naumen

Платформа Java уже давно доказала своё право находиться на лидирующих позициях рынка, зарекомендовав себя как отличную основу для разработки проектов любого калибра. Однако есть ли жизнь после Java? А может быть Scala? В докладе будут рассмотрены основные возможности Scala, от самых основ и до метапрограммирования на макросах, а также как она предлагает с их помощью красиво и просто решать распространенные проблемы в Java, при этом повышая общее качество и скорость написания кода.

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

14/05/2015
JUG.EKB #4
Разработка высоконагруженного сервера на Java
Андрей Паньгин, Одноклассники

Может ли один сервер на Java обрабатывать десятки тысяч запросов в секунду, принимать сотни тысяч подключений и отдавать гигабиты трафика? Где-где, а в компании Одноклассники точно знают, как этого добиться, ведь у них на Java работают свыше 8000 серверов, обслуживая 48 млн пользователей ежедневно. 
Андрей Паньгин, ведущий программист компании, расскажет про приёмы разработки высоконагруженных приложений. 
Из доклада вы узнаете, в чём недостатки стандартного сетевого Java API, почему возникают JVM паузы, зачем вылезать за пределы Java Heap и как реализовать эффективный механизм удалённых вызов. Будут затронуты вопросы I/O, кеширования, сериализации и межсерверного взаимодействия.

10 человеко-лет GWT
Денис Кирпиченков, Naumen

Данный доклад посвящен набору инструментов Web-разработки Google Web Toolkit. В своем рассказе я сделаю краткий обзор возможностей GWT, и поделюсь опытом разработки проекта на GWT объемом 10+ человеко-лет. 

Из доклада Вы узнаете:
  • о том что делать если стандартного протокола RPC недостаточно
  • как лучше организовать backend для GWT
  • совместная работа GWT с javascript
  • как добавить новые возможности в GWT
  • анализ unhandled exceptions
  • тюнинг процесса сборки GWT-проекта

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

01/10/2015
JUG.EKB #5
Нужен ли нам JMS в мире современных Java-технологий?
Николай Алименков, EPAM/XPInjection

JMS известен в Java-мире как стандартное решение для реализации распределенной работы с помощью обмена сообщениями. Существует множество JMS провайдеров, как бесплатных, так и коммерческих. Большой процент разработчиков используют JMS везде, где нужно послать сообщение и обработать его на другом конце. Но существует множество альтернативных решений организовать эффективные очереди сообщений: AMQP, Redis, ZooKeeper, Apache Kafka или даже самописные очереди на Cassandra. Почему не использовать их вместо JMS? 
В этом докладе мы обсудим краеугольные проблемы любой распределенной системы, основанной на обмене сообщениями, и уже с этими знаниями взглянем еще разок на JMS и альтернативы с точки зрения практических сценариев из реальной жизни.

Yet another technology stack in web-app development
Григорий Кошелев, СКБ Контур

При разработке web-приложений перед Java-разработчиками встаёт вопрос выбора технологий. Часто разработчики хотят остаться в Java/XML-мире, выбирая GWT или JSF. Я постараюсь предложить решение, которое бы выходило за рамки Java/XML-мира, сохранив его плюсы и устранив некоторые его минусы. В основе решения со стороны сервера лежат Spring Framework и FreeMarker, а со стороны клиента – AngularJS и TypeScript. На докладе я расскажу про применение MVC одновременно на клиенте и сервере, двухуровневую шаблонизацию, особенность использования TypeScript.

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

11/02/2016
JUG.EKB #6
Что должен знать о соцсетях каждый Java разработчик?
Алексей Рагозин, Deutsche bank

Протокол TCP существует уже более 30 лет. Сетевые коммуникации являются неотъемлемой частью практически любого современного приложения. Тем не менее, сетевое программирование продолжает оставаться зоной проблем и опасностей. Но несмотря на простой интерфейс, программирование "сокетов" далеко не простая задача. Тема этого доклада "правильное" использование TCP/IP и Java socket API. Знаете ли вы что происходит при закрытии сокета? Как опции TCP влияют на производительность? Какие исключения может кидать сокет в Java? - Не уверены, тогда этот доклад для вас.

Kotlin + Android: практический ликбез
Дмитрий Полищук, Яндекс

Весь мир ждет выхода первой версии нового языка программирования от JetBrains под названием Kotlin. Но в мире мобильной разработки под Android мы ожидаем его с еще большим трепетом. Этот язык уже сейчас решает большое количество наших задач, которые стандартными средствами решаются не очень красиво или нетривиально. Используя стандартную библиотеку языка Kotlin мы освобождаемся от всего того багажа утильных библиотек на java которые мы были вынуждены таскать из проекта в проект. У Kotlin отличный потенциал для разработки в реактивной парадигме, которая сейчас постоянно набирает популярность во всей индустрии и в том числе в разработке мобильных приложений. Но т.к. язык новый и сообщество очень молодое, то все шишки еще не набиты. Я расскажу про подводные камни при написании UI, реактивного программирования, DI и почему уже даже сейчас можно переходить с Java на Kotlin для Android. Доклад будет интересен не только мобильным разработчикам, но и всем, кто интересуется современными JVM языками.

Оптимизация GWT приложений
Андрей Каргаполов, Naumen

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

Будут затронуты следующие вопросы:
  • анализ объема клиентского кода приложения
  • Минимификация и оптимизация через ключи компиляции GWT
  • Сравнение разрешения зависимостей в рантайме и на этапе компиляции
  • Разделение клиентского кода на части и их отложенная подгрузка

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

22/09/2016
JUG.EKB #7
Escape Analysis и скаляризация
Руслан Черемин, Deutsche bank

1 часть трансляции
2 часть трансляции


Ahead of time компиляция для Hotspot
Дмитрий Чуйко, Oracle

1 часть трансляции
2 часть трансляции
3 часть трансляции

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

03/03/2017
JUG.EKB #8
G1 GC: опыт миграции
Александр Мохов, Naumen

Доклад посвящен практическим аспектам перевода высоконагруженного java-приложения с ParallelOld на G1 GC: на что следует обратить внимание, если вы хотите, чтобы доступность вашего приложения была более предсказуемой?

Микросервисы - Огонь, Вода и Медные трубы
Александр Тарасов, Одноклассники
Кирилл Толкачёв, Альфа-Лаборатория

Микросервисы это не нечто новое, уникальное, неизведанное. Идеи, заложенные в их концепцию, основные постулаты уже звучали раньше. Так почему же мы всё чаще слышим о микросервисах? Почему многие верят, что это серебряная пуля, которая спасет нас от кровавого энтерпрайза? Даст нам глоток свежего альпийского воздуха после многолетнего вдыхания городской пыли? Мы попытаемся разобраться, что такое микросервисы для нас и чем они отличаются от того, что было раньше? Разберем основные понятия и покажем как теперь разрабатывать enterprise-приложения с микросервисным подходом на нашем любимом языке программирования Java? И нужна ли Java вообще? С какими проблемами придется столкнуться, как их можно решить и какие инструменты в этом помогут?

1 часть трансляции
2 часть трансляции
3 часть трансляции

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

05/10/2017
JUG.EKB #9
Application Performance Monitoring: сравнение возможностей, проблемы и решения
Ярослав Киселев, КРОК

Существует масса способов найти причину медленной работы приложения, сданного в эксплуатацию. Например, можно аккуратно добавить логирование времени выполнения потенциально медленных методов. Или можно попробовать получить тред-дампы продакшена, проанализировать их и понять, на что программа тратит большую часть времени исполнения. Но есть ли какой-то более простой и доступный способ? На помощь нам могут прийти специализированные решения класса Application Performance Monitoring (APM). Как обещают вендоры, APM могут показать, что происходит внутри приложения, и помочь в поиске узких мест. Только попробовав, можно узнать, насколько эти заявления соответствуют действительности. На примере опыта использования решений APM в реальных проектах мы разберемся в их полезности и сравним с классическими инструментами — такими, как логи и тред-дампы.

Организация многопоточности по модели подписки в Java 9
Дмитрий Чуйко, BellSoft

В JDK 9 появится новый класс Flow. Настолько ли это нужно, если с версии 8 уже есть CompletableFuture? Разберёмся, почему не хватает уже доступных моделей многопоточности, и как похожие подходы реализованы за пределами стандартной библиотеки. Оказывается, реактивным может быть не только двигатель, но и Java-приложение в маленькой коробочке. 

И немного о самом Дмитрие: работает в компании BellSoft. Более 4 лет работал в Oracle в команде Java SE Performance. В настоящее время занимается оптимизацией Java для процессоров семейства ARMv8. Предыдущий многолетний опыт с Java продемонстрировал, что в проблемы производительности упираются приложения любых масштабов и на любом оборудовании.​

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

01/03/2018
JUG.EKB #10
Спасти поиск в приложении и не сойти с ума
Дмитрий Колмогорцев, Naumen

Знакомьтесь, Дмитрий Колмогорцев (Naumen, Екатеринбург) - разработчик группы производительности Naumen SMP, имеет опыт в автотестировании.
Дмитрий сделает доклад на тему “Спасти поиск в приложении и не сойти с ума”.
Итак, вы решили что вам нужен полнотекстовый поиск,взяли Lucene и выкатили в прод. 
Все идет хорошо: люди находят желаемое, все счастливы. 
Шло время и вдруг пользователи начинают жаловаться — ничего не ищет/долго ищет. Кто знает, возможно это из-за чьего-то стойкого желания индексировать xlsx в 50 мб или из-за тихого хрипа в логе в виде обилия Exception`ов? 
Дмитрий расскажет о проблемах на нашем пути и о том, как можно уменьшить время поиска с минуты до секунды.

Эволюция синхронной системы со Spring 5/Progect reactor
Максим Гореликов, Альфа-Лаборатория

Вышла очередная версия Spring, в которой появилась поддержка reactive streams. Хочется попробовать создать реактивную систему и посмотреть что из этого выйдет. Проверим можно ли с помощью новых подходов создать систему, которая лучше держит резкие всплески нагрузки и можно ли как-то улучшить ситуацию когда ваши источники данных тормозят. Посмотрим, как интегрировали Project Reactor в Spring 5 и что это может дать обычному разработчику. Возьмем простую синхронную систему из нескольких сервисов и БД, будем по шагам решать ее проблемы с помощью реактивных подходов. Попробуем разобраться, как все это стыкуется и как используются потоки в различных ситуациях. Интересно будет всем тем, кто не пробовал писать реактивные сервисы на Java или еще не успел посмотреть Spring 5/Reactor, или все это использует, но не до конца понимает, как оно работает.

Лофт «Титры» (проспект Ленина, 50Д)
01/03/2018
JUG.EKB #11
Deep links, strong drinks
Андрей Чернопрудов, Naumen

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

API на переправе не меняют - как построить стабильный API?
Алексей Стукалов и Юрий Артамонов, HAULMONT

Вам знакомо то чувство, когда обновление того или иного фреймворка на давнем и стабильном проекте взрывает код и превращает его в красно-перечеркнутое месиво? Будучи разработчиками платформы CUBA нам до боли это знакомо. Так за время существования платформы, она поменяла под собой 3 ORM-а, 3 мажорных версии Vaadin, не говоря уже о Spring Framework. При этом, одной из задач, решаемых платформой, является именно сохранение стабильного API, чтобы наши пользователи не страдали от вышеобозначенной проблемы и мигрировали на последние версии всех используемых в платформе библиотек. В этом выступлении мы поделимся своим опытом построения API, а также приемами, которые позволяют нам решать проблемы с переездом решений на базе CUBA на up-to-date стек.

Коворкинг «Соль» (Переулок Химиков 3, 4 этаж)

28/02/2019
JUG.EKB #12
Хватит это терпеть: внедряем свеженький SpringBoot в большой legacy-проект
Андрей Аркаев, Naumen

Java-мир сильно изменился с появлением SpringBoot и ощутимо облегчил жизнь Java-разработчиков во многих аспектах. И всё бы хорошо, но, когда у вас гигантская 12-летняя кодовая база и 140 различных инсталляций в продакшене, зачастую, об этом можно только мечтать. 
Мы решили, что так жить не хотим, и внедрили SpringBoot. На встрече поговорим о том, что конкретно нас сподвигло на изменения, как подготовить себя и команду, с какими проблемами нам пришлось столкнуться и, что в итоге у нас получилось.

Большое Enterprise приложение для маленькой такой компании
Владимир Янченко, Naumen

16 ядер и 24 гб памяти — средний сервер приложения для нашего Enterprise продукта. А что делать, если есть всего 2 гб памяти, 1 ядро и большое желание это запустить в production? 
Из доклада вы узнаете об архитектуре нашей облачной платформы, почему мы решили экономить на ресурсах и как это реализовали, какие проблемы ждут при поддержке 300+ java приложений и что необходимо для быстрого решения этих проблем.

Построение микросервисного приложения на Netflix OSS
Петр Попов, Tinkoff

Немного расскажу про Eureka, Zuul, Ribbon, Feign, Hystrix и про проблемы решаемые стеком. В рамках live coding сессии покажу как изготовить приложение с использованием стека
Атриум Палас Отель (ул. Куйбышева, 44)
12/09/2019
JUG.EKB #13
Мигрируй вчера
Юрий Калеми, Naumen

Миграция схемы и данных реляционных БД в тиражном продукте.
Вкратце о самой распространённой методике доставки обновлений – Blue Green Deployment: почему она не подходит в случае тиражного продукта, и какое мы нашли решение для уменьшения времени простоя при миграциях БД

Ах, эти строки
Сергей Цыпанов, EPAM

Строки. java.lang.String. Пожалуй, наиболее изученный класс в Java. Все его использовали бессчётное количество раз, и, кажется, что уже не осталось ничего, чем он может нас удивить. Но всегда ли правильно мы его используем? Рискну предположить, что далеко не всегда. Доклад о строках и связанных с ними граблях

Атриум Палас Отель (ул. Куйбышева, 44)
27/02/2020
JUG.EKB #14
Java 11: Золотей теленок
Владимир Тарасов, Naumen

Попытка извлечь стопроцентную выгоду из новой релизной модели Java лежит через тернистый путь смены Oracle JDK на OpenJDK, модуляризации приложения, бесконечных холиваров и внутреннего перелома сознания. Запуск на OpenJDK 11 c classpath сопровождается фразой – сбылись мечты идиота! Однако, вся подготовительная работа по переходу на modulepath, включающая перевод сторонних библиотек и написания module-info.java, получается не такой простой, как кажется на первый взгляд…

Kotlintest
Павел Финкельштейн, JetBrains

Пишете на Kotlin, но всё ещё используете джавовую инфраструктуру для тестирования? А ведь вместе с экосистемой Kotlin растёт и количество инструментов для тестирования на нём.
Я расскажу вам о том, как Kotlin может облегчить жизнь разработчику тестов независимо от того, кто он: разработчик, QA или кто-то ещё
12/11/2020
JUG.EKB #15 Online
Чем меньше, тем лучше. Эффективные Java-докеры
Дмитрий Чуйко, Bellsoft 

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

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

Дмитрий Чуйко, инженер по производительности в компании BellSoft, в докладе «Чем меньше, тем лучше. Эффективные Java-докеры» расскажет:

  • как небольшие контейнеры помогают деплойменту
  • что такое Alpine Linux с точки зрения JDK
  • что потенциально может пойти не так
  • какие другие применения нового порта JDK
А также сравнит результаты при использовании Alpine с альтернативным подходом к контейнеризации микросервисов, основанном на GraalVM native image.

Типизируй это немедленно
Павел Зыков, Naumen

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

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

Павел Зыков, спикер на JUG.EKB #15, вместе с командой Naumen Service Desk решили проблему наполнения тестовыми данными при помощи DSL на Groovy.

Groovy — язык, который идеально подходит для реализации DSL (Domain-specific language), но из-за динамической типизации, чем сложнее DSL становился, тем тяжелее было найти в нем ошибку.
25/03/2021
JUG.EKB #16 Online
Kotlin для разработки серверных приложений. Взгляд Java-разработчика
Антон Архипов, JetBrains

Kotlin становится всё популярнее для разработки не только мобильных приложений, но и для создания сервисов. Многие Java-фреймворки стараются включить Kotlin в список поддерживаемых языков. Spring, Micronaut, Quarkus, Vaadin — имя им легион!

Антон Архипов, Developer Advocate в JetBrains, предлагает взглянуть на Kotlin глазами скептичного Java-разработчика:

  • Что же там такого хорошего?
  • Почему разработчики Spring вложились в поддержку Kotlin?
  • Стоит ли переходить на Kotlin если Java развивается?
  • Какие барьеры придется преодолеть для внедрения нового языка в разработку?

Отдел по борьбе с временными аномалиями: BTrace как рулетка времени
Мария Газизова, Naumen

Когда вы начали писать свой продукт — год, пять, а может быть и 10 лет назад? Как насчет того, чтобы вспомнить прошлое: давайте измерим время выполнения ваших методов и посмотрим как их ускорить.

Спикер JUG.EKB #16, Мария Газизова, вместе с командой Naumen Service Desk внедрили инструмент трассировки BTrace всего за пару недель и узнали, что добавляло работы. На митапе Мария расскажет нам:

  • как быстро внедрить инструмент трассировки
  • запустить его в сборке
  • на что обратить внимание при анализе получившихся результатов

Data Scientist в погоне за взмахом колибри
Артем Селезнев, Сбер

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

Проект высокочастотного формирования портфеля для активной торговли на рынке акций стал ключевым для путешествия в мир анализа данных на Java. Артём Селезнев, Team leader of data science team в СБЕРе, предлагает участникам митапа пройти его путь по анализу данных и построению предиктивных моделей для биржи.

 Мы окунемся в данные в виде таблиц и узнаем:

  • что скрывается под определениями: функция потерь или стохастический градиентный спуск;
  • что и как надо сделать, чтобы математическая формула начала нам показывать вероятности или примерные будущие значения.
16/12/2021
JUG.EKB #17 Online
Spring-data-commons — скрытое сокровище
Андрей Беляев, Haulmont

Поговорим про фундаментальную библиотеку для spring-data-jpa, spring-data-mongo и многих других библиотек spring framework для доступа к данным. А также о внутреннем устройстве spring-data-commons и, возможно, попробуем сделать свою собственную библиотеку для выборки данных.

Целевая аудитория: Middle/Senior специалисты, практикующие инженеры.
Спектр технологий: Spring, Spring Data и немного GraphQL.

Linkerd — Service Mesh, который смог!
Александр Тарасов, ANNA Money

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

В докладе рассмотрим практические аспекты внедрения, конфигурации и использования Linkerd, а также коснёмся общих вопросов в части ServiceMesh-решений и попробуем ответить на вопрос, а нужен ли вам Service Mesh?

Целевая аудитория: Middle/Senior специалисты, практикующие инженеры.
Спектр технологий: Kubernetes, Linkerd 2.x (немного Istio и других ServiceMesh-решений), OpenTelemetry, Jaeger.

Гималайские пики тестирования дата-пайплайнов
Павел Финкельштейн, JetBrains
Ксения Томак, Dodo Engineering

Чем отличается тестирование дата-пайплайнов от тестирования любого бэкэнда? Казалось бы, те же базы данных, те же алгоритмы, апихи и вовсе нет… Что тут тестировать вообще? Ну вот и посмотрим :)

Целевая аудитория: Middle/Senior специалисты, практикующие инженеры.
Спектр технологий: Cloud, Java, Python, distributed systems.

Готовим Java-приложение, приправленное Groovy-скриптами
Матвей Носков, NAUMEN

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

Мы рассмотрим как приготовить вашу платформу для скриптования; как сделать так, чтобы готовка скриптов приносило радость, а их поддержка не была болью, ну а Groovy стал вашим помощником!

Целевая аудитория: Middle/Senior специалисты, практикующие инженеры.
Спектр технологий: Java, Groovy.

Тестирование руками разработчиков
Константин Воливач, Контур

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

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

Целевая аудитория: Junior, Middle, Senior.
Стек технологий: Kotlin, Spring, Junit5, Kfixture, Gitlab-ci, Kubernetes.

Можно ли написать библиотеку так, чтобы потом не грызть локти?
Леонид Старцев, JetBrains

Все мы любим open-source библиотеки и не любим, когда в их новых версиях ломается обратная совместимость. Я расскажу о некоторых хитрых приёмах формирования публичного API, которые могут оставить автору библиотеки больше пространства для манёвра и возможностей развивать API без несовместимых изменений.

Целевая аудитория: Middle+. 
Спектр технологий: Kotlin, JVM, OpenSource.
12/05/2022
JUG.EKB #17 Online
Ниспадающее программирование и его преимущества
Вячеслав Пыжьянов, тимлид группы разработки NAUMEN

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

На JUG.EKB вы узнаете алгоритм для эффективной разработки, при которой код получается более простым и понятным, а скорость разработки существенно увеличивается. Увидим, как связано ниспадающее программирование с ООП и рассмотрим некоторые неочевидные моменты при использовании ООП.

Тема актуальна для разработчиков любого уровня опыта.

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

Экскурсия в бэкенд Интернета вещей
Владимир Плизга, ведущий бэкенд-инженер в команде разработки AggreGate

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

В докладе рассмотрим практические аспекты внедрения, конфигурации и использования Linkerd, а также коснёмся общих вопросов в части ServiceMesh-решений и попробуем ответить на вопрос, а нужен ли вам Service Mesh?

Целевая аудитория: Middle/Senior специалисты, практикующие инженеры.
Спектр технологий: Kubernetes, Linkerd 2.x (немного Istio и других ServiceMesh-решений), OpenTelemetry, Jaeger.
17/11/2022
JUG.EKB #19 Online
Обновление Hibernate через боль
Андрей Аркаев, руководитель группы разработки в Naumen

«Почти все крупные проекты работают с базами данных. Для работы с БД чаще всего используется Hibernate как самая популярная ORM-библиотека. Кодовую базу и библиотеки нужно поддерживать в актуальном состоянии, так как проект может жить не один год.

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

Стек технологий: JPA, Hibernate и особенности некоторых реляционных БД.


Добровольно-принудительный Spring
Илья Сазонов, руководитель бэкенд-разработки в Всегда.Да
Фёдор Сазонов, техлид в Сбере

«Сообщество Java-разработчиков выбрало Spring и всё, что с ним связано. Теперь он везде и с этим надо жить. Когда Spring стал мейнстримом, сложились практики его использования, которые не соответствуют рекомендациям экспертов или вообще цинично их игнорируют.

Зачастую те проблемы, которые эксперты хотели решить введением новых методик, разработчики решают введением новых инструментов. И если хотят снизить уровень дискомфорта при разработке в команде, то вынуждены кодить совсем не так, как написано в учебниках. Но некоторые методики все равно очень полезны, несмотря на то, что современный инструментарий сводит на нет профит от их использования».

Стек технологий: Java, Spring, Mapstruct, Hibernate, Mockito, Lombok.