Documente Academic
Documente Profesional
Documente Cultură
CONVERSIE INFORMATICA
Un plug-in este un set de componente software care adaugă capabilitați specifice unei aplicații
software mai mari. Dacă este suportat, pluginul permite personalizarea functionalitatii unei
aplicatii. De exemplu, plugin-urile sunt frecvent folosite în browserele web pentru a reda un clip
video, pentru a scana un document în cautarea virușilor, și pentru afișarea unor noi tipuri de
fișiere.
Termenul general folosit pentru a descrie snap-in-uri, plugin-uri, extensii si teme este add-on.
Eclipse este un framework software open-source scris iniţial in Java. Eclipse este considerată o
platformă universală, fiind capabilă de a oferi IDE (Integrated Development Environment)-uri
pentru mai multe limbaje, dintre care cel mai folosit de utilizatori este Java IDE. Eclipse a fost la
început dezvoltat de IBM, după care l-a oferit comunităţii open-source. Prima varianta de Eclipse
a apărut in Noiembrie 2001, şi, de atunci a continuat să se dezvolte, ultima varianta, Eclipse 3.3
fiind lansată in Iunie 2007.
Arhitectura Eclipse
Platforma Eclipse aduce o noutate, şi anume arhitectura bazată pe plugin-uri. În continuare
putem vedea o variantă simplificată a acestei arhitecturi. Eclipse are un micro-nucleu, si, cu
excepţia acestuia, totul este scris sub forma unui plug-in. Fiecare plug-in este lansat de acest
micro-nucleu.
1
Ce este un plugin?
Un plug-in este cea mai mică unitate funcţională a platformei Eclipse care poate fi dezvoltată si
transmisă separat. De obicei un tool simplu este descris într-un singur plugin, pe când un tool
mai complicat are funcţionalitatea împărţită în diferite plugin-uri. Pentru a întelege mai bine cum
funcţionează plugin-ul, trebuie să introducem noţiunea de extension point. Atunci când dorim ca
alte plugin-uri să poată extindă sau modifica funcţionalitatea plugin-ului nostru, trebuie să
definim un extension point.
un fişier manifest
2
Ciclul de viaţă al unui plugin
La pornire, Platforma Runtime descoperă un set de plugin-uri disponibile, le citeşte fişierele
manifest şi construieşte în memorie un registru al plugin-urilor. Platforma potriveşte numele
extensiilor cu declaraţia extension point-ului corespunzător. Orice problemă , ca de exemplu
lipsa unui extension point, este detectată şi logată. Registrul de plugin-uri este disponibil prin
intermediul Platformei API.
Un plugin este activat când codul său este trebuie executat. Odată activat , plugin-ul foloseşte
registrul de plugin-uri pentru a descoperi şi accesa extensiile ce contribuie la extension point-ul
său. De exemplu, plugin-ul ce declară preferinţele utilizatorilor , poate descoperi toate
preferinţele care au contribuit şi să le afişeze numele pentru a crea un dialog de preferinţe. Acest
lucru se face doar folosind informaţiile din registru, fără să fie nevoie să activam vreun alt
plugin.Acestea vor fi activate când utilizatorul selectează o preferinţă din listă. O dată activat, un
plugin rămâne activ pană când Platforma este inchisa.
Platforma Eclipse este pornită prin invocarea unei maşini virtuale Java standard. Fiecare plugin
are asignat propriul sau class-loader java, care este responsabil cu incărcarea claselor sale.
Cel mai uşor mod de a învată cum să realizăm un plugin este prin exemple. Eclipse ne pune la
dispoziţie câteva plugin-uri simple, pe baza cărora putem analiza structura acestora şi codul
generat.
În continuare putem vedea structura acestui Plug-in. A fost creată o clasa MyPlugin, o clasa de
acţiuni si fişierele de resurse necesare.
3
Editorul MANIFEST al plugin-ului
Odată ce proiectul de tip plugin este creat, fişierul manifest al plugin-ului este deschis în editorul
Manifest. Acest editor, constituit din mai multe pagini, reprezintă locul de unde poate fi
gestionat plugin-ul şi totodată poate fi folosit pentru editarea fişierelor plugin-ului(manifest.mf,
plugin.xml şi build.properties).
Pagina Overview
Această pagină a fost concepută astfel încât să constituie o referinţă pentru a dezvolta, testa şi
depana un plug-in.Totodată este un centru de navigare către alte pagini sau de execuţie a unei
comenzi.
4
Conţine 5 secţiuni:
Pagina Dependencies
Această pagină arată dependenţele pe care plugin-ul creat le are faţă de alte plugin-uri. Trebuie să
listăm pe această pagină toate plugin-urile de care are nevoie proiectul creat pentru a se compila.
Când modificăm lista dependenţelor şi salvăm, PDE va updata automat classpath-ul proiectului.
5
Trebuie ştiut că ordinea plugin-urilor din listă este importantă deoarece dictează ordinea
încărcării claselor la execuţie.
Pagina Runtime
Această pagină arată toate pachetele pe care plugin-ul creat le expune altor plugin-uri. Putem
adăuga in listă, apăsând butonul Add, pachetele create in proiectul nostru (myPlugin şi
myPlugin.actions). Acestea vor fi vizibile altor clienţi, în funcţie de setările pe care le facem în
secţiunea Package Visibility.
Pagina Extensions
Această pagină reprezintă locul unde se pot adăuga, elimina sau modifica extensiile cu care
plugin-ul creat contribuie la platformă. Fiecare extension point vine cu o XML Schema prin care
isi specifică gramatica. Extensia creată trebuie să urmeze această gramatică pentru a fi procesată
corect. Astfel, când creem o nouă extensie, PDE extrage gramatica corespunzătoare extension
point-ului şi populează meniul contextual al fiecărui element selectat din All Extensions view, cu
o listă de elemente valide ce pot fi create.
6
De asemenea, pentru fiecare element, secţiunea Extension Element Details va fi populată cu
atributele sale valide. Atributele marcate cu asterisk sunt obligatorii. Dacă trecem cu mouse-ul
peste un atribut, va apărea o descrierea a acelui atribut. Dacă un atribut aşteaptă numele unei
clase Java ca şi valoare, atunci, dacă dăm click pe numele său, va deschide fişierul Java
corespunzător, dacă există.
Această pagină reprezintă locul unde putem adăuga, elimina sau edita extension points ce sunt
declarate de plugin-ul nostru. Un extension point are trei atribute:
Extension Point Schema - atribut opţional a cărui valoare este o cale relativă către schema
corespunzătoare acestui extension point
Pagina Build
7
Această pagină conţine informaţii necesare pentru a compila,"impacheta" şi exporta plugin-uri.
Dacă librăriile pe care vrem să le compilăm conţin alte librării ce nu sunt listate în pagina
Runtime, le vom adăuga în secţiunea Extra Classpath Entries.
Pagina MANIFEST.MF
Conţine fişierul manifest.MF unde sunt stocate toate datele şi dependenţele plugin-ului.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MyPlugin Plug-in
Bundle-SymbolicName: MyPlugin; singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: myplugin.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Eclipse-LazyStart: true
Pagina plugin.xml
Dacă mergem pe tabul plugin.xml , editorul va afişa conţinutul acestui fişier care defineşte
aspectele de extensie ale plug-in-ului.
8
Pagina build.properties
source.. = src/
output.. = bin/
bin.includes = plugin.xml,\
META-INF/,\
.,\
icons/
PDE validează fişierele manifest.mf şi plugin.xml pentru erori semantice şi lista cu aceste
probleme este listată în tab-ul plug-in al paginii cu preferinţe Plug-in Develpment-Compilers.
Pentru fiecare problemă putem alege nivelul: Error, Warning sau Ignore. Totuşi, pentru ca PDE
să detecteze aceste probleme, trebuie ca extension points-urile pe care le folosim să aibă o
schemă validă asociată.
9
Clasele plug-in-ului
Observam ca plug-in-ul creat conţine 2 clase: MyPlugin.java si SampleAction.java. Clasa
MyPlugin.java extinde clasa AbstractUIPlugin şi pe lângă constructor conţine două metode
importante:
şi
Prima metodă este chemată cînd se activează plug-in-ul si ce-a de-a doua, metoda stop, când
plug-in-ul este oprit. Clasa SampleAction.java reprezintă acţiunile pe care le va face plug-in-ul
nostru. El va crea o nouă opţiune in meniul Eclipse, care va conţine un simplu item ce va afişa
"Hello World". Acţiunea care va face acest lucru este:
10
Pentru a vedea că plug-in-ul funcţionează corect, putem merge in meniu “Help-Eclipse-Plug-in
Details” .Aici va apărea o lista cu toate plug-in-urile , unde ar trebui să se regăsească si plug-in-
ul creat la pasul anterior.
Exportarea plugin-ului
Odată ce am ajuns în stadiul să fim satisfăcuţi de codul scris, trebuie sa-l publicăm intr-o formă
potrivită pentru depanarea într-un produs Eclipse.
Cel mai uşor mod de a face acest lucru este prin wizardul Export Plug-ins and Fragments din
meniul File-Export. Vom selecta aici plugin-urile si fragmentele pe care vrem să le exportăm.
Destinaţia exportării poate fi o arhivă sau un director.Formatul recomandat este o arhiva JAR.
11
Concluzii
Eclipse este o platformă de dezvoltare pentru programatorii Java, şi nu numai, cu un model bazat
pe plugin-uri bine proiectat. După cum am văzut în acest articol, este foarte uşor să imbunătăţim
codul deja existent, să dezvoltăm noi plugin-uri care pot fi la rândul lor extinse.
12