
Explore Java 8 features such as lambdas, functional interfaces, method references, optional, and the date and time API, plus memory model upgrades.
Install Java 8 on Windows by downloading the JDK, running the installer, and configuring the system path and environment to verify the setup.
Discover why learning Java 8 matters: a dynamic, expressive language with a history since 1996, and how Java 8's evolution in 2014 simplifies coding and reduces verbosity.
Compare declarative and imperative programming, then see how Java 8 enables functional style with streams to filter even numbers, map them, and compute their sum.
Learn how lambda expressions convert methods into anonymous functions under a functional interface, reducing code and boosting readability while enabling collection operations like filtering, mapping, and working with streams.
Learn to write lambda expressions by converting a functional interface from an anonymous class to a lambda, highlighting the single abstract method, arrow syntax, and return type.
Explore sorting a collection in Java 8 by comparing the pre-lambda approach using a comparator with the post-lambda technique, using an ArrayList and ascending order.
Explore functional interfaces with a single abstract method and learn how lambda expressions implement them. Use @FunctionalInterface to enforce the contract, and see how anonymous implementations demonstrate functional interfaces.
Build a Java 8 stream program that uses predicates to filter elements such as those greater than five or between five and ten, and collect the results into a list.
Explore predicate-based filtering in Java 8 by streaming a list of employee names and extracting those starting with specific letters, then applying negate to obtain opposite results.
Learn to implement a predicate as a function to filter a list, using a test method to apply the predicate and collect matching results into a string.
Apply and chain multiple predicates on a data set using streams in Java 8, learning how to filter and combine conditions with predicate logic.
Apply predicates to custom objects by building an employee class and a repository, then filter a list with a parameterized predicate to select employees based on joining month.
Explore the BiPredicate concept in Java: a two-argument predicate with test, and, or, negate methods, applying on two objects and returning a boolean, with hands-on implementation steps.
Explore BiPredicate implementation in Java 8 by building predicate classes, applying conditions on first and second parameters, and testing equal, greater than, and negate scenarios.
Introduce the consumer interface in the Java function package, showing how a consumer consumes input data with no return value, using the accept method and console output.
Learn to implement a Java 8 consumer that takes one input, consumes the data, and prints it to the console with a simple printer simulation.
Write a generic static method that uses a consumer to process and print each element of a list, demonstrating how for-each and consumer work in Java 8.
Learn the supplier functional interface, a no-argument, one-method construct that returns a result via get; explore uses like random number generation, object creation, and stream generation with stream.generate.
Learn how to implement and use a supplier in Java to generate current date and time, create and supply custom objects, and produce random numbers with limits.
This lecture introduces the java function interface, detailing a single argument and a returned result via apply, explores function composition, and reviews the identity function that returns the input.
Learn to implement and apply functions via the function interface, build a string-to-length function, create a half-length operation, and prepare to compose with identity in Java 8.
Explore composing integer functions by creating multiply and add helpers, then combine them to form a composed operation, and introduce the identity function within a Java 8 function interface.
Explore the bi-function concept in Java 8, noting that BiFunction takes two input parameters and one output parameter, with examples related to hash map use.
Demonstrate BiFunction in Java 8 by creating a two-parameter function that returns the sum of two integers and show its application to produce Optional or List.
Explore BiFunction in Java 8 by implementing two-argument functions that return a double, convert the double to a string, and apply these functions to compute and format results.
Explore how a hash map uses a BiFunction to replace null values with defaults, and how compute and computeIfPresent manage missing keys in a Java 8 practical use case.
Learn how method references using the double colon syntax call static and instance methods directly, replace lambdas, and apply them to sort lists with compareTo.
Demonstrates implementing a static method reference to sort a student list by name and by age, using a student class with constructors, getters, setters, and a comparator.
Demonstrates using a method reference in Java 8 by moving static logic into a dedicated class and a driver to perform list operations, metric comparisons, and data collection.
Explore using constructor references in Java 8 to create objects without new, compare default and parameterized constructors, and select the best match for a given functional interface.
Explore how constructor methods and parameterized versus default constructors create objects, using this to initialize fields, and how method references relate to constructor usage.
Explore streams as a declarative way to process collections in java, focusing on what to achieve rather than how to achieve it. Illustrate a simple example with a list of menu items and calories, showing how to filter low calorie options and collect them, with a comparison to java 7.
Explore how to filter items with calories under 200, map to their names, and collect results using Java 8 streams, anonymous implementations, and method references.
Understand the difference between streams and collections: streams perform data operations like mapping and collecting lazily, while collections store data and support add or remove.
Explore stream debugging in Java 8 by loading data points, filtering numbers greater than the available, and reviewing the elements available in this particular stream.
Create streams in Java using stream, stream builder, empty, generate, and reading lines. Grasp the stream lifecycle—creation, intermediate, and terminal operations—and that streams do not store data in a pipeline.
Create streams using several methods in Java 8, including from arrays, from lists, and via a string builder, with examples using names and numbers.
Explore creating streams in Java 8, using empty streams to avoid nulls, optional usage, suppliers for finite data, and controlled generation with random numbers and limits.
Discover Java 8 stream creation using an industry standard rate method to generate a finite stream of order numbers from a starting point with a Lambda for the next value.
Java 8 introduces three primitive streams—IntStream, LongStream, and DoubleStream—for the primitive data types. There are two methods: range and rangeClosed, with the range end exclusive.
Explore primitive stream generation in Java 8 by using range and range closed, understanding exclusive end points, and leveraging long stream to generate and manipulate primitive data efficiently.
Learn how to convert streams to collections in Java 8 using collectors, handle boxed data and map results to objects for collection outcomes.
Explore Java 8 stream operations, distinguishing intermediate from terminal operations and building lazy pipelines with map, distinct, and limit, then triggering results with terminal operations like reduce, collect, and findFirst.
Learn how to use streams and filters in Java 8 to apply conditions with lambdas, filtering elements by starting letters and numeric ranges such as 75 to 95.
Explore the stream distinct operation in Java 8 that removes duplicate data from a stream, producing unique values for cleaner data processing.
Apply skip and limit to Java streams to produce a finite subset of data. See how the first ten elements are selected and how skipping elements interacts with limiting.
Learn how map and flatMap transform a stream of programmer objects into names and skill lists, flattening results and collecting them to illustrate map, flatMap, and mapreduce ideas.
Sort data by natural order or reverse order using a comparator in streams, and apply these techniques to organize lists efficiently.
Learn how to use stream intermediate operations and peek to log data between steps without altering the stream, while mapping, filtering, and debugging with a start-end range example.
Explore Java streams terminal operations, focusing on count, max, and min as reductions. Learn to compute element counts and extreme values in finite streams with practical examples.
Explore how stream operations findFirst and findAny select elements under different conditions, with optional handling and parallel execution considerations for performance.
Explore stream terminal operations in Java 8 by using anyMatch, allMatch, and noneMatch to evaluate a predicate against a list of skills, with practical examples.
Explore using forEach and collect on Java 8 streams, showing how collectors gather mapped or filtered results into lists or other containers, with practical usage across stream operations.
Explore stream reduce in Java 8, using an identity and an accumulator lambda to fold multiple elements into a single object, with examples like longest word or string concatenation.
Combine the reduce operation with min and max in Java 8 streams to compute the minimum and maximum elements, using Optional results to safely extract values.
This session summarizes the theoretical and exemplified work, inviting you to extend these examples and implement them in a Java 8 project, with attention to documentation and streams updates.
Discover the parallel stream concept in java 8, compare sequential and parallel streams, and learn when parallelism boosts performance, while order may be non-deterministic and depends on program needs.
Explore how to implement parallel streams in Java 8, compare sequential and parallel execution, and observe output ordering when printing data from a collection.
Explore stream chaining with Java 8 parallel streams, mapping and aggregating data, and see how parallel execution speeds up operations without affecting the terminal function.
Explore Java 8 Collectors and the join operation to concatenate stream elements into strings, using delimiters, prefix, and suffix, and compare with string builder approaches.
Learn how to use Java 8 collectors with lambda expressions to compute min and max, and to partition data by conditions, mapping results into collections.
Explore interfaces, default methods, and static methods in Java 8; learn how default methods add new behavior without breaking implementations and how static methods work in interfaces.
Demonstrate method overriding in Java by showing how to override a method, implement your own version, and call it to see the overridden behavior.
Explore optional features in Java 8, learn how optional containers manage present or absent values to avoid null pointer exceptions, and use methods to check presence and print values safely.
Explore Java 8 optional features by creating optional student objects, using Optional.empty, Optional.of, and Optional.ofNullable, and handling presence or absence of values.
use Java 8 optional to check presence, execute a consumer when present, and return a default value when empty to simplify code.
Learn how Java optional features provide default values via suppliers, handle empty options with map and filter, and throw or manage exceptions when data is unavailable.
Learn the Java 8 date-time api, introducing local date, local time, and local date-time with fixed iso formats. Emphasize clarity, flexibility, and immutability over the old calendar-based approach.
Learn to create and format date and time values in Java 8 using LocalDate and LocalDateTime, compute month length, detect leap years, and obtain the current date with now.
Explore local date handling with chrono temporal fields, extracting year, month, day of month, and day of week using LocalDate and temporal concepts.
Explore using Java 8 LocalDate to query dates, perform date arithmetic, and display results, including the last day of the year and future dates, with plus and minus operations.
Learn to modify Java LocalDate values with TemporalAdjusters, finding the last day of the month and the next Sunday, and implement custom temporal adjusters for calendar tasks.
Create a custom temporal adjuster by implementing the temporal adjuster interface to compute the next Sunday from today using Java's time API.
Explore working with local time and local date in Java 8 by creating time and date instances, obtaining the current time, and performing basic hour, minute, and second calculations.
Learn how the java 8 LocalDateTime class combines local date and time, constructs and formats instances, and performs arithmetic such as adding days or hours, including the day of month.
Explore how the ZonedDateTime class manages current date and time, time zones and offsets, and demonstrate formatting and converting times across zones.
Learn to calculate differences between two dates and times in Java 8 using Period for date components and Duration for time components with hands-on examples.
Learn to calculate time differences in java 8 using chrono units to measure durations in minutes and seconds, with practical demos of the chrono class.
Learn how to convert legacy Java date and time using the new API, by using date and calendar instances, toInstant, and local date/time conversions.
Explore Java 8 CompletableFuture, an extension of Future for asynchronous, non-blocking tasks; learn manual completion, callbacks, chaining actions, and built-in exception handling to improve parallelism.
Learn to create and compose asynchronous tasks with CompletableFuture in Java 8, using supplyAsync and thenApply to run on the common pool or a custom executor, and observe result handling.
Learn to run multiple CompletableFuture instances in parallel and combine their results after completion using allOf, streaming the futures to map and collect a final string joined by a delimiter.
Some ratings and reviews-
**************#########*****************
Dmitry L.
*****
Rating: 5.0 out of 5
The course is quite concise and straight to the point. I managed to learn major new concepts of Java 8, which previously was somehow familiar to me, but not very clear. Thank you for your hard work, Ravi!
---------------------------------------***********************-------------------------------------------------------------
Manvendra Pratap S.
*****
Rating: 5.0 out of 5
Awesome ? Course, all concepts are taught in a step-wise manner and taught with an example. This is the course if anyone want to cover all concepts of Java 8.
Thanks for wonderful course.
--------------------------------------***********************--------------------------------------------------------------
Shahab H.
*****
Rating: 5.0 out of 5
Great Course Content and Teaching Skills!
This course helped in getting hands-on experience with Java 8. Especially the Lambda and Stream API part of the course is outstanding.
--------------------------------------************************------------------------------------------------------------
This course is intended to learn the features of Java 8 with the live coding. This will cover all the concepts with the practical approach. This is completely based on the writing code way of learning. You are about to feel like a class room learning .
Why Java 8:
This course will help the Java developers to build their knowledge on the new Java 8 features.
All the new features such as Lambdas, Streams , Optionals, Functional Interfaces and Parallel Programming will be explained with live coding.
This course will give you the confidence on implementing new Java 8 features in real Java projects.
By the end of this course you will have a complete understanding of new Java 8 functional features.
This course is touching below features along with some minor.
1. Lambda Expressions
2. Functional Interfaces
3. Default methods in Interface
4. Static Methods in Interfaces.
5. Predicate
6. Function
7. Consumer
8. Supplier
9. Method Reference & Constructor Reference by Double Colon(::) Operator.
10. Stream API
11. Date & Time API ( Joda API)
This course is a concise, no-nonsense guide to Java 8 which explains just enough detail so that you can absorb and understand the core concepts and get you up and running, quickly and effectively with coding in Java 8.
After completing this video course, we are sure, you will be in a position to handle any king of Java projects and feel confidence while writing codes.
I can not wait to see you in the course :)
Happy learning :)