La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Qué versiones de jdk son más fáciles de usar?

¿Qué versiones de jdk son más fáciles de usar?

JDK5

Empaquetado y desempaquetado automático:

Enumeración

Importación estática, por ejemplo: importar java.lang.system.out estático.

Varargs (parámetros variables)

Introspector, utilizado principalmente para operar propiedades en JavaBean a través de getXxx/setXxx. El enfoque general es obtener la información BeanInfo de un objeto a través de la clase Introspector y luego obtener el PropertyDescriptor a través de BeanInfo. A través de este descriptor de propiedad, podemos obtener los métodos getter/setter correspondientes a una propiedad y luego llamar a estos métodos a través del mecanismo de reflexión.

Genéricos (incluidos tipos comodín/tipos de límite, etc.)

Ciclo para cada

Anotar...

Devolución de covarianza tipo: el tipo de devolución real puede ser un subtipo del tipo de devolución requerido.

JDK6

1.AWT ha agregado dos nuevas clases: Desktop y SystemTray. La primera se utiliza para realizar una operación a través del programa predeterminado del sistema, como explorar una URL específica con el. Utilice el navegador predeterminado para enviar correos electrónicos al buzón especificado, utilice la aplicación predeterminada para abrir o editar archivos (por ejemplo, utilice el Bloc de notas para abrir archivos con un sufijo txt) y utilice la impresora predeterminada del sistema para imprimir documentos. Este último se puede utilizar para crear un programa de bandeja en el área de la bandeja del sistema. (Básicamente no se usa en desarrollo)

2. Utilice JAXB2 para implementar el mapeo entre objetos y XML, que puede convertir un objeto Java al formato XML y viceversa.

3.StAX, una API para extraer y analizar documentos XML. Al igual que SAX, también se basa en un modelo basado en eventos. StAX se agrega a la familia JAXP ya que se usará en JAXB2 y JAX-WS 2.0 en JDK6.

4. Utilice la API del compilador para compilar dinámicamente archivos fuente Java. Por ejemplo, el motor de compilación JSP es dinámico y no es necesario reiniciar el servidor después de la modificación. (Desde aquí aprendí que la compilación dinámica es posible)

5. API ligera de servidor Http, desde la cual puede crear su propio servidor Http integrado, que admite los protocolos Http y Https.

6. API de procesamiento de anotaciones de complemento (API de procesamiento de anotaciones conectable)

7. La clase Consola se utiliza para desarrollar programas de consola, que se encuentran en el paquete java.io. Por lo tanto, es muy conveniente interactuar con cmd en Windows o interactuar con la terminal en Linux.

8. Admite lenguajes de scripting como Ruby, Groovy y JavaScript.

9. Las anotaciones comunes eran originalmente parte de la especificación J2EE 5.0 y ahora se incluyen en J2SE 6.0.

10. Base de datos integrada Derby (acabo de enterarme de esto, básicamente nunca la he usado)

JDK7

1. Puede almacenar directamente objetos en forma de [] y {}, y obtener objetos en la colección según el índice y el valor clave en forma de []. Por ejemplo:

List<String>list=["item1","item2"]; //Guardar

string item = list[0] //Obtenerlo directamente

Establecer<String>set={"item1","item2","item3"};//Guardar

Mapa<String,Integer>map={" key1":1, "key 2":2} //Guardar

int value = map["key 1"] //Obtener 12345

2.

3. El valor se puede subrayar como separador (ignorado automáticamente durante la compilación).

4. Admite números binarios, como int binario = 0b 1001 _ 1001

5.

6. Al llamar al constructor de una clase genérica, puedes omitir los parámetros genéricos y el compilador los determinará automáticamente.

7. Inversión de tipo booleano, seguridad de puntero nulo y operaciones con bits.

8.8. El método igual de tipo char: carácter booleano. Igual a ignorar caso (charch1,charch2).

9. Suma, resta, multiplicación y división seguras: math.safe toint(longv); math.safeMultiply(int v); int v1, int v2)……

10. La colección de mapas admite solicitudes simultáneas. Tenga en cuenta que HashTable es seguro para subprocesos y Map no es seguro para subprocesos. Pero la actualización aquí hace que también admita la concurrencia. Además, el objeto Map se puede definir como: Map Map = { nombre: "XXX", edad: 18 }

JDK8

1. puedes convertir un método no abstracto que se declara como la implementación predeterminada en la interfaz, pero solo se puede declarar un método y se debe agregar la palabra clave "predeterminado" antes del tipo de retorno del método.

2. Expresión lambda: Es una simplificación del comparador anónimo, como por ejemplo:

Collections.sort(name, (string a, string b)-& gt; { returnb compare to(a);});1

Para el cuerpo de una función con solo una línea de código, puede eliminar las llaves {} y la palabra clave return. Tales como: 1

Colecciones.sort(nombre, (cadena a, cadena b)-> b. comparación (a));

O: colecciones.sort (nombres, (a, b)-> b. comparar con (a)); 123

3. Interfaz funcional: se refiere a una interfaz que solo contiene un método abstracto y debe anotarse con @FunctionalInterface.

4. Utilice la palabra clave :: para pasar una referencia de método o constructor.

5. Múltiples anotaciones

6. Se han agregado muchas interfaces similares a interfaces funcionales y API relacionadas con mapas...

JDK9

Nuevas características de jdk1.9

1. Sistema de módulos a nivel de plataforma Java

Al iniciar una aplicación modular, la JVM verificará si se pueden usar todos los módulos, que se basa en en ? ¿Requerir? Declaraciones: un gran paso adelante desde los frágiles caminos de clases. Los módulos le permiten aplicar mejor el empaquetado estructurado de su aplicación y definir dependencias.

2. Conectar

Aparecen nuevas posibilidades cuando utilizas módulos con dependencias explícitas y un JDK modular. Su módulo de aplicación ahora declarará sus dependencias de otros módulos de aplicación y de los módulos JDK que utiliza. ¿Por qué no utilizar esta información para crear un entorno de ejecución mínimo que contenga sólo los módulos necesarios para ejecutar la aplicación? Esto se puede lograr mediante la nueva herramienta jlink en Java 9. Puede crear una imagen de tiempo de ejecución mínima optimizada para su aplicación sin utilizar una instalación JDK completamente cargada.

3.JShell: REPL interactivo de Java

Muchos lenguajes ya cuentan con entornos de programación interactivos, y Java ahora se ha unido a este club. Puede iniciar jshell desde la consola para iniciar directamente la entrada y ejecución de código Java. La retroalimentación instantánea de Jshell la convierte en una excelente herramienta para explorar API y probar funciones de lenguaje.

4. Javadoc mejorado

Javadoc ahora admite la búsqueda en la documentación de la API. Además, la salida de Javadoc ahora cumple con los estándares HTML5 compatibles.

Además, notará que cada página de Javadoc contiene información sobre el código fuente de una clase o interfaz de módulo JDK.

5. Método de fábrica de ensamblajes

A menudo, desea crear una colección (por ejemplo, Lista o Conjunto) en código y llenarla directamente con algunos elementos. Cree una instancia de la colección, llame a "agregar" varias veces, lo que hace que el código sea repetitivo. Java 9, agregó varios métodos de fábrica de colecciones:

Set <intger>? ints = Conjunto.de(1, 2, 3); Lista<String>? strings = List.of("first", " second"); 123

Además de ser más cortos y fáciles de leer, estos métodos le impiden elegir una implementación de colección específica. De hecho, la implementación de la colección que devuelve varios elementos de un método de fábrica está altamente optimizada. Esto es posible porque son inmutables: después de la creación, continuar agregando elementos a estas colecciones dará como resultado una "UnsupportedOperationException".

6. API Stream mejorada

Durante mucho tiempo, la API Stream ha sido una de las mejores mejoras de la biblioteca estándar de Java. Con esta API, puede configurar una canalización declarativa para transformaciones en colecciones. Mejorará en Java 9. Se han agregado cuatro nuevos métodos a la interfaz Stream: dropWhile, takeWhile y ofNullable. El método iterar también tiene un nuevo método sobrecargado que le permite proporcionar un predicado para especificar cuándo finalizar la iteración:

IntStream.iterate(1,I->i<100,I-> ; i + 1 ). forEach(system . out::println); 1

El segundo parámetro es Lambda, que devolverá verdadero cuando los elementos del IntStream actual lleguen a 100. Entonces, este ejemplo simple imprime del 1 al 99 en la consola.

Además de la extensión del propio Stream, también se ha mejorado la combinación entre Opcional y Stream. ¿Ahora puedes usar el nuevo método opcional? ¿Strahm? Convertir un objeto opcional en un objeto de flujo (posiblemente vacío):

Stream<Integer>? s = Opcional.de(1). stream();1

Convertir opciones en secuencias es útil al componer canalizaciones de secuencias complejas.

7. Métodos de interfaz privados

Con Java 9, puedes resolver este problema agregando métodos auxiliares privados a la interfaz:

Interfaz pública MyInterface { p>

voidnormalInterfaceMethod();

Método de interfaz nula predeterminadowithdefault(){? init();}

default void otro método predeterminado(){ init();} Este método no forma parte de la API pública expuesta por MyInterface

privatevoidinit(){ system. out . println(" Inicializando ");

}}12345678910111213

Si desarrolla una API utilizando métodos predeterminados, los métodos de interfaz privada pueden ser útiles para construir su implementación.

8.HTTP/2

Hay nuevas formas de manejar llamadas HTTP en Java 9. ¿Se utiliza esta función posterior para reemplazar la anterior? ¿Conexión HTTPURL? API y proporciona soporte para WebSocket y HTTP/2. Nota: La nueva API HttpClient se proporciona como un módulo de incubación en Java 9. En otras palabras, no se garantiza que esta API esté 100% completa.

Pero puedes empezar a usar esta API en Java 9: ​​​​

http client client = http client . solicitud http . nuevo constructor(uri . create(" "). header("UserAgent", "Java"). get().build(); HttpResponse<String>?resp = client.send(req, tpResponse.body handler.asstring( )); HttpResponse & lt string& gtresp = client.send(req, HttpResponse.body handler. asstring()); 1234

Además de este modelo simple de solicitud/respuesta, HttpClient también proporciona una nueva API para manejar funciones HTTP/2, como streaming y push del lado del servidor

9. JAR compatible con múltiples versiones

Lo último en lo que queremos centrarnos es esta característica, que es una buena noticia. mantenedores de la biblioteca. Cuando sale una nueva versión de Java, los usuarios de su biblioteca tardarán años en cambiar a esta nueva versión. Esto significa que la biblioteca debe ser compatible con lo que desea. La versión más antigua de Java compatible. casos, es Java 6 o 7) Esto significa efectivamente que no podrá utilizar las nuevas funciones proporcionadas por Java 9 en la biblioteca durante mucho tiempo; la función JAR compatible con múltiples versiones le permite crear un. versión de clase. Puede optar por utilizar esta versión solo cuando el programa de ejecución esté en una versión específica del entorno Java:

Múltiples versiones jar

├──

Metainformación

└──Versión

└── 9

└──Lanzamiento múltiple

└──Asistente de clase

├──

Lanzamiento múltiple

├──1

Helper.class

└──1

Main.class

En el escenario anterior, multirelease.jar se puede usar en Java 9, pero la clase Helper no usa la clase Helper multirelease de nivel superior, sino "META-INF/versions/. 9". Esta es una versión de clase especialmente preparada. para Java 9 y puede usar las funciones y bibliotecas proporcionadas por Java 9. Al mismo tiempo, usar este JAR en versiones anteriores de Java también funcionará, porque las versiones anteriores de Java solo verán la clase auxiliar en la parte superior.