Συνήθεις ερωτήσεις για τη μετάβαση πρόσθετων λειτουργιών στο Eclipse 3.0

Γιατί το Eclipse API άλλαξε κατά τρόπο ασύμβατο μεταξύ της εκδοχής 2.1 και 3.0;

Το Eclipse 3.0 αποτελεί εξέλιξη του Eclipse 2.1. Υπήρχαν μερικοί τομείς στους οποίους δεν ήταν δυνατή η εξέλιξη του Eclipse και η ταυτόχρονη διατήρηση τέλειας συμβατότητας σε όλα τα επίπεδα. Οι τέσσερις κύριες πηγές ασυμβατοτήτων είναι:

Εδώ θα βρείτε μια λίστα με συγκεκριμένες ασμβατότητες.

Θα λειτουργήσει μια πρόσθετη λειτουργία εκδοχής 2.1 στο Eclipse 3.0;

Ναι, εκτός λίγων περιπτώσεων. Εάν μια πρόσθετη λειτουργία βασίζεται μόνο στα API του Eclipse 2.1, θα εξακολουθήσει να λειτουργεί και στην εκδοχή 3.0. Οι πολύ λίγες εξαιρέσεις αποτελούν περιοχές στο API όπου οι αλλαγές μεταξύ της εκδοχής 2.1 και της 3.0 δεν μπορούσαν να γίνουν με κάποιο συμβατό τρόπο. Συνεπώς εάν μια πρόσθετη λειτουργία χρησιμοποιεί μια από αυτές, δεν θα λειτουργεί.

Η πρόσθετη λειτουργία μου εκδοχής 2.1 χρησιμοποιεί κλάσεις σε εσωτερικά πακέτα. Θα εξακολουθήσει να λειτουργεί και στο Eclipse 3.0;

Εάν μια πρόσθετη λειτουργία βασίζεται σε εσωτερικές κλάσεις ή συμπεριφορά που δεν καθορίζεται στο API του Eclipse 2.1 είναι αδύνατον να κάνουμε γενικούς ισχυρισμούς σχετικά με το εάν η πρόσθετη λειτουργία θα λειτουργεί ή όχι στην εκδοχή 3.0. Θα χρειαστεί να το δοκιμάσετε.

Με ποιο τρόπο μπορώ να εκτελέσω την πρόσθετη λειτουργία στο Eclipse 3.0 χωρίς να παρέμβω σε αυτό;

Εγκαταστήστε την πρόσθετη λειτουργία σας εκδοχής 2.1 στον υποκατάλογο eclipse/plugins/ οποιουδήποτε προϊόντος που βασίζεται στο Eclipse 3.0 και επανεκκινήστε το Eclipse. Το Eclipse θα αναγνωρίσει ότι η πρόσθετη λειτουργία αποτελεί μια πρόσθετη λειτουργία εκδοχής 2.1 που δεν έχει μετατραπεί (από την κεφαλίδα στο αρχείο plugin.xml) και αυτόματα θα κάνει ρυθμίσεις για να αντισταθμίσει τις αλλαγές στις εξαρτήσεις πρόσθετης λειτουργίας της πλατφόρμας και στα μετονομασμένα σημεία επέκτασης της πλατφόρμας.

Χρειάζεται να γίνουν αλλαγές στις πρόσθετες λειτουργίες εκδοχής 2.1 για να γίνεται σωστή μεταγλώττισή τους στο Eclipse 3.0;

Ναι, σε κάθε περίπτωση. Υπάρχουν μερικές διαφορές μεταξύ του Eclipse 2.1 και του 3.0 οι οποίες επιβάλουν κάποιες αλλαγές σε όλες τις πρόσθετες λειτουργίες που συνεχίζουν. Εάν έχετε δημιουργήσει μια πρόσθετη λειτουργία εκδοχής 2.1 και επιθυμείτε να την μεταγλωττίσετε εκ νέου, χρειάζεται να μεταβιβαστεί στην εκδοχή 3.0 πριν να μπορεί να γίνει περαιτέρω ανάπτυξή της για την εκδοχή 3.0.

Με ποιο τρόπο γίνεται η μετάβαση της πρόσθετης λειτουργίας στο Eclipse 3.0;

Μόλις φορτώσετε (ή εισάγετε) το έργο πρόσθετης λειτουργίας σε ένα χώρο εργασίας Eclipse 3.0, χρησιμοποιήστε την επιλογή Εργαλεία PDE > Μετάβαση στο 3.0 (μενού περιβάλλοντος έργου) για να μετατρέψετε τη δήλωση της πρόσθετης λειτουργίας σε μορφή τύπου 3.0 και να προσαρμόσετε αυτόματα τη λίστα των απαιτούμενων πρόσθετων λειτουργιών πλατφόρμας και των παραπομπών σε σημεία επέκτασης της πλατφόρμας που μετονομάστηκαν. Στις περισσότερες περιπτώσεις ο κώδικας για την πρόσθετη λειτουργία θα μεταγλωττιστεί και θα εκτελεστεί με επιτυχία. Ο κώδικας για την πρόσθετη λειτουργία πρέπει να εξεταστεί για να διασφαλιστεί ότι δεν εξαρτάται από κάποιο τομέα με μη συμβατή αλλαγή στο API.

Μπορώ να θεωρήσω ότι μια πρόσθετη λειτουργία θα παρουσιάσει σφάλματα μεταγλώττισης ή προειδοποιήσεις εάν βασίζεται σε API που έχει αλλάξει με μη συμβατό τρόπο;

Όχι. Υπάρχουν κάποιοι τομείς μη συμβατών αλλαγών οι οποίοι δεν επισημαίνονται από το μεταγλωττιστή Java.

Μπορώ να αγνοήσω με ασφάλεια τις προειδοποιήσεις στον κώδικα που προέρχονται λόγω χρήσης καταργημένου API;

Ναι, βραχυπρόθεσμα. Όποτε είναι δυνατόν, τα παλαιότερα API επισημαίνονται ως καταργημένα αντί να διαγραφούν οριστικά και συνεχίζουν να λειτουργούν (αν και πιθανόν μόνο κάτω από περιορισμένες συνθήκες). Συνεπώς, ενώ συνήθως δεν επείγει η διαγραφή του καταργημένου API, το γεγονός ότι πλέον θεωρείται ξεπερασμένο σημαίνει ότι υπάρχει κάποιος καλύτερος τρόπος για να εκτελεστεί μια ενέργεια. Οι πρόσθετες λειτουργίες πρέπει να διακόπτουν κάθε χρήση ενός καταργημένου API όσο το δυνατόν νωρίτερα.

Αφού μεταβιβάσω την πρόσθετη λειτουργία στο Eclipse 3.0, μπορώ να εγκαταστήσω και να εκτελέσω τη δυαδική πρόσθετη λειτουργία που προκύπτει στο Eclipse 2.1;

Όχι. Αυτό δεν υποστηρίζεται και πιθανόν δεν θα λειτουργούσε λόγω των μετονομασμένων σημείων επέκτασης.

Ποιος είναι ο σκοπός του org.eclipse.core.runtime.compatibility;

Η μετακίνηση στην εκδοχή 3.0 σε ένα περιβάλλον εκτέλεσης με βάση το OSGi είχε ως αποτέλεσμα κάποια από τα υπάρχοντα API περιβάλλοντος εκτέλεσης πυρήνα να ξεπεραστούν. Όποτε είναι δυνατόν, τα ξεπερασμένα API στα πακέτα org.eclipse.core.runtime.*, μαζί με την υλοποίηση που τα συνοδεύει, μετακινήθηκαν από την πρόσθετη λειτουργία org.eclipse.core.runtime σε μια νέα πρόσθετη λειτουργία org.eclipse.core.runtime.compatibility. Ως προεπιλογή, οι πρόσθετες λειτουργίες που δημιουργήθηκαν πρόσφατα εξαρτώνται από το org.eclipse.core.runtime και αναμένεται να χρησιμοποιούν μόνο μη καταργημένα API περιβάλλοντος εκτέλεσης. Από την άλλη, οι υπάρχουσες πρόσθετες λειτουργίες που μεταβιβάζονται από την έκδοση 2.1 θα εξαρτώνται ως προεπιλογή από την org.eclipse.core.runtime.compatibility και μπορούν επίσης να χρησιμοποιούν τα παλαιά API (η πρόσθετη λειτουργία org.eclipse.core.runtime.compatibility εξάγει εκ νέου τα API του org.eclipse.core.runtime). Ενώ η πρόσθετη λειτουργία org.eclipse.core.runtime.compatibility είναι πιθανόν να συμπεριληφθεί στις ρυθμίσεις του Eclipse IDE, αποτελεί περιττή ενέργεια, η οποία είναι απίθανο να συμπεριληφθεί σε προϊόντα που βασίζονται σε ρυθμίσεις RCP.

Ποιος είναι ο σκοπός του org.eclipse.ui.workbench.compatibility;

Η org.eclipse.ui.workbench.compatibility αποτελεί ένα τμήμα κώδικα πρόσθετης λειτουργίας που παρέχει βελτιωμένη συμβατότητα με αρχεία δυαδικής μορφής για τις πρόσθετες λειτουργίες εκδοχής 2.1 που εκτελούνται σε ένα προϊόν με βάση το Eclipse 3.0. Στην εκδοχή 3.0, μετακινήθηκαν έξι μέθοδοι με ρητή εξάρτηση στη διεπαφή IFile ή IMarker από τη διεπαφή org.eclipse.ui.IWorkbenchPage με σκοπό να διαχωριστεί ξεκάθαρα ο πάγκος εργασίας από το χώρο εργασίας και τους πόρους. Το τμήμα κώδικα org.eclipse.ui.workbench.compatibility φροντίζει να επαναφέρει αυτές τις μεθόδους έτσι ώστε οι υπάρχουσες πρόσθετες λειτουργίες εκδοχής 2.1 να μπορούν να εκτελεστούν χωρίς τροποποίηση. Σημειώστε, ωστόσο, ότι οι πρόσθετες λειτουργίες που μεταβιβάζονται στην εκδοχή 3.0, οι οποίες παραπέμπουν στις μεθόδους που μετακινήθηκαν, θα αναγνωρίσουν σφάλματα μεταγλώττισης, τα οποία μπορούν (μόνο) να επιλυθούν καλώντας τις μεθόδους αντικατάστασης που πλέον βρίσκονται στο org.eclipse.ui.ide.IDE.

Οι εν λόγω μέθοδοι της IWorkbenchPage είναι οι εξής: openEditor(IFile), openEditor(IFile, String), openEditor(IFile, String, boolean), openEditor(IMarker), openEditor(IMarker, boolean) και openSystemEditor(IFile).