Java
roadmap.sh: https://roadmap.sh/java
Suggested path through the Java nodes. Each node links to its lesson when written.
Nodes
Fundamentals
- What is Java
- JDK, JRE, JVM
- How JVM works
- Java editions (SE, EE, ME)
- Compilation and bytecode
- Setting up the environment
- Variables and data types
- Primitive vs reference types
- Operators
- Type casting
- Strings
- Arrays
- Control flow (if/else, switch)
- Loops (for, while, do-while)
- Methods and parameters
Object-Oriented Programming
- Classes and objects
- Constructors
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- Abstract classes
- Interfaces
- Static members
- Final keyword
- Packages
- Access modifiers
- Nested and inner classes
- Records
- Sealed classes
- Enums
Core APIs
- Object class
- equals and hashCode
- Wrapper classes and autoboxing
- Optional
- Date and Time API
- Math and BigDecimal
- Regular expressions
- System and Runtime
Collections Framework
- Collections overview
- List, Set, Map
- ArrayList and LinkedList
- HashSet and TreeSet
- HashMap and TreeMap
- Queue and Deque
- Iterators
- Comparable and Comparator
- Generics
Functional Programming
- Lambdas
- Functional interfaces
- Method references
- Streams API
- Collectors
Exception Handling
- Exceptions and errors
- try/catch/finally
- Checked vs unchecked
- Custom exceptions
- try-with-resources
Concurrency
- Threads
- Runnable and Callable
- Synchronization
- Locks
- Executors and thread pools
- CompletableFuture
- Concurrent collections
- Virtual threads
I/O and Networking
- File I/O
- Streams and readers
- NIO
- Serialization
- Sockets
JVM and Memory
- Memory model
- Garbage collection
- Class loading
- Reflection
- Annotations
Build Tools and Ecosystem
- Maven
- Gradle
- JUnit
- Mockito
- Logging (SLF4J, Logback)
- JDBC
Resources
See resources.md.
Project ideas
- Build a CLI task manager that persists tasks to a file using NIO and serialization.
- Implement a multi-threaded web link checker using an executor pool and CompletableFuture.
- Create a small library catalog with a JDBC-backed repository and JUnit/Mockito tests.