Novedades de la versión 3.2 (JDT)

A continuación se proporcionan las descripciones de algunos de los cambios más significativos hechos en las herramientas de desarrollo Java para el release 3.2 de Eclipse. Se agrupan de la forma siguiente:

Consulte también el documento Eclipse Platform What's New in 3.2 para conocer los cambios de la plataforma.

Refactorización Java

Refactorización Introducir direccionamiento indirecto

Introducir direccionamiento indirecto es una refactorización nueva que permite redirigir todos los llamadores de un método a un método nuevo. El método nuevo llama al método original. Puede sustituir la implementación predeterminada del método nuevo por otra si lo desea.

Un direccionamiento indirecto así es útil cuando debe introducirse un comportamiento nuevo para un método pero:

  • El método no puede cambiarse porque es de una biblioteca.
  • El método no debe cambiarse porque es un método de API.

Utilice el direccionamiento indirecto para arreglos para el método original o como una forma rápida de añadir código antes o después de añadir llamadas a un método.

Para ejecutar la refactorización Introducir direccionamiento indirecto, seleccione un método, invoque Refactorizar > Introducir direccionamiento indirecto..., proporcione un nombre y la clase declarante para el método nuevo.

Diálogo Introducir direccionamiento indirecto

El método se añade a la clase declarante seleccionada.

Vista previa de Introducir direccionamiento indirecto con referencia actualizada

Y todas las referencias se actualiza para llamar al método nuevo.

Resultado después de Introducir direccionamiento indirecto

Refactorización Extraer superclase

Una refactorización nueva llamada Extraer superclase extrae una superclase común de un conjunto de tipos hermanos. Los tipos hermanos seleccionados se convierten en subclases directas de la superclase extraída después de aplicar la refactorización. Más aún, Extraer superclase permite utilizar la superclase extraída siempre que sea posible en el código.

JavaEditorTests y PropertiesEditorTests son tipos hermanos en el ejemplo siguiente. La primera imagen muestra la jerarquía de tipos antes de la refactorización.

Jerarquía antes de extraer EditorTests

La imagen siguiente muestra la jerarquía de tipos después de extraer EditorTests con la refactorización Extraer superclase.

Jerarquía después de extraer EditorTests

Para invocar esta refactorización, utilice Refactorizar > Extraer superclase....

Asistente Limpiar

Limpiar puede invocarse sobre cualquier número de archivos fuente Java, paquetes o sobre todo un proyecto Java. Le ayudará a:

  • arreglar varios problemas de una vez
  • hacer que el código utilice un estilo de código preferido

A continuación se proporcionan algunos ejemplos de lo que se puede hacer:

  • forzar la utilización de llaves (bloques) para cada cuerpo de 'if', 'while' o 'for'
  • calificar todos los acceso de campo con 'this'
  • utilizar 'final' siempre que sea posible

Para llevar el código compatible de Java 1.4 a 5.0, utilice Limpiar para:

  • convertir todos los bucles for en bucles for mejorados siempre que sea posible
  • marcar todos los métodos de alteración temporal con anotaciones @Override

Asistente Limpieza

Seleccione un proyecto, paquete o archivo y utilice Fuente > Limpiar... para iniciar este asistente.

Historial de refactorizaciones

Ahora se hace un seguimiento de la mayoría de refactorizaciones ofrecidas por JDT en un Historial de refactorizaciones. La infraestructura de refactorizaciones almacena información detallada acerca de las refactorizaciones que se han realizado en el espacio de trabajo.

El historial de refactorizaciones puede examinarse y editarse utilizando Refactorizar > Historial...

Diálogo Historial de refactorizaciones

Crear y aplicar scripts de refactorización

Las refactorizaciones realizadas en el espacio de trabajo local pueden exportarse a un Script de refactorización y reproducirse en un espacio de trabajo arbitrario.

Tales scripts de refactorización pueden utilizarse en diferentes casos como por ejemplo el arreglo automático de cambios de API de ruptura entre capas de software o para proporcionar parches con semántica enriquecida.

Cree un script de refactorización a partir del historial de refactorizaciones utilizando Refactorizar > Crear script...

Acción Crear script

Para aplicar el script de refactorización en un espacio de trabajo arbitrario, utilice Refactorizar > Aplicar script...

Un punto de extensión nuevo permite a los escritores de plug-ins colaborar con soporte de scripts de refactorización para refactorizaciones nuevas o ya existentes. Consulte el punto de extensión org.eclipse.ltk.core.refactoring.refactoringContributions para conocer los detalles.

Exportación de archivo JAR con refactorizaciones

Cuando se exporta un archivo JAR desde el espacio de trabajo, el asistente Exportación de JAR ofrece la opción de incluir información de refactorización en el archivo JAR.

Utilice Archivo > Exportar... y seleccione Archivo JAR. En la primera página del asistente Exportar JAR, seleccione Exportar refactorizaciones para proyectos marcados. Pulse el enlace para seleccionar las refactorizaciones a incluir.

Selección de refactorización de exportación de JAR

Los clientes pueden entonces migrar una versión antigua del archivo JAR a un nueva utilizando la refactorización Refactorizar > Migrar archivo JAR.... También puede utilizar Vía de acceso de construcción > Migrar archivo JAR... si actualmente hay un archivo JAR seleccionado.

Migrar acción de archivo JAR

Esta refactorización actualiza automáticamente todo el código dependiente de la versión antigua del archivo JAR para que utilice la versión nueva del archivo JAR.

Refactorizaciones que tienen en cuenta las API

Hay varias refactorizaciones existentes que se han ampliado para soportar la compatibilidad de las API manteniendo el miembro original como delegado del miembro refactorizado:

  • Redenominar método
  • Redenominar campo (solo para constantes)
  • Mover método
  • Introducir parámetro
  • Cambiar firma

Recuadro de selección para 'Mantener miembro original como delegado del miembro refactorizado'

La generación de un miembro delegado para conservar la compatibilidad de la API puede habilitarse marcando Mantener método original como delegado del miembro refactorizado en el diálogo de refactorización.

Redenominar tipo actualiza elementos con nombres parecidos

La refactorización de Redenominar tipo puede ahora redenominar variables y métodos con nombres parecidos al del tipo redenominado. Esta característica ayuda a mantener los nombres de método y de variable sincronizados con nombres de tipo.

Actualizar UI de declaraciones parecidas

Para invocar esta refactorización, seleccione un tipo y utilice Refactorizar > Redenominar...

La refactorización Redenominar paquete redenomina subpaquetes

La refactorización Redenominar paquete también redenomina subpaquetes bajo demanda.

Diálogo Redenominar paquete con recuadro de selección nuevo

En este ejemplo, junit.samples.money se redenomina como junit.examples.money.

Para invocar esta refactorización, seleccione un paquete y utilice Refactorizar > Redenominar...

Filtrar la vista previa de la refactorización

La página de vista previa de la refactorización ahora soporta el filtrado de cambios. Esto resulta especialmente útil cuando se solicita la actualización de coincidencias de texto en comentarios y series al redenominar elementos Java.

Página de vista previa de refactorización

La captura de pantalla muestra el diálogo de redenominación filtrado para coincidencias de texto al redenominar la clase TestCase como TestCasee.

Ahora también se pueden filtrar los cambios relacionados con la visibilidad de elementos Java.

Editor Java

Asistencia de contenido personalizable

Ahora, al invocar repetidamente la asistencia de contenido (Control+Espacio en la mayoría de plataformas) se pasa a través de diferentes categorías de propuestas.

Puede asignar distintos accesos directos de teclas para sus categorías de propuestas favoritas y utilizar la página de preferencias Abre la página de preferencias Avanzadas de asistencia de contenido Java > Editor > Asistencia de contenido > Avanzadas para configurar qué categorías se muestran en el menú emergente de la asistencia de contenido predeterminada.

Asistencia de contenido emergente con propuestas de Java; la invocación repetida activa propuestas de plantilla

El punto de extensión nuevo org.eclipse.jdt.ui.javaCompletionProposalComputer permite que los escritores de plug-ins contribuyan con categorías y propuestas de conclusión al proceso de asistencia de contenido del editor Java.

Soporte de concatenación por mayúsculas en la conclusión de código

Ahora la conclusión de código soporta los patrones de concatenación por mayúsculas. Por ejemplo, para concluir NPE, propondrá NullPointerException. Este soporte puede inhabilitarse utilizando la preferencia Mostrar coincidencias con mayúsculas/minúsculas en la página de preferencias Abre la página de preferencias Asistencia de contenido Java > Editor > Asistencia de contenido.

Editor Java concluyendo NPE

Menú rápido para rodear código

El menú rápido Rodear con permite rodear una selección de líneas con código. El menú es ampliable a plantillas personalizadas. Ahora las plantillas tienen en cuenta las variables que deben excluirse o hacerse finales.

Transformación Rodear con código ejecutable

Utilice Fuente > Rodear con o pulse Alt+Mayús+Z para ver directamente el menú.

Puede añadir las plantillas personalizadas en la página de preferencias Java > Editor > Plantillas. Todo lo que la plantilla necesita es una variable ${line_selection}.

Arreglos rápidos nuevos

Se han añadido algunos arreglos rápidos, por ejemplo:

  • arreglar accesos de tipo raw

    Propuesta de corrección de acceso raw

    El arreglo rápido recoge información de utilizaciones en el mismo archivo. Para obtener un análisis más sofisticado, utilice la refactorización Inferir argumentos de tipo genérico.

  • añadir atributo de anotación faltante

    Arreglo rápido para atributo de anotación faltante

  • añadir un miembro de anotación nuevo

    Arreglo rápido para miembro de anotación nuevo

Soporte de categoría

Las categorías pueden definirse en comentarios Javadoc para tipos, métodos y campos que utilizan el código @category.

Código que utiliza categorías

Las categorías se muestran en las vistas Esquema y miembros y en Esquema rápido. El menú de la vista permite seleccionar las categorías visibles.

Esquema que muestra categorías y filtros de categoría

Todos los miembros pueden replegarse

Cuando el repliegue está habilitado, los campos, los inicializadores y sus comentarios pueden replegarse igual que los métodos.

Inicializadores de campo replegados

Hay mandatos de repliegue de texto nuevos para contraer todos los comentarios, contraer todos los miembros y restablecer la estructura de repliegue. Estos mandatos se encuentran en el menú de contexto Repliegue del editor Java en el regla vertical.

Soporte de regla y esquema para archivos Java fuera del espacio de trabajo

El editor Java muestra ahora las reglas verticales y la página Esquema al igual que el Esquema rápido pueden mostrar el esquema de archivos Java externos y de archivos Java de repositorios.

Soporte de regla

Compilador Java

Conformidad con Java SE 6.0

La conformidad con Java SE 6.0 está ahora totalmente soportada. En concreto, los atributos StackMapTable (consulte JSR 202) se generan ahora en archivos .class con un destino 1.6.

Establecer la conformidad con 6.0

Análisis de referencia nula

El compilador Java es capaz ahora de realizar análisis básico de referencia nula para las variables locales.

Este diagnóstico opcional puede habilitarse en la página de preferencias Abre la página de preferencias Errores/Avisos Java > Compilador > Errores/Avisos utilizando la preferencia Problemas de programación potenciales > Referencia nula.

Editor Java con aviso de referencia nula

Tenga en cuenta que el análisis es muy conservador y sigue reglas de asignación definidas. Solo tiene en cuenta casos en los que hay algo sospechoso (p.ej., si después se realiza una comprobación nula) en lugar de quejarse de todos los casos posibles.

En la modalidad de conformidad 5.0, los avisos a referencias nulas pueden silenciarse utilizando @SuppressWarnings("null").

Recuperación de sintaxis mejorada

Ahora, el analizador Java interno es mucho más resistente a los errores de sintaxis. En Eclipse 3.1, un error de sintaxis impediría la visualización de los errores subsiguientes. Ahora el analizador puede recuperarse de las sentencias con errores y seguir analizando.

En el ejemplo siguiente, la referencia no válida al método bar() se detecta a pesar del punto y coma faltante en la sentencia anterior.

Editor Java con recuperación de sintaxis

Esto por ejemplo permite que las refactorizaciones que afectan a un solo archivo toleren errores de sintaxis. Por ejemplo, ahora es posible redenominar o extraer una variable local en la parte superior de un método que todavía no se haya escrito completamente.

Extraer la variable local en un método incompleto

Tratar errores configurables como no muy graves

La opción Tratar errores configurables como errores muy graves en la página de preferencias Abre la página de preferencias Construcción Java > Compilador > Construcción controla si un error configurables debe ser muy grave o no. Esta opción está habilitada de forma predeterminada.

Si esta opción está inhabilitada, el código compilado puede ejecutarse a pesar del hecho de que hay errores en el código.

Detección de códigos $NON-NLS$ innecesarios

Ahora se detectan los códigos $NON-NLS$ innecesarios. Si un comentario de línea empieza por //$NON-NLS-x$ y no hay ninguna serie correspondiente en la misma línea, se informa de un problema.

El informe puede activarse y desactivarse utilizando la misma preferencia que para la detección de series no externalizadas. Puede establecerse en la página de preferencias Abre la página de preferencias Errores/Avisos Java > Compilador > Errores/Avisos utilizando la preferencia Estilo de código > Series no externalizadas (códigos $NON-NLS faltantes/no utilizados) .

Editor Java con código NLS innecesario

Para eliminar los códigos innecesarios utilice Arreglo rápido (Control+1), o Control+1, Control+Intro para eliminar todos los códigos innecesarios en una unidad de compilación.

Detección de utilización de tipo puro

Ahora se detectan las utilizaciones de tipos puros. Un tipo puro es una referencia a algún tipo genérico sin ningún tipo de argumento (p.ej. List en lugar de List<Element>).

Este diagnóstico opcional puede habilitarse independientemente de las operaciones de tipo no seleccionadas en la página de preferencias Abre la página de preferencias  Errores/Avisos Java > Compilador > Errores/Avisos utilizando la preferencia Tipos genéricos > Utilización de un tipo puro.

Editor Java con utilización de un tipo puro

El aviso puede silenciarse añadiendo @SuppressWarnings("unchecked").

Además, se ha implementado un Arreglo rápido para ayudar a resolver el problema de utilización de tipo puro.

Detección de asignaciones de parámetro de método

La asignación a parámetros de método se considera una práctica pobre.

Para detectar tales asignaciones e informar de ellas, abra la página de preferencias Abre la página de preferencias Error/Aviso Java > Compilador > Errores/Avisos y habilite la preferencia Estilo de código > Asignación de parámetro.

Editor Java con aviso de asignación de parámetro

Detección de etiquetas no utilizadas

El compilador Java ahora detecta etiquetas de sentencias no utilizadas.

Este diagnóstico opcional puede habilitarse en la página de preferencias Abre la página de preferencias Errores/Avisos Java > Compilador > Errores/Avisos utilizando la preferencia Código innecesario > Etiqueta break/continue no utilizada.

Editor Java con utilización de un tipo puro

Detección de recorrido de casos switch

El compilador Java puede detectar ahora si es posible entrar en un caso viniendo de un caso anterior. Se permiten los casos vacíos.

Este diagnóstico opcional puede habilitarse en la página de preferencias Abre la página de preferencias Errores/Avisos Java > Compilador > Errores/Avisos utilizando la preferencia Problemas de programación potenciales > Recorrido de casos switch.

Editor Java con aviso de recorrido

Se ha implementado un arreglo rápido para añadir una sentencia break al caso anterior.

Rendimiento mejorado para archivos .jar grandes

El límite de tamaño de la memoria caché del modelo Java es ahora una función del tamaño de almacenamiento dinámico máximo (argumento de VM -Xmx en la mayoría de las JVM) proporcionada a la máquina virtual Java que ejecuta el IDE de Eclipse.

El aumento del tamaño del almacenamiento dinámico implica una mejora considerable en el rendimiento cuando hay archivos .jar grandes en la vía de acceso de clases de construcción.

Recrear archivos .class modificados

El constructor Java puede ahora recrear archivos .class modificados o eliminados en la carpeta de salida utilizando el código fuente original.

Esto puede controlarse en la página de preferencias Abre la página de preferencias Construcción Java > Compilador > Construcción utilizando la preferencia Carpeta de salida > Reconstruir archivos de clase modificados por otros.

Vista Javadoc y ayudas flotantes del Javadoc anexo

La vista Javadoc y las ayudas flotantes de Javadoc ahora extraen la información del Javadoc anexo para las bibliotecas que no tienen código fuente anexo.

Herramientas de JUnit

Soporte de JUnit 4

El soporte de JUnit se ha actualizado para ejecutar y escribir pruebas JUnit 4. Consulte el sitio www.junit.org para obtener más información acerca de JUnit 4.

  • utilice el asistente Caso de prueba JUnit nuevo para generar una clase de prueba de JUnit 4:
    Soporte de JUnit 4 en el asistente Caso de prueba nuevo
  • utilice la biblioteca JUnit proporcionada para añadir a la vía de acceso de construcción
    Añadir biblioteca JUnit 4 con arreglo rápido
  • lance las pruebas de JUnit 4 como de costumbre con Ejecutar como JUnit
  • omitir las pruebas marcándolas con @Ignore

Historial de la vista JUnit

Ahora la vista JUnit puede manejar varias ejecuciones de prueba simultáneas. Puede conmutar entre ejecuciones de prueba activas y recientes utilizando el historial nuevo. Las pruebas pueden volver a ejecutarse a partir del historial sin detener pruebas que ya estén ejecutándose.

Historial de JUnit

Esto funciona con JUnit 3 igual que con JUnit 4.

Depurador Java
Entornos de ejecución

Un entorno de ejecución describe las posibilidades de un tiempo de ejecución: por ejemplo, J2SE-1.4. Puede especificar los JRE utilizados para ejecutar, depurar y construir basándose en la referencia de un entorno de ejecución. La página de preferencias Abre la página de preferencias Entornos de ejecución Java > JRE instalados > Entornos de ejecución muestra los JRE instalados en el espacio de trabajo que sean compatibles con cada entorno de ejecución. Los JRE que cumplen los requisitos de un entorno de ejecución se visualizan en negrita y los JRE que sobrepasan los requisitos de un entorno se visualizan en el font predeterminado. Cuando hay más de un JRE compatible con un entorno de ejecución, puede marcar un JRE para seleccionarlo como JRE predeterminado de ese entorno.

Página de preferencias Entorno de ejecución

Una vía de acceso de construcción o una configuración de lanzamiento que haga referencia a un entorno de ejecución es más portable que una que haga referencia a un JRE explícito ya que un entorno de ejecución de JRE puede resolverse independientemente de su nombre. Utilice la pestaña JRE o el asistente Editar biblioteca para especificar un entorno de ejecución para ejecutar y construir.

Pestaña JRE en el diálogo de configuración de lanzamiento

Variable de lanzamiento de propiedad del sistema

Una variable de lanzamiento nueva permite especificar dinámicamente propiedades del sistema como argumentos de VM y programa Java del tiempo de ejecución de Eclipse. La variable acepta un solo argumento que es el nombre de la propiedad del sistema que debe resolverse en tiempo de lanzamiento.

Por ejemplo, se hará referencia a la propiedad del sistema java.home como ${system_property:java.home}.

Pestaña Argumentos del diálogo de configuración de lanzamiento

Soporte de evaluación para matrices

La evaluación y la asistencia de contenido ahora están soportadas para matrices Java. Utilice this para hacer referencia a la matriz seleccionada.

Asistencia de código en la vista de variables

Grupos de hebras de Java

Ahora puede visualizar grupos de hebras en la vista Depurar conmutando Mostrar grupos de hebras en el menú de vista.

Habilitar grupos de hebras en la vista de depuración

Entradas exportadas de vía de acceso de clases de tiempo de ejecución

Una vía de acceso de clases puede configurarse para que solo incluya entradas exportadas de la vía de acceso de construcción. Por omisión, una vía de acceso de clases de tiempo de ejecución incluye todas las entradas (exportadas y no exportadas.)

En la pestaña Vía de acceso de clases, seleccione la entrada predeterminada y utilice el botón Editar... para configurar la opción.

Pestaña Vía de acceso de clase en el diálogo de configuración de lanzamiento

Diálogo Editar vía de acceso de clases de tiempo de ejecución

Suspender hebra frente a Suspender VM

Se ha añadido una opción a la página de preferencias Abre la página de preferencias Depurar Java > Depurar para controlar si los puntos de interrupción de nueva creación suspende una sola hebra o toda la VM.

Página de preferencias Depurar

Varios

Indicador de tipo Java

Habilite el Indicador de tipo Java en la página de preferencias Abre la página de preferencias Decoradores General > Aspecto > Decoración de etiqueta para averiguar cuál es el primer tipo de una unidad de compilación o archivo de clase. Para interfaces, anotaciones y enumeraciones se muestra un adorno, mientras que una clase ordinaria no tiene decoración.

Decorador de etiqueta del indicador de tipo

Buscar series externalizadas dañadas

Hay una acción nueva para buscar series externalizadas dañadas. La búsqueda informa de claves faltantes, no utilizadas y duplicadas.

Acción Buscar series externalizadas dañadas

Para iniciar la búsqueda, seleccione un archivo de propiedades, un paquete o todo un proyecto y utilice Origen > Buscar series externalizadas dañadas

Soporte mejorado para el mecanismo de externalización de series de Eclipse

El mecanismo de externalización de series de Eclipse tiene ahora la misma especie de soporte que la externalización de series tradicional. El valor externalizado asociado se muestra en una ayuda flotante al pasar el puntero sobre una serie externalizada en el editor Java.

Ayuda flotante de NLS

Haga Control+Pulsación sobre la clave para navegar directamente hasta la entrada en el correspondiente archivo de propiedades. En el editor de archivos de propiedades puede utilizar Control+Pulsación para averiguar dónde se utiliza la clave en el código.

Crear un tipo a partir de un fragmento de código de ejemplo

Puede pegar un fragmento de código que contenga un tipo Java directamente en un paquete o una carpeta fuente para crear una unidad de compilación nueva. Por ejemplo, seleccione y copie este código fuente
package pack;
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
a continuación seleccione una carpeta fuente en el Explorador de paquetes, utilice Control+V (Editar > Pegar). Esto crea automáticamente un paquete nuevo llamado 'pack' y un archivo 'HelloWorld.java' con el contenido copiado.

Generar hashCode() y equals()

Se puede utilizar una acción nueva para generar los métodos hashCode() e equals(). Puede seleccionar los campos en los que debe basarse la implementación.

Asistente Generar hash y equals

Para invocar una acción seleccione un tipo y utilice Fuente > Generar hashCode() y equals()...

Formateador de código de líneas

Ahora es posible formatear el código fuente sin iniciar la UI de Eclipse utilizando la aplicación de formateador de código autónoma nueva. El formateador de líneas de código funciona como una aplicación Eclipse estándar.

El mandato siguiente formateará los archivos fuente en la carpeta src con las opciones especificadas en el archivo config.prefs:

eclipse -application org.eclipse.jdt.core.JavaCodeFormatter -config d:/config.prefs c:/src

Consulte la sección Utilizar la aplicación de formateador para conocer los detalles.

Soporte para extensiones de estilo Java

Ahora están soportados los archivos con una extensión de archivo que no sea .java y que contenga código Java puro. Se puede añadir una extensión de estilo Java utilizando la página de preferencias Abre la página de preferencias Tipo de contenido General > Tipos de contenido (tipo Texto > Archivo fuente Java).

Explorador de paquetes con 'Y.abc' como unidad de compilación