Home » Java 8 Tutorials

Java 8 Tutorials

Java 8 Tutorials

In this detailed Resource page, we feature an abundance of Java 8 Tutorials!

Java 8 (codename: Spider) was released on March 18, 2014, and included some features that were planned for Java 7 but later deferred.

Work on features was organized in terms of JDK Enhancement Proposals (JEPs).

  • JSR 335, JEP 126: Language-level support for lambda expressions (officially, lambda expressions; unofficially, closures) under Project Lambda and default methods (virtual extension methods) which allow the addition of methods to interfaces without breaking existing implementations. There was an ongoing debate in the Java community on whether to add support for lambda expressions. Sun later declared that lambda expressions would be included in Java and asked for community input to refine the feature. Supporting lambda expressions also enables functional-style operations on streams of elements, such as MapReduce-inspired transformations on collections. Default methods allow an author of an API to add new methods to an interface without breaking the old code using it. Although it was not their primary intent, default methods also allow multiple inheritance of behavior (but not state).
  • JSR 223, JEP 174: Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within applications
  • JSR 308, JEP 104: Annotation on Java Types
  • Unsigned Integer Arithmetic
  • JSR 337, JEP 120: Repeating annotations
  • JSR 310, JEP 150: Date and Time API
  • JEP 178: Statically-linked JNI libraries
  • JEP 153: Launch JavaFX applications (direct launching of JavaFX application JARs)
  • JEP 122: Remove the permanent generation

Java 8 is not supported on Windows XP but as of JDK 8 update 25, it can still be installed and run under Windows XP. Previous updates of JDK 8 could be run under XP, but had to be installed after a forced installation by directly unzipping files from the installation executable.

From October 2014, Java 8 was the default version to download (and then again the download replacing Java 9) from the official website. “Oracle will continue to provide Public Updates and auto updates of Java SE 8, until at least the end of December 2020 for Personal Users, and January 2019 for Commercial User”.

If you wish to build up your Java 8 knowledge first, check out our Java 8 Features Tutorial – The ULTIMATE Guide.

Java 8 Tutorials – New Features

Learn about the latest news and features introduced in Java 8

  • Java 8 news
    The first release candidates of Java 8, b128 and Java 8 RC2 showed up on February, fixing a serious flaw in the new Comparator API, where its new thenComparing() method had an unnecessary type restriction.
  • Java 8 : What do developers think?
    Since Java 8 releasement countdown is starting, Java developers seem certainly ready to get involved. According to a survey in Typesafe, 65% of developers who participated answered that they will be migrating to Java 8 in a 24 months plan, and from them 30% will try to migrate over the next 6 months
  • NetBeans IDE 8.0 and new features for Java 8
    NetBeans IDE 8.0 is released, also providing new features for Java 8 technologies. It has code analyzers and editors for working with Java SE 8, Java SE Embedded 8, and Java ME Embedded 8. The IDE also has new enhancements that further improve its support for Maven and Java EE with PrimeFaces.
  • Oracle ships Java 8
    Oracle has decided to ship upgrade to JDK 8 on March 18, even though the new release may come with a few bugs, as introduced by Full speed ahead: Oracle to ship Java 8 in March, even with bugs.
  • Java 8 will use Transport Level Security (TLS) 1.2 as default
    TLS 1.2 will be set by default to the next version of standard Java, that is coming on March 18. The TLS will provide encrypted internet communications, but will not completely solve Java’s security problems, as Java’s encrypted communications no panacea for security problems explains.
  • Java EE 8 : What does the community want?
    Following the earlier two community surveys, the first announced in December 2013 and the second in January 2014, Oracle calls the enterprise community for a third and final survey on Java EE 8.  The closing date for the survey will be March 24, 2014 at 12 AM Pacific Time.
  • HashMap changes in Java 8
    The way java.util.HashMap entries are indexed and stored has changed in the Java 8 update. Hash elements use balanced trees instead of linked lists under certain circumstances now.

Java 8 Tutorials – Getting Started

Simple examples with Java 8

  • Java 8 Default Methods Tutorial
    In this article we are going to explain how to use and take advantage of the possibility to implement default methods in interfaces. This is one of the most important features that are available since Java update 8.
  • Java 8 Concurrency Tutorial
    This article is about concurrency and parallel processing features in Java update 8. It is necessary to mention that concurrency is a very complicated matter and depends strongly in the hardware used for testing and benchmarking.
  • Java 8 Lambda Expressions Tutorial
    Lambda expressions are an important new feature in Java 8 which provide a clear and concise way to represent a functional interface using an expression. They also improve some functionality in Collection libraries such as iterate, filter and extracting data from a Collection.
  • Java 8 Method Reference Example
    Java provides a new feature called method reference in Java8. This tutorial explains the method reference concept in detail.
  • Java 8 Comparator Example
    This tutorial explains how to use Lambda expressions in order to improve the boilerplate code of the Comparator written for sorting the list collections.
  • Java 8 Consumer and Supplier Example
    This tutorial explains the in-built functional interfaces (i.e. Consumer<T> and Supplier<T>) introduced in Java8.
  • Java 8 Anonymous Function Example
    Java is an object Oriented Programming Language, and as such concepts like Encapsulation and Abstraction sits at the heart of it. However, since Java is a bit-too-much Object Oriented at its genome structure, that often times than not, it adds a lot of verbosity and boiler plate to its language constructs.
  • Java 8 Base64 Encoding Example
    This article is about encoding Strings using Java. Until now, this was only possible by using external libraries, since Java update 8, encoding and decoding is part of the standard JRE.
  • Java 8 Optional Example
    In this article we are going to show how to use the new java.util.Optional class.
  • Java 8 Period and Duration Example
    In this article we will learn about the Duration and Period classes in Java. These classes were added in Java 8.
  • Java 8 Predicate Example
    This tutorial explains the functional interface Predicate which has been newly introduced in the java.util.function package. This package describes the Predicate’s usage with the help of multiple examples.

Java 8 Tutorials – Functions

Learn the most famous functionalities and operations of Java 8

Array, list and Map

  • Java 8 forEach Example
    In this tutorial, we will learn how to iterate over List, Set and Map using the Java forEach() method.
  • Java 8 Convert an Array to List Example
    In this tutorial, we will learn to convert the primitive array to list using the Java8 Stream API.
  • Java 8 Map Sorting Example
    In this tutorial, we will learn how to Sort a Map using Java8 Stream’s API and Lambda expression.
  • Java 8 Convert a List to Map Example
    In this tutorial, we will learn how to convert a List<?> to a Map<K,V> using Java8 Streams API.
  • Java 8 flatMap Example
    In this tutorial, we will learn about Java8 Streams API flatMap() method and in which structure it can be used.
  • Java 8 Convert a primitive Array to List Example
    In this article we will learn how to Convert a primitive Array to List using Java 8. For this example we will use IDEA IntelliJ but you can also use any IDE.
  • Java 8 Convert a Stream to List Example
    This tutorial explains how to convert a Stream to a List with the help of the following examples.
  • Java 8 Array to Stream Example
    In this post we are concerned with arrays and see how Streams can further make array processing easier and efficient. In fact the Stream documentation explicitly mention that arrays are valid source candidates for supplying Stream its sequence of elements: “A stream pipeline consists of a source”.
  • Java 8 Join Arrays Example
    An Array is a data structure which holds a fixed number of objects with the same type. Joining Arrays is to combine two arrays into one. Java 8 enhances Collection by providing a new Stream interface. A stream is not a data structure, instead it is created from Collection, Array, or I/O channels.
  • Java 8 Parallel Arrays Example
    In this article we are going to talk about the new possibilities offered in Java 8 for execute Arrays operations in parallel. We are going to focus on the Arrays class methods.

Date and Time

  • Java 8 Date and Time API Tutorial
    In this article we are going to explain the main features of the new Date/Time API coming with Java 8. We are going to briefly explain why a new Date/Time API is necessary in Java and what benefits it has in comparison with the “old” world.
  • Java 8 Convert a String to LocalDate Example
    In this tutorial, we will learn how to convert a given response string into a java.time.LocalDate object.
  • Java 8 Convert Instant to LocalDateTime Example
    In this post, we feature a comprehensive Example on Java 8 Convert Instant to LocalDateTime. First we will learn about Java Instance and LocalDateTime class and then how to convert an Instant object to LocalDateTime.
  • Java 8 LocalDateTime Example
    Java provides a new Date and Time API in Java8. This tutorial demonstrates how to use the LocalDateTime class with few important methods defined in this class.
  • Java 8 Display all ZoneId and its UTC offset Example
    In this article we will see how to display all ZoneId and its UTC offset. A ZoneId is used to identify the rules used to convert between an Instant and a LocalDateTime.
  • Java 8 Convert Instant to ZonedDateTime Example
    In this post, we feature a comprehensive Example on Java 8 Convert Instant to ZonedDateTime. We will discuss about the Java Instant and ZonedDateTime classes and how we can convert a time represented by the Instant to a ZonedDateTime object.
  • Java 8 Add Days to Current Date Example
    Java 8 added a new set of packages to provide a comprehensive date-time model. Java 8 Date-Time API is a JSR-310 implementation. In this example, I will use classes from the java.time and java.time.format packages to demonstrate how to add days to the current date.


  • Java 8 Stream API Tutorial
    Java 8 offers several new functionalities. One of the most important is the new Streams API. Basically, Streams are sequences of elements that support concatenated operations. They used a source and allow different intermediate and terminal operations.
  • Java 8 Parallel Streams Example
    The Stream API enables developers to create the parallel streams that can take advantage of multi-core architectures and enhance the performance of Java code. In a parallel stream, the operations are executed in parallel and there are two ways to create a parallel stream.
  • Java 8 Streams: allMatch(), anyMatch(), noneMatch() Example
    Java 8 Matching with Streams tutorial explains how to match the elements in a stream using the allMatch(), anyMatch() and noneMatch() methods provided by the Streams API.
  • Java 8 Collect vs Reduce Example
    This tutorial explains the concept of reducing and collecting in Streams and Collector’s API respectively.
  • Java 8 Filter Null Values from a Stream Example
    In this tutorial, we will learn how to filter the null elements from a Stream in Java.
  • Java 8 StringJoiner Example
    In this tutorial, we will learn about the Java8 Stream’s API StringJoiner feature and we will explore its different characteristics.
  • Java 8 Read a File Line by Line Example
    In this tutorial, we will learn the Java8 Stream’s API for reading a file’s content line-by-line and we will explore its different characteristics.