Το μοντέλο Java είναι το σύνολο κλάσεων που μοντελοποιούν τα αντικείμενα τα οποία σχετίζονται με τη δημιουργία, την τροποποίηση και τη δόμηση ενός προγράμματος Java. Οι κλάσεις μοντέλου Java ορίζονται στο πακέτο org.eclipse.jdt.core. Οι κλάσεις αυτές υλοποιούν την ειδική συμπεριφορά 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 , καθώς πρέπει να ανοίγουν πριν καταστεί δυνατή η πλοήγηση. Το παρακάτω σχήμα δείχνει τον τρόπο με τον οποίο τα στοιχεία αυτά αναπαρίστανται στην προβολή "Πακέτα".
Τα στοιχεία Java που υλοποιούν τη διεπαφή IOpenable δημιουργούνται κυρίως από πληροφορίες οι οποίες βρίσκονται στα υποκείμενα αρχεία πόρων. Τα ίδια στοιχεία αναπαρίστανται γενικά στην προβολή πλοήγησης πόρων.
Άλλα στοιχεία που αντιστοιχούν στα στοιχεία τα οποία απαρτίζουν μια μονάδα μεταγλώττισης Java. Το παρακάτω σχήμα δείχνει μια μονάδα μεταγλώττισης Java και μια λειτουργία διάρθρωσης περιεχομένου η οποία εμφανίζει τα στοιχεία του πρωτογενούς κώδικα στη μονάδα μεταγλώττισης.
Τα στοιχεία αυτά υλοποιούν τη διεπαφή ISourceReference, καθώς μπορούν να παρέχουν τον αντίστοιχο πρωτογενή κώδικα. (Καθώς τα στοιχεία αυτά επιλέγονται στη λειτουργία διάρθρωσης περιεχομένου, ο αντίστοιχος πρωτογενής κώδικας εμφανίζεται στη λειτουργία επεξεργασίας 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 από ένα απλό έργο, η κλάση 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).