Proč se rozhraní API Eclipse API mezi verzemi 2.1 a 3.0 změnilo nekompatibilním způsobem?
Eclipse 3.0 je pokračováním vývoje platformy Eclipse verze 2.1. Existuje několik oblastí, kde jsme nemohli platformu Eclipse dále vyvíjet a zachovat přitom všude perfektní kompatibilitu. Čtyři hlavní zdroje nekompatibilit jsou:
Seznam konkrétních nekompatibilit.
Bude modul plug-in pro verzi 2.1 fungovat v Eclipse 3.0?
Ano, s výjimkou několika případů. Pokud se modul plug-in spoléhá pouze na rozhraní API platformy Eclipse 2.1, bude ve verzi 3.0 nadále fungovat. Několika málo výjimkami jsou místa v rozhraní API, kde nebylo možno změny mezi verzemi 2.1 a 3.0 provést kompatibilním způsobem; pokud modul plug-in jedno z nich používá, nebude fungovat.
Můj modul plug-in pro verzi 2.1 používá třídy z interních balíčků. Bude v Eclipse 3.0 stále fungovat?
Pokud modul plug-in spoléhá na interní třídy nebo chování, které není specifikováno v rozhraní API Eclipse 2.1, nelze obecně říci nic o tom, zda bude modul plug-in ve verzi 3.0 fungovat. Budete jej muset vyzkoušet.
Jak spustím svůj modul plug-in v Eclipse 3.0, aniž bych na něj sahal?
Nainstalujte svůj modul plug-in pro verzi 2.1 do podadresáře eclipse/plugins/ produktu založeného na Eclipse 3.0 a znovu Eclipse spusťte. Platforma Eclipse rozezná, že modul plug-in je nepřevedeným modulem plug-in pro verzi 2.1 (podle hlavičky souboru plugin.xml), a automaticky se přizpůsobí tak, aby kompenzovala změny závislostí modulů plug-in a přejmenování bodů rozšíření platformy.
Bude třeba pozměnit moduly plug-in pro verzi 2.1, aby se správně přeložily v Eclipse 3.0?
Ano, ve všech případech. Mezi Eclipse 2.1 a 3.0 jsou jisté rozdíly, které vyžadují změny ve všech modulech plug-in přecházejících do vyšší verze. Pokud máte modul plug-in napsaný pro verzi 2.1 a chcete jej znovu zkompilovat, musíte jej migrací převést na verzi 3.0, než jej budete moci dále vyvíjet pro verzi 3.0.
Jak mám migrovat své moduly plug-in do Eclipse 3.0?
Jakmile jste zavedli (nebo importovali) svůj projekt modulu plug-in do pracovního prostoru Eclipse 3.0, použijte Nástroje PDE > Migrovat na 3.0 (kontextová nabídka projektu) k převedení manifestu modulu plug-in do formátu 3.0 a automatickému upravení seznamu nezbytných modulů plug-in platformy a odkazů na body rozšíření platformy, které byly přejmenovány. Ve většině případů by se pak měl kód modulu plug-in úspěšně zkompilovat a spustit. Kód modulu plug-in je pak potřeba přezkoumat a zkontrolovat, zda nezávisí na některé z oblastí nekompatibilních změn rozhraní API.
Mohu se spolehnout, že modul plug-in ohlásí chyby nebo varování kompilace, pokud se spoléhá na rozhraní API, které se změnilo nekompatibilním způsobem?
Ne. Existují některé oblasti nekompatibilních změn, které kompilátor jazyka Java neoznačí.
Mohu bezpečně ignorovat varování v kódu plynoucí z použití nepřípustného rozhraní API?
Krátkodobě ano. Kdekoliv je to možné, označují se zastaralá rozhraní API jako nepřípustná, než aby se rovnou odstranila, a nadále fungují (i když možná jen za omezených podmínek). Takže, ačkoliv obvykle není opuštění nepřípustného rozhraní API naléhavé, fakt, že je nyní považováno za nepřípustné, znamená, že nyní existuje lepší způsob, jak něco provést. Veškeré použití nepřípustného rozhraní API by se mělo z modulů plug-in odstranit při nejbližší vhodné příležitosti.
Jakmile jednou provedu migraci svého modulu plug-in do Eclipse 3.0, budu moci stále instalovat a spouštět výsledný binární modul plug-in v Eclipse 2.1?
Ne. Toto není podporováno a pravděpodobně to nebude fungovat díky přejmenovaným bodům rozšíření.
Co je účelem org.eclipse.core.runtime.compatibility?
Přechod na běhovou komponentu na bázi OSGi ve verzi 3.0 způsobil, že některá stávající rozhraní API jádra běhové komponenty zastarala. Kdekoliv to bylo možné, byla stará rozhraní v balíčcích org.eclipse.core.runtime.* spolu s příslušnými implementacemi přesunuta z modulu plug-in org.eclipse.core.runtime do nového modulu plug-in org.eclipse.core.runtime.compatibility. Standardně nové moduly plug-in závisí na org.eclipse.core.runtime a očekává se, že budou používat pouze přípustná běhová rozhraní API. Naproti tomu stávající moduly plug-in migrované z 2.1 budou standardně záviset na org.eclipse.core.runtime.compatibility a mohou také používat stará rozhraní API (modul plug-in org.eclipse.core.runtime.compatibility reexportuje rozhraní API z org.eclipse.core.runtime). Ačkoliv modul plug-in org.eclipse.core.runtime.compatibility bude pravděpodobně obsažen v konfiguracích Eclipse IDE, je to mrtvá záležitost, která nejspíše nebude zahrnuta v produktech založených na konfiguracích RCP.
Co je účelem org.eclipse.ui.workbench.compatibility?
org.eclipse.ui.workbench.compatibility je fragment modulu plug-in, který poskytuje rozšířenou binární kompatibilitu modulům plug-in pro verzi 2.1 spouštěným v produktu na bázi Eclipse 3.0. Ve verzi 3.0 bylo šest metod s explicitní závislostí na IFile nebo IMarker přesunuto z rozhraní org.eclipse.ui.IWorkbenchPage, aby se pracovní plocha čistě oddělila od pracovního prostoru a prostředků. Fragment org.eclipse.ui.workbench.compatibility zajišťuje zpětné přidání těchto metod, aby se mohly stávající moduly plug-in pro verzi 2.1 bez úprav spouštět. Vezměte však na vědomí, že v modulech plug-in migrovaných do verze 3.0, které se odkazují na přesunuté metody, nastanou chyby kompilace odstranitelné (jedině) voláním náhradních metod, které se nyní nacházejí v org.eclipse.ui.ide.IDE.
Dotyčné metody rozhraní IWorkbenchPage jsou: openEditor(IFile), openEditor(IFile, String), openEditor(IFile, String, boolean), openEditor(IMarker), openEditor(IMarker, boolean) a openSystemEditor(IFile).