Introducción a Java 8

Como todos sabemos, Java es uno de los lenguajes de programación más potentes. Oracle lanzó una nueva versión de Java, Java SE 8, el 18 de marzo de 2014. Esta versión innovadora de Java se utiliza principalmente para plataformas de desarrollo de software. Hay varias características en Java8 que son las actualizaciones de la versión existente de bibliotecas de programación, JVM y herramientas. Se dice que la característica más importante es la introducción de expresiones lambda que discutiremos en la siguiente sección junto con otras características.

Nuevas características de Java 8

Para la programación Java, Java SE 8 ofrece una gran cantidad de características. Algunos de ellos son

  • Expresiones lambda
  • Stream API
  • Método ForEach ()
  • Método predeterminado
  • Fecha Hora API
  • Nashorn JavaScript Engine
  • Referencias de métodos
  • StringJoiner

Ahora, echemos un vistazo a cada uno de ellos en detalle.

1. Expresión Lambda

La expresión Lambda es una función anónima (una función sin nombre) que ayuda a escribir código en un cierto estilo funcional. El método abstracto único (SAM) se puede implementar de forma clara y concisa mediante el uso de una expresión. Dado que los datos se pueden iterar, filtrar y extraer, es muy útil, especialmente en la biblioteca de recopilación. La expresión Lambda también ayuda a reducir la complejidad del código. A continuación se muestra la sintaxis de una expresión lambda:

Sintaxis:

(Parameters) -> Expression

Código:

( a, b ) -> a + b // Expression takes 2 parameters and return the sum.

2. Stream API

Stream API ofrece una técnica para el procesamiento de datos de diferentes maneras, como filtrado, extracción, transformación, etc. con la ayuda del paquete java.util.stream. No es necesario confundir java.util.streams con Java InputStreams o OutputStreams ya que no hay relación entre ellos. Una de las principales ventajas de Stream API es que no altera su fuente. es decir, si se filtra un conjunto de datos, se crea un nuevo conjunto de datos con datos filtrados en lugar de modificar la fuente original. Stream API evalúa el código solo cuando es necesario y no repite el código más de una vez. Si se debe repetir, se debe generar una nueva secuencia. Varios métodos predefinidos están presentes para apoyar esto. Para iterar la secuencia, se puede usar el siguiente código.

Código:

Stream.iterate(1, elem->elem+1)

3. Método ForEach ()

Para iterar sobre Collection Framework, Java SE8 ofrece un nuevo método llamado forEach que se define en la interfaz Iterable. El bucle ForEach () se puede usar en una clase de colección que extiende la interfaz Iterable. Como este método ingresa un solo parámetro, una expresión lambda también se puede pasar como parámetro.

Código:

age.forEach( age -> ( System.out.println(age); )); //each age is taken and printed

4. Método predeterminado

Normalmente, los métodos no abstractos no se pueden agregar a las interfaces. Pero, en el caso de Java 8, permite agregar esos métodos en las interfaces. Estos métodos se escriben con una palabra clave predeterminada y se conocen como métodos predeterminados. Como son métodos no abstractos, también se puede incluir el cuerpo del método. Curiosamente, esta característica también garantiza la compatibilidad binaria con versiones anteriores de código.

Código:

public interface Moveable (
default void Sound()(
System.out.println("Hi Anna, How is my sound?");
))

5. Fecha Hora API

En Java 8, se ha introducido una nueva API de tiempo y API de fecha donde las fechas de manejo están en un método diferente en comparación con otras versiones de Java. Estas clases también se llaman JSR-310, ThreeTen.

Las siguientes son las clases de hora y fecha que están disponibles en Java. paquete de tiempo:

  • Clase Jtime.LocalDate
  • Clase LocalTime
  • Clase LocalDateTime
  • Clase de MonthDay
  • Clase OffsetTime
  • Clase OffsetDateTime
  • Clase de reloj
  • Clase ZonedDateTime
  • Clase ZoneId
  • Clase ZoneOffset
  • Clase de año
  • AñoMesa de clase
  • Clase de período
  • Clase de duración
  • Clase instantánea
  • DayOfWeek enum
  • Mes enum

Código:

Clock cl = Clock.systemDefaultZone();
System.out.println(cl.getZone());

6. Motor Javascript de Nashorn

Nashorn es un motor de JavaScript que ayuda a ejecutar el código JavaScript en Java Virtual Machine (JVM) dinámicamente.

Se puede hacer usando dos métodos mencionados a continuación.

  1. Con la ayuda de la herramienta de línea de comandos jjs.
  2. Al configurarlo en el código fuente de Java.

Para ejecutar usando la herramienta de línea de comandos jjs, se pueden realizar los siguientes pasos.

  • Crear un archivo .js js.
  • Escriba y guarde el siguiente código en el archivo.

Código:

var welcome = function()(
print("welcome to Nashorn Javascript Engine");
);
welcome ();

  • El terminal de línea de comando abierto
  • Escriba el comando jjs welcome.js y haga clic en enter.
  • Una vez que se ejecuta el comando, se mostrará la siguiente salida.

Salida :

7. Referencias de métodos

Las referencias de métodos es otra característica que se introduce en Java 8 que se puede usar en métodos de interfaz funcional. De otra manera, se puede decir que son un subconjunto de otra característica de Java, expresiones lambda. Esto se debe a que también se puede usar una referencia de método si se puede usar una expresión lambda.

Los métodos pueden ser:

  • Referencia al constructor
  • Referencia al método estático
  • Referencia a un método de instancia

La referencia al método estático puede ser como se muestra a continuación

Código:

Thread t=new Thread(ExampleClass::ThreadStatusMethod);
t.start();

8. StringJoiner

Se ha agregado una nueva clase final StringJoiner a Java 8 en Java. paquete util. Se puede construir una secuencia de caracteres separados por delimitadores como coma (, ), guión (-), etc.

Código:

StringJoiner Names = new StringJoiner("-"); // Here, delimiter is -
// Adding names to StringJoiner
joinNames.add("Anna");
joinNames.add("Adam");

Salida:

Mejoras de seguridad

Además de estas características, también se realizan otras mejoras de seguridad en Java SE8. Son:

  • Los estándares de criptografía de clave pública 11 (PKCS) se han ampliado para incluir soportes de 64 bits para el sistema operativo, Windows.
  • Para las plataformas UNIX, se han presentado dos nuevas implementaciones. Ofrece comportamiento de bloqueo y no bloqueo.
  • En el proveedor SunJCE, también se agregan algoritmos AES y PBE como PBEWithSHA256AndAES_128 y PBEWithSHA512AndAES_256.
  • Java SE 8 admite la extensión de Indicación de nombre de servidor (SNI) que extiende los protocolos TLS / SSL para conectarse durante el protocolo de enlace para aplicaciones de servidor compatibles.

Conclusión

Java SE8 es la nueva versión de Java desarrollada por Oracle que ofrece varias características. La expresión lambda se considera como la característica más significativa entre ellas. En este documento, se explican en detalle las características de Java SE 8 y las mejoras de seguridad.

Artículos recomendados

Esta es una guía de ¿Qué hay de nuevo en Java 8 ?. Aquí discutimos las diferentes ocho características del nuevo Java 8. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. CardLayout en Java
  2. Número inverso en Java
  3. JComboBox en Java
  4. StringBuffer en Java
  5. Matrices en programación Java
  6. Método estático de JavaScript | Ejemplos