Candidato de lanzamiento de JDK 12: Shenandoah, G1, JMH, Arm64. Los insectos en Swing contraatacan

Han transcurrido 240 días desde el lanzamiento de JEP 3: JDK Release Process , y la máquina infernal para la producción de nuevas versiones no quiere detenerse. Entonces, ha llegado el momento para el próximo candidato de lanzamiento . Este es el período en el que se queman todos los puentes, los errores con prioridades P2-P5 ya no significan nada y los días hasta el lanzamiento están contados.



Bichos


No todos los errores con prioridad P1 están cerrados. Puedes ver la lista completa de problemas en el bugtracker . Y aquí nos espera lo más extraño: todos se refieren estrictamente a Swing cuando usan GTKLookAndFeel.



Ya mentalmente dijo: "¿Pero qué les pasa a estos tipos en Swing?" Esta vez no son "culpables". Si alguien no lo sabe, Gtk es un juego de herramientas gratuito para desarrollar interfaces gráficas, especialmente en el sistema operativo GNU / Linux para X11 y Wayland.


Comenzando con Gtk 3.20, su forma de trabajar con muchos estilos y widgets ha cambiado . En lugar de clases de estilo y nombres de tipos, ahora se usan nombres de elementos. Gtk 3.20 se lanzó el 21 de marzo de 2016 , y fue una versión a gran escala : 28933 commits y Wayland por defecto. En general, todo el Gnomo comenzó a verse un poco diferente.



No es de extrañar que Swing olvide algo y no lo pruebe. Parte de los errores se cambiaron en prioridad a P2 y se transfirieron a JDK 13. Por ejemplo, este error sobre el hecho de que Motif en MacOS, por decirlo suavemente, ya no es un entorno gráfico tan relevante:



Será divertido si alguien realmente usa Motif y AWT en Habré. Espero que el duodécimo JDK no se cancele debido a esto, de lo contrario será el archivo más épico en Java en toda su nueva historia de lanzamiento.


Caracteristicas


Los JEP en esta lista no se enumerarán por importancia, sino exclusivamente por número de serie. Esto es para que no pienses de repente que Shenanda y JMH se levantaron por simpatías personales.


189: Shenandoah: un recolector de basura de bajo tiempo de pausa (experimental)


Sería bueno si sucediera hace un año, y Shenanda entró en el LTS. Bien, espera, gracias por eso. Shenandoah es un colector de pozo bajo que logra su pozo bajo debido a la fase de evacuación de subprocesos múltiples. Además, las pausas no dependen del tamaño de la cadera, por lo que puede girar de forma segura los montones de terabytes en la picadura.


230: Suite Microbenchmark


Se agrega un conjunto de pruebas basado en JMH al JDK, y al mismo JMH también. Se encuentra en jdk/jdk/test/micro/org/openjdk/bench . JMH es un marco para crear, ensamblar, lanzar y analizar microbenchmarks para Java y otros lenguajes JVM, escrito por alguien que usted entiende . JMH es ahora el estándar de facto para micro-puntos de referencia, y la aparición de tales JEP es cuestión de tiempo.


325: Cambiar expresiones (vista previa)


En lugar de mil descripciones:


 int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; 

334: API de constantes JVM


El objetivo es proporcionar un conjunto de tipos para descripciones de modelos formales de clases, métodos y otras entidades en tiempo de ejecución y archivos de clase y extraerlos a clases principales como String o Class . Viven en paquetes como java.lang.invoke.constant y no lo solicitan, pero puede consultar el parche aquí .


340: Un puerto AArch64, no dos


El viejo puerto arm64 se arroja en el frío, pero el ARM de 32 bits y el aarch64 se están aserrando activamente. Gracias a RedHat y BellSoft por la existencia de estos puertos (por cierto, la oficina de BellSoft se encuentra en San Petersburgo, al lado de la antigua oficina de Oracle). Con el lanzamiento de JDK 12, intentaremos obtener un comentario más detallado de los representantes de la compañía.


341: Archivos CDS predeterminados


Como característica, CDS estuvo disponible para nosotros durante mucho tiempo, pero no estaba claro por qué cada vez que escribe -Xshare:dump , si el resultado predeterminado de este comando es ligeramente predecible incluso en la etapa de creación de la distribución JDK. Esta supervisión molesta se solucionará en JDK 12, el archivo CDS será generado por los creadores de la distribución, incluso para compilaciones nocturnas (siempre que sean de 64 bits y nativas, no para compilación cruzada).


344: Colecciones mixtas abortables para G1


Esta característica es necesaria para los mecanismos internos del recolector de basura G1, por lo que con mayor frecuencia se ajusta a los requisitos durante la pausa. Sucede que puede determinar cuándo G1 evalúa incorrectamente una y otra vez la complejidad del ensamblaje, especialmente para las regiones antiguas. En este punto, puede asustarse y comenzar a recolectar gradualmente, paso a paso, y después de cada paso, puede interrumpir el ensamblaje. Se argumenta que esto permitirá un mejor ajuste en el tiempo de montaje esperado.


346: Devuelva rápidamente la memoria comprometida no utilizada de G1


Ahora G1 entrega la memoria comprometida al sistema operativo con GC completo o con ensamblaje paralelo. Tanto eso como otro G1 intentan evitarlo en todas las formas posibles, por lo que gracias a él. Pero esto también significa que la memoria se devora como si no fuera en sí misma, y ​​G1 puede verse obligado a borrar la memoria solo de alguna manera externa. Esto es especialmente triste para todos los acopladores y otros hipsters sin terabytes de RAM en el servidor. En cambio, se propone hacerlo de la misma manera que Shenanda o GenCon de OpenJ9 ya saben cómo identificar la utilización insuficiente del montón y, en consecuencia, reducir su uso. En algunas pruebas en Tomcat, esto permitió reducir el consumo de memoria a casi la mitad.


Que sigue


Esta fue una revisión de arriba hacia abajo, e intentaremos hacer un análisis detallado de las características más cercanas al lanzamiento en forma de artículos separados: traducciones de JEP, screencasts con puntos de referencia u otra cosa. Ahora tenemos que esperar el lanzamiento, que está programado para el 19 de marzo.


Minuto de publicidad. Muy pronto, del 5 al 6 de abril, se llevará a cabo la conferencia JPoint, que reunirá a una gran cantidad de personas que saben mucho sobre JDK y todo tipo de nuevas características. Por ejemplo, seguramente habrá Simon Ritter de Azul con un informe, "JDK 12: trampas para los incautos" . ¡El lugar más apropiado para discutir la última versión! Puede obtener más información sobre JPoint en el sitio web oficial .

Source: https://habr.com/ru/post/440314/


All Articles