English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
Номер | Особенности |
---|---|
1 | Lambda выражения |
2 | Методы ссылки |
3 | Функциональные интерфейсы |
4 | Стандартные методы |
5 | Stream |
6 | Класс Optional |
7 | Nashorn, движок JavaScript |
8 | Новый API даты и времени |
9 | Base64 |