2010-03-04 19 views
5

que estaba buscando a través de un tutorial de código justo ahora, y encontré algo interesante - la característica import static introducido en el JDK 5:Características del lenguaje nuevas más útiles o interesantes en Java 5 y 6?

import static org.junit.Assert.assertEquals; 

public class AdditionTest { 

    private int x = 1; 
    private int y = 1; 

    @Test public void addition() { 
    int z = x + y; 
    assertEquals(2, z); 
    /*^this is a static method, normally called by Assert.assertEquals */ 
    } 

} 

Se me hizo pensar, lo que otras características se introdujeron en el JDK 5 y 6 que se No lo sé? ¿Hay otros usos nuevos de palabras clave como este? ¿Alguna nueva clase o función de biblioteca digna de mención?

Sé que las notas de la versión o los registros de cambios están por ahí, no estoy buscando una respuesta "RTFM". Quiero saber una lista corta de, en su opinión, qué características cree que son más cambiantes en JDK 5 o 6.

+1

Ya que no hay "respuesta" definitiva aquí, sólo opiniones subjetivas, esto probablemente se debe hacer Wiki de la Comunidad ... – Alconja

Respuesta

9

Java 5 tenía mucho de los cambios sintácticos: el más significativo (que yo recuerde) son:

  • Genéricos
  • enumeraciones
  • Para -cada bucles
  • Auto-boxeo y auto-unboxing
  • Devolución covariante
  • Funciones variables

(Y por supuesto, como se señala en la pregunta, las importaciones estáticas y anotaciones.)

como la respuesta de Zwei mencionado, java.util.concurrent es una importante característica de Java 5 también, y también, JSR-133 y su modelo de memoria cambios (que permitieron que volatile funcionara de forma sensata, por lo que podría implementar el bloqueo con doble verificación de forma segura si así lo desea).

Java 6 no presentó ningún cambio de sintaxis (que recuerdo); muchos de sus cambios de alto impacto fueron performance-related. En cuanto a la biblioteca, mi biblioteca favorita "nueva en Java 6" fue el soporte de scripting (javax.script).

+2

(Y varargs ...) –

+2

@Annotations too –

+0

@Tom (yo diría @tackline pero eso no resaltaría su nombre): Sí, cómo podría olvidar esos. Agregándolos ahora. :-) –

3

Voy a seguir adelante y poner uno allí: Java Web Start applet support .

Me gusta jugar con JOGL, y es tan agradable poder usar un archivo jnlp corto y no tener que escribir clasificadores, codificar para descargar código de biblioteca nativa, etc. para manejar obtener JOGL a través del navegador. (Sí que sé de lo appletloader de JOGL)

Sólo uno línea de mi archivo JNLP cargas de los frascos JOGL, sus dependencias (gluegen, nativeWindow tritón), y las bibliotecas nativas apropiadas para el sistema actual.

<extension name="JOGL" 
    href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" /> 

El resto de mi archivo jnlp es sólo por el título de mi solicitud y la dirección URL de su archivo JAR, y eso es todo.

Por cierto, esto fue introducido en JDK 6u10.

4

¡Absolutamente, java.util.concurrent !!!

En java6, ConcurrentSkipListMap se añadió como una nueva estructura de datos para este paquete, y es prácticamente salvados nuestro proyecto :)

3

Para la lista de Chris Jester-Young añadir

  • varargs
  • anotaciones

Pero lo que estoy deseando es functional programming constructs.

+0

Iba a decir que agarró esto de los comentarios en su respuesta, pero parece que respondió justo después de uno y antes de que se publicara el otro comentario, ¡entonces +1 para usted! :) – Ricket

Cuestiones relacionadas