JDK 16 se lanza oficialmente y se lanzan 17 nuevas funciones a la vez ... ¡No puedes aceptarlo!

Anterior: Java 15 se lanza oficialmente, con 14 funciones nuevas


JDK 16 es lanzado oficialmente

Cupón gratis https://m.cps3.cn/

Increíble, JDK 15 acaba de ser lanzado durante medio año (2020/09/15), y JDK 16 llegará según lo programado (2021/03/16). Viejos, sigan el ritmo.

Eche un vistazo a la hoja de ruta de soporte de Oracle Java:

Oracle continúa manteniendo el ritmo de lanzamiento de la versión cada seis meses. . .

Déjame preguntarte: ¿Todavía puedes ponerte al día con la velocidad de lanzamiento del JDK? ?

Como puede ver, JDK 16 no es una versión compatible a largo plazo, solo admite 6 meses hasta septiembre de 2021. La última versión compatible a largo plazo es JDK 11, y la siguiente versión compatible a largo plazo es JDK 17, y se estrenará en medio año.

Por lo tanto, no use JDK 16 (versión de soporte no a largo plazo) para la producción, solo conózcalo.

Lista de nuevas funciones de JDK 16

IDENTIFICACIÓN dar Rasgo
1 394 Coincidencia de patrones, por ejemplo
2 395 Registros
3 392 Herramienta de embalaje
4 387 Metaspace elástico
5 376 ZGC: procesamiento de pila de subprocesos simultáneos
6 380 Canales de socket de dominio UNIX
7 396 Encapsule fuertemente los componentes internos de JDK de forma predeterminada
8 390 Advertencias para clases basadas en valor
9 338 Vector API (incubadora)
10 389 API de vinculador externo (incubadora)
11 393 API de acceso a memoria externa (tercera incubadora)
12 397 Clases selladas (segunda vista previa)
13 347 Habilite las características del lenguaje C ++ 14 (en el código fuente de JDK)
14 357 Migrar de Mercurial a Git
15 369 Migrar a GitHub
dieciséis 386 Puerto de Alpine Linux
17 388 Puerto Windows / Aarch64

Esta versión de JDK 16 proporciona 17 mejoras, incluidas nuevas mejoras del lenguaje Java, herramientas y administración de memoria, así como algunas funciones de incubación y vista previa. Con estas nuevas funciones, Java mejorará aún más la productividad de los desarrolladores.

El cambio que vale la pena señalar es que las funciones de vista previa proporcionadas en JDK 14: coincidencia de patrones y registros ( Registros ), después de un año de comentarios de la comunidad y aplicación práctica, finalmente se completaron en JDK 16 y finalmente aterrizaron.

Además, Oracle también ofrece servicios gratuitos de GraalVM Enterprise Edition para servicios de suscripción de Java SE . GraalVM puede ayudar a mejorar el rendimiento de las aplicaciones y reducir el consumo de recursos, especialmente en microservicios y arquitecturas nativas de la nube.

Introducción detallada de nuevas funciones de JDK 16

La siguiente es una introducción detallada a las 17 nuevas funciones de JDK 16.

394: Coincidencia de patrones, por ejemplo

La coincidencia de patrones, por ejemplo, que es equivalente a una instancia mejorada, se convirtió en una función de vista previa por primera vez en JDK 14 y se convirtió oficialmente en JDK 16.

El advenimiento de la coincidencia de patrones hará que instanceof sea más conciso y seguro. ¿Por qué dices eso? Por favor, mira el siguiente ejemplo.

Instancia normal de escritura:

if (object instanceof Kid) {
  Kid kid = (Kid) object;
  // ...
} else if (object instanceof Kiddle) {
  Kid kid = (Kid) object;
  // ...
}

Instanceof para la coincidencia de patrones:

if (object instanceof Kid kid) {
  // ...
} else if (object instanceof Kiddle kiddle) {
  // ...
}

El juicio y la asignación se hacen en un solo paso, ¿no es asombroso? No lo presentaré en detalle aquí. El líder de la pila ha escrito un artículo antes. Haga clic en este enlace para leerlo, o siga la pila de tecnología Java de la cuenta oficial y responda "java" para leerlo.

395: Registros

En pocas palabras, Records es un nuevo tipo de azúcar sintáctico. El propósito es simplificar el código. Se convirtió en una función de vista previa por primera vez en JDK 14, y se convirtió oficialmente en JDK 16.

Los registros de código redundante inferior se pueden evitar hasta cierto punto, por ejemplo: constructores, captadores, equals () , hashCode (), método toString () o similares, correspondientes a la @Dataanotación de Lombok , pero no pueden sustituir por completo.

Veamos un ejemplo:

public record Student(String name, int id, int age) {}

Así es, se hace una línea (se puede omitir el público), ¡es así de simple y grosero! ! !

Usemos IDEA para descompilar la clase y ver qué hace:

¿Se siente un poco Lombok después de leerlo? No lo presentaré en detalle aquí. El líder de la pila ha escrito un artículo antes. Haga clic en este enlace para leerlo, o siga la pila de tecnología Java de la cuenta oficial y responda "java" para leerlo.

392: Herramienta de embalaje

Se proporciona la herramienta de empaquetado jpackage, que se puede utilizar para empaquetar aplicaciones Java independientes.

La herramienta de empaquetado jpackage es una nueva característica introducida como herramienta de incubación por primera vez en JDK 14. Todavía está incubando a partir de JDK 15, y ahora finalmente se ha vuelto normal.

387: Elastic Metaspace

El metaespacio flexible puede ayudar a la máquina virtual HotSpot a devolver la memoria de metadatos de clase no utilizada en el metaspacio al sistema operativo de manera oportuna para reducir la huella de memoria del metaespacio.

Además, el código del metaespacio se simplifica para reducir los costos de mantenimiento.

376: ZGC: procesamiento de pila de subprocesos concurrente

ZGC es un recolector de basura más nuevo, que se refiere al problema de la pausa y escalabilidad de GC en la máquina virtual HotSpot.

ZGC se integró por primera vez en JDK 11 y se convirtió oficialmente en JDK 15.

Esta versión permite que ZGC admita el procesamiento de pila concurrente, resuelva el último cuello de botella importante y mueva el procesamiento de pila de subprocesos en ZGC desde un punto seguro a la etapa concurrente. También proporciona un mecanismo para que otros subsistemas HotSpot puedan retrasar el procesamiento de la pila de subprocesos a través de este mecanismo.

380: Canales de socket de dominio UNIX

Canales de socket de dominio Unix, agregando soporte para todas las características de los canales de socket de dominio Unix a los canales de socket y API de canal de socket del lado del servidor en el paquete java.nio.channels.

Los sockets de dominio UNIX se utilizan principalmente para la comunicación entre procesos (IPC) en el mismo host. La mayoría de los aspectos son similares a los sockets TCP / IP. La diferencia es que los sockets de dominio UNIX se direccionan mediante nombres de ruta del sistema de archivos en lugar de por dirección IP y puerto número.

396: encapsular fuertemente los componentes internos de JDK de forma predeterminada

El JDK tiene un encapsulado interno fuerte de forma predeterminada, y el JDK 16 ha comenzado a implementar un encapsulado fuerte para la mayoría de los elementos internos del JDK de forma predeterminada, excepto para las API internas clave como sun.misc.Unsafe, restringiendo así el acceso a ellos.

Además, los usuarios aún pueden elegir la encapsulación fuerte suelta predeterminada desde JDK 9, que puede ayudar a los usuarios a actualizar a futuras versiones de Java sin esfuerzo.

390: Advertencias para clases basadas en valores

Para las advertencias de clases basadas en valores, la clase contenedora de tipo básica se designa como una clase basada en valores y su constructor se elimina para su eliminación, lo que genera una nueva advertencia de obsolescencia. También proporciona advertencias de sincronización anormal en cualquier instancia de clases basadas en valores.

Esta es una herramienta para tipos de datos básicos de empaquetado, solo para proporcionar una advertencia, no se preocupe demasiado.

338: API de vectores (incubadora)

A primera vista, pensé que era un Vector en la colección, ¡pero resultó no serlo!

API de vector Este es un nuevo módulo de incubadora de iteración inicial, el paquete de módulo: jdk.incubator.vector, que se utiliza para representar el cálculo vectorial de las mejores instrucciones de hardware de vector que se compilan de manera confiable en la arquitectura de CPU admitida en tiempo de ejecución.

Muy de gama alta, no entiendo, tengo tiempo para estudiar más tarde.

389: API de vinculador externo (incubadora)

Se ha introducido una nueva API que proporciona soporte de acceso de tipo estático para código nativo nativo.

393: API de acceso a memoria externa (tercera incubadora)

API de acceso a memoria externa (en tres incubaciones), introduce una nueva API que puede ayudar a las aplicaciones Java a acceder a la memoria externa fuera del montón de Java de forma más segura y eficaz.

Esto primero se convirtió en una característica de incubación en JDK 14. JDK 15 / JDK 16 continuó incubando dos o tres veces y actualizó su API, lo que se puede esperar que sea positivo en JDK 17.

397: Clases selladas (segunda vista previa)

Clases cerradas (vista previa secundaria), pueden ser clases cerradas o interfaces cerradas, utilizadas para mejorar el lenguaje de programación Java para evitar que otras clases o interfaces las extiendan o implementen.

Considere el siguiente ejemplo:

public abstract sealed class Student
    permits ZhangSan, LiSi, ZhaoLiu {
    ...
        
}

Se sealedmodifica la clase de estudiante , que es de tipo cerrado, y solo permite tres subclases designadas sucesoras.

Esto es asombroso. Con esta característica, significa que no heredarás si quieres heredar, pero te darás cuenta si quieres lograrlo. Tienes que obtener permiso. Esto también se puede esperar en JDK 17.

347: Habilite las características del lenguaje C ++ 14 (en el código fuente de JDK)

Se permite usar las nuevas características del lenguaje de C ++ 14 en el código fuente de C ++ en la parte inferior del JDK, y proporciona pautas sobre qué código usa estas nuevas características en el código de la máquina virtual HotSpot.

357: Migrar de Mercurial a Git

Migre el repositorio de código fuente de la comunidad OpenJDK de Mercurial (hg) a Git.

369: migrar a GitHub

Aloje el repositorio de Git de la comunidad OpenJDK en GitHub.

386: Puerto Linux de Alpine

En las arquitecturas de plataforma x64 y AArch64, transfiera el JDK a Alpine Linux y otras distribuciones de Linux que usan musl como su biblioteca principal de lenguaje C.

388: puerto Windows / Aarch64

Transfiera JDK a la serie de plataformas Windows / AArch64.

para resumir

El JDK actual realmente se ha convertido en un "emperador de versiones", y no puedo quejarme. La versión se ha lanzado a la 16, pero la mayoría de la gente todavía usa JDK 7/8, o incluso 6. Pero está bien, no te hace daño aprender más y dominar un poco más cosas nuevas.

Aunque la actualización es rápida, es debido a la actualización continua, la optimización y la innovación de Java que Java mantiene su vitalidad. Java sigue siendo uno de los lenguajes de desarrollo más exitosos y convencionales.

Si Java es el segundo, ¿quién se atrevería a ser el primero? Si dices PHP, entonces ¡Respeto!

Finalmente, este artículo presenta principalmente los 17 fundamentos de nuevas funciones de JDK / Java 16. El administrador de pila continuará actualizando algunos tutoriales detallados sobre nuevas funciones de JDK cuando tenga tiempo. Preste atención a la pila de tecnología Java de número público por primera vez. . Si desea ver la serie histórica de tutoriales de nuevas funciones de Java 8+, también puede leerla en el menú oficial de la cuenta.

Tutoriales de Java anteriores y código fuente de muestra:

https://github.com/javastacks/javastack

Dirección de versión de OracleJDK 16:

https://www.oracle.com/java/technologies/javase/16-relnotes.html

Dirección de lanzamiento de OpenJDK 16:

https://openjdk.java.net/projects/jdk/16/

Enlace de descarga de Oracle JDK 16:

https://www.oracle.com/java/technologies/javase-downloads.html

Enlace de descarga de OpenJDK 16:

https://jdk.java.net/16/

¡Los interesados ​​pueden descargarlo y probarlo! !

La diferencia entre OracleJDK y OpenJDK no se describe aquí. Si no está claro, haga clic aquí para ver.

Después de escribir durante mucho tiempo, mi cabello vuelve a caer. . .

Damas, hagan clic en una para ver, reenviar y apoyar, y bienvenidos a compartir con más de sus amigos ~

Preste atención a la pila de tecnología Java y continúe compartiendo la tecnología Java más reciente y convencional ~

Declaración de derechos de autor: este artículo es la cuenta pública original "Java Technology Stack". La originalidad no es fácil. Indique la fuente para reimprimir y citar el contenido de este artículo. Se prohíbe el plagio y el lavado de manuscritos. Respete los logros laborales de los demás y derechos de propiedad intelectual.

Supongo que te gusta

Origin blog.csdn.net/weixin_48967543/article/details/115270138
Recomendado
Clasificación