Μοντέλο Java

Το μοντέλο Java είναι το σύνολο κλάσεων που μοντελοποιούν τα αντικείμενα τα οποία σχετίζονται με τη δημιουργία, την τροποποίηση και τη δόμηση ενός προγράμματος Java. Οι κλάσεις μοντέλου Java ορίζονται στο πακέτο org.eclipse.jdt.core.  Οι κλάσεις αυτές υλοποιούν την ειδική συμπεριφορά Java για πόρους και αναλύουν περαιτέρω τους πόρους Java σε στοιχεία μοντέλου.

Στοιχεία Java

Το πακέτο org.eclipse.jdt.core ορίζει τις κλάσεις που μοντελοποιούν τα στοιχεία τα οποία συνθέτουν ένα πρόγραμμα Java. Το JDT χρησιμοποιεί ένα μοντέλο αντικειμένου μέσα στη μνήμη για την αναπαράσταση της δομής ενός προγράμματος Java. Η δομή αυτή προκύπτει από τη διαδρομή κλάσης του έργου. Το μοντέλο έχει ιεραρχική δομή. Τα στοιχεία ενός προγράμματος μπορούν να αναλυθούν σε θυγατρικά στοιχεία.

Ο χειρισμός στοιχείων Java είναι παρόμοιος με το χειρισμό αντικειμένων πόρων.  Όταν εργάζεστε με ένα στοιχείο Java, εργάζεστε στην πραγματικότητα με ένα δείκτη χειρισμού σε ορισμένα υποκείμενα αντικείμενα μοντέλου.  Για να προσδιορίσετε αν το στοιχείο υπάρχει στην πραγματικότητα στο χώρο εργασίας, πρέπει να χρησιμοποιήσετε το πρωτόκολλο exists()

Στον παρακάτω πίνακα συνοψίζονται τα διάφορα είδη στοιχείων Java.

Στοιχείο Περιγραφή
IJavaModel Αναπαριστά το κεντρικό στοιχείο Java που αντιστοιχεί στο χώρο εργασίας. Το γονικό στοιχείο όλων των έργων με τη φύση Java. Παρέχει επίσης πρόσβαση στα έργα που δεν έχουν τη φύση java.
IJavaProject Αναπαριστά ένα έργο Java στο χώρο εργασίας. (Θυγατρικό στοιχείο της διεπαφής IJavaModel)
IPackageFragmentRoot Αναπαριστά ένα σύνολο τμημάτων πακέτου και αντιστοιχίζει τα τμήματα σε έναν υποκείμενο πόρο ο οποίος είναι είτε φάκελος είτε αρχείο JAR ή ZIP. (Θυγατρικό στοιχείο της διεπαφής IJavaProject)
IPackageFragment Αναπαριστά το τμήμα του χώρου εργασίας που αντιστοιχεί σε ένα ολόκληρο πακέτο ή ένα τμήμα του πακέτου. (Θυγατρικό στοιχείο της διεπαφής IPackageFragmentRoot )
ICompilationUnit Αναπαριστά ένα αρχείο πρωτογενούς κώδικα Java (.java). (Θυγατρικό στοιχείο της διεπαφής IPackageFragment )
IPackageDeclaration Αναπαριστά μια δήλωση πακέτου σε μια μονάδα μεταγλώττισης. (Θυγατρικό στοιχείο της διεπαφής ICompilationUnit )
IImportContainer Αναπαριστά τη συλλογή των δηλώσεων εισαγωγής πακέτου σε μια μονάδα μεταγλώττισης. (Θυγατρικό στοιχείο της διεπαφής ICompilationUnit )
IImportDeclaration Αναπαριστά μια δήλωση εισαγωγής μεμονωμένου πακέτου. (Θυγατρικό στοιχείο της διεπαφής IImportContainer )
IType Αναπαριστά είτε ένα είδος πρωτογενούς κώδικα μέσα σε μια μονάδα μεταγλώττισης είτε ένα δυαδικό είδος μέσα σε ένα αρχείο κλάσης.
IField Αναπαριστά ένα πεδίο μέσα σε ένα είδος. (Θυγατρικό στοιχείο της διεπαφής IType )
IMethod Αναπαριστά μία μέθοδο ή μία λειτουργία κατασκευής μέσα σε ένα είδος. (Θυγατρικό στοιχείο της διεπαφής IType )
IInitializer Αναπαριστά μία στατική λειτουργία απόδοσης τιμών ή τη χρήση της λειτουργίας μέσα σε ένα είδος. (Θυγατρικό στοιχείο της διεπαφής IType )
IClassFile Αναπαριστά ένα μεταγλωττισμένο (δυαδικό) είδος.  (Θυγατρικό στοιχείο της διεπαφής IPackageFragment )
ITypeParameter Αναπαριστά μια παράμετρο είδους.  (Δεν είναι θυγατρικό στοιχείο οποιουδήποτε στοιχείου Java. Λαμβάνεται με τις μεθόδους IType.getTypeParameter(String) ή IMethod.getTypeParameter(String).)
ILocalVariable Αναπαριστά μια τοπική μεταβλητή σε μια μέθοδο ή μια λειτουργία απόδοσης αρχικών τιμών.  (Δεν είναι θυγατρικό στοιχείο οποιουδήποτε στοιχείου Java. Λαμβάνεται με τη μέθοδο ICodeAssist.codeSelect(int, int).)

Όλα τα στοιχεία Java υποστηρίζουν τη διεπαφή IJavaElement.

Ορισμένα από τα στοιχεία εμφανίζονται στην προβολή "Πακέτα".  Τα στοιχεία αυτά υλοποιούν τη διεπαφή IOpenable , καθώς πρέπει να ανοίγουν πριν καταστεί δυνατή η πλοήγηση. Το παρακάτω σχήμα δείχνει τον τρόπο με τον οποίο τα στοιχεία αυτά αναπαρίστανται στην προβολή "Πακέτα".

Η προβολή πακέτων όπου εμφανίζονται τα στοιχεία τα οποία υλοποιούν τη διεπαφή IOpenable

Τα στοιχεία Java που υλοποιούν τη διεπαφή IOpenable δημιουργούνται κυρίως από πληροφορίες οι οποίες βρίσκονται στα υποκείμενα αρχεία πόρων.  Τα ίδια στοιχεία αναπαρίστανται γενικά στην προβολή πλοήγησης πόρων.

Η λειτουργία πλοήγησης πόρων όπου εμφανίζονται τα στοιχεία τα οποία υλοποιούν τη διεπαφή IOpenable

Άλλα στοιχεία που αντιστοιχούν στα στοιχεία τα οποία απαρτίζουν μια μονάδα μεταγλώττισης Java. Το παρακάτω σχήμα δείχνει μια μονάδα μεταγλώττισης Java και μια λειτουργία διάρθρωσης περιεχομένου η οποία εμφανίζει τα στοιχεία του πρωτογενούς κώδικα στη μονάδα μεταγλώττισης.

Μια λειτουργία επεξεργασίας και μια λειτουργία διάρθρωσης περιεχομένου που απεικονίζουν τη σχέση μεταξύ των αντίστοιχων στοιχείων του πρωτογενούς κώδικα

Τα στοιχεία αυτά υλοποιούν τη διεπαφή ISourceReference, καθώς μπορούν να παρέχουν τον αντίστοιχο πρωτογενή κώδικα. (Καθώς τα στοιχεία αυτά επιλέγονται στη λειτουργία διάρθρωσης περιεχομένου, ο αντίστοιχος πρωτογενής κώδικας εμφανίζεται στη λειτουργία επεξεργασίας Java).

Στοιχεία Java και οι πόροι τους

Πολλά από τα στοιχεία Java αντιστοιχούν σε γενικούς πόρους στο χώρο εργασίας.  Αν θέλετε να δημιουργήσετε στοιχεία Java από ένα γενικό πόρο, το καλύτερο σημείο έναρξης είναι η κλάση JavaCore. Το παρακάτω τμήμα κώδικα δείχνει τον τρόπο λήψης στοιχείων Java από τους αντίστοιχους πόρους.

    
private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        IJavaProject myJavaProject= JavaCore.create(myProject);
        if (myJavaProject == null)
            // the project is not configured for Java (has no Java nature)
            return;
            
        // get a package fragment or package fragment root
        IJavaElement myPackageFragment= JavaCore.create(myFolder);
        
        // get a .java (compilation unit), .class (class file), or
        // .jar (package fragment root)
        IJavaElement myJavaFile = JavaCore.create(myFile);
    }

Αφού έχετε ένα στοιχείο Java, μπορείτε να χρησιμοποιήσετε το JDT API για τη διάσχιση και την υποβολή ερωτήματος στο μοντέλο.  Μπορείτε επίσης να υποβάλετε ερώτημα για πόρους που δεν είναι Java, οι οποίοι περιέχονται σε ένα στοιχείο Java.  

         private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) {
        ...
        // get the non Java resources contained in my project.
        Object[] nonJavaChildren = myJavaProject.getNonJavaResources();
        ...
            

Έργα Java

Όταν δημιουργείτε ένα έργο Java από ένα απλό έργο, η κλάση JavaCore θα πραγματοποιεί έλεγχο για να διαπιστώσει αν το έργο έχει ρυθμιστεί με τη φύση Java.  Η πρόσθετη λειτουργία JDT χρησιμοποιεί τη φύση ενός έργου για να προσδιορίσει αν αυτό έχει συμπεριφορά Java.  Η φύση (org.eclipse.jdt.core.JavaCore#NATURE_ID ) ανατίθεται σε ένα έργο όταν ο οδηγός δημιουργίας έργου Java δημιουργεί ένα έργο.  Αν δεν έχει ρυθμιστεί η φύση Java σε ένα έργο, η κλάση JavaCore επιστρέφει την τιμή "null", όταν ζητείται η δημιουργία του έργου.

Η κλάση JavaCore χρησιμοποιείται επίσης για τη διατήρηση της διαδρομής κλάσης Java, συμπεριλαμβανομένων των θέσεων για την εύρεση πρωτογενούς κώδικα και βιβλιοθηκών, καθώς και των θέσεων για τη δημιουργία δυαδικών αρχείων εξόδου (.class).

Ποιά είναι τα μοναδικά χαρακτηριστικά των έργων Java; Καταγράφουν τη διαδρομή κλάσεών τους σε ένα αρχείο ".classpath" και προσθέτουν το εργαλείο αυξητικής δόμησης έργου Java στην προδιαγραφή δόμησης του έργου.  Διαφορετικά, πρόκειται για κανονικά έργα, στα οποία μπορούν να πραγματοποιηθούν ρυθμίσεις με άλλες φύσεις (και άλλα εργαλεία αυξητικής δόμησης) από πρόσθετες λειτουργίες. Οι πρόσθετες λειτουργίες που έχουν στόχο τη ρύθμιση έργων με τη συμπεριφορά Java επιπλέον της δικής τους συμπεριφοράς, συνήθως χρησιμοποιούν την κλάση NewJavaProjectWizardPage για την ανάθεση της φύσης Java στα έργα, εκτός από τις δικές τους προσαρμοσμένες φύσεις ή τη συμπεριφορά.

Η κλάση IJavaModel μπορεί να θεωρηθεί ως το γονικό στοιχείο όλων των έργων στο χώρο εργασίας που έχουν τη φύση έργου Java (και επομένως μπορεί να θεωρηθεί ως μια διεπαφή IJavaProject).