I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi

Mhlawumbe, eclipse kudala engadingi singeniso esikhethekile. Abantu abaningi bajwayelene ne-Eclipse ngenxa yamathuluzi okuthuthukisa i-Eclipse Java (I-JDT). Yile Java IDE yomthombo ovulekile edumile iningi lonjiniyela elihlobanisa negama elithi “Eclipse”. Kodwa-ke, i-Eclipse iyinkundla enwebekayo yokuhlanganisa amathuluzi okuthuthukisa (i-Eclipse Platform), kanye nenani lama-IDE akhiwe phezu kwesisekelo sayo, okuhlanganisa ne-JDT. I-Eclipse iyiphrojekthi ye-Eclipse, iphrojekthi yezinga eliphezulu ehlanganisa ukuthuthukiswa kwe-Eclipse Platform kanye ne-JDT, kanye ne-Eclipse SDK, umphumela olethiwe waleyo ntuthuko. Ekugcineni, i-Eclipse iyiSisekelo esivulekile esinomphakathi omkhulu wamaphrojekthi, hhayi wonke abhalwe nge-Java noma ahlobene namathuluzi okuthuthukisa (isibonelo, amaphrojekthi. I-Eclipse IoT и Isayensi ye-Eclipse). Umhlaba we-Eclipse uhluke kakhulu.

Kulesi sihloko, okufingqiwe emvelweni, sizozama ukubheka ezinye zezinto eziyisisekelo ze-Eclipse architecture njengenkundla yokwakha amathuluzi okuthuthukisa ahlanganisiwe futhi sinikeze umbono wokuqala wezingxenye ze-Eclipse ezakha isisekelo sobuchwepheshe. inkundla "ye-Configurator entsha" 1C: Ibhizinisi. 1C:Amathuluzi Okuthuthukisa Ibhizinisi. Impela, isibuyekezo esinjalo nakanjani sizobe sikha phezulu futhi silinganiselwe, okuhlanganisa nokuthi asigxili kuphela kubathuthukisi be-Eclipse njengezithameli eziqondiwe. Kodwa-ke, sithemba ukuthi nabathuthukisi be-Eclipse abanolwazi bazokwazi ukuthola imininingwane ethokozisayo esihlokweni. Isibonelo, sizokhuluma ngomunye "wezimfihlo ze-Eclipse", iphrojekthi entsha futhi eyaziwa kancane. I-Eclipse Hand, eyasungulwa futhi yasekelwa yi-1C.
I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi

Isingeniso se-Eclipse Architecture

Ake siqale sibheke ezinye izici ezijwayelekile zokwakheka kwe-Eclipse sisebenzisa isibonelo Amathuluzi okuthuthukisa i-Eclipse Java (JDT). Ukukhethwa kwe-JDT njengesibonelo akukona ngephutha. Lena indawo yokuqala edidiyelwe yokuthuthukiswa evela ku-Eclipse. Amanye *amaphrojekthi e-DT Eclipse, afana ne-Eclipse C/C++ Development Tooling (CDT), adalwe kamuva futhi aboleka zombili izimiso eziyisisekelo zezakhiwo nezingcezu zekhodi yomthombo ngamunye ku-JDT. Izisekelo zezakhiwo ezibekwe phansi ku-JDT ziyasebenza kuze kube namuhla cishe kunoma iyiphi i-IDE eyakhelwe phezulu kwe-Eclipse Platform, okuhlanganisa 1C:Amathuluzi Okuthuthukisa Ibhizinisi.

Okokuqala, kufanele kuqashelwe ukuthi i-Eclipse ibonakala ngokwendlaleka kwezakhiwo ezicace kahle, ngokuhlukaniswa kokusebenza okuzimele kolimi nokusebenza okuklanyelwe ukusekela izilimi ezithile zokuhlela, kanye nokuhlukaniswa kwezingxenye “eziyinhloko” ezizimele ze-UI ezingxenyeni ezihlotshaniswayo. nge interface yomsebenzisi esekelayo.

Ngakho-ke, i-Eclipse Platform ichaza ingqalasizinda evamile, engazimele yolimi, futhi amathuluzi okuthuthukisa i-Java engeza i-IDE egcwele ye-Java ku-Eclipse. Kokubili i-Eclipse Platform ne-JDT kuhlanganisa izingxenye ezimbalwa, ngayinye eyingxenye “yomgogodla” ozimele we-UI noma isendlalelo se-UI (Umfanekiso 1).

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 1. I-Eclipse Platform ne-JDT

Ake sibhale izinto ezibalulekile ze-Eclipse Platform:

  • Isikhathi sokudlala - Ichaza ingqalasizinda ye-plugin. I-Eclipse ibonakala ngokwakhiwa kwe-modular. Empeleni, i-Eclipse iqoqo "lamaphuzu okunweba" kanye "nezandiso".
  • Indawo yokusebenza - Iphatha iphrojekthi eyodwa noma ngaphezulu. Iphrojekthi iqukethe amafolda namafayela afakwe imephu ngokuqondile ohlelweni lwefayela.
  • I-Standard Widget Toolkit (SWT) - Inikeza izici eziyisisekelo zokusebenzelana komsebenzisi ezihlanganiswe nesistimu yokusebenza.
  • JFace - Inikeza inani lezinhlaka ze-UI ezakhelwe phezu kwe-SWT.
  • banebhentshi - Ichaza i-paradigm ye-Eclipse UI: abahleli, imibono, imibono.

Kumelwe kushiwo ukuthi i-Eclipse Platform iphinde inikeze nezinye izinto eziningi eziwusizo zokwakha amathuluzi okuthuthukisa ahlanganisiwe, okuhlanganisa ukususa iphutha, ukuqhathanisa, ukusesha, kanye nethimba. Kufanele kukhulunywe ngokukhethekile nge-JFace Text - isisekelo sokwakha "abahleli abahlakaniphile" bekhodi yomthombo. Ngeshwa, ngisho nokuhlolwa nje kwalezi zingxenye, kanye nezingxenye zesendlalelo se-UI, akunakwenzeka ngaphakathi kobubanzi balesi sihloko, ngakho-ke engxenyeni esele yalesi sigaba sizokhawula ekuhlaziyeni izingxenye "eziyinhloko" eziyinhloko. i-Eclipse Platform ne-JDT.

I-Core Runtime

Ingqalasizinda ye-Eclipse plugin isuselwe kuyo I-OSGi futhi ihlinzekwe yiphrojekthi I-Eclipse Equinox. I-plugin ngayinye ye-Eclipse iyinqwaba ye-OSGi. Ukucaciswa kwe-OSGi kuchaza, ikakhulukazi, izindlela zokushintsha nokuxazulula ukuncika. Ngokungeziwe kulezi zindlela ezijwayelekile, i-Equinox yethula umqondo amaphuzu okunweba. I-plugin ngayinye ingachaza amaphoyinti ayo okunweba, futhi iphinde yethule ukusebenza okwengeziwe (“izandiso”) kusistimu isebenzisa amaphuzu okunweba achazwe ama-plugin afanayo noma amanye. Noma iyiphi incazelo enemininingwane yezinqubo ze-OSGi ne-Equinox ingaphezu kobubanzi balesi sihloko. Masiqaphele kuphela ukuthi i-modularization ku-Eclipse iphelele (noma iyiphi isistimu engaphansi, kuhlanganise ne-Runtime, iqukethe i-plugin eyodwa noma ngaphezulu), futhi cishe yonke into ku-Eclipse iyisandiso. Ngaphezu kwalokho, lezi zimiso zafakwa ekwakhiweni kwe-Eclipse kudala ngaphambi kokwethulwa kwe-OSGi (ngaleso sikhathi babesebenzisa ubuchwepheshe babo, obufana kakhulu ne-OSGi).

Indawo Yokusebenzela Eyinhloko

Cishe noma iyiphi indawo edidiyelwe yokuthuthukiswa eyakhelwe phezu kwe-Eclipse Platform isebenza nendawo yokusebenza ye-Eclipse. Indawo yokusebenza evamise ukuqukatha ikhodi yomthombo yohlelo lokusebenza ethuthukiswe ku-IDE. Amamephu wendawo yokusebenza ngokuqondile ohlelweni lwefayela futhi iqukethe amaphrojekthi aqukethe amafolda namafayela. Lawa maphrojekthi, amafolda, namafayela abizwa izinsiza indawo yokusebenza. Ukuqaliswa kwendawo yokusebenza ku-Eclipse kusebenza njengenqolobane maqondana nesistimu yefayela, okwenza kube nokwenzeka ukusheshisa ngokuphawulekayo ukunqamula kwesihlahla sensiza. Ngaphezu kwalokho, indawo yokusebenzela inikeza izinsiza eziningi ezengeziwe, kuhlanganise indlela yokwazisa yezinguquko zensiza и ingqalasizinda yabakhi abakhuphukayo.

Ingxenye ye-Core Resources (org.eclipse.core.resources plugin) inesibopho sokusekela indawo yokusebenza nezisetshenziswa zayo. Ikakhulukazi, le ngxenye inikeza ukufinyelela okuhleliwe endaweni yokusebenza efomini amamodeli wezinsiza. Ukuze usebenze ngempumelelo ngale modeli, amaklayenti adinga indlela elula yokwethula isixhumanisi esisetshenziswa. Kulesi simo, kungaba yinto efiselekayo ukufihla into egcina ngokuqondile isimo sensiza kumodeli kusukela ekufinyeleleni kweklayenti. Uma kungenjalo, esimweni sokuthi, isibonelo, ukususa ifayela, iklayenti lingaqhubeka libambe into engasekho kumodeli, nezinkinga ezilandelayo. I-Eclipse ixazulula le nkinga isebenzisa into ebizwa ngokuthi phatha insiza. Isibambo sisebenza njengesihluthulelo (sazi kuphela indlela eya esisetshenziswa endaweni yokusebenza) futhi silawula ngokuphelele ukufinyelela entweni yemodeli yangaphakathi, egcina ngokuqondile ulwazi mayelana nesimo sensiza. Lo mklamo uwukwehluka kwephethini Isibambo/Umzimba.

Ilayisi. Umfanekiso wesi-2 ukhombisa isibambo/isisho somzimba njengoba sisetshenziswa kumodeli yensiza. I-interface ye-IResource imele isibambo sensiza futhi iyi-API, ngokungafani nesigaba Sensiza, esisebenzisa lesi sixhumi esibonakalayo, kanye nesigaba se-ResourceInfo, esimele umzimba, okungewona ama-API. Sigcizelela ukuthi isibambo sazi kuphela indlela eya kusisetshenziswa esihlobene nempande yendawo yokusebenza futhi asiqukethe isixhumanisi solwazi lwensiza. Izinto zolwazi lwensiza zakha lokho okubizwa ngokuthi “isihlahla sesici”. Lesi sakhiwo sedatha senziwe ngokuphelele kumemori. Ukuze uthole isibonelo solwazi lwensiza esihambelana nesibambo, isihlahla se-elementi sinqanyulwa ngokuvumelana nendlela egcinwe kuleso sibambo.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 2. IResource kanye neResourceInfo

Njengoba sizobona kamuva, idizayini eyisisekelo yemodeli yensiza (esingayibiza ngokuthi isibambo) isetshenziswa ku-Eclipse nakwamanye amamodeli. Okwamanje, ake sibhale ezinye zezinto ezihlukile zalo mklamo:

  • Isibambo siyinto yenani. Izinto zenani yizinto ezingaguquleki ukulingana kwazo okungasuselwe kubunikazi. Izinto ezinjalo zingasetshenziswa ngokuphepha njengezihluthulelo ezitsheni ezisheshisiwe. Izimo eziningi zokubamba zingabhekisela esisetshenziswa esifanayo. Ukuze uziqhathanise, udinga ukusebenzisa indlela ye-equals(Object).
  • Isibambo sichaza ukuziphatha kwensiza, kodwa ayiqukethe ulwazi mayelana nesimo sensiza (ukuphela kwedatha eyigcinayo "ukhiye", indlela eya esisetshenziswa).
  • Isibambo singabhekisa esisetshenziswa esingekho (kungaba insiza engakenziwa, noma insiza eseyivele isuliwe). Ukuba khona kwensiza kungahlolwa kusetshenziswa indlela ye-IResource.exists().
  • Eminye imisebenzi ingenziwa ngokusekelwe kuphela kulwazi olugcinwe kusibambo ngokwaso (okuthiwa imisebenzi yokubamba kuphela). Izibonelo IResource.getParent(), getFullPath(), njll. Insiza ayidingi ukuba khona ukuze umsebenzi onjalo uphumelele. Imisebenzi edinga insiza ukuthi ibe khona ukuze iphumelele iphonsa i-CoreException uma insiza ingekho.

I-Eclipse inikeza indlela ephumelelayo yokwazisa izinguquko zensiza yendawo yokusebenza (Umfanekiso 3). Izinsiza zingashintsha ngenxa yezenzo ezenziwe ngaphakathi kwe-Eclipse IDE ngokwayo noma ngenxa yokuvumelanisa nesistimu yefayela. Kuzo zombili izimo, amaklayenti abhalisele izaziso anikezwa ulwazi oluningiliziwe mayelana nezinguquko ngendlela "yemithombo ye-deltas". I-delta ichaza izinguquko phakathi kwezifunda ezimbili zensiza yendawo yokusebenza (sub-)sihlahla futhi yona ngokwayo iyisihlahla, indawo ngayinye echaza ushintsho kunsiza futhi iqukethe uhlu lwama-deltas ezingeni elilandelayo elichaza izinguquko kuzinsiza zezingane.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 3. IResourceChangeEvent kanye ne-IResourceDelta

Indlela yokwazisa esuselwe ku-delta yensiza inalezi zimpawu ezilandelayo:

  • Ushintsho olulodwa kanye nezinguquko eziningi zichazwa kusetshenziswa isakhiwo esifanayo, njengoba i-delta yakhiwe kusetshenziswa isimiso sokubunjwa okuphindaphindiwe. Amakhasimende abhalisile angacubungula izaziso zoshintsho lwensiza esebenzisa ukwehla okuphindaphindayo ngesihlahla se-deltas.
  • I-delta iqukethe ulwazi oluphelele mayelana nezinguquko kusisetshenziswa, okuhlanganisa ukunyakaza kwayo kanye/noma izinguquko “kumaka” ahlotshaniswa nayo (isibonelo, amaphutha okuhlanganiswa amelelwa njengabamaka).
  • Njengoba izinkomba zensiza zenziwe ngesibambo, i-delta ngokwemvelo ingabhekisela kumthombo okude.

Njengoba sizobona maduzane, izingxenye eziyinhloko zedizayini yendlela yokwazisa yoshintsho lwemodeli yensiza nazo zibalulekile kwamanye amamodeli asekelwe isibambo.

I-JDT Core

Imodeli yensiza yendawo yokusebenza ye-Eclipse iyimodeli ebalulekile yolimi-agnostic. Ingxenye ye-JDT Core (plugin org.eclipse.jdt.core) inikeza i-API yokuzulazula nokuhlaziya isakhiwo sendawo yokusebenza ngombono we-Java, lokho okubizwa ngokuthi “imodeli ye-Java” (Imodeli ye-Java). Le API ichazwa ngokwezinto ze-Java, ngokuphambene nemodeli yensiza engaphansi ye-API, echazwa ngokwamafolda namafayela. Ukuxhumana okuyinhloko kwesihlahla sesici se-Java kukhonjisiwe ku-Fig. 4.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 4. Java Model Elements

Imodeli ye-Java isebenzisa isibambo/isisho somzimba esifanayo njengemodeli yensiza (Umfanekiso 5). I-IJavaElement iyisibambo, futhi i-JavaElementInfo idlala indima yomzimba. I-interface ye-IJavaElement ichaza iphrothokholi evamile kuzo zonke izici ze-Java. Ezinye zezindlela zayo ziyisibambo kuphela: getElementName(), getParent(), njll. Into ye-JavaElementInfo igcina isimo se-elementi ehambisanayo: ukwakheka kwayo nezibaluli.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 5. IJavaElement kanye ne-JavaElementInfo

Imodeli ye-Java inomehluko othile ekusetshenzisweni kwesibambo/isakhiwo somzimba esiyisisekelo uma kuqhathaniswa nemodeli yensiza. Njengoba kuphawuliwe ngenhla, kumodeli yensiza, isihlahla sesici, esinamanodi ayizinto zolwazi lwensiza, siqukethwe ngokuphelele enkumbulweni. Kodwa imodeli ye-Java ingaba nenani elikhulu kakhulu lezinto kunesihlahla sensiza, ngoba iphinde imele isakhiwo sangaphakathi se-.java kanye namafayela we-.class: izinhlobo, izinkambu, nezindlela.

Ukuze ugweme ukwakheka ngokuphelele kwesihlahla sonke sezakhi enkumbulweni, ukusetshenziswa kwemodeli ye-Java kusebenzisa inqolobane ye-LRU kasayizi olinganiselwe wolwazi lwesici, lapho ukhiye uyisibambo se-IJavaElement. izinto zolwazi lwesici zidalwa ngokufunwa njengoba isihlahla se-elementi sizulazula. Kulokhu, izinto ezisetshenziswa kancane kancane ziyakhishwa kunqolobane, futhi ukusetshenziswa kwenkumbulo yemodeli kuhlala kunqunyelwe kusayizi wenqolobane oshiwo. Lena enye inzuzo yomklamo osekelwe isibambo, ofihla ngokuphelele imininingwane enjalo yokuqaliswa kukhodi yeklayenti.

Indlela yokwazisa izinguquko ezintweni ze-Java ngokuvamile ifana nendlela yokulandelela izinguquko ezinsizeni zendawo yokusebenza okukhulunywe ngazo ngenhla. Iklayenti elifisa ukuqapha izinguquko kumodeli ye-Java libhalisa kuzaziso, ezimelelwa njengento ye-ElementChangedEvent equkethe i-IJavaElementDelta (Umfanekiso 6).

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 6. ElementChangedEvent kanye ne-IJavaElementDelta

Imodeli ye-Java ayinalo ulwazi mayelana nemizimba yezindlela noma ukulungiswa kwamagama, ngakho-ke ukuze kuhlaziywe kabanzi ikhodi ebhalwe ku-Java, i-JDT Core inikeza imodeli eyengeziwe (engasekelwe isibambo): isihlahla se-syntax esingabonakali (isihlahla se-syntax esingaqondakali, i-AST). I-AST imele umphumela wokuhlaziya umbhalo owumthombo. Amanodi e-AST ahambisana nezakhi zesakhiwo semojula yomthombo (izimemezelo, opharetha, izinkulumo, njll.) futhi aqukethe ulwazi mayelana nezixhumanisi ze-elementi ehambisanayo kumbhalo womthombo, kanye (njengenketho) ulwazi mayelana nokulungiswa kwegama uhlobo lwezixhumanisi kulokho okuthiwa ukubopha. Izibopho ziyizinto ezimelela izinhlangano eziqanjwe igama, njengezinhlobo, izindlela, neziguquguqukayo, ezaziwa kumdidiyeli. Ngokungafani namanodi e-AST, akha isihlahla, izibopho zisekela ireferensi ephambene futhi ngokuvamile zakha igrafu. I-abstract class ASTNode yisigaba sesisekelo esijwayelekile sawo wonke ama-AST node. Ama-subclasses e-ASTNode ahambisana nezakhiwo ezithile zohlelo lolimi lwe-Java.

Ngenxa yokuthi izihlahla ze-syntax zingadla inani elikhulu lenkumbulo, i-JDT igcina i-AST eyodwa kuphela yomhleli osebenzayo. Ngokungafani nemodeli ye-Java, i-AST ivame ukubukwa njengemodeli "ephakathi," "yesikhashana" amalungu ayo okungafanele abanjwe amaklayenti ngaphandle komongo wokusebenza okuholele ekudalweni kwe-AST.

Amamodeli amathathu asohlwini (imodeli ye-Java, i-AST, isibopho) ndawonye akha isisekelo sokwakha “amathuluzi okuthuthukisa ahlakaniphile” ku-JDT, okuhlanganisa nomhleli we-Java onamandla “anabasizi” abahlukahlukene, izenzo ezihlukahlukene zokucubungula ikhodi yomthombo (kuhlanganise nokuhlela uhlu lokungenisa amagama nokufometha ngokwesitayela esenziwe ngokwezifiso), amathuluzi okusesha nawokwenza kabusha. Kulokhu, imodeli ye-Java idlala indima ekhethekile, ngoba yiyona esetshenziswa njengesisekelo sokumelela okubonakalayo kwesakhiwo sohlelo oluthuthukiswayo (isibonelo, ku-Package Explorer, Outline, Search, Call Hierarchy, kanye Thayipha Ukulandelana).

Izingxenye ze-Eclipse ezisetshenziswe ku-1C:Amathuluzi Okuthuthukiswa Kwebhizinisi

Emfanekisweni. Umfanekiso wesi-7 ubonisa izingxenye ze-Eclipse ezakha isisekelo senkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 7. I-Eclipse njengenkundla ye-1C:Enterprise Development Tools

I-Eclipse Platform inikeza ingqalasizinda eyisisekelo. Sibheke ezinye izici zale ngqalasizinda esigabeni esidlule.

I-Eclipse Modelling Framework (I-EMF) inikeza izindlela ezijwayelekile zokumodela idatha ehleliwe. I-EMF ihlanganiswe ne-Eclipse Platform, kodwa futhi ingasetshenziswa ngokuhlukile ezinhlelweni ezijwayelekile ze-Java. Imvamisa, abathuthukisi abasha be-Eclipse sebejwayelene kahle ne-EMF, yize bengakabuqondi ngokugcwele ubunkimbinkimbi be-Eclipse Platform. Esinye sezizathu zokuthandwa okunjalo okufaneleke kahle ukuklama kwendawo yonke, okuhlanganisa, phakathi kwezinye izinto, i-API yezinga le-meta ehlanganisiwe, evumela ukuthi usebenze nanoma iyiphi imodeli ye-EMF ngendlela evamile. Ukuqaliswa okuyisisekelo kwezinto zemodeli ezinikezwe i-EMF kanye nesistimu engaphansi yokukhiqiza ikhodi yemodeli ngokusekelwe kumodeli ye-meta kukhulisa kakhulu isivinini sokuthuthukiswa futhi kunciphisa inani lamaphutha. I-EMF futhi iqukethe izindlela zokuhlanganisa amamodeli, ukulandelela izinguquko kumodeli, nokunye okuningi.

Njenganoma yiliphi ithuluzi lenhloso evamile ngempela, i-EMF ifaneleka ukuxazulula izinkinga eziningi zokumodela, kodwa ezinye izigaba zamamodeli (isibonelo, amamodeli asekelwe isibambo okukhulunywe ngawo ngenhla) angase adinge amathuluzi okumodela akhethekile. Ukukhuluma nge-EMF kuwumsebenzi ongabongi, ikakhulukazi phakathi kwemikhawulo elinganiselwe ye-athikili eyodwa, njengoba lokhu kuyisihloko sencwadi ehlukile, futhi ewugqinsi. Ake siqaphele kuphela ukuthi uhlelo olusezingeni eliphezulu lokujwayelekile okungaphansi kwe-EMF luvumele ukuzalwa kohlu lonke lwamaphrojekthi anikezelwe ukumodela, afakwe kuphrojekthi yezinga eliphezulu. I-Eclipse Modelling kanye ne-EMF ngokwayo. Enye iphrojekthi enjalo i-Eclipse Xtext.

I-Eclipse Xtext inikeza ingqalasizinda "yemodeli yombhalo". I-Xtext isebenzisa I-ANTLR yokuhlaziya umbhalo womthombo kanye ne-EMF yokumela i-ASG ewumphumela (igrafu ye-abstract semantic, empeleni eyinhlanganisela ye-AST nokubopha), ebizwa nangokuthi "imodeli ye-semantic". Uhlelo lolimi lolimi olumodelwe yi-Xtext luchazwe ngolimi lwe-Xtext. Lokhu akukuvumeli kuphela ukuthi ukhiqize incazelo yohlelo lolimi lwe-ANTLR, kodwa futhi uthole indlela yokulinganisa ye-AST (okungukuthi. I-Xtext inikeza kokubili umhlahleli kanye nongahlaziyi), iseluleko somongo, kanye nenani lezinye izingxenye zolimi. Ngakolunye uhlangothi, ulimi lohlelo lolimi olusetshenziswa ku-Xtext aluguquguquki kangako, uma sithi, ulimi lohlelo olusetshenziswa ku-ANTLR. Ngakho-ke, kwesinye isikhathi kuyadingeka ukuthi "ugobe" ulimi olusetshenzisiwe ku-Xtext, okuvamise ukuthi akuyona inkinga uma sikhuluma ngolimi oluthuthukiswayo kusukela ekuqaleni, kodwa lungase lungamukeleki ezilimini ezine-syntax esivele isunguliwe. Ngaphandle kwalokhu, i-Xtext njengamanje iyithuluzi elivuthwe kakhulu, elicebile, futhi elisebenza ngezindlela eziningi ku-Eclipse lokwakha izilimi zokuhlela namathuluzi okuzithuthukisa. Ikakhulukazi, iyithuluzi ekahle prototyping ngokushesha izilimi eziqondene nesizinda (ulimi oluqondene nesizinda, i-DSL). Ngokungeziwe “kumgogodla wolimi” oshiwo ngenhla osuselwe ku-ANTLR ne-EMF, i-Xtext inikeza izingxenye eziningi eziwusizo ezisezingeni eliphezulu, okuhlanganisa izindlela zokukhomba, ukwakhiwa okwandayo, “umhleli ohlakaniphile”, nokunye okuningi, kodwa ishiya isibambo- amamodeli olimi asekelwe. Njenge-EMF, i-Xtext iyisihloko esifanele incwadi ehlukile, futhi asikwazi ngisho nokukhuluma kafushane ngawo wonke amakhono ayo njengamanje.

I-1C:Amathuluzi Okuthuthukisa Ibhizinisi asebenzisa kokubili i-EMF ngokwayo kanye nenani lamaphrojekthi we-Eclipse Modelling. Ikakhulukazi, i-Xtext ingesinye sezisekelo zamathuluzi okuthuthukisa anjalo 1C:Izilimi zebhizinisi njengolimi lokuhlela olwakhelwe ngaphakathi nolimi lwemibuzo. Esinye isisekelo sala mathuluzi okuthuthukisa iphrojekthi ye-Eclipse Handly, esizoxoxa ngayo ngokuningiliziwe (ezingxenyeni ze-Eclipse ezisohlwini, namanje ayaziwa kancane).

I-Eclipse Hand, iphrojekthi engaphansi yephrojekthi yezinga eliphezulu ye-Eclipse Technology, yavela njengomphumela wekhodi yokuqala yomnikelo ku-Eclipse Foundation eyenziwe yi-1C ngo-2014. Kusukela lapho, i-1C iqhubekile nokweseka ukuthuthukiswa kwephrojekthi: Ama-handly commiters angabasebenzi benkampani. Le phrojekthi incane, kodwa ithatha indawo eyingqayizivele ku-Eclipse: inhloso yayo enkulu ukusekela ukuthuthukiswa kwamamodeli asekelwe isibambo.

Izimiso zezakhiwo eziyisisekelo zamamodeli asekelwe isibambo, njengesibambo/isisho somzimba, kwaxoxwa ngakho ngenhla kusetshenziswa imodeli yensiza kanye nemodeli ye-Java njengezibonelo. Iphinde yaphawula ukuthi kokubili imodeli yensiza kanye nemodeli ye-Java kuyizisekelo ezibalulekile zamathuluzi okuthuthukisa i-Eclipse Java (JDT). Futhi njengoba cishe wonke amaphrojekthi e-*DT Eclipse anesakhiwo esifana ne-JDT, ngeke kube ihaba elikhulu ukusho ukuthi amamodeli asekelwe isibambo angaphansi kwamaningi, uma kungewona wonke ama-IDE akhelwe phezu kwe-Eclipse Platform. Isibonelo, i-Eclipse C/C++ Development Tooling (CDT) inemodeli esekelwe isibambo ye-C/C++ edlala indima efanayo esakhiweni se-CDT njengoba imodeli ye-Java yenza ku-JDT.

Ngaphambi kokuthi Handly, i-Eclipse ayizange inikeze amalabhulali akhethekile okwakha amamodeli olimi asekelwe ngokubamba. Amamodeli akhona njengamanje adalwe ikakhulukazi ngokushintshanisa ngokuqondile ikhodi yemodeli ye-Java (aka kopisha/unamathise), ezimeni lapho kuvumela khona I-Eclipse Public License (EPL). (Ngokusobala, lokhu ngokuvamile akuyona indaba engokomthetho, ake sithi, amaphrojekthi we-Eclipse ngokwawo, kodwa hhayi emikhiqizweni evaliwe.) Ngaphezu kokungahlelekile kwayo okungokwemvelo, le nqubo yethula izinkinga ezaziwa kakhulu: ukuphindwaphindwa kwekhodi okwethulwa lapho ujwayelana namaphutha, njll. Okubi nakakhulu ukuthi amamodeli aphumayo ahlala "eyizinto ngokwazo" futhi awasebenzisi ithuba lokuhlanganisa. Kodwa ukuhlukanisa imiqondo evamile kanye nezinqubo ezilandelwayo zamamodeli olimi asekelwe isibambo kungase kuholele ekwakhiweni kwezingxenye ezingasetshenziswa kabusha ukuze kusetshenzwe ngazo, okufana nokwenzeka endabeni ye-EMF.

Akukhona ukuthi u-Eclipse wayengaziqondi lezi zindaba. Emuva ngo-2005 UMartin Aeschlimann, ifinyeza ulwazi lokuthuthukisa i-CDT prototype, kwaphikisana isidingo sokudala ingqalasizinda efanayo yamamodeli olimi, okuhlanganisa amamodeli asekelwe ngokubamba. Kodwa, njengoba kuvame ukwenzeka, ngenxa yemisebenzi ebaluleke kakhulu, ukuqaliswa kwale mibono akuzange kufinyelele kukho. Ngaleso sikhathi, ukwenziwa kwezinto * kwekhodi ye-DT kusengesinye sezihloko ezingathuthukisiwe ku-Eclipse.

Ngomqondo othile, iphrojekthi ye-Handly yakhelwe ukuxazulula cishe izinkinga ezifanayo njenge-EMF, kodwa ngamamodeli asekelwe isibambo, futhi ikakhulukazi lawo olimi (okungukuthi, amele izici zesakhiwo solimi oluthile lokuhlela). Imigomo eyinhloko ebekwa lapho uklama Handly ibhalwe ngezansi:

  • Ukuhlonzwa kwezifinyezo eziyinhloko zendawo yesifundo.
  • Ukunciphisa umzamo kanye nokuthuthukisa ikhwalithi yokusetshenziswa kwamamodeli olimi asekelwe isibambo ngokusebenzisa ikhodi futhi.
  • Ukunikeza i-API yeleveli ye-meta ehlanganisiwe kumamodeli avelayo, okwenza kube nokwenzeka ukudala izingxenye ze-IDE ezivamile ezisebenza ngamamodeli asekelwe isibambo solimi.
  • Ukuvumelana nezimo kanye scalability.
  • Ukuhlanganiswa ne-Xtext (kwesendlalelo esihlukile).

Ukuze kugqanyiswe imiqondo evamile namaphrothokholi, ukusetshenziswa okukhona kwamamodeli asekelwe isibambo solimi kwahlaziywa. Ukuxhumana okuyinhloko nokusebenza okuyisisekelo okuhlinzekwe yi-Handly kuboniswa ku-Fig. 8.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 8. Ukuxhumana okujwayelekile kanye nokusetshenziswa okuyisisekelo kwama-elementi e-Handly

I-interface ye-IElement imele isibambo se-elementi futhi ijwayelekile kuma-elementi awo wonke amamodeli asuselwa ku-Handly-based. I-abstract class Element isebenzisa isibambo esijwayelekile/umzimba (Fig. 9).

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 9. I-Ielement nesibambo esijwayelekile/ukusetshenziswa komzimba

Ngaphezu kwalokho, i-Handly inikeza indlela ejwayelekile yokwazisa mayelana nezinguquko kuzinto zemodeli (Fig. 10). Njengoba ubona, ifana kakhulu nezindlela zokwazisa ezisetshenziswe kumodeli yensiza kanye nemodeli ye-Java, futhi isebenzisa i-IElementDelta ukuze inikeze ukumelwa okuhlangene kolwazi loshintsho lwesici.

I-Eclipse njengenkundla yobuchwepheshe ye-1C:Amathuluzi Okuthuthukisa Ibhizinisi
Ilayisi. 10. Ukuxhumana okujwayelekile kanye nokusetshenziswa okuyisisekelo kwendlela yokwazisa nge-Handly

Ingxenye ethi Handly okuxoxwe ngayo ngenhla (Fig. 9 and 10) ingasetshenziswa ukumela cishe noma yimaphi amamodeli asekelwe isibambo. Okokudala ngokolimi amamodeli, iphrojekthi inikeza ukusebenza okwengeziwe - ikakhulukazi, ukuxhumana okuvamile kanye nokusetshenziswa okuyisisekelo kwezakhi zesakhiwo sombhalo womthombo, okuthiwa izakhi zomthombo (Umdwebo 8). Isixhumi esibonakalayo se-ISourceFile simele ifayela elingumthombo, futhi i-ISourceConstruct imelela ingxenye engaphakathi kwefayela elingumthombo. Izigaba ezingabonakali i-SourceFile ne-SourceConstruct zisebenzisa izindlela ezijwayelekile zokusekela ukusebenza ngamafayela omthombo nezici zawo, isibonelo, ukusebenza ngezigcinalwazi zombhalo, ukubophezela ezixhumanisini ze-elementi embhalweni womthombo, amamodeli ahlanganisa nokuqukethwe kwamanje kwebhafa yekhophi esebenzayo. , njll. Ukusebenzisa lezi zindlela ngokuvamile kuyinselele impela, futhi Handly kunganciphisa kakhulu umzamo wokuthuthukisa amamodeli olimi asekelwe kwisibambo ngokunikeza ukusetshenziswa okuyisisekelo kwekhwalithi ephezulu.

Ngokungeziwe kuzindlela eziyinhloko ezibalwe ngenhla, Isandla sinikeza ingqalasizinda yamabhafa ombhalo nezifinyezo, usekelo lokuhlanganiswa nabahleli bekhodi yomthombo (okuhlanganisa ukuhlanganiswa okungaphandle kwebhokisi nomhleli we-Xtext), kanye nezinye izingxenye ze-UI ezivamile sebenza nabahleli bekhodi yomthombo. Amamodeli aphathwayo afana nohlaka lohlaka. Ukukhombisa amandla ayo, iphrojekthi inikeza izibonelo ezimbalwa, okuhlanganisa ukusetshenziswa kwemodeli ye-Java kokuthi Handly. (Uma kuqhathaniswa nokuqaliswa okuphelele kwemodeli ye-Java ku-JDT, le modeli yenziwe lula ngamabomu ukuze icace kakhudlwana.)

Njengoba kuphawuliwe ngaphambili, ukugxila okukhulu phakathi nomklamo wokuqala we-Handly nokuthuthuka okwalandela kwaba futhi kuyaqhubeka nokuba sekwehleni nasekuguquguqukeni.

Eqinisweni, amamodeli asekelwe isibambo alinganisa kahle "ngokuklama". Isibonelo, isibambo/isisho somzimba sikuvumela ukuthi ukhawulele inani lememori elisetshenziswa imodeli. Kodwa kukhona futhi ama-nuances. Ngakho-ke, lapho kuhlolwa ngesandla ukukala, inkinga yatholwa ekusetshenzisweni kwendlela yesaziso - lapho inani elikhulu lezinto lishintshwa, ukwakha ama-deltas kuthathe isikhathi esiningi kakhulu. Kwavela ukuthi inkinga efanayo yayikhona kumodeli ye-JDT Java, lapho ikhodi ehambisanayo yashintshwa khona. Silungise iphutha ku-Handly futhi salungiselela isiqeshana esifanayo se-JDT, esamukelwe ngokubonga. Lesi isibonelo esisodwa nje lapho ukwethulwa kwe-Handly kumamodeli akhona kungase kube usizo, ngoba kulesi simo isiphazamisi esinjalo singalungiswa endaweni eyodwa nje.

Ukwenza ukusetshenziswa Kwezandla kumamodeli akhona asetshenziswayo kwenzeke ngokobuchwepheshe, ilabhulali kufanele ibe nokuguquguquka okuphawulekayo. Inkinga enkulu ukugcina ukuhambisana okubuyela emuva kuyo yonke imodeli ye-API. Le nkinga yaxazululwa ngo Ngokuzenzakalelayo 0.5 ngokuhlukanisa ngokucacile imodeli ethile ye-API, echazwe futhi elawulwa ngokugcwele unjiniyela, kusukela ku-API yeleveli ye-meta ehlanganisiwe enikezwa ilabhulali. Lokhu akukwenzi kube nokwenzeka ngokobuchwepheshe ukusebenzisa i-Handly ekusetshenzisweni okukhona kakade, kodwa futhi kunikeza unjiniyela wemodeli entsha inkululeko ebalulekile lapho eklama i-API.

Ukuvumelana nezimo kunezinye izici futhi. Isibonelo, i-Handly ibeka cishe imikhawulo kusakhiwo semodeli futhi ingasetshenziswa ukumodela kokubili inhloso evamile kanye nezilimi eziqondene nesizinda esithile. Lapho kwakhiwa ukwakheka kwefayela lomthombo, Handly ayichazi noma yiluphi uhlobo oluthile lokumelwa kwe-AST futhi, ngokomthetho, ayidingi nokuba khona kwe-AST ngokwayo, ngaleyo ndlela iqinisekise ukuhambisana cishe nanoma iyiphi indlela yokuhlaziya. Ekugcineni, i-Handly isekela ukuhlanganiswa okugcwele nendawo yokusebenza ye-Eclipse, kodwa futhi ingasebenza ngokuqondile nezinhlelo zamafayela ngenxa yokuhlanganiswa kwayo ne-Eclipse. I-Eclipse File System (EFS).

Inguqulo yamanje Ngokuzenzakalelayo 0.6 yaphuma ngoDisemba 2016. Naphezu kweqiniso lokuthi iphrojekthi okwamanje isesimweni sokufukamela futhi i-API ayikalungiswa ekugcineni, i-Handly isivele isetshenziswe emikhiqizweni emibili emikhulu yezohwebo eyathatha ingozi yokwenza "njengabamukeli bokuqala", futhi, kufanele ngisho, ungazisoli okwamanje.

Njengoba kuphawuliwe ngenhla, omunye wale mikhiqizo yi-1C:Amathuluzi Okuthuthukiswa Kwebhizinisi, lapho i-Handly isetshenziswa kusukela ekuqaleni ukuze imodeli yesakhiwo sezinga eliphezulu le-1C: Izilimi zebhizinisi njengolimi lokuhlela olwakhelwe ngaphakathi kanye nolimi lombuzo. . Omunye umkhiqizo waziwa kancane emphakathini jikelele. Lokhu I-Codasip Studio, indawo edidiyelwe yokuklama ye-application-specific instruction-set processor (ASIP), esetshenziswa kokubili enkampanini yaseCzech i-Codasip ngokwayo kanye namakhasimende ayo, okuhlanganisa AMD, AVG, I-Mobileye, Imiklamo yeSigma. I-Codasip ibisebenzisa i-Handly ekukhiqizeni kusukela ngo-2015, iqala ngenguqulo Handly 0.2. Ukukhishwa kwakamuva kwe-Codasip Studio kusebenzisa inguqulo 0.5, ekhishwe ngoJuni 2016. U-Ondřej Ilčík, ohola ukuthuthukiswa kwe-IDE e-Codasip, uxhumene nephrojekthi, enikeza impendulo ebalulekile egameni "lomuntu wesithathu othola usizo". Wakwazi ngisho nokuthola isikhathi samahhala sokubamba iqhaza ngokuqondile ekuthuthukisweni kwephrojekthi, esebenzisa isendlalelo se-UI (~4000 imigqa yekhodi) kwesinye sezibonelo ze-Handly, imodeli ye-Java. Ulwazi oluthe xaxa mayelana nokusetshenziswa kwe-Handly by adopters lungatholakala ekhasini Izindaba zempumelelo iphrojekthi.

Sithemba ukuthi ngemva kokukhishwa kwenguqulo 1.0 enesiqinisekiso sokuzinza kwe-API kanye nephrojekthi eshiya isimo sokufukamela, i-Handly izoba nabamukeli abasha. Okwamanje, iphrojekthi iyaqhubeka nokuhlola futhi ithuthukise i-API, ikhulula ukukhishwa okubili "okukhulu" ngonyaka - ngoJuni (usuku olufanayo nokukhishwa kwe-Eclipse ngasikhathi sinye) no-December, okuhlinzeka ngohlelo olubikezelwayo abangathembela kulo abamukeli. Futhi singangeza ukuthi "izinga lesiphazamisi" lephrojekthi lihlala lisezingeni eliphansi njalo futhi i-Handly ibisebenza ngokwethembeka emikhiqizweni yabaqambi bokuqala kusukela ezinguqulweni zokuqala. Ukuze uqhubeke uhlole i-Eclipse Handly, ungasebenzisa Ukuqala Okokufundisa и Ukubuka konke okwakhiwe.

Source: www.habr.com

Engeza amazwana