Java 11: características y comparación

Cada 6 meses, Oracle lanza nuevas versiones de Java. La versión de septiembre de Java 11 ya está generando mucho revuelo en el mundo de la informática, incluso antes de su lanzamiento, al declarar que, a partir de ahora, Java se pagará para uso comercial. Los siguientes artículos mostrarán funciones importantes, mejoras y funciones obsoletas sobre JDK 11.

Información y cambios importantes

  • La pila de implementación requerida para ejecutar applets y aplicaciones web se eliminó de JDK, que quedó en desuso en JDK 9.
  • Se eliminó una sección completa de navegadores admitidos de la lista de configuraciones admitidas debido a la falta de disponibilidad de la pila de implementación.
  • La actualización automática se eliminó de las instalaciones de JRE en Windows y macOS.
  • JavaFX y Java Mission Control ya están disponibles como descarga independiente.
  • Ya no se proporciona la traducción del idioma Java para francés, alemán, italiano, coreano, portugués (brasileño), español y sueco.
  • En esta versión, ya no se ofrece JRE o Server JRE. Solo se ofrece JDK.
  • El formato de empaquetado actualizado para Windows ha cambiado de tar.gz a .zip
  • El formato de paquete actualizado para macOS ha cambiado de .app a .dmg

1. Nuevos métodos de string:

isBlank(): Este es un método booleano. Simplemente devuelve verdadero cuando una string está vacía y viceversa.

Java

// Java Program to demonstrate
// the working of isBlank() method
 
class GFG {
    public static void main(String args[])
    {
        String str1 = "";
        System.out.println(str1.isBlank());
 
        String str2 = "GeeksForGeeks";
        System.out.println(str2.isBlank());
    }
}
Producción

true
false

líneas(): este método es para devolver una colección de strings que están divididas por terminadores de línea.

Java

// Java Program to demonstrate
// the working of lines() method
 
import java.util.*;
 
class GFG {
    public static void main(String args[])
    {
        String str = "Geeks\nFor\nGeeks";
        System.out.println(
            str.lines().collect(Collectors.toList()));
    }
}

Producción

Geeks
For
Geeks

repetir (n): el resultado es la string concatenada de la string original repetida la cantidad de veces en el argumento.

Java

// Java Program to demonstrate
// the working of repeat() method
 
class GFG {
    public static void main(String args[])
    {
        String str = "GeeksForGeeks";
        System.out.println(str.repeat(4));
    }
}
Producción

GeeksForGeeksGeeksForGeeksGeeksForGeeksGeeksForGeeks

stripLeading(): se usa para eliminar el espacio en blanco que está delante de la string

Java

// Java Program to demonstrate
// the working of stripLeading() method
 
class GFG {
    public static void main(String args[])
    {
        String str = " GeeksForGeeks";
        System.out.println(str.stripLeading());
    }
}
Producción

GeeksForGeeks

stripTrailing(): se usa para eliminar el espacio en blanco que está en la parte posterior de la string

Java

// Java Program to demonstrate
// the working of stripTrailing() method
 
class GFG {
    public static void main(String args[])
    {
        String str = "GeeksForGeeks ";
        System.out.println(str.stripTrailing());
    }
}
Producción

GeeksForGeeks

strip(): se usa para eliminar los espacios en blanco que están al frente y al final de la string

Java

// Java Program to demonstrate
// the working of strip() method
 
class GFG {
    public static void main(String args[])
    {
        String str = " GeeksForGeeks ";
        System.out.println(str.strip());
    }
}
Producción

GeeksForGeeks

2. Nuevos métodos de archivo

writeString(): Esto es para escribir algo de contenido en un archivo.

jshell>Files.writeString(Path.of(example.txt), "GeeksForGeeks!");

readString(): Esto se usa para leer el contenido de un archivo.

jshell>Files.readString(Path.of(example.txt));

Output: "GeeksForGeeks!"

isSameFile(): este método se usa para saber si dos rutas ubican el mismo archivo o no.

jshell>Files.isSameFile(Path.of("example1.txt"), Path.of("example1.txt"));
Output: true

jshell>Files.isSameFile(Path.of("example2.txt"), Path.of("example1.txt"));
Output: false

3. Métodos de reconocimiento de patrones

asMatchPredicate(): este método es similar al método de Java 8 asPredicate(). Introducido en JDK 11, este método creará un predicado si el patrón coincide con la string de entrada.

jshell>var str = Pattern.compile("aba").asMatchPredicate();

jshell>str.test(aabb);
Output: false

jshell>str.test(aba);
Output: true

4. Recolector de basura Epsilon

Esto maneja la asignación de memoria pero no tiene un mecanismo de recuperación de memoria real. Una vez que se agote el montón de Java disponible, JVM se cerrará. 

Sus objetivos son: – 

  • Pruebas de rendimiento
  • Prueba de presión de memoria
  • mejoras en la latencia de última caída

5. Eliminados los módulos Java EE y CORBA

Estos módulos quedaron obsoletos en Java 9 con una declaración para eliminarlos en versiones posteriores de JDK.

6. Eliminación de funciones de hilo

stop(Throwable obj) y destroy() objetos que se han eliminado del JDK 11 porque solo arrojan UnSupportedOperation y NoSuchMethodError respectivamente. Aparte de eso, no servían de nada. 

7. Conversión de unidades de tiempo

Este método se usa para convertir el tiempo dado a una unidad como DÍA, MES, AÑO y también para el tiempo.

jshell>TimeUnit c = TimeUnit.DAYS;
Output: DAYS

jshell>c.convert(Duration.ofHours(24));
Output: 1

jshell>c.convert(Duration.ofHours(50));
Output: 2

Opcional.isEmpty(): este método devuelve verdadero si el valor de cualquier objeto es nulo y de lo contrario devuelve falso.

jshell>Optional str = Optional.empty();
jshell>str.isEmpty();
Output: true

jshell>Optional str = Optional.of("TonyStark");
jshell>str.isEmpty();
Output: false

8. Sintaxis de variables locales para parámetros Lambda

JDK 11 permite usar ‘var’ en expresiones lambda. Esto se introdujo para ser consistente con la sintaxis local ‘var’ de Java 10.

Java

// Java program to show the Variable
// used in the lambda expression
 
public class VarInLambdaExample {
    public static void main(String[] args)
    {
        IntStream.of(1, 2, 3, 5, 6, 7)
            .filter((var i) -> i % 2 == 0)
            .forEach(System.out::println);
    }
}

Producción: 

2
6

Java

// Variable without using lambda expression
 
public class WithoutVarInLambdaExample {
    public static void main(String[] args)
    {
        IntStream.of(1, 2, 3, 5, 6, 7)
            .filter(i -> i % 2 == 0)
            .forEach(System.out::println);
    }
}

Producción: 

2
6

Funciones y opciones eliminadas

  1. Eliminación de la clase com.sun.awt.AWTUtilities
  2. Eliminación de Lucida Fonts de Oracle JDK
  3. Eliminación de appletviewer Launcher
  4. El complemento javax.imageio JPEG de Oracle JDK ya no admite imágenes con alfa
  5. Eliminación de sun.misc.Unsafe.defineClass
  6. Eliminación de los métodos Thread.destroy() y Thread.stop(Throwable)
  7. Eliminación de la propiedad sun.nio.ch.disableSystemWideOverlappingFileLockCheck
  8. Eliminación de la propiedad sun.locale.formatasdefault
  9. Eliminación de JVM-MANAGEMENT-MIB.mib
  10. Eliminación del agente SNMP
  11. Eliminación de tecnologías de implementación de Java
  12. Eliminación de JMC de Oracle JDK
  13. Eliminación de JavaFX de Oracle JDK
  14. JEP 320 Eliminar los módulos Java EE y CORBA

Funciones y opciones en desuso 

  1. ThreadPoolExecutor no debe especificar una dependencia en la finalización
  2. JEP 335 Desaprobar el motor JavaScript de Nashorn
  3. Obsoleto -XX+AggressiveOpts
  4. Soporte obsoleto para funciones comerciales
  5. Desechar los métodos GSSContext basados ​​en secuencias
  6. JEP 336 Desaprobar las herramientas y la API de Pack200

Publicación traducida automáticamente

Artículo escrito por universedecoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *