Nuevas características de Java 8

Java 8 (también conocido como JDK 1.8) es una versión principal del desarrollo del lenguaje Java. Oracle Corporation lanzó Java 8 el 18 de marzo de 2014. Admite programación funcional, un nuevo motor de JavaScript, una nueva API de fechas, una nueva API Stream, etc.


Nuevas características

Java 8 agregó muchísimas características. Discutiremos principalmente las siguientes:

  • Expresiones Lambda− Lambda permite usar una función como parámetro de un método (la función se pasa como parámetro a un método).

  • Referencias de métodos− Las referencias de métodos proporcionan una sintaxis muy útil que permite referenciar directamente métodos o constructores de clases u objetos (instancias) de Java existentes. Cuando se usan junto con lambda, las referencias de métodos pueden hacer que las construcciones del lenguaje sean más compactas y concisas, reduciendo el código redundante.

  • Métodos predeterminados− Un método predeterminado es un método que tiene una implementación dentro de una interfaz.

  • Nuevas herramientas− Nuevas herramientas de compilación, como: el motor Nashorn jjs, el analizador de dependencias de clases jdeps.

  • Stream API− La API Stream recién agregada (java.util.stream) introduce un verdadero estilo de programación funcional en Java.

  • Date Time API− Mejora el manejo de fechas y horas.

  • Clase Optional− La clase Optional ya forma parte de la biblioteca de Java 8 y se utiliza para resolver las excepciones de puntero nulo.

  • Nashorn, motor de JavaScript− Java 8 proporciona un nuevo motor de JavaScript Nashorn, que nos permite ejecutar aplicaciones de JavaScript específicas en la JVM.

Se pueden consultar más características nuevas en el sitio web oficial:What's New in JDK 8

En los ejemplos de los artículos sobre Java 8, todos usamos el entorno JDK 1.8. Puedes usar el siguiente comando para ver la versión actual de 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)

Estilo de programación

Java 8 quiere tener su propio estilo de programación y distinguirse de Java 7. El siguiente ejemplo muestra los formatos de programación de Java 7 y Java 8:

Código del archivo 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("Ejemplo "); names1.add("Taobao "); names1.add("Baidu "); names1.add("Sina "); List<String> names2 = new ArrayList<String>(); names2.add("Google "); names2.add("Ejemplo "); names2.add("Taobao "); names2.add("Baidu "); names2.add("Sina "); Java8Tester tester = new Java8Tester(); System.out.println("Usando la sintaxis de Java 7:"); tester.sortUsingJava7(names1); System.out.println(names1); System.out.println("Usando la sintaxis de Java 8:"); tester.sortUsingJava8(names2); System.out.println(names2); } //Ordenar con 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); } }); } //Ordenar con Java 8 private void sortUsingJava8(List<String> names){ Collections.sort(names, (s1, s2) -> s1.compareTo(s2)); } }

Al ejecutar el script anterior, el resultado es:

$ javac Java8Tester.java
$ java Java8Tester
使用 Java 7 语法: 
[Baidu , Google , Ejemplo , Sina , Taobao ]
使用 Java 8 语法: 
[Baidu , Google , Ejemplo , Sina , Taobao ]

A continuación, presentaremos en detalle las nuevas características de Java 8:

N.º Característica
1 Expresiones Lambda
2 Referencias de métodos
3 Interfaces funcionales
4 Métodos predeterminados
5 Stream
6 Clase Optional
7 Nashorn, motor de JavaScript
8 Nueva API de fecha y hora
9 Base64
Otras extensiones