| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Training | Objectives (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 Fundamentals | Java 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 Web | Introduction 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 Persistence | Intoduction 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 Microservices | Introduction 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 |