Acercarse un poco más a Java 8

Acercarse un poco más a Java 8

Java, un lenguaje de programación creado por James Gosling en 1991, estaba destinado a escribir un programa que pudiera ejecutarse en múltiples sistemas operativos. Oracle ahora tiene el Steermanship para Java y continúa el proyecto a nombre de OpenJDK. Con el tiempo, se han lanzado varias versiones nuevas de Java de las cuales la actual es 1.8 conocido popularmente como Java 8.

  • Lea esto => Cómo instalar Java 8 en Centos, Red Hat y Fedora
  • Lea esto => Cómo instalar Java 8 en Ubuntu y LinuxMint

El lenguaje fue diseñado para incorporar estas propiedades:

  • Plataforma independiente- El programa utiliza la máquina virtual Java como abstracción y no accede al sistema operativo sobre la base directa. Que hace que los programas de Java sean altamente portátiles.
  • Programación orientada a objetos- Además de los tipos de datos primitivos, todos los elementos en Java pueden considerarse como objetos.
  • Lenguaje de programación fuertemente tipado- Sí! Java es un lenguaje de programación fuertemente tipado. Por ejemplo, los tipos de variables usadas deben ser predefinidas y la conversión a otros objetos se vuelve bastante estricto. Esto debe hacerse en el caso de un programador.
  • Lenguaje interpretado y compilado- El código fuente de Java requiere ser transferido al formato ByTecode, uno que no depende de la plataforma de destino. Las instrucciones son interpretadas por Java Virtual Machine (JVM). El JVM que contiene el llamado Hotspot-Compiler tiene el potencial de traducir las instrucciones de Bytecode Critical de rendimiento en las instrucciones del código nativo.
  • Gestión de memoria automática- Java es una plataforma que administra con éxito la asignación de memoria y la desactivación para crear nuevos objetos. El programa no tiene acceso directo a la memoria. Y como resultado, el recolector de basura elimina automáticamente objetos a los que no existe un puntero activo.

Siendo un desarrollador de jQuery, he estado trabajando mucho con Java 8 en los últimos años, ya sean nuevas aplicaciones o migrando las existentes. Y supongo que es el momento adecuado para anotar algunas de las mejores prácticas que he encontrado bastante útiles. Esta publicación de blog discute las transmisiones, yo.mi. Las operaciones más importantes que se pueden realizar en su código. Métodos predeterminados, lambdas y transmisiones y usando opcional, etc. para representar valores ausentes.

Métodos predeterminados en interfaces

JDK 8 agregó la capacidad de especificar las implementaciones de métodos predeterminados en las interfaces para que las colecciones pudieran evolucionar sin romper la compatibilidad con retroceso. En las versiones anteriores, no pudimos agregar ningún método para interactuar sin todas las subclases de implementación. Con la ayuda de la versión 1.8, podemos marcar un método con la palabra clave predeterminada y proporcionar el cuerpo del método directamente en la interfaz.
A continuación se menciona un ejemplo de una interfaz llamada Debuggable. Está destinado a mostrarle cómo se usa la API de reflexión para obtener el acceso a los campos del objeto y proporciona una implementación decente de toString () para el objeto que imprime los valores de los campos.

Interfaz pública Debuggable String predeterminado Debug () StringBuilder sb = new StringBuilder (esto.getClass ().getName ()); SB.adjuntar(" [ "); Campo [] campos = esto.getClass ().getDeclaredfields (); para (campo f: campos) f.setAccessible (verdadero); Prueba SB.agregar (F.getName () + "=" + F.toma esto)); SB.adjuntar(", "); Catch (ilegalargumentException | ilegalAccessException e) tirar nueva runtimeException (e); SB.adjuntar("]"); RETURN SB.Encadenar();
123456789101112131415161718Interfaz pública Debuggable String predeterminado Debug () StringBuilder sb = new StringBuilder (esto.getClass ().getName ()); SB.adjuntar(" [ "); Campo [] campos = esto.getClass ().getDeclaredfields (); para (campo f: campos) f.setAccessible (verdadero); Prueba SB.agregar (F.getName () + "=" + F.toma esto)); SB.adjuntar(", "); Catch (ilegalargumentException | ilegalAccessException e) tirar nueva runtimeException (e); SB.adjuntar("]"); RETURN SB.Encadenar();

Lambdas en corrientes

Desafortunadamente, hasta ahora Java se consideraba como un lenguaje de programación apropiado para las técnicas de programación funcional. La única razón fue que las funciones no eran los ciudadanos de primera clase en el idioma. De hecho, no había ninguna forma ordenada y aceptada de referirse a un bloque de código con un nombre y pasarlo. Como resultado, Lambdas trae un cambio drástico. Hoy en día, las referencias de métodos se pueden usar para mejor o para peor, para referirse a un método específico, asignar las funciones a variables, pasarlas y disfrutar de todas las ventajas que ofrece el paradigma de programación funcional.
Los conceptos básicos son bastante simples, se crean un montón de interfaces. Por ejemplo:

// tarda un largo, devuelve una función de cadena f = l -> l.Encadenar(); // Toma nada te da el proveedor de hilos S = Thread :: CurrentThread; // toma una cadena como el consumidor de parámetros C = sistema.out :: println;
12345678// tarda un largo, devuelve una función de cadena F = L -> L.Encadenar(); // Toma nada te da ThreadsSupplier s = Thread :: CurrentThread; // toma una cadena como el consumidor de parámetros C = sistema.out :: println;

La advertencia mencionada aquí es el código utilizado para administrar en caso de que si deja que las funciones anónimas crezcan en un cierto umbral. El código especifica el flujo de datos. Todo lo que necesita hacer es conectar la funcionalidad específica, especialmente la que desea encontrar con el marco.

En una palabra

Cuando trabaje con transmisiones, recuerde siempre que necesita transformar los valores contenidos en la secuencia con las funciones que proporciona, por ejemplo, utilizando la sintaxis Lambda. Algunas conclusiones:

  • En caso de que el código no especifique el marco para el flujo de datos en el que enchufa sus funciones, entonces vale la pena considerar para evitar multiplicar lambdas. Una clase adecuada podría ser más legible.
  • Si su lambda crece por encima de 3 líneas de código, divídalo: ya sea en varias invocaciones de map () que procesan los datos en pasos o extraen un método y usan la sintaxis de referencia del método para referirse a ella.
  • No asigne lambdas y funciones a los campos de los objetos. Los lambdas representan funciones y se les sirve mejor puro.