0% found this document useful (0 votes)
62 views6 pages

Complete Modern Java Course Guide

Uploaded by

Mahmoud Alnmr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views6 pages

Complete Modern Java Course Guide

Uploaded by

Mahmoud Alnmr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

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

You might also like