Java modell

A Java modell olyan osztályok készlete, ami a Java program létrehozásával, szerkesztésével, összeépítésével kapcsolatos objektumokhoz tartoznak. A Java modell osztályok a org.eclipse.jdt.core csomagban vannak meghatározva.  Ezek az osztályok erőforrások esetében Java specifikus viselkedést valósítanak meg, továbbá Java erőforrásokat modell elemekké osztanak fel.

Java elemek

A org.eclipse.jdt.core csomag határozza meg azokat az osztályokat, amelyek a Java programot képző elemeket modellezi. A JDT memóriában tárolt objektum modellt használ a Java program struktúrájának ábrázolásához. Ez a struktúra a projekt osztályútvonalából származtatott. A modell hierarchikus. A program elemei leszármazott elemekre bonthatók.

A Java elemek kezelése hasonlít az erőforrás objektumok kezeléséhez.  Ha Java elemmel dolgozik, akkor valójában egy alapul szolgáló modell objektumának azonosítójával dolgozik.  Az exists() protokoll használatával meghatározhatja, hogy az elem valóban jelen van-e a munkaterületen. 

A következő táblázat összesíti a különböző fajta Java elemeket.

Elem Leírás
IJavaModel A munkaterületre vonatkozó fő Java elemet képviseli. Minden Java jelleggel rendelkező projekt szülője. Továbbá hozzáférést nyújt Java jelleggel nem rendelkező projektekhez.
IJavaProject Munkaterületen található Java projektet képvisel. (Az IJavaModel leszármazottja)
IPackageFragmentRoot Csomagtöredékek készletét képviseli, és leképezi a töredékeket egy alapul szolgáló erőforrásra, ami mappa, JAR vagy ZIP fájl. (Az IJavaProject leszármazottja)
IPackageFragment Egy egész csomagra vonatkozó munkaterület részét képviseli, vagy egy csomag részét. (Az IPackageFragmentRoot leszármazottja)
ICompilationUnit Java forrásfájlt (.java) képvisel. (Az IPackageFragment leszármazottja)
IPackageDeclaration Csomag deklarációt képvisel fordítási egységben. (Az ICompilationUnit leszármazottja)
IImportContainer Csomag importálási deklarációkat képvisel a fordítási egységben. (Az ICompilationUnit leszármazottja)
IImportDeclaration Egyedülálló csomag importálási deklarációt képvisel. (Az IImportContainer leszármazottja)
IType Vagy egy forrástípust képvisel egy fordítási egységben, vagy egy bináris típust egy osztályfájlban.
IField Mezőt képvisel egy típuson belül. (Az IType leszármazottja)
IMethod Metódust vagy konstruktort képvisel egy típusban. (Az IType leszármazottja)
IInitializer Statikus vagy példány inicializálót képvisel egy típusban. (Az IType leszármazottja)
IClassFile Egy lefordított (bináris) típust képvisel.  (Az IPackageFragment leszármazottja)

Minden Java elem támogatja az IJavaElement felületet.

Néhány elem a Csomagok nézetben jelenik meg.  Ezek az elemek a IOpenable felületet valósítják meg, mivel meg kell nyitni őket navigáció előtt. Az alábbi ábra megjeleníti, hogy a Csomag nézet hogyan ábrázolja ezek az elemeket.

Csomag nézet megjeleníti az IOpenable felületet megvalósító elemeket

Az IOpenable felületet megvalósító Java elemek elsősorban az alapul szolgáló erőforrásfájl információiból jönnek létre.  Ugyanezek az elemek általánosan megjelennek az erőforrás navigátor nézetben.

Az Erőforrás navigátor megjeleníti az IOpenable felületet megvalósító elemeket

Más elemek Java fordítási egységet alkotó elemeknek felelnek meg. Az alábbi ábra egy Java fordítási egységet, valamint a fordítási egységben található forráselemeket megjelenítő tartalomkiemelőt jelenít meg.

Egy szerkesztő és egy tartalomkiemelő a vonatkozó forráselemek kapcsolatát szemlélteti

Ezek az elemek az ISourceReference felületet valósítják meg, mivel vonatkozó forráskódot biztosítanak. (Amint az elemek a tartalomkiemelőben kiválasztásra kerülnek a vonatkozó forráskód megjelenik a Java szerkesztőben).

Java elemek és erőforrásaik

Sok Java elem a munkaterület általános erőforrásinak felel meg.  Amikor általános erőforrásból szeretne Java elemeket létrehozni, akkor a JavaCore osztály a legjobb kiindulópont.A következő kódrészlet megmutatja, hogyan adhatók meg Java elemek a vonatkozó erőforrásukból.

    
private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        IJavaProject myJavaProject= JavaCore.create(myProject);
        if (myJavaProject == null)
            // A projekt nem a Java nyelv számára lett beállítva (nincs Java jellege)
            return;
            
        // csomagtöredék vagy csomagtöredék gyökér megadása
        IJavaElement myPackageFragment= JavaCore.create(myFolder);
        
        // a .java (fordítási egység), .class (class fájl), vagy
        // .jar (csomagtöredék gyökér) megadása
        IJavaElement myJavaFile = JavaCore.create(myFile);
    }

Ha már rendelkezik egy Java elemmel, akkor a JDT API használatával átvizsgálhatja és lekérdezheti a modellt.  Java elemekben található nem Java erőforrásokat is lekérdezhet. 

         private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        ...
        // A projektben található nem Java erőforrások megadása
        Object[] nonJavaChildren = myJavaProject.getNonJavaResources();
        ...
            

Java projektek

Ha egy egyszerű projektből hoz létre Java projektet, akkor a JavaCore ellenőrzi, hogy a projekt be lett-e állítva Java jellegűre.  A JDT bedolgozó egy projektjelleget használ, hogy a egy projektet Java viselkedéssel rendelkezőnek jelölhessen meg.  Amikor az "Új Java projekt" varázsló létrehoz egy projektet, a jelleget (org.eclipse.jdt.core.JavaCore#NATURE_ID) hozzárendeli a projekthez.  Ha Java jelleg nem lett beállítva a projekten, akkor a projekt létrehozásának kérésére a JavaCore null értékkel tér vissza.

A JavaCore a Java osztályútvonal karbantartására is használható, beleértve a forráskód és könyvtárak megtalálásához, és a kimeneti bináris (.class) fájlok előállításához szükséges helyszíneket.

Mi a Java projektek egyedi jellemzői? Az osztályútvonalukat egy .classpath" fájlba jegyzik fel és a Java növekményes projekt összeépítőt felveszik a projekt összeépítési specifikációjába.  Más tekintetben szabályos projektek és bedolgozók segítségével más jelleggel is beállíthatók (és más növekményes összeépítőkkel). Ha bedolgozók projekteket szeretnének saját viselkedésük mellé Java viselkedéssel is beállítani, akkor tipikusan a NewJavaProjectWizardPage osztályt használják a Java jelleg projekthez rendeléséhez a projekt egyéni jellege vagy viselkedése mellé.

Az IJavaModel a munkaterület minden Java jelleggel rendelkező projektjének szülőjeként fogható fel (és ezért IJavaProject projektként kezelhető).