Java Roadmap - Basics -> Advanced -> Java 26
1. Development Environment and Tools
1.1 JDK Installation and Management
- JDK
- JRE
- JVM
JAVA_HOMEPATH- SDKMAN
- jEnv
1.2 Basic JDK Tools
javajavacjshelljarjavadocjavapjdepsjlinkjpackagejcmdjpsjmapjstackjfr
1.3 Local Environment
- Project SDK configuration
- Compiler level configuration
- Language level configuration
- Run configuration
- Debug configuration
- Formatter
- Import optimization
- Code inspection
1.4 Build Tools
- Maven
- Project structure
- Dependency management
- Plugins
- Lifecycle
- Build profiles
- Multi-module project
- Maven/Gradle wrapper
- Local/remote repositories
- Maven BOM
- Dependency scope
1.5 Java Project Structure
- Package
- Source folder
- Test folder
- Resource folder
- Classpath
- Module path
- JAR
- Fat JAR
- Executable JAR
- Multi-release JAR
2. Language Fundamentals
2.1 Basic Syntax
- Class
- Method
mainmethod- Package declaration
- Import
- Statement
- Expression
- Block
- Comments
- Naming conventions
- Scope
- Variable lifetime
2.2 Primitive Types
byteshortintlongfloatdoublecharboolean- Numeric literals
- Binary literal
- Underscores in numeric literals
- Overflow
- Underflow
- Implicit cast
- Explicit cast
- Numeric promotion
- Arithmetic operations
2.3 Wrapper Types
ByteShortIntegerLongFloatDoubleCharacterBoolean- Boxing
- Unboxing
- Autoboxing
- Wrapper cache
==on wrappers.equals()on wrappers- Null pointer with unboxing
2.4 Variables and Constants
- Local variables
- Instance fields
- Static fields
- Constants
finalstatic final- Initialization
- Shadowing
- Local
var - Local type inference
2.5 Operators
- Arithmetic
- Assignment
- Comparison
- Logical
- Bitwise
- Shift
- Ternary
- Increment/decrement
- Operator precedence
- Short-circuit
instanceof
2.6 Control Flow
ifelseelse ifswitchstatementswitchexpressionfor- Enhanced
for whiledo whilebreakcontinuereturn- Labelled break
- Labelled continue
2.7 Arrays
- One-dimensional array
- Multidimensional array
- Array jagged
- Array initialization
- Index access
ArrayIndexOutOfBoundsException- Array of primitives
- Array of objects
- Array copy
ArraysSystem.arraycopy
2.8 Strings
String- Immutability
- String pool
- Concatenation
StringBuilderStringBufferString.formatformattedsubstringcontainsstartsWithendsWithreplacesplitjoin- Text blocks
- Escape sequence
- Charset
- Unicode
- UTF-8
3. Object-Oriented Programming
3.1 Classes and Objects
- Class
- Object
- Instance
- State
- Behavior
- Constructor
- Default constructor
- Constructor overloading
- Initializer block
- Static initializer block
this- Object references
- Mutability
- Object identity
3.2 Encapsulation
- Private fields
- Public methods
- Getter
- Setter
- Domain methods
- Invariants
- Constructor validation
- Defensive immutability
- Defensive copy
- Information hiding
3.3 Access Modifiers
publicprivateprotected- Package-private
- Visibility across packages
- Visibility in inheritance
- Public API
- Internal details
- Encapsulation boundary
3.4 Inheritance
extends- Superclass
- Subclass
super- Override
- Overload
- Polymorphism
- Dynamic dispatch
- Upcasting
- Downcasting
final classfinal method- Fragile base class problem
- Composition as an alternative
3.5 Abstract Classes
abstract class- Abstract method
- Concrete method
- Constructor in abstract class
- Template method
- Shared state
- Difference from interface
3.6 Interfaces
interface- Implementation
- Contract
- Abstract methods
- Default methods
- Static methods
- Private methods
- Constants in interfaces
- Multiple inheritance of type
- Functional interface
- Marker interface
3.7 Object
toStringequalshashCodegetClassclonefinalizeequalscontracthashCodecontract- Hash collision
- Objects as keys in
HashMap - Mutability and hash code
3.8 Nested Classes
- Static nested class
- Inner class
- Local class
- Anonymous class
- Access to outer context
- Coupling cost
- Use with listeners
- Use with builders
3.9 Enum
enum- Enum constants
- Fields in enums
- Constructors in enums
- Methods in enums
- Per-constant override
valuesvalueOfEnumSetEnumMap- Enums as state machines
4. Domain Modeling
4.1 Modeling Principles
- Entity
- Value object
- Aggregate
- Domain service
- Application service
- Repository
- Factory
- DTO
- Command
- Query
- Event
- Invariant
- Ubiquitous language
4.2 Immutability
- Immutable class
finalfield- Unmodifiable state
- Copy constructor
- Defensive copy
- Immutable collections
- Thread safety through immutability
- Value-based class
- Records as value carriers
4.3 Record
record- Record components
- Canonical constructor
- Compact constructor
- Record validation
- Methods in records
- Static fields in records
- Nested records
- Records as DTOs
- Records as value objects
- Limitations with JPA
- Limitations with reflection-based frameworks
4.4 Sealed Types
sealed classsealed interfacepermitsfinalnon-sealedsealed+record- Closed hierarchies
- Domain states
- Domain errors
- Exhaustiveness checking
- Algebraic modeling
4.5 Pattern Matching for the Domain
- Pattern matching with
instanceof - Pattern matching in
switch - Record patterns
- Guarded patterns
- Exhaustive switch
- Null handling in switch
- Sealed domain +
switch - Primitive patterns
- Deconstruction pattern
5. Exception Handling
5.1 Fundamentals
trycatchfinallythrowthrows- Stack trace
- Exception propagation
- Checked exception
- Unchecked exception
RuntimeExceptionErrorThrowable
5.2 Modern Handling
- Try-with-resources
- Multi-catch
- Rethrow
- Suppressed exception
- Exception wrapping
- Cause chain
- Custom exception
- Business exception
- Technical exception
- Validation exception
- Exception-to-response mapping
5.3 Strategies
- Fail fast
- Fail safe
- Recoverable errors
- Unrecoverable errors
- Exception logging
- Do not swallow exceptions
- Boundary exception handling
- Global exception handling
- Exception in async code
- Exception in stream pipeline
6. Collections Framework
6.1 Main Interfaces
IterableCollectionListSetSortedSetNavigableSetQueueDequeMapSortedMapNavigableMapIteratorListIterator
6.2 List Implementations
ArrayListLinkedListVectorStack- Random access
- Insertion
- Removal
- Iteration
- Big-O complexity
- Implementation choice
6.3 Set Implementations
HashSetLinkedHashSetTreeSetEnumSet- Uniqueness
- Natural ordering
- Custom ordering
- Hashing
- Collision
- Element mutability
6.4 Map Implementations
HashMapLinkedHashMapTreeMapEnumMapWeakHashMapIdentityHashMapConcurrentHashMap- Keys
- Values
- Entry
- Hashing
- Ordering
- Null key
- Null value
- Key mutability
6.5 Queues and Deques
ArrayDequePriorityQueueBlockingQueue- FIFO
- LIFO
- Priority ordering
- Producer/consumer
- Bounded queue
- Unbounded queue
6.6 Utility collections
CollectionsArraysComparatorComparable- Sorting
- Searching
- Shuffling
- Unmodifiable collections
- Immutable factory methods
- Synchronized wrappers
- Checked wrappers
6.7 Sequenced Collections
SequencedCollectionSequencedSetSequencedMap- First element
- Last element
- Reverse view
- Ordered collection API
- Migration from legacy workarounds
7. Generics and the Type System
7.1 Basic Generics
- Generic class
- Generic interface
- Generic method
- Type parameter
- Type argument
- Diamond operator
- Raw type
- Type safety
- Compile-time check
- Runtime type
7.2 Bounds
- Upper bound
- Multiple bound
- Recursive bound
- F-bounded polymorphism
- Method bounds
- Class bounds
- Bounds with interfaces
7.3 Wildcards
- Unbounded wildcard
- Upper bounded wildcard
- Lower bounded wildcard
- Capture conversion
- PECS
- Producer extends
- Consumer super
- API design with wildcards
7.4 Type erasure
- Erasure
- Bridge method
- Reifiable type
- Non-reifiable type
- Heap pollution
- Generic array creation
- Varargs generics
@SafeVarargs- Runtime limitations
7.5 Advanced Generics
- Generic builder
- Generic repository
- Generic mapper
- Type token
- Super type token
- Generic constraints
- Covariance
- Contravariance
- Invariance
8. I/O, NIO, and File Systems
8.1 Classic I/O
InputStreamOutputStreamReaderWriterBufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriterFileInputStreamFileOutputStreamPrintWriter- Encoding
- Buffering
8.2 NIO
PathFilesFileSystemFileSystemsStandardOpenOptionFileVisitOptionFileVisitorSimpleFileVisitor- Directory walking
- File attributes
- Symbolic link
- Temporary file
- Temporary directory
8.3 Channels and Buffers
ChannelFileChannelSocketChannelServerSocketChannelByteBufferCharBuffer- Direct buffer
- Heap buffer
- Selector
- Non-blocking I/O
- Memory-mapped file
8.4 File System Watch and Monitoring
WatchService- File create event
- File modify event
- File delete event
- Directory monitoring
- Overflow event
- Cross-platform behavior
8.5 Data Serialization
- Java serialization
SerializableserialVersionUIDtransient- Deserialization filtering
- JSON
- XML
- CSV
- Binary format
- Schema evolution
9. Date, Time, Numbers, and Localization
9.1 Modern Date/Time
LocalDateLocalTimeLocalDateTimeZonedDateTimeOffsetDateTimeInstantDurationPeriodZoneIdZoneOffsetClockDateTimeFormatter- Date parsing
- Date formatting
- Timezone
- DST
- Technical timestamp
- Business date
9.2 Legacy Date/Time
DateCalendarGregorianCalendarSimpleDateFormat- Thread-safety legacy formatter
- Migration to
java.time
9.3 Numbers
BigDecimalBigInteger- Precision
- Scale
- Rounding mode
MathContextBigDecimalcomparisonequalsvscompareTo- Money calculation
- Percentages
- Rates
- Numeric overflow
9.4 Localization
LocaleCurrencyNumberFormatDecimalFormatMessageFormatResourceBundle- Pluralization
- Country-specific formats
- Currency formats
- Percentage formats
10. Functional Java
10.1 Lambdas
- Lambda expression
- Lambda parameters
- Body expression
- Body block
- Variable capture
- Effectively final
- Target type
- Lambda vs anonymous class
- Lambdas and checked exceptions
10.2 Functional Interfaces
@FunctionalInterfacePredicateFunctionBiFunctionConsumerBiConsumerSupplierUnaryOperatorBinaryOperator- Primitive functional interfaces
- Custom functional interface
10.3 Method References
- Static method reference
- Instance method reference
- Constructor reference
- Bound receiver
- Unbound receiver
- Overload ambiguity
10.4 Stream API
- Stream source
- Intermediate operation
- Terminal operation
- Lazy evaluation
mapflatMapfilterpeeksorteddistinctlimitskiptakeWhiledropWhilereducecollectforEachfindFirstfindAnyanyMatchallMatchnoneMatchcount- Short-circuit operation
- Infinite stream
10.5 Collectors
Collectors.toListCollectors.toSetCollectors.toMapCollectors.groupingByCollectors.partitioningByCollectors.mappingCollectors.flatMappingCollectors.filteringCollectors.reducingCollectors.joiningCollectors.summarizingInt- Custom collector
- Downstream collector
- Merge function
- Collector characteristics
10.6 Optional
OptionalOptionalIntOptionalLongOptionalDoubleofofNullableemptymapflatMapfilterorElseorElseGetorElseThrowifPresentifPresentOrElse- Anti-pattern: Optional field
- Anti-pattern: Optional parameter
- Optional as return type
10.7 Practical Functional Programming
- Pure function
- Side effect
- Referential transparency
- Function composition
- Pipeline
- Declarative style
- Imperative style
- Immutability
- Parallel streams
- Stream limitations
- Stream pipeline debugging
10.8 Stream Gatherers
- Gatherer
- Stateful transformation
- Windowing
- Batching
- Sliding window
- Custom pipeline
- Gatherer lifecycle
- Parallel compatibility
- Practical use cases
- Alternatives with collectors
11. Java Modules and Packaging
11.1 JPMS
- Module system
module-info.java- Named module
- Unnamed module
- Automatic module
requiresrequires transitiveexportsopensopens tousesprovides with- Strong encapsulation
- Split package
- Module graph
- Readability
- Accessibility
11.2 Classpath vs module path
- Classpath
- Module path
- Migration from classpath
- Legacy dependencies
- Automatic module name
- Multi-release JAR
- ServiceLoader
- Reflection with modules
- Frameworks and modules
11.3 Runtime Images
jlink- Custom runtime image
- Required modules
- Runtime size reduction
- Startup
- Container image
- App distribution
jpackage
12. Classic Concurrency
12.1 Basic Threads
ThreadRunnable- Thread lifecycle
startrunjoinsleepinterrupt- Daemon thread
- Thread priority
- Context class loader
- Thread naming
12.2 Memory model
- Java Memory Model
- Happens-before
- Visibility
- Atomicity
- Ordering
- Race condition
- Data race
- Safe publication
- Final field semantics
- Escape
- Thread-safe immutability
12.3 Synchronization
synchronized- Monitor
- Intrinsic lock
- Reentrant lock behavior
volatilewaitnotifynotifyAll- Deadlock
- Livelock
- Starvation
- Lock contention
- Lock granularity
12.4 java.util.concurrent
ExecutorExecutorServiceScheduledExecutorService- Thread pool
FutureCallableCompletableFutureCompletionStageForkJoinPoolRecursiveTaskRecursiveActionBlockingQueueConcurrentHashMapCopyOnWriteArrayListCountDownLatchCyclicBarrierSemaphorePhaserExchanger
12.5 Advanced Locks and Atomics
LockReentrantLockReadWriteLockStampedLockConditionAtomicIntegerAtomicLongAtomicReferenceLongAdderLongAccumulator- CAS
- ABA problem
- False sharing
12.6 Async programming
CompletableFuture.supplyAsyncthenApplythenComposethenCombineallOfanyOfexceptionallyhandlewhenComplete- Timeout
- Cancellation
- Custom executor
- Error propagation
- Composition vs nesting
13. Modern Concurrency: Project Loom
13.1 Virtual threads
- Platform thread
- Virtual thread
- Carrier thread
- Scheduler
- Blocking I/O
- Mount
- Unmount
- Pinning
- Thread-per-request
Executors.newVirtualThreadPerTaskExecutorThread.ofVirtual- Debug virtual threads
- Thread dumps with virtual threads
- CPU-bound limitations
- Limitations with native locks
13.2 Structured Concurrency
- Structured task scope
- Task group
- Parent-child lifecycle
- Fork
- Join
- Shutdown
- Cancellation
- Failure propagation
- Result aggregation
- Timeout
- Concurrency as a structured unit
- Structured error handling
13.3 Scoped Values
- Scoped value
- Immutable context
- Controlled propagation
- Alternative to
ThreadLocal - Use with virtual threads
- Bound scope
- Nested scope
- Request context
- Security context
- Tracing context
13.4 Enterprise Migration
- Virtual threads in web services
- Virtual threads with JDBC
- Virtual threads with HTTP client
- Virtual threads with Spring Boot
- ThreadLocal legacy
- Pool sizing
- Connection pool
- Backpressure
- Rate limiting
- Observability
- Load test
14. Networking and HTTP
14.1 Networking Basics
- Socket
- ServerSocket
- TCP
- UDP
- DNS
- Timeout
- Connection refused
- Connection reset
- Keep-alive
- TLS
- Proxy
- Firewall
14.2 HTTP Client
HttpClientHttpRequestHttpResponse- HTTP/1.1
- HTTP/2
- HTTP/3
- Synchronous send
- Asynchronous send
- BodyPublisher
- BodyHandler
- Headers
- Timeout
- Redirect
- Authentication
- CookieHandler
- SSLContext
- Connection reuse
- Error handling
14.3 Client Resilience
- Retry
- Exponential backoff
- Timeout budget
- Circuit breaker
- Bulkhead
- Rate limiter
- Idempotency
- Correlation ID
- Request tracing
- Metrics
- Logging request/response
- Sensitive data redaction
15. Security and Cryptography
15.1 Security Fundamentals
- Secure coding
- Input validation
- Output encoding
- Secrets management
- Password hashing
- TLS
- Certificate chain
- Trust model
- Keystore
- Truststore
- JCA
- JCE
15.2 Crypto API
SecureRandom- Hash
- HMAC
- Symmetric encryption
- Asymmetric encryption
- Signature
- KeyPair
- KeyGenerator
- KeyFactory
- Cipher
- MessageDigest
- Mac
- Signature API
- KEM API
- KDF API
- PEM API
- ML-KEM
- ML-DSA
15.3 Serialization security
- Java serialization risks
- Deserialization attack
- Serialization filtering
- ObjectInputFilter
- Allow-list
- Deny-list
- Alternative JSON
- Alternative protobuf
- Alternative Avro
- Backward compatibility
15.4 Platform security evolution
- Security Manager
- Security Manager deprecation
- Security Manager disabling
- Removal of legacy APIs
- Strong encapsulation
- Restrictions on
finalfield reflection - Deprecation of
Unsafe - Migration from internal JDK APIs
16. Reflection, Annotations, and Metaprogramming
16.1 Reflection
ClassFieldMethodConstructorgetDeclaredFieldsgetDeclaredMethodssetAccessible- Private access
- Reflection performance
- Reflection and modules
- Reflection and
final - Reflection and frameworks
- Reflection and security
16.2 Annotations
- Custom annotations
@Target@Retention@Inherited@Repeatable- Runtime annotation
- Source annotation
- Class annotation
- Annotations on type use
- Annotation processing
- Compile-time code generation
16.3 Dynamic proxy
ProxyInvocationHandler- Interface proxy
- AOP
- Logging proxy
- Transaction proxy
- JDK proxy limitations
- Proxy vs bytecode generation
16.4 MethodHandles and VarHandles
MethodHandleMethodHandles.LookupinvokeinvokeExactCallSiteVarHandle- Field access
- Array access
- Memory ordering
- Reflection replacement
- Performance
16.5 Class-File API
- Class file structure
- Constant pool
- Method descriptor
- Field descriptor
- Attribute
- Bytecode instruction
- Class file parsing
- Class file generation
- Class file transformation
- Tooling
- Framework integration
17. JVM internals
17.1 JVM Architecture
- Bytecode
- Class file
- Class loader
- Bootstrap class loader
- Platform class loader
- Application class loader
- Custom class loader
- Linking
- Verification
- Preparation
- Resolution
- Initialization
- Runtime data areas
17.2 Memory
- Heap
- Stack
- Metaspace
- Code cache
- Native memory
- Thread stack
- Eden
- Survivor
- Old generation
- TLAB
- Object header
- Compressed OOPs
- Compact object headers
- Escape analysis
- Scalar replacement
17.3 JIT and Optimization
- Interpreter
- C1 compiler
- C2 compiler
- Tiered compilation
- Runtime profiling
- Inlining
- Deoptimization
- Loop optimization
- Lock elimination
- Dead code elimination
- Intrinsics
- Warmup
- Benchmark pitfalls
17.4 Class Loading and Startup
- Class loading cost
- CDS
- AppCDS
- Dynamic CDS
- AOT class loading
- AOT linking
- AOT object caching
- Lazy constants
- Startup profiling
- Startup optimization
- Container startup
17.5 Runtime Observability
- Thread dump
- Heap dump
- GC log
- JFR
- JMX
- MBeans
- Native memory tracking
- Safepoint logging
- Allocation profiling
- Lock profiling
- CPU profiling
18. Garbage Collection and Performance
18.1 GC Fundamentals
- Allocation
- Reachability
- Root set
- Young generation
- Old generation
- Minor GC
- Major GC
- Full GC
- Stop-the-world
- Concurrent phase
- Parallel phase
- Compaction
- Fragmentation
- Promotion
- Allocation rate
18.2 Garbage collector
- Serial GC
- Parallel GC
- G1 GC
- ZGC
- Generational ZGC
- Shenandoah GC
- Epsilon GC
- GC selection
- Throughput goal
- Latency goal
- Memory footprint goal
- Pause time goal
18.3 GC tuning
- Heap sizing
-Xms-Xmx- GC logging
- G1 region size
- Pause target
- String deduplication
- Humongous allocation
- ZGC configuration
- Container memory limit
- CPU limit
- Native memory
- Memory leak analysis
18.4 Performance engineering
- JMH
- Warmup
- Measurement iteration
- Fork
- Blackhole
- Dead-code elimination
- Escape analysis impact
- Allocation benchmark
- CPU-bound benchmark
- I/O-bound benchmark
- Profiling
- Regression benchmark
19. Foreign Function, Memory, and Native Interop
19.1 JNI
- JNI basics
- Native method
- Header generation
- Native library loading
- Marshaling
- Crash risk
- Memory safety
- Performance overhead
- Legacy use cases
19.2 Foreign Function & Memory API
MemorySegmentArenaLinkerSymbolLookupFunctionDescriptorValueLayout- Native call
- Off-heap memory
- Bounds checking
- Lifetime management
- Segment scope
- Native interop
- Replacement for JNI in common cases
19.3 Off-Heap and Performance
- Direct memory
- Off-heap allocation
- Memory layout
- Native buffer
- Zero-copy
- Memory mapping
- Resource cleanup
- Cleaner
- Native memory tracking
20. Vector API and High-Performance Computing
20.1 SIMD
- SIMD
- Scalar operation
- Vector operation
- CPU vector register
- Lane
- Species
- Portability
- Fallback
- Auto-vectorization
- Manual vectorization
20.2 Vector API
- Vector species
- Vector mask
- Load
- Store
- Arithmetic operation
- Reduction
- Comparison
- Blend
- Performance benchmark
- Incubator module
- Numeric use cases
- AI/ML use cases
- Crypto use cases
- Image processing use cases
21. Testing
21.1 Unit testing
- JUnit 5
- Test lifecycle
- Assertions
- Parameterized tests
- Nested tests
- Test naming
- Test fixture
- Test isolation
- Boundary tests
- Negative tests
- Exception tests
21.2 Mocking
- Mockito
- Mock
- Stub
- Spy
- ArgumentCaptor
- Verification
- Strict stubbing
- Mocking final classes
- Mocking static methods
- Test double
- Fake
- In-memory implementation
21.3 Integration testing
- Integration test
- Testcontainers
- Database container
- Kafka container
- WireMock
- MockWebServer
- HTTP contract test
- Database migration test
- Transactional test
- Environment isolation
21.4 Quality gates
- JaCoCo
- Coverage line
- Coverage branch
- Mutation testing
- PIT
- Static analysis
- Checkstyle
- SpotBugs
- PMD
- Error Prone
- SonarQube
22. Logging, Monitoring, and Observability
22.1 Logging
java.util.logging- SLF4J
- Logback
- Log4j2
- Log level
- Structured logging
- MDC
- Correlation ID
- Sensitive data redaction
- Async logging
- Log rotation
22.2 Metrics
- Counter
- Gauge
- Timer
- Histogram
- Percentile
- Throughput
- Latency
- Error rate
- Saturation
- JVM metrics
- GC metrics
- Thread metrics
22.3 Tracing
- Distributed tracing
- Span
- Trace ID
- Parent span
- Context propagation
- OpenTelemetry
- Sampling
- Baggage
- Error trace
- Performance trace
22.4 JVM diagnostics
- JFR
- JMC
- VisualVM
- JConsole
- Async Profiler
- Flame graph
- CPU profiling
- Allocation profiling
- Lock profiling
- Safepoint profiling
23. Enterprise Java and Microservices
23.1 JDBC and Databases
- JDBC
- Driver
- Connection
- PreparedStatement
- ResultSet
- Transaction
- Isolation level
- Connection pool
- Batch insert
- SQL injection prevention
- Manual mapping
- Schema migration
23.2 Spring Boot
- Dependency injection
- Bean lifecycle
- Configuration properties
- REST controller
- Service layer
- Repository layer
- Validation
- Exception handler
- Actuator
- Profiles
- Testing Spring
- Virtual threads in Spring
- Observability Spring
23.3 Persistence
- JPA
- Hibernate
- Entity
- Value object
- Repository
- Lazy loading
- Eager loading
- N+1 query
- Transaction boundary
- Dirty checking
- Optimistic locking
- Pessimistic locking
- Projection
- DTO mapping
23.4 Microservices
- REST API
- OpenAPI
- JSON serialization
- Validation
- Idempotency
- Retry
- Circuit breaker
- Rate limiting
- API versioning
- Distributed tracing
- Health check
- Readiness
- Liveness
- Graceful shutdown
23.5 Messaging
- Queue
- Topic
- Producer
- Consumer
- Consumer group
- Offset
- Acknowledgement
- Retry topic
- Dead letter queue
- Ordering
- Idempotent consumer
- Exactly-once semantics
- At-least-once semantics
- Backpressure
23.6 Containers and Cloud
- Dockerfile for Java
- Layered JAR
- JVM in container
- Memory limits
- CPU limits
- Startup time
- Image size
- Distroless image
- Alpine caveats
- Kubernetes deployment
- ConfigMap
- Secret
- Horizontal scaling
- Resource request
- Resource limit
24. Java Evolution by Version
24.1 Java 1.0
- Classes
- Objects
- Interfaces
- Package
- Exception
- Thread
- Applet
- AWT
- Basic I/O
- JVM
- Bytecode
24.2 Java 1.1
- Inner classes
- Reflection
- JDBC
- RMI
- JavaBeans
- Object serialization
- Event model
- Internationalization
24.3 Java 1.2
- Collections Framework
- Swing
- Java 2 platform
strictfp- JIT improvements
- Security policy
- Accessibility API
24.4 Java 1.3
- HotSpot JVM
- JNDI
- Dynamic proxy
- Java Sound
- RMI over IIOP
- Performance VM improvements
24.5 Java 1.4
assert- Regular expressions
- NIO
- Logging API
- Preferences API
- XML processing
- XSLT
- Exception chaining
- IPv6 support
24.6 Java 5
- Generics
- Enhanced for
- Autoboxing/unboxing
- Enum
- Annotations
- Varargs
- Static import
java.util.concurrent- Formatter
- Scanner
- Instrumentation API
- Metadata
24.7 Java 6
- Scripting API
- Compiler API
- Annotation processing
- JDBC 4.0
- Web services APIs
- Monitoring improvements
- Management improvements
- Desktop API
- Performance improvements
24.8 Java 7
- String in
switch - Try-with-resources
- Diamond operator
- Multi-catch
- Precise rethrow
- Binary literals
- Underscore in numeric literals
- Fork/Join Framework
- NIO.2
PathFiles- WatchService
invokedynamic
24.9 Java 8
- Lambda expressions
- Method references
- Functional interfaces
- Stream API
- Default methods
- Static methods in interfaces
Optionaljava.time- CompletableFuture
- Nashorn JavaScript engine
- Repeating annotations
- Type annotations
- Base64 API
- Parallel array sorting
- Compact profiles
24.10 Java 9
- Java Platform Module System
module-info.java- JShell
- Collection factory methods
- Private interface methods
- Multi-release JAR
- Process API improvements
- Stack-Walking API
- VarHandles
- Compact Strings
- G1 default GC
- Unified JVM logging
- HTTP/2 Client incubator
- Reactive Streams Flow API
- DRBG
SecureRandom - Serialization filtering
jlink- Runtime images
24.11 Java 10
- Local-variable type inference
var - Time-based release versioning
- Application Class-Data Sharing
- Parallel Full GC for G1
- Garbage-Collector Interface
- Thread-local handshakes
- Heap allocation on alternative memory devices
- Root certificates
- Experimental Java-Based JIT Compiler
24.12 Java 11
- HTTP Client standard
- Single-file source-code launcher
varin lambda parameters- Flight Recorder
- Epsilon GC
- ZGC experimental
- TLS 1.3
- ChaCha20 and Poly1305
- Unicode 10
- Dynamic class-file constants
- Nest-based access control
- Removal of Java EE modules
- Removal of CORBA modules
- Deprecation of Nashorn
- Deprecation of Pack200
24.13 Java 12
- Switch expressions preview
- JVM Constants API
- Shenandoah experimental
- Abortable mixed collections for G1
- Promptly return unused committed memory from G1
- Default CDS archives
- Microbenchmark suite
- One AArch64 port
24.14 Java 13
- Text Blocks preview
- Switch expressions second preview
- Dynamic CDS archives
- ZGC uncommit unused memory
- Reimplementation of legacy Socket API
- FileSystems new file system methods
24.15 Java 14
- Switch expressions standard
- Records preview
- Pattern matching for
instanceofpreview - Helpful NullPointerExceptions
- JFR Event Streaming
- Packaging tool incubator
- NUMA-aware memory allocation for G1
- Non-volatile mapped byte buffers
- Removal of CMS GC
- Removal of Pack200
- ZGC on macOS
- ZGC on Windows
24.16 Java 15
- Text Blocks standard
- Sealed Classes preview
- Hidden Classes
- ZGC production
- Shenandoah production
- Records second preview
- Pattern matching for
instanceofsecond preview - Foreign-Memory Access API second incubator
- EdDSA
- Reimplementation of DatagramSocket API
- Disable biased locking
- Removal of Nashorn
- Removal of rmic
24.17 Java 16
- Records standard
- Pattern matching for
instanceofstandard jpackagestandard- Vector API incubator
- Foreign Linker API incubator
- Foreign-Memory Access API third incubator
- Unix-domain socket channels
- Elastic Metaspace
- Strong encapsulation by default
- Warnings for value-based classes
- Alpine Linux port
- Windows/AArch64 port
24.18 Java 17
- Sealed Classes standard
- Pattern matching for
switchpreview - Strongly encapsulate JDK internals
- Context-specific deserialization filters
- Enhanced pseudo-random number generators
- Foreign Function & Memory API incubator
- Vector API second incubator
- Deprecate Security Manager for removal
- Removal of RMI Activation
- Removal of experimental AOT and JIT compiler
- macOS/AArch64 port
24.19 Java 18
- UTF-8 by default
- Simple Web Server
- Code snippets in Java API documentation
- Core reflection reimplemented with MethodHandles
- Internet-Address Resolution SPI
- Pattern matching for
switchsecond preview - Vector API third incubator
- Foreign Function & Memory API second incubator
- Deprecate finalization for removal
24.20 Java 19
- Virtual Threads preview
- Structured Concurrency incubator
- Record Patterns preview
- Pattern matching for
switchthird preview - Foreign Function & Memory API preview
- Vector API fourth incubator
- Linux/RISC-V port
24.21 Java 20
- Virtual Threads second preview
- Scoped Values incubator
- Structured Concurrency second incubator
- Record Patterns second preview
- Pattern matching for
switchfourth preview - Foreign Function & Memory API second preview
- Vector API fifth incubator
24.22 Java 21
- Virtual Threads standard
- Sequenced Collections
- Record Patterns standard
- Pattern Matching for
switchstandard - Generational ZGC
- String Templates preview
- Unnamed Patterns and Variables preview
- Unnamed Classes and Instance Main Methods preview
- Scoped Values preview
- Structured Concurrency preview
- Key Encapsulation Mechanism API
- Foreign Function & Memory API third preview
- Vector API sixth incubator
24.23 Java 22
- Foreign Function & Memory API standard
- Unnamed Variables and Patterns standard
- Launch multi-file source-code programs
- Class-File API preview
- Stream Gatherers preview
- Structured Concurrency second preview
- Scoped Values second preview
- Statements before
super(...)preview - Vector API seventh incubator
- Region pinning for G1
24.24 Java 23
- Markdown documentation comments
- Primitive types in patterns preview
- Class-File API second preview
- Stream Gatherers second preview
- Module Import Declarations preview
- Structured Concurrency third preview
- Scoped Values third preview
- Flexible Constructor Bodies second preview
- Vector API eighth incubator
- ZGC generational mode by default
- Deprecate memory-access methods in
Unsafefor removal
24.25 Java 24
- Stream Gatherers standard
- Class-File API standard
- Synchronize Virtual Threads without Pinning
- AOT Class Loading and Linking
- Compact Object Headers experimental
- KDF API preview
- ML-KEM
- ML-DSA
- Scoped Values fourth preview
- Structured Concurrency fourth preview
- Simple Source Files and Instance Main Methods fourth preview
- Module Import Declarations second preview
- Flexible Constructor Bodies third preview
- Primitive Types in Patterns second preview
- Vector API ninth incubator
- Warn upon use of memory-access methods in
Unsafe - Security Manager disabled
- Remove non-generational ZGC mode
24.26 Java 25
- Scoped Values standard
- Compact Source Files and Instance Main Methods standard
- Module Import Declarations standard
- Flexible Constructor Bodies standard
- Stable Values preview
- Compact Object Headers
- JFR Cooperative Sampling
- Structured Concurrency fifth preview
- Primitive Types in Patterns third preview
- Vector API tenth incubator
- Ahead-of-Time Method Profiling
- Key Derivation Function API
24.27 Java 26
- JEP 500 - Prepare to Make Final Mean Final
- JEP 504 - Remove the Applet API
- JEP 516 - Ahead-of-Time Object Caching with Any GC
- JEP 517 - HTTP/3 for the HTTP Client
- JEP 522 - G1 GC: Improve Throughput by Reducing Synchronization
- JEP 524 - PEM Encodings of Cryptographic Objects
- JEP 525 - Structured Concurrency
- JEP 526 - Lazy Constants
- JEP 529 - Vector API
- JEP 530 - Primitive Types in Patterns,
instanceof, andswitch
25. Progressive Study Path
25.1 Phase 1 - Basic Java
- Setup JDK
- Basic syntax
- Primitive types
- Strings
- Array
- Control flow
- Classes
- Objects
- Methods
- Package
- Access modifier
- Basic exceptions
25.2 Phase 2 - Java Core
- Advanced OOP
- Collections
- Generics
- Advanced exception handling
- I/O
- NIO
- Date/time
- BigDecimal
- Enum
- Immutability
- Basic testing
25.3 Phase 3 - Java 8
- Lambda
- Functional interface
- Method reference
- Stream API
- Optional
- Collector
- Basic CompletableFuture
- Default methods
java.time
25.4 Phase 4 - Java 9-17
- Module system
- JShell
- Collection factory methods
var- HTTP Client
- Text Blocks
- Switch expressions
- Records
- Pattern matching
instanceof - Sealed classes
- JFR
- Strong encapsulation
25.5 Phase 5 - Java 18-21
- UTF-8 by default
- Simple Web Server
- Virtual Threads
- Sequenced Collections
- Record Patterns
- Pattern Matching for
switch - Generational ZGC
- Scoped Values preview
- Structured Concurrency preview
- KEM API
25.6 Phase 6 - Java 22-26
- Foreign Function & Memory API
- Class-File API
- Stream Gatherers
- Scoped Values
- Structured Concurrency
- Compact Source Files
- Instance Main Methods
- Module Import Declarations
- Flexible Constructor Bodies
- Stable Values
- Compact Object Headers
- AOT Class Loading
- AOT Object Caching
- HTTP/3
- PEM API
- Lazy Constants
- Vector API
- Primitive Types in Patterns
- Final field restrictions
25.7 Phase 7 - JVM and Performance
- Bytecode
- Class loading
- JIT
- Heap
- Stack
- Metaspace
- GC
- GC logs
- JFR
- Profiling
- Benchmarking
- Thread dump
- Heap dump
- Memory leak analysis
25.8 Phase 8 - Enterprise Java
- Advanced Maven/Gradle
- JDBC
- Spring Boot
- JPA/Hibernate
- REST API
- Microservices
- Messaging
- Integration testing
- Observability
- Docker
- Kubernetes
- Performance in containers