Complete Modern Java Course - Detailed Topics and Subtopics
1. Introduction & Environment Setup
- Introduction to the course and goals
- Installing JDK (Java 17 / 21)
- Configuring PATH and JAVA_HOME
- Setting up IntelliJ IDEA (Community/Ultimate) and basic usage
- JVM vs JRE vs JDK
- Writing and running your first Java program
- Java compilation and execution (.java -> .class -> JVM)
- Basic project creation, build, run, and debug in IntelliJ
2. Java Fundamentals
- Java syntax rules and naming conventions
- Variables and data types
- Primitive types: byte, short, int, long, float, double, char, boolean
- Reference types and null
- Type casting and conversion (implicit vs explicit)
- Operators:
- Arithmetic, logical, relational, bitwise, assignment, unary, ternary
- Expressions, statements, and code blocks
- Constants (final keyword)
- Input/Output basics ([Link], Scanner)
- Abbreviated operators (+=, -=, etc.)
- Operator precedence and evaluation
3. Control Flow Statements
- Conditional logic: if, else if, else
- Switch statement and switch expressions (Java 14+)
- Pattern matching in switch (Java 21 preview)
- Loops: for, enhanced for-each, while, do-while
- break, continue, return statements
- Nested loops and labeled statements
- Practical loop challenges and algorithms
4. Methods and Code Organization
- Defining and calling methods
- Method parameters, return values, and primitive vs reference passing
- Method overloading and resolution
- Scope and lifetime of variables
- Recursion basics and examples
- Static methods and utility classes
- The main() method and program entry point
- Code organization and modular design basics
5. Object-Oriented Programming (OOP)
- Classes and objects: fields and methods
- Constructors (default, parameterized), constructor chaining
- 'this' keyword usage
- Encapsulation, getters and setters
- Access modifiers: public, private, protected, package-private
- Static vs instance members
- final keyword for variables, methods, classes
- Inheritance: extends, super, method overriding
- Polymorphism and dynamic binding
- Abstract classes and methods
- Interfaces: default, static methods, @FunctionalInterface
- Composition vs inheritance
- POJOs and Java Records (modern POJO)
- [Link] essentials: toString, equals, hashCode, clone
6. Packages, Modules, and Access Control
- Organizing code with packages
- Import statements and static imports
- Access levels across packages
- Java Module System (JPMS) - [Link] basics
- Named, unnamed, automatic, open, aggregator modules
- Modularization strategy and common migration issues
7. Arrays and Strings
- Declaring, initializing, and accessing arrays (1D & 2D)
- Array utilities: [Link], copyOf, equals, fill, binarySearch
- Varargs and array conversions
- Multidimensional and jagged arrays
- String creation, immutability, and the string pool
- String methods: length, substring, indexOf, replace, split, trim
- StringBuilder and StringBuffer for mutable strings
- Text blocks (Java 15+)
- String templates (Java 21 preview)
- String performance considerations and best practices
8. Collections Framework
- Collections hierarchy and interfaces: Collection, List, Set, Map, Queue
- List implementations: ArrayList, LinkedList
- Set implementations: HashSet, LinkedHashSet, TreeSet
- Map implementations: HashMap, LinkedHashMap, TreeMap
- Queue and Deque implementations: LinkedList, ArrayDeque, PriorityQueue
- Iteration: for-each, Iterator, ListIterator
- Collections utility class: sort, reverse, shuffle, binarySearch, frequency,
min/max
- Comparable vs Comparator; [Link] and method references
- Generics: type parameters, bounded types, wildcards (? extends, ? super)
- Autoboxing and unboxing, pitfalls and performance
- EnumSet and EnumMap specializations
- Sequenced collections and iteration order guarantees (Java 21 additions)
9. Exception Handling
- Throwable hierarchy: Error vs Exception
- Checked vs unchecked exceptions
- try-catch-finally constructs
- Multi-catch and exception chaining
- throws clause and exception propagation
- Creating and using custom exceptions
- try-with-resources and AutoCloseable
- Best practices for exception handling and error messages
10. File I/O ([Link] & [Link])
- Classic I/O: File, FileReader, FileWriter, BufferedReader, BufferedWriter
- Stream-based I/O: InputStream, OutputStream, DataInputStream, DataOutputStream
- [Link]: Path, Files, DirectoryStream, FileVisitor, walkFileTree
- Reading and writing text and binary files
- File attributes and metadata, file permissions
- File copying, moving, renaming, deletion
- RandomAccessFile for binary data handling
- Encoding and charsets (UTF-8, ASCII)
- Serialization and deserialization (ObjectOutputStream/ObjectInputStream) and
versioning
- Advanced file tasks: indexing, recursive operations, file watchers (WatchService)
11. Functional Programming & Streams
- Lambda expressions: syntax and semantics
- Method references: static, instance, and constructor references
- Built-in functional interfaces: Predicate, Consumer, Function, Supplier,
BiFunction
- Creating custom functional interfaces
- Stream API:
- Stream sources (collections, arrays, infinite streams)
- Intermediate operations: map, filter, flatMap, distinct, limit, skip,
takeWhile, dropWhile
- Sorting with comparators, peek, mapToInt/Long/Double
- Terminal operations: forEach, collect, reduce, findFirst, findAny, allMatch,
anyMatch, noneMatch
- Collectors: toList, toSet, toMap, groupingBy, partitioningBy, joining,
summingInt
- Parallel streams and considerations: ordering, thread-safety, performance
- Optional: creation, isPresent, orElse, orElseGet, orElseThrow, map, flatMap
12. Concurrency & Multithreading
- Processes vs threads
- Thread creation: Thread, Runnable, Callable, FutureTask
- Thread lifecycle and states
- Synchronization: synchronized methods and blocks
- Locks: ReentrantLock, ReadWriteLock, StampedLock
- Atomic variables and classes (AtomicInteger, AtomicReference)
- Thread-safe collections (ConcurrentHashMap, CopyOnWriteArrayList,
ConcurrentLinkedQueue)
- Executor framework: ExecutorService, ScheduledExecutorService, ThreadPoolExecutor
- Callable and Future: submit, get, cancel, timeout
- CompletableFuture: async composition, thenApply, thenAccept, exceptionally,
allOf, anyOf
- ForkJoinPool and parallelism
- Deadlocks, livelock, starvation, thread contention, and avoidance patterns
- WatchService as concurrency example for file watching
- Parallel streams and thread-safety
- Virtual Threads (Project Loom) and structured concurrency (Java 21)
13. JDBC, Databases, and Persistence
- Relational databases overview: tables, schemas, normalization
- SQL basics: SELECT, INSERT, UPDATE, DELETE, joins, group by, order by
- JDBC fundamentals: DriverManager, DataSource, Connection, Statement,
PreparedStatement, CallableStatement
- Executing queries and reading ResultSet
- Transactions: commit, rollback, auto-commit, isolation levels
- Batch processing and PreparedStatement batching
- Preventing SQL Injection and using parameterized queries
- Handling SQLExceptions and resource management
- Connection pooling (HikariCP)
- Introduction to ORM: JPA basics
- JPA/Hibernate: Entities, relationships, cascading, lazy vs eager fetching, JPQL,
Criteria API
- Entity lifecycle and transaction management
14. Java Networking & HTTP
- Networking fundamentals: sockets, TCP vs UDP
- ServerSocket and Socket for TCP
- DatagramSocket and DatagramPacket for UDP
- Non-blocking IO and NIO channels (ServerSocketChannel, SocketChannel)
- ByteBuffer operations and buffer management
- Selectors and event-driven network programming
- HTTP basics and HttpURLConnection
- Java 11+ HttpClient API: synchronous and asynchronous requests
- WebSockets basics and implementation
- Sending/receiving JSON and common libraries (Jackson, Gson)
- Building simple HTTP servers and clients
- Asynchronous HTTP requests with CompletableFuture
15. Debugging, Testing, and Tools
- Debugging with IntelliJ: breakpoints, watches, evaluate expression, step
into/over/out
- Field watchpoints and conditional breakpoints
- Logging basics: [Link], SLF4J, Logback
- Unit testing with JUnit 5: annotations, assertions, lifecycle methods
- Parameterized and dynamic tests
- Mockito for mocking and verification
- Integration testing strategies and Testcontainers
- Code coverage tools (JaCoCo)
- Static analysis and linters (Checkstyle, PMD, SpotBugs)
- IDE productivity: refactoring, live templates, key bindings
16. JavaFX and GUI (Optional)
- JavaFX setup and module considerations (JDK 11+)
- Stage, Scene, Nodes and Application lifecycle
- Layout panes: GridPane, VBox, HBox, BorderPane, FlowPane
- Controls: Button, Label, TextField, ListView, TableView, ComboBox
- Event handling and listeners
- Dialogs and custom dialogs (DialogPane)
- Data binding and observable collections
- Cell factories, custom cells, and cell rendering
- Styling with CSS and theming
- SceneBuilder integration and FXML
- Concurrency in JavaFX: [Link], Task
17. Modules and Modularization (Java 9+)
- [Link] syntax and concepts
- Requires, Exports, Opens, Provides, Uses
- Automatic modules and migration strategies
- Multi-module project structuring
- Module path vs class path issues
- Common module-related runtime errors and fixes
18. Reflection, Annotations, and Meta-Programming
- Reflection API fundamentals: Class, Constructor, Method, Field
- Accessing and modifying private members
- Invoking methods dynamically and creating instances
- Annotations: built-in and custom
- Retention policies and targets
- Runtime annotation processing and reflection-based frameworks
19. JVM Internals, Performance, and Profiling
- JVM architecture overview: class loader, bytecode, JIT
- Memory areas: heap, stack, metaspace, code cache
- Garbage collector types and algorithms (G1, ZGC, Shenandoah where applicable)
- GC tuning basics and flags
- Threading model and memory model (happens-before)
- Tools: jvisualvm, jconsole, jmap, jstack, Flight Recorder
- Profiling and diagnosing memory leaks
- Benchmarking with JMH
20. Advanced Topics and Modern Java Features (Java 17–21)
- Records: declaration, canonical constructors, semantics
- Sealed classes and interfaces
- Pattern matching for instanceof and switch
- Text blocks and raw string improvements
- String templates (Java 21 preview)
- Sequenced collections and iteration guarantees
- Virtual threads and structured concurrency (Project Loom)
- Scoped values and enhanced random API
- Value-based classes and performance considerations
21. Build, CI/CD, and Packaging
- Maven: [Link], dependencies, plugins, lifecycle phases
- Gradle: [Link], tasks, plugins, dependency management
- Multi-module builds and publishing artifacts
- Creating executable JARs and fat JARs (spring-boot, shade plugin)
- Dockerfile for Java applications and Docker Compose
- CI/CD basics: GitHub Actions, Jenkins pipelines
- Environment variables and secret management
- Release versioning strategies and semantic versioning
22. Logging, Monitoring, and Observability
- Structured logging and correlation IDs
- Centralized logging solutions (ELK stack, Loki)
- Metrics collection (Micrometer) and exporting to Prometheus
- Distributed tracing basics (OpenTelemetry, Jaeger, Zipkin)
- Health checks and readiness/liveness endpoints
23. Design Patterns, Architecture, and Best Practices
- SOLID principles and clean code practices
- Creational patterns: Singleton, Factory, Builder, Prototype
- Structural patterns: Adapter, Decorator, Proxy, Facade
- Behavioral patterns: Strategy, Observer, Command, Chain of Responsibility
- Anti-patterns to avoid
- Architectural styles: layered, hexagonal, clean architecture
- Dependency Injection patterns and frameworks
24. Spring Framework and Enterprise Java
- Spring Core: IoC, Bean lifecycle, ApplicationContext
- Spring Boot: starters, auto-configuration, CLI
- REST APIs with Spring MVC and Spring WebFlux (reactive)
- Spring Data JPA and repositories
- Transaction management and propagation
- Spring Security basics: authentication, authorization, JWT
- Actuator endpoints and monitoring
- Spring Testing support (MockMvc, @WebMvcTest, @SpringBootTest)
25. Microservices, Distributed Systems, and Integration
- Microservices principles and trade-offs
- REST best practices and HATEOAS
- Inter-service communication: REST, gRPC, messaging
- Service discovery (Eureka), API Gateway (Zuul, Spring Cloud Gateway)
- Configuration management (Spring Cloud Config)
- Circuit breakers, retries, and resilience (Resilience4j)
- Messaging systems: RabbitMQ, Kafka basics
- Distributed tracing and metrics in microservices
26. Databases, Caching, and Performance
- Relational vs NoSQL databases overview
- Query optimization and indexing basics
- Connection pooling and tuning
- Caching strategies (in-memory caching, Redis, Ehcache)
- Read/write separation and replication basics
- Database migration tools (Flyway, Liquibase)
27. DevOps, Cloud, and Deployment Strategies
- Docker basics and building images for Java apps
- Kubernetes fundamentals and deploying Java containers
- Helm charts and manifests basics
- Cloud deployments: AWS ECS/EKS, Azure AKS, GCP GKE
- CI/CD pipelines, blue/green and canary deployments
- Configuration and secrets management (Vault, AWS Secrets Manager)
28. Security Best Practices
- Secure coding practices (input validation, escaping)
- OWASP Top 10 awareness
- Secure storage of credentials and secrets
- TLS/SSL basics and HTTPS
- Authentication protocols (OAuth2, OpenID Connect)
- API security (rate limiting, throttling)
29. Advanced Integration and Expert Topics
- JNI (Java Native Interface) basics
- Bytecode engineering and manipulation (ASM, ByteBuddy)
- Building language-level tooling and compilers
- Contributing to OpenJDK and JEPs
- Designing large scale systems and patterns
30. Real-World Projects and Capstone Ideas
- RESTful API with Spring Boot + JPA + MySQL + Docker
- Messaging-based microservice using Kafka + Spring Boot
- Full-stack Java app (Spring Boot backend + JavaFX or React frontend)
- High-throughput data processing with parallel streams or ForkJoin
- Monitoring and observability demo (Prometheus + Grafana + OpenTelemetry)
- Performance benchmarking and optimization project