Introduction to Web Development
- Where we're going, what we could do after this
- Version control
- Rewire about network: Internet, Protocol, Browsers
- Introduction to coding conventions and best practices
- Introduction to SonarQ
Java Core
- Java Basics: Life cycle of a Program, Data types, Variables and Scope, Operators, Array, Loops
- Exception Handling
- Lambda Expressions
- Annotations
- Modules
- Optionals
- Dependency Injection
- I/O Operators, Working with files
- Collections: Array vs ArrayList, Set, Map, Queue, Deque, Stack, Iterator, Generic Collections
Java OOP
Basic OOP
Encapsulation
- Attributes and Methods
- Access Specifiers
- Object Life Cycle
- Initializer Block
- Static Keyword
- Final Keyword
- Value & Reference
- Method Chaining
- Packages
Abstraction
- Abstract Classes and Methods
- Interfaces
- Enum, Record
- Nested Classes
Inheritance
- Superclass & Subclass relationship
- Static vs Dynamic Binding
- Object Class (implicitly involved)
Polymorphism
- Method Overloading
- Method Overriding
- Static vs Dynamic Binding
Concurrency
- Process vs Thread
- Race Conditions
- Thread Safety
- Deadlocks
- Locks and Semaphores
- Thread Class
- Runnable and Callable Interfaces
- Future and FutureTask
Thread.sleep()
, join()
, interrupt()
synchronized
keyword (method/block level)
- Intrinsic Locks and Monitor
volatile
keyword
- ReentrantLock (
java.util.concurrent.locks
)
- Thread Pools:
ExecutorService
, Executors
- Task Submission:
submit
, invokeAll
, invokeAny
- Blocking Queues:
LinkedBlockingQueue
, ArrayBlockingQueue
- Countdowns & Barriers:
CountDownLatch
, CyclicBarrier
- Semaphore, Exchanger
Functional Programming & Others
- Cryptography, Date Time, Networking, Regex
- Higher Order Functions, Functional Interfaces, Functional Composition
- Stream API
Environment
- Configuration Utilities
- System Utilities
- PATH and CLASSPATH
- Build with Maven
Introduction to Backend Development
- Rewire about network
- Databases: Relational (Postgres) and Non-relational
Spring & Spring Boot
Spring Core
- Terminology & Architecture
- Configuration
- Dependency Injection
- IOC
- AOP
- MVC
- Annotations
- Beans
Spring Security
- Authentication
- Authorization
- OAuth, JWT
Spring Boot
- Auto Configuration
- Actuators
- Embedded Server
- Hibernate: Transactions, Relations, Entity Lifecycle
Manage Data
Spring MVC
Deep Dive into Backend Development
APIs
- REST (Must), JSON API, SOAP, GraphQL, gRPC
Authentication
- JWT
- OAuth (with Keycloak)
- Basic Authentication vs Token Authentication
- Cookie-Based Auth
- OpenID, SAML (with Keycloak)
Caching
- Server-side
- CDN
- Client-side
Web Security
- Cryptography, Hashing: MD5, SHA, scrypt, bcrypt
- HTTPS, CORS, CSP, Server Security, SSL/TLS
- Rewire about coding conventions, secure development
Logging
Working with Databases & Advanced Topics
- ORM: JPA, JDBC
- Transactions
- N + 1 Problems
- Database Design: Normalization
- Failure Modes
- Migrations
- Tuning: Database Indexes, etc.
- Scaling: Replication, Sharding
Software Design Introduction
- Monolithic Applications
- Microservices
Microservices
- Introduction: Basics, Use Cases, Design Principles
- API Gateway: Spring Cloud Gateway
- Service Discovery: Eureka
- Config Management: Spring Cloud Config
- Logging: ELK
- Circuit Breaker: Spring Cloud Resilience4j (JHipster Support) / Spring Cloud Circuit Breaker
- Message Brokers & Service Communication: Kafka
Deployment
- Introduction: Containerization vs Virtualization
- Unix Basics
- Docker
Advanced Topics
- Search Engine: ELK
- Web Servers: Nginx
- Real-time Data: Server Sent Events, WebSocket, HTTP Long & Short Polling