Java-Elemente und -Ressourcen

Das Java-Modell ist die Gruppe der Klassen, die Modelle für die Objekte darstellen, welche an der Erzeugung, Bearbeitung und Erstellung eines Java-Programms beteiligt sind. Die Klassen des Java-Modells sind in den Paketen org.eclipse.jdt.core.* definiert. Diese Klassen implementieren Java-spezifisches Verhalten für Ressourcen und zerlegen Java-Ressourcen in weitere Modellelemente.

Java-Elemente

Das Paket org.eclipse.jdt.core definiert die Klassen, die Modelle für die Elemente darstellen, aus denen ein Java-Programm besteht. JDT verwendet ein speicherinternes Objektmodell, um die Struktur eines Java-Programms darzustellen. Dieses Modell ist hierarchisch aufgebaut. Elemente eines Programms können in Kindelemente zerlegt werden.

Java-Elemente sind in vielerlei Hinsicht mit Ressourcenobjekten vergleichbar. Wenn Sie mit einem Java-Element arbeiten, arbeiten Sie eigentlich mit einer Kennung für eine Art zu Grunde liegendes Modellobjekt. Sie müssen das Protokoll exists() verwenden, um festzustellen, ob das Element im Arbeitsbereich tatsächlich vorhanden ist.

Die folgende Tabelle fasst die unterschiedlichen Typen von Java-Elementen zusammen:

Element

Beschreibung

IJavaModel

Stellt das Java-Stammelement dar, das dem Arbeitsbereich entspricht. Dieses Element ist das Elternelement aller Java-Projekte.

IJavaProject

Stellt ein Java-Projekt im Arbeitsbereich dar. (Dieses Element ist ein Kind des Elements IJavaModel.)

IPackageFragmentRoot

Stellt eine Gruppe von Paketfragmenten dar und ordnet die Fragmente einer zu Grunde liegenden Ressource zu, die entweder ein Ordner, eine JAR-Datei oder eine komprimierte Datei (ZIP) ist. (Dieses Element ist ein Kind des Elements IJavaProject.)

IPackageFragment

Stellt den Teil des Arbeitsbereichs dar, der einem vollständigen Paket entspricht, oder einen Teil des Pakets. (Dieses Element ist ein Kind des Elements IPackageFragmentRoot.)

ICompilationUnit

Stellt eine Java-Quellendatei dar (.java).

IPackageDeclaration

Stellt eine Paketdeklaration in einer Kompiliereinheit dar. (Dieses Element ist ein Kind des Elements ICompilationUnit.)

IImportContainer

Stellt die Objektgruppe von Paketimportdeklarationen in einer Kompiliereinheit dar. (Dieses Element ist ein Kind des Elements ICompilationUnit.)

IImportDeclaration

Stellt eine einzelne Paketimportdeklaration dar. (Dieses Element ist ein Kind des Elements IImportContainer.)

IType

Stellt entweder einen Quellentyp innerhalb einer Kompiliereinheit oder einen Binärtyp innerhalb einer Klassendatei dar.

IField

Stellt ein Feld innerhalb eines Typs dar. (Dieses Element ist ein Kind des Elements IType.)

IMethod

Stellt eine Methode oder einen Konstruktor innerhalb eines Typs dar. (Dieses Element ist ein Kind des Elements IType.)

IInitializer

Stellt einen statischen Initialisierungsoperator oder einen Initialisierungsoperator für ein Exemplar innerhalb eines Typs dar. (Dieses Element ist ein Kind des Elements IType.)

IClassFile

Stellt einen kompilierten (binären) Typ dar. (Dieses Element ist ein Kind des Elements IPackageFragment.)

Alle Java-Elemente unterstützen die Schnittstelle IJavaElement.

Manche Elemente werden in der Sicht "Pakete" angezeigt. Diese Elemente implementieren die Schnittstelle IOpenable, da sie geöffnet werden müssen, bevor eine Navigation in ihnen möglich ist. Die unten gezeigte Abbildung veranschaulicht, wie diese Elemente in der Sicht "Pakete" dargestellt werden.

Die Java-Elemente, die die Schnittstelle IOpenable implementieren, werden größtenteils aus Informationen erstellt, die sich in den zu Grunde liegenden Ressourcendateien befinden. Dieselben Elemente werden in der Sicht "Navigator" für Ressourcen generisch dargestellt.

Andere Elemente entsprechen den Bestandteilen, die eine Java-Kompiliereinheit (Datei .java) bilden. In der folgenden Abbildung ist eine Java-Kompiliereinheit sowie eine Inhaltsgliederung dargestellt, die die Quellenelemente in der Kompiliereinheit sichtbar macht.

Diese Elemente implementieren die Schnittstelle ISourceReference, da sie über einen entsprechenden Quellcode verfügen. (Wenn diese Elemente in der Inhaltsgliederung ausgewählt werden, wird der entsprechende Quellcode im Java-Editor angezeigt.)

Java-Elemente und ihre Ressourcen

Vielen Java-Elementen entsprechen generische Ressourcen im Arbeitsbereich. Die Klasse JavaCore ist der Ausgangspunkt für die Erstellung von Java-Elementen aus einer generischen Ressource. Der folgende Code-Ausschnitt zeigt, wie Java-Elemente aus ihren entsprechenden Ressourcen erhalten werden können.

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

    IJavaProject myJavaProject = JavaCore.create(myProject);
    if (myJavaProject == null)
        // Falls das Projekt nicht für Java konfiguriert ist (nicht die Gattung "Java" hat)
        return;

    // Paketfragmente oder Paketfragmentstamm erhalten
    IJavaElement myPackageFragment = JavaCore.create(myFolder);

    // Datei .java (Kompiliereinheit), .class (Klassendatei)
    // oder .jar (Paketfragmentstamm) erhalten
    IJavaElement myJavaFile = JavaCore.create(myFile);
}

Die Klasse JavaCore wird außerdem zur Verwaltung des Java-Klassenpfades verwendet. Dies schließt auch Positionen für die Suche nach Quellcode und Bibliotheken sowie für die Generierung von binären Ausgabedateien (.class) ein.

Wenn Sie aus einem Textprojekt ein Java-Projekt erstellen, prüft die Klasse JavaCore , ob das Projekt mit der Gattung "Java" konfiguriert ist. Mit einer Projektgattung kennzeichnet das JDT-Plug-in ein Projekt als ein Projekt mit Java-Verhalten. Diese Gattung (org.eclipse.jdt.core.javanature) wird einem Projekt zugeordnet, wenn der Assistent "Neues Java-Projekt" ein Projekt erstellt. Ist die Gattung "Java" nicht in einem Projekt konfiguriert, gibt die Klasse JavaCore einen Nullwert zurück, wenn die Erstellung des Projekts angefordert wird.

Wodurch unterscheiden sich Java-Projekte von anderen Projekten? Java-Projekte zeichnen ihren Klassenpfad in einer Datei ".classpath" auf und fügen das Programm zur schrittweisen Erstellung von Java-Projekten zur Erstellungsspezifikation des Projekts hinzu. Ansonsten handelt es sich einfach um normale Projekte, die mit anderen Gattungen (und anderen Programmen zur schrittweisen Erstellung) durch Plug-ins konfiguriert werden können. Plug-ins, die Projekte zusätzlich zu ihrem eigenen Verhalten mit Java-Verhalten konfigurieren wollen, verwenden in der Regel die Assistentenseite "Neues Java-Projekt", um dem Projekt zusätzlich zu ihrer eigenen Gattung oder ihrem eigenen Verhalten die Gattung "Java" zuzuordnen.

Das Element IJavaModel kann als Elternelement aller Projekte im Arbeitsbereich betrachtet werden, die die Projektgattung "Java" haben (und somit als ein Element IJavaProject behandelt werden können.)