ABCDEFGHIJKLMNOPQRST
1
TrainingObjectives (at the end of the training participants will be able to ... without using google)
2
Introduction to the training program- Embrace the importance of practice
- Value and support your mates
- Understand the importnace of knowing low level details
- List the learning goals of the program
- Perform tasks during the lessosn as well as homeworks
3
Java FundamentalsJava Basics- List the main parts of Java SE and the related skills you need for day-to-day job
- Explain the structure of Java Memory Model
- Uderstand the mechanism of type paramentrization (generics)
- Implement solutions that requires type parametrization including recursive and bounded generic types
- Identify potential issues like generic varargs and know how to deal with them
4
Algorithms- Embrace the importance of algotihms for enterprise development
- Calculate the Time Complexity of an algorithm
- Compare the efficiency of different solutions
- List the main types of algorithms
- Implement and compare sort algorithms Bubble Sort, Insertion Sort, Selection Sort, Merge Sort
5
Data Structures- Embrace the importance of the data structure for enterprise development
- Understand the foundation: arrays and linked nodes that form other data structure
- List common data structures and explain their features
- Choose a proper data structure based on the task
6
Java Library- Analyze the efficiency of Java Collections
- Value the role of Reflection for enterprise frameworks
- Load classes, create instances, read meta information and invoke methods using Reflection API
7
Object-Oriented Programming- Value the benefits of OO design in enterprise systems
- Analyze design and detect coupling issues
- List design patterns and explain their features
- Implement a Proxy patterns using CGlib
8
Functional Programming- Explain the advantages of FP and why it's features were added to Java
- Understand the implementation details of lambda expression and how it is different from method reference
- List standard funtional interfaces and explain their features
- Choose a standard functional interfaces and know when to create a custom one
- Implement lazy initialization stretagy
9
Declarative Data Processing- Explain the difference between imperative and declarative data processing
- Implement basic operations like filtering, mapping and collecting using Stream API
- Implement advanced operations like flat mapping, partitioning, and grouping using downstream collectors
- Design and implement more explicit and null-safe API with Optional class
- Properly handle nullable objects in a declarative way using Optional API with funtional programming techniques
10
Concurrency- Understand the Java Thread model
- Explain how low-level Thread objects are used by high-level frameworks
- List multiple ways to parallesize logic using various tools in JDK
- Implement high-performant mege sort using Fork/Join framework
- Implement async calls suign CompletableFuture
- Understand how parallel Streams and CompletableFuture work under the hood
11
Final Training on Java Fundamentals- Module Recap
12
Java WebIntroduction to Java web development- List the main parts of the Java Web development and the related skills you need for a day-to-day job
- Understand the basics of a multi-layered architecture
- Explain the features of a typical architecture (Client/Server, 3-tier, Distributed, etc)
13
Sockets, TPC/IP, HTTP- Understand how Java apps communicate via network on the TCP level
- Send and receive data via TCP with java.net
- Explain the structure of the HTTP protocol
- Manually perform an HTTP request using Java sockets
- Understand how do we convert objects that gets sent via TPC, and vice versa
14
Server-side Java- Explain the difference between various platforms Java EE, Jakarta EE, Spring
- List the key features of Servlet API
- Implement basic HTTP operations like reading parameters, processing body, redirecting requests, and setting headers
- Understand how the session mechanism is implemented under the hood
15
Introduction to Spring Platform- List the main Spring projects and their applications
- Understand the key parts of the Spring Framework
16
Spring Context- Explain the Inversion of Control pattern
- List Spring Application Context features
- Understand how it is created
- Create a simple version of a custom Application Context
- Understand the relationship between Spring context and Servlet context
17
Spring MVC- Understand REST principles
- Design RESTful API
- Implement a RESTful API using Spring
- Explain how Spring MVC works on top of the servlet container
18
Spring WebClient- Explain what is the defference between RestTemaplate and WebClient
19
Spring Boot- Explain what is the difference between Spring Boot and Spring Framework
- Understand how the context is initialized in the embedded servlet container
- Use major Spring Boot features
- Understand how does autoconfiguration work under the hood
20
Spring under the hood- Understand the inernal parts of Spring IoC (BeadDefinitions, BeanPostProcessor, BeanFactoryPostProcessor)
- Implement a custom bean post processor
- Implement a custom @EnableSomethig logic that relies on custom annotations and bean post processing, and proxies
21
Final Training on Java Web- Module Recap
22
Java PersistenceIntoduction to Java Persistence- List the main parts of the Java Persistence and the ralted skills you need for day-to-day job
- Understand how critical is persistence for enterprise projects
23
RDBMS & SQL- Understand the key parts of the relational model and RDBMS
- Design database based on business requirements
- Understand how does the DB schema evolve on real projects and how to keep the DB consistenct as it changes
- Write simple DDL queries like create table
- Write CRUD queries
24
Table Relationships- Design all kinds of relationships between tables (1-1, 1-m, n-m)
- Understand how does the relationships work in the DB
- Use the benefits of the 1-1 with shared PK
- Build hierarchy with self-joining relationships
25
Transactions Management- Explain what is a transaction, what are its features, and what kind of problemts it solves
- Understand how do different databases synchronized operations on shared data
- Explain each isolation level
26
Locking Strategies- List common locks and explain when they are applied
- Understand the concept of passimisting locking and implement corresponding queries
- Understand the concept of optimistic locking and how to implement it with data versioning
27
JDBC & Connection pooling- Understand what is JDBC and how does Java app communicate over TCP using the Driver
- Identify potential SQL injections and fix it
- Leverage Data Streaming and Batching for better performance
- Explain what is a database connection & why do we need a connection pool
- Implement a custom connection pool
28
Introduction to ORM, JPA & Hibernate- Understand the main ideas behind ORM
- Explain what is JPA, list its features and common implementations
- Understand how ORM frameworks are implemented under the hood
- Implement a primitive version of custom ORM (CRUD methods)
29
Persistence Context & Hibernate Session- Understand the concept of persistence context/session/unit of work
- Explain how it is implemented in Hibernate and why it's called 1-st level cache
- Understand how to properly perform update operation using dirty checking
- Implement a custom session and custom dirty checking mechanism
30
Async DB Operations & Action Queue- Explain the asynchronous mechanism of DB operations in Hibernate
- Understand how does the ActionQueue and Flush work
- Identify potential errors (related to incorrect entity state) during code review
- Implement a simple version of custom Action Queue
31
Entity Relationships Mapping- Implement all kind of relationship between entities (1-1, 1-m, n-m)
- List the critical rules on how to properly map the relationship
- Identify mapping issues during code review
32
Entity Relationships Operations- Understand how Hibernate manages the relationship graph during fetching
- Explain the N+1 SELECT problem and provide a solution for it
- Configure cascade operations and orphan removal
- Identify potential performance issues during code review
33
Repository Pattern & Spring Data JPA- Explain what is Spring Data JPA repository and list its features
- Implement custom queries including joining, fetching and passing hints
- Understand the benefits of repository methods that return streams
- Implement a custom Spring Data repository
34
Declarative Transaction Management with Spring- Explain how does the Spring handle DB transaction for each user in a separate thread
- Understand how does @Transactional method work
- List @Transactional features like transaction propagation and its limitations
- Understand the relation between a transaction and a session
- Beware of the open-in-view anti-pattern and a correspond Spring Boot feature
35
Persistence Best Practices- Ensure data consistency with DB Constraints and Data Validation
- Keep the DB schema consistent across all environments (Flyway)
- Provide a data audit (Spring Data Audit)
- Optimize query performance (join fetch, DTOs, batching, cache)
- Apply Concurrency Control strategies (optimistic, pessimistic)
36
Final Training on Java Persistence- Module Recap
37
Java MicroservicesIntroduction to microservices architecture- Explain pros and cons of microservices architecture and when one should use it
- List common patterns
- Understand the main features of Spring Cloud
38
Application Design. DDD- Value the application design that is aligned with the business structure
- Understand the key concepts of the Domain-Driven Design
- Design and implement domain objects based on the requirements
39
Microservices Core Patterns- Configure microservices project using Spring Cloud
- Implement a configuration service
- Implement a discovery service using
- Configure feign clients with client-side load balancing
40
Client Resiliency Patterns- Understand the main problems related to fault tolerance
- Explain why do we need a Circuit Breaker
- Configure Spring Cloud Circuit Breaker & Resiliency4j
- Implement feign clients using circuit breakers as well as fallback strategies
41
Message brokers & Async Communication- Understand the basics of the message-based asynchronous communication
- Explain what is a Queue and how the messages are processed
- Explain what is an Exchange, list various types and explain their features
- Access RabbitMQ using AMQP Java client
42
Even-Driven Architecture- Define what is Even-Driven Architecture
- List common types of Even-Driven Architecture
- Access RabbitMQ using Spring AMQP
- Access RabbitMQ using Spring Cloud Stream and Spring Cloud Function
43
Docker for Java Devs- Explain what is containerization and what problem it solves
- Understand Docker basics
- User Docker to speed up develompment
44
Kubernetes for Java Devs- Understand what problems Kubernetes solves and how it works
- Create a configuration for Spring Boot app to deploy in Kubernetes cluster with all dependencies
- Explain the relationship between Kubernetes & Spring Cloud
45
Service Authentication & Authorization- Explain authentication, authorization and how they are usually implemented in Java
- Understand security-related challenges in microservices architecture
- Implement authentication and authorization for a monolithic app using Spring Security
- Explain what is OAuth, Open ID, and JWT
- Understand how authentication and authorization can be implemented using an external identity provider integrated with Spring Security
46
Closing of the Java Ultimate Training Program- Value the role of Practice and Repetition
- Value the role of Relationships and Community
- Plan the Next Steps in your career
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100