JUG.CY with Alexander Misyuryaev, Wrike and Pasha Finkelshteyn, Bellsoft
Details
Last time, we discussed how to upgrade a Spring-based application. This time, we’ll explore other important aspects of maintaining modern Java projects.
First, we’ll talk about how to detect and remove dead code using Scavenger — a topic that’s becoming increasingly relevant as more code is generated with the help of LLMs. A colleague from Wrike will share hands-on experience with this approach.
The second talk will focus on building the best Docker image for a Spring application, presented by a representative from a vendor that provides both Java builds and base images Bellsoft.
It’s going to be an engaging and practical session — don’t miss it!
Participation is completely free, but places are limited. Please check in if you plan to attend the meeting; we can't let you into the building if you are not on the list.
Agenda for this evening:
- Doors open at 18:30
- Talk will start at 19:00
- We will have a short break after the first talk
- We will have discussions regarding the talks with networking opportunities after.
- We will finish before 22:00 at the office, but nothing can stop us from continuing somewhere in the cozy bar nearby.
Alexander Misyuryaev, Wrike - Scavenger for Dead Code Detection
Legacy code is a reality for almost every mature product — and while not all legacy code is harmful, ignoring it certainly is. In this talk, we’ll focus on one of its most overlooked aspects: dead code. You’ll learn what dead code is, why it appears in your codebase, and how it silently increases maintenance costs, slows development, and introduces risks.
We’ll explore both static and dynamic approaches to detecting dead code and take a deep dive into Scavenger, an open-source tool for identifying unused methods in large distributed systems. Together, we’ll discuss how Scavenger works under the hood, how to integrate it into your infrastructure, and how to safely remove dead code without unexpected side effects.
Whether you’re maintaining a long-lived monolith or managing dozens of microservices, this session will help you keep your codebase cleaner, faster, and easier to evolve.
Pasha Finkelshteyn, Bellsoft - Crafting the Ultimate Docker Image for Spring Applications
Docker is the cornerstone of today's development! Let's overview quickly how we use it in JVM development, and then transition to practical examples. We will start with a simple Docker image containing a popular "one fat JAR" and look into its downsides (deployment speed, traffic volume). To address them, we will discuss the strategy of splitting the JAR into multiple layers and using multistage Dockerfiles, gradually improving our image. Join me to learn how to build the ultimate Docker image for Spring applications.
About the speakers:
Alexander Misyuryaev - Software Engineer at Wrike
I’m a software engineer with extensive hands-on experience building and refactoring high-load distributed systems handling millions of operations per day. I’m passionate about code quality, Domain-Driven Design, and Clean Architecture, and I’ve spent years transforming complex legacy codebases into maintainable, efficient, and scalable solutions. Beyond coding, I enjoy mentoring other engineers and fostering collaboration — because I believe our true strength lies in working together.
Pasha Finkelshteyn - Developer Advocate at BellSoft
Years of experience in software engineering and the team's leading roles combined with his passion for Java made Pasha know all the hidden details in this IT niche. As a Developer Advocate for @Bellsoft, he educates the public on the latest software tools built by BellSoft and helps to create and test instruments for developers. He writes in Kotlin, speaks at conferences, composes new articles, or maintains his pet projects.
