Lambda Expressions |
Syntax, Scope, Variable capture, Method references, Constructor references |
✔️ |
✔️ |
✔️ |
✔️ |
Functional Interfaces |
Predicate, Consumer, Supplier, Function, BiFunction, UnaryOperator, BinaryOperator, Custom FI |
✔️ |
✔️ |
✔️ |
✔️ |
Stream API - Basics |
Creating streams, map(), filter(), forEach(), count(), collect() |
✔️ |
✔️ |
|
|
Stream API - Intermediate |
distinct(), sorted(), limit(), skip(), peek(), Optional + Streams |
|
✔️ |
✔️ |
|
Stream API - Advanced |
reduce(), flatMap(), groupingBy(), partitioningBy(), joining(), summarizing, parallelStream() |
|
✔️ |
✔️ |
✔️ |
Stream API - Expert |
Custom collectors, Stream performance tuning, Spliterator, Lazy evaluation, Infinite streams |
|
|
✔️ |
✔️ |
Optional Class |
of(), ofNullable(), empty(), isPresent(), ifPresent(), orElse(), orElseGet(), orElseThrow() |
✔️ |
✔️ |
|
|
Date and Time API (java.time) |
LocalDate, LocalTime, LocalDateTime, Instant, ZoneId, OffsetDateTime, Period, Duration |
✔️ |
✔️ |
✔️ |
|
Date and Time Formatting |
DateTimeFormatter, Custom patterns, Parsing, Timezone conversions |
|
✔️ |
✔️ |
|
Default & Static Methods in Interfaces |
Default methods, Static methods, Diamond problem, Multiple inheritance resolution |
✔️ |
✔️ |
✔️ |
✔️ |
CompletableFuture & Concurrency |
supplyAsync(), runAsync(), thenApply(), thenAccept(), thenCombine(), allOf(), anyOf() |
|
✔️ |
✔️ |
✔️ |
Asynchronous Programming |
Exception handling in CompletableFuture, Non-blocking computations, Chaining futures |
|
|
✔️ |
✔️ |
Nashorn JavaScript Engine |
Script execution, Bind Java Objects, Invoke Java methods, External JS files, Performance |
|
✔️ |
✔️ |
|
Collections Enhancements |
forEach(), removeIf(), replaceAll(), computeIfAbsent(), computeIfPresent(), merge() |
✔️ |
✔️ |
✔️ |
|
Map API Improvements |
getOrDefault(), putIfAbsent(), replaceAll(), compute(), replace(), new traversal APIs |
✔️ |
✔️ |
✔️ |
|
StringJoiner & Collectors |
joining(), delimiters, prefix & suffix, Collectors.toList(), toSet(), toMap() |
✔️ |
✔️ |
✔️ |
|
Base64 Encoding/Decoding |
Basic, URL, MIME encoding & decoding |
✔️ |
✔️ |
|
|
Arrays Enhancements |
parallelSort(), setAll(), parallelPrefix(), Arrays.stream() |
✔️ |
✔️ |
✔️ |
|
Annotations (Java 8) |
@FunctionalInterface, @Repeatable, Type Annotations, @Target, @Retention |
✔️ |
✔️ |
✔️ |
|
Method References |
Reference to static methods, instance methods, constructors |
✔️ |
✔️ |
✔️ |
|
Parallel Programming |
Parallel streams, ForkJoinPool, Performance considerations |
|
✔️ |
✔️ |
✔️ |
Spliterator API |
tryAdvance(), forEachRemaining(), characteristics(), estimateSize(), parallel iteration |
|
|
✔️ |
✔️ |
Security & Java 8 |
SecureRandom with streams, Optional null-safety, Immutable Date-Time API |
✔️ |
✔️ |
✔️ |
✔️ |
Miscellaneous Utilities |
Objects.requireNonNullElse(), Files.lines(), Instant.now(), Comparator.comparing() |
✔️ |
✔️ |
✔️ |
✔️ |
Performance Tuning |
Streams vs loops, Parallel stream overhead, Memory considerations |
|
|
✔️ |
✔️ |
Testing with Java 8 |
Testing Lambdas, Streams, and CompletableFuture, Mocking functional interfaces |
|
✔️ |
✔️ |
✔️ |