Elementos y recursos Java

El modelo Java es el conjunto de clases que modelan los objetos asociados con la creación, edición y construcción de un programa Java. Las clases del modelo Java se definen en los paquetes org.eclipse.jdt.core.* . Estas clases implementan comportamientos concretos de Java para los recursos y posteriormente descomponen los recursos Java en elementos del modelo.

Elementos Java

El paquete org.eclipse.jdt.core define las clases que modelan los elementos que componen un programa Java. JDT utiliza un modelo de objetos en memoria para representar la estructura de un programa Java. Este modelo es jerárquico. Los elementos de un programa pueden descomponerse en elementos hijos.

Los elementos Java son parecidos a los objetos de recursos.  Cuando se trabaja con un elemento Java, en realidad se está trabajando con un handle de algún objeto de modelo subyacente.  Para determinar si el elemento realmente está presente en el área de trabajo, debe utilizar el protocolo exists()

En la tabla siguiente se resumen los distintos tipos de elementos Java.

Elemento

Descripción

IJavaModel

Representa el elemento raíz de Java, que corresponde al área de trabajo. Es el padre de todos los proyectos de Java.

IJavaProject

Representa un proyecto de Java del área de trabajo. (Hijo de IJavaModel )

IPackageFragmentRoot

Representa un conjunto de fragmentos de paquetes y correlaciona los fragmentos con un recurso subyacente que es una carpeta, un archivo JAR o un archivo ZIP. (Hijo de IJavaProject )

IPackageFragment

Representa la parte del área de trabajo que corresponde a un paquete completo o a una parte del paquete. (Hijo de IPackageFragmentRoot )

ICompilationUnit

Representa un archivo fuente Java (.java). (Hijo de IPackageFragment )

IPackageDeclaration

Representa una declaración de paquete en una unidad de compilación. (Hijo de ICompilationUnit )

IImportContainer

Representa la colección de declaraciones de importación de paquetes en una unidad de compilación. (Hijo de ICompilationUnit )

IImportDeclaration

Representa una única declaración de importación de paquetes. (Hijo de IImportContainer )

IType

Representa o bien un tipo fuente en una unidad de compilación o bien un tipo binario en un archivo de clases.

IField

Representa un campo dentro de un tipo. (Hijo de IType )

IMethod

Representa un método o constructor dentro de un tipo. (Hijo de IType )

IInitializer

Representa un inicializador estático o de instancias dentro de un tipo. (Hijo de IType )

IClassFile

Representa un tipo compilado (binario).  (Hijo de IPackageFragment )

Todos los elementos Java dan soporte a la interfaz IJavaElement.

Algunos de los elementos pueden verse en la vista Paquetes.  Estos elementos implementan la interfaz IOpenable , ya que deben abrirse antes de poder recorrerse. La figura siguiente muestra cómo se representan estos elementos en la vista Paquetes.

Los elementos Java que implementan la interfaz IOpenable se crean básicamente a partir de la información que se encuentra en los archivos de recursos subyacentes.  Los mismos elementos se representan de manera genérica en la vista del navegador de recursos.

Otros elementos corresponden a los ítems que componen una unidad de compilación Java. En la figura siguiente se muestra una unidad de compilación de Java y un diseñador de contenido que muestra los elementos fuente de la unidad de compilación.

Estos elementos implementan la interfaz ISourceReference, ya que contienen el código fuente correspondiente. (A medida que vayan seleccionándose los elementos en el diseñador de contenido, se irá mostrando su código fuente correspondiente en el editor de Java).

Elementos Java y sus recursos

Muchos de los elementos Java corresponden a recursos genéricos del área de trabajo.  Si se quieren crear elementos Java a partir de un recurso genérico, la clase JavaCore es el mejor punto de partida. El fragmento de código siguiente muestra cómo obtener elementos Java a partir de sus recursos correspondientes.

   private void createJavaElementsFrom(IProject myProject, 
IFolder myFolder, IFile myFile) {

IJavaProject myJavaProject = JavaCore.create(myProject);
if (myJavaProject == null)
// el proyecto no está configurado para Java (no tiene naturaleza Java)
return;

// obtener un fragmento de paquete o la raíz de un fragmento de paquete
IJavaElement myPackageFragment = JavaCore.create(myFolder);

// obtener un .java (unidad de compilación), .class (archivo de clase) o
// .jar (raíz de fragmento de paquete)
IJavaElement myJavaFile = JavaCore.create(myFile);
}

JavaCore también se utiliza para mantener la vía de acceso a las clases Java, incluyendo las ubicaciones para encontrar el código fuente y las bibliotecas y las ubicaciones para generar archivos binarios de salida (.class).

Cuando se crea un proyecto Java a partir de un proyecto simple, JavaCore comprobará si el proyecto se ha configurado con la naturaleza Java.  El conector de JDT utiliza la naturaleza de un proyecto para indicar que un proyecto tendrá un comportamiento de Java.  Esta naturaleza (org.eclipse.jdt.core.JavaCore) se asigna a un proyecto cuando el asistente "Proyecto Java nuevo" crea un proyecto.  Si en un proyecto no se configura la naturaleza Java, JavaCore devolverá un valor nulo cuando se le pida que cree el proyecto.

¿Cuáles son las características exclusivas de los proyectos Java? Los proyectos Java registran sus vías de acceso de clases en un archivo ".classpath" y añaden el constructor incremental de proyectos de Java a las especificaciones de construcción del proyecto.  De lo contrario, serían proyectos normales y podrían configurarse con otras naturalezas (y con otros constructores incrementales) mediante conectores. Los conectores que desean configurar los proyectos con un comportamiento Java además del suyo propio utilizan normalmente NewJavaProjectWizardPage para asignar al proyecto la naturaleza Java, además de sus naturalezas o comportamientos personalizados propios.

IJavaModel puede considerarse el padre de todos los proyectos del área de trabajo que tiene naturaleza de proyecto Java (y por tanto pueden tratarse como IJavaProject).

Copyright IBM Corporation y otros 2000, 2002. Reservados todos los derechos.