English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java流程控制

Java数组

Java面向对象(I)

Java面向对象(II)

Java面向对象(III)

Обработка исключений в Java

Java Список (List)

Java Queue (очередь)

Java Map коллекции

Java Set коллекции

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Java 8 новые возможности

Java 8 (известный также как jdk 1.8) является основной версией разработки языка Java. Компания Oracle выпустила Java 8 18 марта 2014 года, он поддерживает функциональное программирование, новый JavaScript движок, новый API даты и времени, новый Stream API и т.д.

Новые функции

Java 8 добавил множество новых функций, и мы будем обсуждать основные из них:

  • Lambda выражения − Lambda позволяет передавать функцию в качестве параметра метода (функция передается в метод как параметр).

  • Методы ссылки − Методы引用 предоставляют非常有用的 синтаксис, который позволяет напрямую ссылаться на методы или конструкторы существующих Java классов или объектов (пример). В сочетании с lambda, методные ссылки делают структуру языка более компактной и краткой, уменьшая избыточный код.

  • Стандартные методы − Дефолтные методы представляют собой методы с реализацией, содержащиеся в интерфейсе.

  • Новые инструменты − Новые компиляторные инструменты, такие как Nashorn движок jjs, анализатор зависимостей классов jdeps.

  • Stream API − Новая Stream API (java.util.stream) вносит истинный функциональный стиль программирования в Java.

  • API даты и времени − Улучшена обработка даты и времени.

  • Класс Optional − Класс Optional стал частью библиотеки Java 8, предназначенный для решения проблем с пустыми указателями.

  • Nashorn, движок JavaScript − Java 8 предоставляет новый Nashorn JavaScript движок, который позволяет нам запускать определенные JavaScript приложения на JVM.

Более новых функций можно найти на официальном сайте:Что нового в JDK 8

В примерах статей о Java 8 мы используем среду jdk 1.8, вы можете использовать следующую команду для просмотра текущей версии jdk:

$ java -version
версия java "1.8.0_31"
Java(TM) SE Runtime Environment (сборка 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (сборка 25.31-b07, mixed mode)

Стиль программирования

Java 8 стремится иметь свой собственный стиль программирования и отличаться от Java 7, следующий пример показывает формат программирования Java 7 и Java 8:

import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
 
public class Java8Tester {
   public static void main(String args[]) {
   
      List<String> names1 = new ArrayList<String>();
      names1.add("Google ");
      names1.add("w3codebox ");
      names1.add("Taobao ");
      names1.add("Baidu ");
      names1.add("Sina ");
        
      List<String> names2 = new ArrayList<String>();
      names2.add("Google ");
      names2.add("w3codebox ");
      names2.add("Taobao ");
      names2.add("Baidu ");
      names2.add("Sina ");
        
      Java8Tester tester = new Java8Tester();
      System.out.println("使用 Java 7 语法: ");
        
      tester.sortUsingJava7(names1);
      System.out.println(names1);
      System.out.println("使用 Java 8 语法: ");
        
      tester.sortUsingJava8(names2);
      System.out.println(names2);
   }
   
   // 使用 java 7 排序
   private void sortUsingJava7(List<String> names){   
      Collections.sort(names, new Comparator<String>() {
         @Override
         public int compare(String s1, String s2) {
            return s1.compareTo(s2);
         }
      });
   }
   
   // Использование java 8 для сортировки
   private void sortUsingJava8(List<String> names){
      Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
   }
}

Выполните вышеуказанные скрипты, результат вывода будет:

$ javac Java8Tester.java
$ java Java8Tester
Использование синтаксиса Java 7: 
[Baidu , Google , w3codebox , Sina , Taobao ]
Использование синтаксиса Java 8: 
[Baidu , Google , w3codebox , Sina , Taobao ]

Далее мы подробно расскажем о новых возможностях Java 8:

НомерОсобенности
1Lambda выражения
2Методы ссылки
3Функциональные интерфейсы
4Стандартные методы
5Stream
6Класс Optional
7Nashorn, движок JavaScript
8Новый API даты и времени
9Base64