Modello Java

Il modello Java è l'insieme delle classi che modellano gli oggetti associati alla creazione, alla modifica e alla generazione di un programma Java. Le classi di modello Java sono definite in org.eclipse.jdt.core.   Tali classi implementano funzionalità specifiche Java per le risorse e scompongono ulteriormente le risorse Java in elementi di modello.

Elementi Java

Il pacchetto org.eclipse.jdt.core definisce le classi che modellano gli elementi che compongono un programma Java. JDT utilizza un modello di oggetto in memoria per rappresentare la struttura di un programma Java. Questa struttura deriva dal percorso classi del progetto. Il modello è gerarchico. Gli elementi di un programma possono essere decomposti in elementi secondari.

La gestione degli elementi Java è simile alla gestione degli oggetti risorse.  Quando si utilizza un elemento Java, in realtà si gestisce un handle di alcuni oggetti di modelli sottostanti.  Per determinare se l'elemento è effettivamente presente nello spazio di lavoro è necessario utilizzare il protocollo exists()

La tabella seguente riepiloga i diversi tipi di elementi Java.

Elemento Descrizione
IJavaModel Rappresenta l'elemento Java principale, corrispondente allo spazio di lavoro. È la base di tutti i progetti di natura Java. Fornisce inoltre l'accesso ai progetti che non presentano la natura java.
IJavaProject Rappresenta un progetto Java nello spazio di lavoro. (Elemento secondario di IJavaModel )
IPackageFragmentRoot Rappresenta un insieme di frammenti di pacchetto e associa i frammenti a una risorsa sottostante che corrisponde a una cartella, un file JAR o un file ZIP. (Elemento secondario di IJavaProject )
IPackageFragment Rappresenta la porzione dello spazio di lavoro che corrisponde ad un intero pacchetto, oppure una porzione del pacchetto. (Elemento secondario di IPackageFragmentRoot )
ICompilationUnit Rappresenta un file di origine Java (.java). (Elemento secondario di IPackageFragment )
IPackageDeclaration Rappresenta una dichiarazione di pacchetto in un'unità di compilazione. (Elemento secondario di ICompilationUnit )
IImportContainer Rappresenta l'insieme delle dichiarazioni di importazione del pacchetto in un'unità di compilazione. (Elemento secondario di ICompilationUnit )
IImportDeclaration Rappresenta una singola dichiarazione di importazione del pacchetto. (Elemento secondario di IImportContainer )
IType Rappresenta un tipo di origine all'interno di un'unità di compilazione oppure un tipo binario all'interno di un file di classe.
IField Rappresenta un campo all'interno di un tipo. (Elemento secondario di IType )
IMethod Rappresenta un metodo o un costruttore all'interno di un tipo. (Elemento secondario di IType )
IInitializer Rappresenta un inizializzatore statico o di istanza all'interno di un tipo. (Elemento secondario di IType )
IClassFile Rappresenta un tipo compilato (binario).  (Elemento secondario di IPackageFragment)

Tutti gli elementi Java supportano l'interfaccia IJavaElement.

Alcuni degli elementi vengono mostrati nella vista Pacchetti. Tali elementi implementano l'interfaccia IOpenable poiché devono essere aperti prima di poterli esplorare. La figura seguente mostra il modo in cui tali elementi vengono rappresentati nella vista Pacchetti.

Vista pacchetti che mostra gli elementi che implementano l'interfaccia IOpenable

Gli elementi Java che implementano IOpenable sono creati principalmente in base alle informazioni contenute nei file di risorse sottostanti.  Gli stessi elementi sono rappresentati genericamente nella vista di selezione risorse.

Vista di selezione risorse che mostra gli elementi che implementano l'interfaccia IOpenable

Altri elementi corrispondono alle voci che formano un'unità di compilazione Java. La figura seguente mostra un'unità di compilazione e una funzione di struttura del contenuto che visualizza gli elementi di origine nell'unità di compilazione.

Una struttura di editor e di contenuto che illustra la relazione tra gli elementi di origine corrispondenti

Questi elementi implementano l'interfaccia ISourceReference poiché possono fornire un codice origine corrispondente. Quando questi elementi vengono selezionati nella funzione di struttura del contenuto, il rispettivo codice origine corrispondente viene visualizzato nell'editor Java.

Elementi Java e rispettive risorse

Molti degli elementi Java corrispondono a risorse generiche nello spazio di lavoro. Quando si desidera creare elementi Java da una risorsa generica, la classe JavaCore è il punto di partenza ideale. Il seguente frammento di codice mostra come ottenere elementi Java dalle risorse corrispondenti.

    
        private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        IJavaProject myJavaProject = JavaCore.create(myProject);
        if (myJavaProject == null)
         // il progetto non è configurato per Java (non ha una natura Java)
            return;
            
      // richiamare un frammento di pacchetto o una radice del frammento di pacchetto
        IJavaElement myPackageFragment = JavaCore.create(myFolder);
        
      // richiamare un file .java (unità di compilazione), .class (file di classe), oppure
      // .jar (radice del frammento di pacchetto)
        IJavaElement myJavaFile = JavaCore.create(myFile);
    }

Dato un elemento Java, è possibile utilizzare l'API JDT per attraversare e interrogare il modello.  È possibile inoltre interrogare le risorse non Java contenute in un elemento Java.  

         private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        ...
        // ottenere le risorse non Java contenute nel progetto.
        Object[] nonJavaChildren = myJavaProject.getNonJavaResources();
        ...
            

Progetti Java

Quando si crea un progetto Java da un progetto semplice, JavaCore verificherà che il progetto sia configurato per Java. Il plug-in JDT utilizza la natura del progetto per designare un progetto con un comportamento Java.  Questa natura (org.eclipse.jdt.core.JavaCore#NATURE_ID) è assegnata ad un progetto quando la procedura guidata "Nuovo progetto Java" crea un progetto.  Se nel progetto non è configurata la natura Java, JavaCore restituisce un valore nullo quando riceve la richiesta di creazione del progetto.

JavaCore è anche utilizzato per conservare il percorso classi Java, inclusi i percorsi per localizzare il codice origine e le librerie, nonché i percorsi per la generazione di file binari di output (.class).

Quali sono le caratteristiche uniche dei progetti Java? I progetti Java registrano il rispettivo percorso classi in un file ".classpath" e aggiungono il programma di generazione incrementale di progetto Java nella specifica di generazione del progetto.  Diversamente, rappresentano solo progetti regolari e possono essere configurati con altre nature (e altri programmi di generazione incrementali) attraverso plug-in. I plug-in che configurano progetti con funzionalità Java in aggiunta alla propria funzionalità utilizzano generalmente NewJavaProjectWizardPage per assegnare la natura Java al progetto in aggiunta alle proprie specifiche nature o funzionalità.

IJavaModel può essere considerato l'elemento principale di tutti i progetti dello spazio di lavoro che presentano una natura di progetto Java (e quindi possono essere trattati come IJavaProject).

Copyright IBM Corporation e altri 2000, 2003. Tutti i diritti riservati.