Είδαμε ότι ο πάγκος εργασίας ορίζει σημεία επέκτασης για πρόσθετες λειτουργίες με σκοπό τη συνεισφορά της λειτουργίας περιβάλλοντος χρήστη στην πλατφόρμα. Πολλά από αυτά τα σημεία επέκτασης, ιδιαίτερα οι επεκτάσεις οδηγών, υλοποιούνται με τη χρήση κλάσεων στα πακέτα org.eclipse.jface.*. Ποιά είναι η διαφορά;
Το JFace είναι ένα πακέτο εργαλείων περιβάλλοντος χρήστη που παρέχει κλάσεις βοήθειας για την ανάπτυξη λειτουργιών του περιβάλλοντος χρήστη των οποίων η υλοποίηση μπορεί να είναι κουραστική. Το JFace λειτουργεί πάνω από το επίπεδο ενός αδιαμόρφωτου συστήματος οργάνων. Παρέχει κλάσεις για το χειρισμό κοινών εργασιών προγραμματισμού περιβάλλοντος χρήστη:
Το JFace σας δίνει την ελευθερία να εστιάζεστε στην υλοποίηση της δικής σας, συγκεκριμένης λειτουργίας, χωρίς να χρειάζεται να εστιάζεστε στο υποκείμενο σύστημα οργάνων ή στην επίλυση προβλημάτων που είναι κοινά σε όλες σχεδόν τις εφαρμογές περιβάλλοντος χρήστη.
Πού τελειώνει το JFace και πού αρχίζει ο πάγκος εργασίας; Μερικές φορές οι διαχωριστικές γραμμές δεν είναι εμφανείς. Γενικά, τα API του JFace (από τα πακέτα org.eclipse.jface.*) είναι ανεξάρτητα από τα σημεία επέκτασης και τα API του πάγκου εργασίας. Επομένως, ένα πρόγραμμα JFace θα μπορούσε να εγγραφεί χωρίς τη χρήση κωδικών πάγκου εργασίας.
Ο πάγκος εργασίας χρησιμοποιεί το JFace αλλά επιχειρεί να μειώσει τις εξαρτήσεις, όπου αυτό είναι εφικτό. Για παράδειγμα, το μοντέλο τμήματος πάγκου εργασίας (IWorkbenchPart) είναι σχεδιασμένο ώστε να μην εξαρτάται από το JFace. Νωρίτερα είδαμε ότι οι λειτουργίες προβολής και οι λειτουργίες επεξεργασίας μπορούν να υλοποιούνται με τη χρήση οργάνων SWT απευθείας, χωρίς να χρησιμοποιούνται κλάσεις JFace. Ο πάγκος εργασίας προσπαθεί να παραμένει ανεξάρτητος από το JFace, όπου αυτό είναι εφικτό, επιτρέποντας στους προγραμματιστές να χρησιμοποιούν τμήματα του JFace τα οποία τους φαίνονται χρήσιμα. Στην πράξη, ο πάγκος εργασίας χρησιμοποιεί το JFace για το μεγαλύτερο μέρος της υλοποίησής του και υπάρχουν παραπομπές σε είδη JFace στους ορισμούς API. (Για παράδειγμα, οι διεπαφές του JFace για IMenuManager, IToolBarManager και IStatusLineManager εμφανίζονται ως είδη στις μεθόδους IActionBar του πάγκου εργασίας.)
Όταν χρησιμοποιείτε API του JFace, καλό θα είναι να λαμβάνετε υπόψη τους κανόνες δέσμευσης για τη χρήση των νημάτων παρασκηνίου. Δείτε Ο πάγκος εργασίας και τα νήματα για περισσότερες πληροφορίες.
Οι διαχωριστικές γραμμές μεταξύ SWT και JFace είναι πιο σαφείς. Το SWT δεν εξαρτάται από κανέναν κώδικα JFace ή πλατφόρμας. Πολλά από τα παραδείγματα SWT δείχνουν τον τρόπο με τον οποίο μπορείτε να δομήσετε μια ανεξάρτητη εφαρμογή.
Το JFace είναι σχεδιασμένο ώστε να παρέχει μια λειτουργία περιβάλλοντος χρήστη κοινής εφαρμογής που βασίζεται στη βιβλιοθήκη SWT. Το JFace δεν επιχειρεί να "αποκρύψει" το SWT ή να αντικαταστήσει τη λειτουργία του. Παρέχει κλάσεις και διεπαφές οι οποίες χειρίζονται πολλές από τις κοινές εργασίες που σχετίζονται με τον προγραμματισμό ενός δυναμικού περιβάλλοντος χρήστη με τη χρήση του SWT.
Η σχέση μεταξύ JFace και SWT επιδεικνύεται με μεγαλύτερη σαφήνεια μέσω των λειτουργιών προβολής και της σχέσης αυτών με τα όργανα SWT.