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

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


Новые возможности

Java 8 добавила очень много возможностей; мы в основном рассмотрим следующие:

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

  • Ссылки на методы− Ссылки на методы предоставляют очень полезный синтаксис, который позволяет напрямую ссылаться на методы или конструкторы существующих классов или объектов Java (экземпляров). При использовании вместе с лямбда-выражениями ссылки на методы позволяют сделать языковые конструкции более компактными и краткими, сокращая избыточный код.

  • Методы по умолчанию− Метод по умолчанию — это метод, имеющий реализацию в интерфейсе.

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

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

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

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

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

Для получения дополнительной информации о новых возможностях обратитесь к официальному сайту:Что нового в JDK 8

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

$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

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

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

Код файла Java8Tester.java:

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("Example "); names1.add("Taobao "); names1.add("Baidu "); names1.add("Sina "); List<String> names2 = new ArrayList<String>(); names2.add("Google "); names2.add("Example "); 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 , Example , Sina , Taobao ]
使用 Java 8 语法: 
[Baidu , Google , Example , Sina , Taobao ]

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

Нет. Характеристика
1 Лямбда-выражения
2 Ссылки на методы
3 Функциональные интерфейсы
4 Методы по умолчанию
5 Поток
6 Класс Optional
7 Nashorn, движок JavaScript
8 Новый API Date/Time
9 Base64
Другие расширения