More practice! Teach the Spring Framework and profiling without any conferences

    You read the posts in our blog and think: "Who needs them, I do not go to the conference." And you do not go to the conference because you want to learn some specific things, and not just increase your horizons. Yes, for someone it makes sense! Not only you think so.


    Especially for you, we did something completely different. A couple of days before Joker, two full-scale training sessions will be held. Each training is two days for 6-8 hours of dense training in specific things. Groups are small, so the coach works with you personally - he tells, gives tasks, looks at how you carry them out, prompts.


    Spring will be taught by a man you all know - Yevgeny Borisov, one of the best specialists on Spring outside Pivotal. Java application profiling will be taught by Aleksey Ragozin, an engineer and trainer who has over 10 years of experience in the development of highly loaded distributed systems in various industries.


    More information about these trainings can be read under the cut.


    The illustration is a typical Spring template. Just in case you haven’t seen it for a long time.




    Spring ripper


    You can walk, you can take a taxi, you can pass on the right and drive the car yourself, but the one who understands what is going on under the hood has maximum control.


    This training will help you go from a pedestrian to a mechanic racer. We will learn not only to use Spring, but also to expand its capabilities, and for this we will have to crawl deep under the hood. Let's talk about all the main components of Spring, discuss different kinds of contexts and their conglomerates, consider integrating Spring with other popular technologies, such as Hibernate, web, security, validation.


    The training will be as practical as possible. A lot of code will be written live. It will be fun, harsh, but as clear as possible.


    Key topics


    Day 1


    • Basic concepts, design patterns and Spring philosophy, advanced reflection, writing your own framework a la Spring
    • Different kinds of contexts (XML, annotations, Java Config, Groovy Script)
    • Beandefinition
    • BeanPostProcessors
    • Dynamic Proxy + CGLib
    • BeanFactoryPostProcessors
    • Spring annotations and writing your own annotations
    • How to extend Spring features
    • Qualifiers
    • Factory Bean and Inheritance BeanDefinition
    • Java config
    • Best practices: mixed contexts and when to use than, updating prototypes in Singleton bins, double proxies, searching for the original class metadata in the proxy
    • Design Patterns with Spring

    Day 2


    • Upgrading Prototypes to Singleton
    • Custom scope
    • Spring aop
    • Writing aspects
    • AOP Best Practiсe
    • Profiles and Conditionals
    • Introduction to ORM on the example of JPA + Hibernate
    • Using Hibernate through Spring
    • Declarative transactions in Spring
    • Spring add-ons (Spring Data, Spring Data Rest, Spring MVC)
    • Introduction to Spring Boot
      • Dependency Management
      • Main Spring Boot annotations
      • @EnableAutoConfiguration
      • Springapplication
      • EnvironmentPostProcessors & Environment
      • Application.properties / YML
    • Starters
      • Existing starters
      • Spring.factories
      • Custom starter

    Evgeny Borisov


    Naya Technologies


    Eugene has been writing in Java since 2001 and has participated in a large number of enterprise projects. Having gone from a simple programmer to an architect and tired of the routine, he went to the free artists. Today, Zhenya writes and conducts courses, seminars and workshops for various audiences: live courses on J2EE for officers of the Israeli army, Spring - on WebEx for Romanians, Hibernate through GoToMeeting for Canadians, Troubleshooting and Design Patterns for Ukrainians.


    What where When


    Date and time : October 17-18, 2018.


    Venue :

    St. Petersburg
    Office of the company Nexign
    Ural ul., 4


    Requirements for the participants' equipment : It is desirable to have a laptop with the following software: IntelliJ IDEA (highly recommended 2017+), Java 8.


    How to sign up : fill in the form located on the official website, at the very bottom of this page .




    Efficient Java application profiling


    In practice, tasks that require the use of a profiler happen at very critical times for business, when there are not so many rights to make mistakes. Therefore, developers usually do not have the opportunity to learn how to effectively own this tool on their own experience. Of course, the exception is the special performance engineers involved in profiling all the working hours - but even they need to learn from each other.


    However, the effective use of the profiler in a critical situation can dramatically reduce the time to solve a problem (from weeks and months to a few days), and sometimes decide the fate of the entire project. Profiling needed.


    This training gives the developer the key knowledge and skills to effectively use the profiler in their work and allows you to fill the skills gap described above.


    It will be useful to Java-developers and Java-architects (all levels of training), Big Data-engineers and SRE (Site Reliability Engineer).


    Key topics


    • Section 1 . Introduction Approach to analyzing problems from top to bottom. Classification of typical problems and decision tree. Basic diagnostics of a problem application using JDK tools.
    • Section 2 . Search for “hot code” by sampling stream dumps. Work with VisualVM. Sampling results visualization: call tree, inverted call tree, Flame Graph.
    • Section 3 . Garbage dumping and its impact on performance. Analysis of garbage collection logs. Garbage collection events in Mission Control / Java Flight Recorder. Criteria for the normal operation of the garbage collector.
    • Section 4 . Analyzing JVM memory contents. Using class histograms for analyzing static and dynamic load on memory. Getting a JVM memory dump and working with it. Using the query language OQL for analyzing dumps.
    • Section 5 . In-depth work with Java Flight Recorder. Sampling memory allocations and other tool features.
    • Section 6 . Fixing the theme of sampling dumps threads. Demonstration of the bias characteristic for sampling.
    • Section 7 . Use tracing when searching for bottlenecks. Trace using Visual VM. Trace using BTrace. Analysis of multithreading problems. Demonstration of various options for inter-thread locks (deadlocks) and methods for their detection.
    • Section 8 . The final lecture. Features of communication of intermediate analysis results for non-technical audience. Combining profiling and other research methods.

    Alexey Ragozin



    The author of the course and trainer has more than 10 years of experience in the development of highly loaded distributed systems in various industries. Alexey is an active speaker at Russian and foreign conferences in the field of software and a contributor to Open Source.


    What where When


    Date and time : October 17-18, 2018.


    Venue :

    St. Petersburg
    Office OpenWay
    Nab. Petrogradskaya, 36, lit. "BUT".


    Training Plan : 8 academic pairs (90 minutes), grouped by day.


    Requirements for the participants' equipment : the participants need a laptop with the following software:


    • Oracle Java Development Kit (JDK) - version no lower than 8u144;
    • Apache Maven - version not lower than 3.0.5;
    • git client;
    • any integrated Java development environment;
    • Any operating system can be used.

    How to sign up : fill in the form located on the official website, at the very bottom of this page .


    Also popular now: