- Introduction
- Basics
- OOP
- Functional Programming
- Specifics
- JVM
- Java SE
- Maven
- Spring
- Sprint Boot
- Apache Kafka
- Apache Storm
Useful resources: resources
- Java Overview
- Principles
- JRE: Java Runtime Environment
- JDK: Java Development Kit
- Java Platform
- Criticism
- Data Types
- Methods
- Operators
- Control Flow
- Java API
- Strings
- Packages
- Exceptions
- I/O
- Serialization
- Built-in Data Structures
- Generics
- Enums
- Date & Time
- JBDC API
- Autoboxing and Unboxing
- Object
- Class
- Inheritance
- Access modifiers
- Polymorphism
- Method overriding
super
keyword- Constructor chaining
- Preventing Inheritance
- Private Constructor
- Abstract Class
- Interface
- Mixins
- Default methods
- Nested Classes
- Maven overview
- Standard Directory Structure
- Dependency Coordinates
- Maven Archetypes
- Project Java Version
- Private Repositories
- Why Spring
- Core Framework
- Spring Platform
- Inversion of Control, Container & Beans
- Dependency Injection
- Bean Lifecycle & Scopes
- Java Annotations
- Spring configuration with Java Code
- Spring initialier
- What is Spring Boot
- Spring & Spring Boot
- TDD
- Spring Boot Initializr
- Annotations
- Spring Boot Dev Tools
- Spring Boot Actuator
- Running from Command Line
- Injecting Properties
- Kafka Overview
- Kafka vs Traditional Message Systems
- Use Cases
- How it works
- Kafka as Distributed System
- Leader/Follower Partitions
- Consumer Offset & Group Coordinator
- Terminology
- Kafka APIs
- Setting up and interacting with Kafka locally
- Retention Policy
- Recovery/Retry models
- Retain/Recover Failed Records
- Storm Overview
- Architecture Critical Components
- Data Model
- Tuples
- Streams
- Topology
- Spout
- Bolt
- Environment setup
- Bolt Parallelism
- Reliable Processing
- Trident
- Scheduling
- External Interfaces
- Kafka-Storm-Cassandra