Todo sobre Java12: nuevas funciones, seguridad y declaración de expresión de cambio (ejemplos)

Publicado: 2019-04-07

Java 12 - Todo lo nuevo - Detalles de Crunchify

El 19th March 2019 se lanzó Java12. Como sabemos, Java12 fue parte del lanzamiento rápido, se lanzó solo 6 meses después del lanzamiento de Java11.

En este tutorial, repasaremos todos los cambios y nuevas características de Java12.

Personalmente, cambié a Java12 para todo mi desarrollo, pero para el ciclo de producción es demasiado pronto. Mantenga este tutorial marcado como favorito cuando desee cambiar a Java12 para todos sus proyectos de producción.

¿Qué hay de nuevo en Java12? Nuevas características en Java12:

Hay bastantes funciones internas y relacionadas con el flujo de trabajo del usuario en Java12 que cambiaron. Echemos un vistazo a lo que hay dentro de Java 12.

Cambio-1) Descarga de Clase Concurrente

El recolector de basura normal generalmente descarga la variable no utilizada durante el ciclo del GC y, por lo general, notamos alguna detención/pausa en el proceso, o un aumento de la CPU durante ese tiempo. Por lo general, ni siquiera nos damos cuenta de eso.

Con ZGC (Z Garbage Collector): Java12 también admite la descarga simultánea de clases. Como esto sucede durante el ciclo normal de GC, no hay ninguna pausa ni tampoco más uso adicional de memoria.

De forma predeterminada, ZGC está habilitado en Java12. No se requiere más acción

¿Cómo deshabilitar ZGC?

  • Simplemente inicie su aplicación con el argumento de línea de comando JVM -XX:-ClassUnloading

Cambio-2) Obtener más detalles sobre JVM Crash

Cuando hay un error OOM (memoria insuficiente) o fallas de JVM, generalmente Java crea archivos de volcado con todos los detalles.

Con estos parámetros de JVM, los archivos de volcado se crearán en la carpeta /tmp/crunchify/ en caso de error OOM.

Hay una opción más agregada en Java12:

Se creará un nuevo archivo de registro llamado hs_err<pid>.log con todos los detalles sobre el bloqueo de JVM. Esto es muy útil para su entorno de producción si ve fallas frecuentes y desea depurar más.

De forma predeterminada, está deshabilitado, pero puede habilitar un informe de fallas extenso agregando el parámetro de línea de comando JVM anterior.

Cambio-3) Formato de número compacto

java.text agrega soporte para formato numérico compacto. 100o se puede mencionar como 1K y 100000 se puede mencionar como 100K .

Resultado:

Cambio-4) Mejoras de seguridad de Java

cambios security-libs/java.security :

  • rechazar y permitir Opciones para java.security.manager
    • si disallow se permite, System. setSecurityManager no se puede usar para configurar el administrador de seguridad.
  • -opción de nombre de grupo agregada a keytool generación de pares de claves
    • un usuario puede especificar un grupo con nombre al generar un par de claves.
  • Personalización de la generación PKCS12 keystore
    • incluye algoritmos y parámetros para
      • protección clave
      • protección de certificados
      • MacData
  • Nuevos eventos de seguridad JFR
    • ¿Qué es JFR (Java Flight Recorder)?
    • 4 nuevos eventos JFR agregados
      • jdk.X509Certificado
      • jdk.X509Validación
      • jdk.TLSHhandshake
      • jdk.SecurityPropertyModification

Cambio-5) JEP 325: Cambiar expresiones

Tutorial de expresiones de cambio JEP 325 por Crunchify

La Switch statement mejorada ahora es compatible con Java12.

  • case L -> syntax . Aquí no es necesario ningún descanso.
  • Uso de la expresión de cambio
    • esta es una declaración de cambio simplificada
    • si una etiqueta coincide, solo se ejecuta la expresión a la derecha de una etiqueta de flecha.
    • No se necesita declaración de interrupción.

CrunchifyJava12SwitchExample.java

Resultado de la IDEA de IntelliJ:

Resultado del tutorial de declaración de cambio de Java 12 - Crunchify

Cambio-6) API de constantes de JVM

java.lang.invoke.constant : como sabrá, la clase Java tiene un grupo constante que almacena todos los operandos en tiempo de ejecución.

Java12 agrega API para invocar constantes en tiempo de ejecución.

Funciones eliminadas de Java12:

Funciones eliminadas de Java12 - Consejos de Crunchify

Características obsoletas de Java12:

Funciones obsoletas de Java12 - Consejos de Crunchify

Avíseme si tiene algún tutorial útil sobre Java12 que le gustaría incluir aquí.