Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso

Pamwe, kudzikatidzika kwezuva kubvira kare yaisada sumo chaiyo. Vanhu vazhinji vanoziva Eclipse nekuda kweEclipse Java maturusi ekuvandudza (JDT) Iyi ndiyo yakakurumbira yakavhurika-sosi Java IDE iyo vazhinji vanogadzira vanosanganisa neizwi rekuti "Eclipse". Nekudaro, Eclipse ipuratifomu yakawedzera yekubatanidza maturusi ekusimudzira (Eclipse Platform), uye akati wandei maIDE akavakirwa pahwaro hwayo, kusanganisira JDT. Eclipse ese ari maviri Eclipse Project, iyo yepamusoro-level chirongwa chinoronga kuvandudzwa kweEclipse Platform neJDT, uye Eclipse SDK, mhedzisiro yakaunzwa yebudiriro iyoyo. Chekupedzisira, Eclipse ndeye yakavhurika-sosi Nheyo ine nharaunda yakakura yemapurojekiti, asiri ese akanyorwa muJava kana ane chekuita nemidziyo yekuvandudza (semuenzaniso, mapurojekiti. Eclipse IoT ΠΈ Eclipse Science) Nyika yeEclipse yakasiyana zvikuru.

Muchinyorwa chino, chiri muchidimbu mune zvakasikwa, tichaedza kutarisa zvimwe zvekutanga zveEclipse architecture sepuratifomu yekuvaka yakasanganiswa maturusi ekusimudzira uye kupa pfungwa yekutanga yezvikamu zveEclipse zvinoumba hwaro hwetekinoroji. chikuva che "nyowani Configurator" 1C: Enterprise. 1C:Enterprise Development Tools. Ehe, ongororo yakadai inozonyanya kuve yekumusoro uye pane kushomeka, kusanganisira nekuti isu hatisi kutarisa chete kune vanogadzira Eclipse sevateereri vanotarisirwa. Nekudaro, isu tinovimba kuti kunyangwe vane ruzivo vanogadzira Eclipse vachakwanisa kuwana ruzivo runonakidza muchinyorwa. Semuenzaniso, isu tichataura nezve chimwe che "zvakavanzika zveEclipse", chirongwa chitsva uye chisingazivikanwe. Eclipse Handly, iyo yakavambwa uye yakatsigirwa na1C.
Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso

Nhanganyaya yeEclipse Architecture

Ngatitangei titarise zvimwe zvakajairika zveEclipse architecture tichishandisa muenzaniso Eclipse Java kuvandudza maturusi (JDT). Sarudzo yeJDT semuenzaniso haina tsaona. Iyi ndiyo yekutanga nharaunda yekusimudzira yakabatanidzwa kuoneka muEclipse. Mamwe * mapurojekiti eDT Eclipse, akadai seEclipse C/C++ Development Tooling (CDT), akagadzirwa gare gare uye anokwereta ese ekutanga misimboti yekuvaka uye yega sosi kodhi zvidimbu kubva kuJDT. Izvo zvakakosha zvezvivakwa zvakaiswa muJDT zvinoshanda nanhasi kune chero IDE yakavakirwa pamusoro peEclipse Platform, kusanganisira 1C:Enterprise Development Zvishandiso.

Chekutanga, zvinofanirwa kucherechedzwa kuti Eclipse inotaridzwa neyakajeka dhizaini yekuvaka, nekuparadzaniswa kwekuita kwemutauro-yakasununguka kubva pakushanda kwakagadzirirwa kutsigira chaiyo mitauro yemapurogiramu, uye kupatsanurwa kweUI-yakazvimirira "core" zvikamu kubva kune zvinobatanidzwa. ine inotsigira mushandisi interface.

Nekudaro, iyo Eclipse Platform inotsanangura yakajairwa, mutauro-yakazvimirira zvivakwa, uye maturusi ekuvandudza Java anowedzera yakazara-inoratidzwa Java IDE kuEclipse. Ose ari maviri Eclipse Platform uye JDT ane akati wandei, chimwe nechimwe chiri cheUI-chakazvimiririra "musimboti" kana UI layer (Mufananidzo 1).

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 1. Eclipse Platform uye JDT

Ngatinyorei zvinhu zvikuru zveEclipse Platform:

  • Runtime - Inotsanangura iyo plugin masisitimu. Eclipse inoratidzwa ne modular architecture. Chaizvoizvo, Eclipse muunganidzwa we "wedzero mapoinzi" uye "wedzero".
  • Nzvimbo yebasa - Inogadzirisa imwe kana akawanda mapurojekiti. Iyo purojekiti ine maforodha uye mafaera akaiswa mepu zvakananga kune iyo faira system.
  • Standard Widget Toolkit (SWT) -Inopa zvakakosha mushandisi interface zvinhu zvakasanganiswa neiyo inoshanda sisitimu.
  • JFace -Inopa akati wandei eUI masisitimu akavakirwa pamusoro peSWT.
  • Workbench - Inotsanangura iyo Eclipse UI paradigm: vapepeti, maonero, maonero.

Zvinofanira kutaurwa kuti Eclipse Platform inopawo zvimwe zvakawanda zvinobatsira zvekuvaka zvakabatanidzwa zvekuvandudza maturusi, zvinosanganisira Debug, Enzanisa, Tsvaga, uye Chikwata. Kutaurwa kwakakosha kunofanirwa kuitwa kweJFace Chinyorwa - hwaro hwekuvaka "smart edhita" yekodhi kodhi. Nehurombo, kunyangwe ongororo yakasarudzika yezvikamu izvi, pamwe nezvikamu zveUI, hazvigoneke mukati mechikamu chechinyorwa ichi, saka mune chasara chikamu ichi tichazvimisa pachedu kupfupiso yezvikuru "core" zvikamu zve. iyo Eclipse Platform uye JDT.

Core Runtime

Iyo Eclipse plugin infrastructure yakavakirwa pa OSGi uye inopiwa neprojekti Eclipse Equinox. Imwe neimwe Eclipse plugin ndeye OSGi bundle. Iyo OSGi yakatarwa inotsanangura, kunyanya, nzira dzekushandura uye kutsamira kugadzirisa. Kuwedzera kune aya akajairwa masisitimu, Equinox inosuma iyo pfungwa nzvimbo dzekuwedzera. Imwe neimwe plugin inogona kutsanangura yayo yekuwedzera mapoinzi, uye zvakare kusuma imwe mashandiro ("mawedzero") kune sisitimu uchishandisa mapoinzi ekuwedzera anotsanangurwa neamwechete kana mamwe maplugins. Chero tsananguro yakadzama yeOSGi uye Equinox masisitimu ari kunze kwechikamu chechinyorwa ichi. Ngatingo cherechedzai kuti modularization muEclipse yakazara (chero subsystem, kusanganisira Runtime, ine imwe kana anopfuura plugins), uye zvinenge zvese zviri muEclipse ndeyekuwedzera. Uyezve, idzi nheyo dzakaiswa muEclipse architecture kare isati yatanga OSGi (panguva iyoyo vaishandisa tekinoroji yavo, yakafanana neOSGi).

Core Workspace

Inenge chero nharaunda yekusimudzira yakavakirwa pamusoro peEclipse Platform inoshanda neEclipse workspace. Ndiyo nzvimbo yekushandira iyo inowanzo ine kodhi kodhi yekushandisa yakagadziriswa muIDE. Mepu yenzvimbo yekushanda yakananga kune faira system uye ine mapurojekiti, ane maforodha nemafaira. Aya mapurojekiti, maforodha, uye mafaera anodanwa zviwanikwa nzvimbo yebasa. Kuitwa kwenzvimbo yebasa muEclipse inoshanda senge cache ine chekuita nefaira system, izvo zvinoita kuti zvikwanise kukurumidza kukurumidzira kutenderera kwemuti wezviwanikwa. Mukuwedzera, nzvimbo yekushanda inopa huwandu hwemamwe mabasa, kusanganisira kuzivisa nzira yekuchinja kwezviwanikwa ΠΈ incremental builder infrastructure.

Iyo Core Resources chikamu (org.eclipse.core.resources plugin) ine basa rekutsigira nzvimbo yebasa nezviwanikwa zvayo. Kunyanya, chikamu ichi chinopa chirongwa chekuwana nzvimbo yekushanda mufomu resource models. Kuti ushande nemazvo nemuenzaniso uyu, vatengi vanoda nzira iri nyore yekupa chinongedzo kune sosi. Muchiitiko ichi, zvingave zvinodiwa kuvanza chinhu chinochengetedza zvakananga mamiriro ezvigadzirwa mumuenzaniso kubva pakuwana mutengi. Zvikasadaro, muchiitiko che, semuenzaniso, kudzima faira, mutengi anogona kuramba akabata chinhu chisisipo mumuenzaniso, nematambudziko anotevera. Eclipse inogadzirisa dambudziko iri uchishandisa chimwe chinhu chinonzi handle resource. Bata rinoita sekiyi (inongoziva chete nzira yekuenda kune sosi munzvimbo yebasa) uye inodzora zvachose kupinda kune yemukati modhi chinhu, icho chinochengeta zvakananga ruzivo nezve mamiriro echishandiso. Ichi chigadziro ndechekusiyana kwemaitiro Mubato/Muviri.

Mupunga. Mufananidzo 2 unoratidza Dimikira reMubato/Muviri semashandisirwo emhando yekushandisa. Iyo IResource interface inomiririra mubato wechishandiso uye iAPI, kusiyana neiyo Resource kirasi, iyo inoshandisa iyi interface, uye ResourceInfo kirasi, inomiririra muviri, isiri maAPI. Isu tinosimbisa kuti mubato unongoziva nzira inoenda kune sosi inoenderana nenzvimbo yebasa uye haina chinongedzo kune ruzivo rwezvekushandisa. Resource info zvinhu zvinoumba inonzi "element tree". Ichi chimiro che data chakanyatsogadzirwa mundangariro. Kuti uwane iyo resource info muenzaniso inoenderana nemubato, iyo element muti inofambiswa zvinoenderana negwara rakachengetwa mubato iwoyo.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 2. IResource uye ResourceInfo

Sezvatichaona gare gare, iyo yekutanga dhizaini yemhando yekushandisa (tinogona kuidaidza kuti kubata-yakavakirwa) inoshandiswa muEclipse kune mamwe mamodheru zvakare. Parizvino, ngatinyorei mamwe emhando dzakasiyana dzedhizaini iyi:

  • Mubato chinhu chakakosha. Value zvinhu zvinhu zvisingachinjiki izvo kuenzana kusingabvi pakuzivikanwa. Zvinhu zvakadaro zvinogona kushandiswa zvakachengeteka sekiyi mumidziyo ine hashed. Zviitiko zvakawanda zvemubato zvinogona kureva sosi imwechete. Kuti uzvienzanise, unofanirwa kushandisa nzira dzakaenzana (Chinhu).
  • Handle inotsanangura maitiro echishandiso, asi haina ruzivo nezve mamiriro eiyo sosi (iyo chete data yainochengeta ndiyo "kiyi", nzira inoenda kune sosi).
  • Bato rinogona kureva chishandiso chisipo (chingave chishandiso chisati chagadzirwa, kana sosi yakatodzimwa). Kuvepo kwechishandiso kunogona kuongororwa uchishandisa iyo IResource.exists() nzira.
  • Mamwe maoperation anogona kuitwa zvichibva chete paruzivo rwakachengetwa mubato pachawo (anonzi mabatiro-chete mashandiro). Mienzaniso ndeye IResource.getParent(), getFullPath(), nezvimwewo. Iyo sosi haidi kuvapo kuti basa rakadaro ribudirire. Mashandiro anoda sosi kuti ivepo kuti ibudirire kukanda CoreException kana sosi isipo.

Eclipse inopa nzira inoshanda yekuzivisa shanduko yenzvimbo yebasa (Mufananidzo 3). Zviwanikwa zvinogona kuchinja kana semhedzisiro yezviito zvakaitwa mukati meEclipse IDE pachayo kana semhedzisiro yekuwiriranisa neiyo faira system. Muzviitiko zvese izvi, vatengi vanonyorera kune zviziviso vanopihwa ruzivo rwakadzama nezve shanduko muchimiro che "resource deltas". Delta inotsanangura shanduko pakati penyika mbiri dzenzvimbo yebasa (sub-) muti uye iwo pachawo muti, imwe node inotsanangura shanduko kune sosi uye ine runyoro rwemadeltas padanho rinotevera rinotsanangura shanduko kune zviwanikwa zvevana.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 3. IResourceChangeEvent uye IResourceDelta

Iyo yekuzivisa meshini yakavakirwa pane resource deltas ine zvinotevera maitiro:

  • Shanduko imwe chete uye shanduko dzakawanda dzinotsanangurwa uchishandisa chimiro chakafanana, sezvo delta inovakwa uchishandisa musimboti wekudzokorodza kuumbwa. Vanyoreri vatengi vanogona kugadzirisa zviziviso zvekuchinja zviwanikwa vachishandisa inodzokorodza kudzika kuburikidza nemuti we deltas.
  • Iyo delta ine ruzivo rwakakwana nezve shanduko kune iyo sosi, kusanganisira kufamba kwayo uye / kana shanduko mu "micherechedzo" yakabatana nayo (semuenzaniso, zvikanganiso zvekubatanidza zvinomiririrwa semamaki).
  • Sezvo mareferensi ezvekushandisa achiitwa kuburikidza nemubato, delta inogona kunongedzera kure sosi.

Sezvatichaona munguva pfupi iri kutevera, zvikamu zvikuru zvekugadzirwa kweiyo resource modhi shanduko yekuzivisa masisitimu zvakare akakodzera kune mamwe mabatiro-akavakirwa modhi.

Iyo JDT Core

Iyo Eclipse workspace resource modhi ndiyo yakakosha mutauro-agnostic modhi. Iyo JDT Core chikamu (plugin org.eclipse.jdt.core) inopa API yekufambisa nekuongorora nzvimbo yebasa kubva pakuona kweJava, iyo inonzi "Java modhi" (Java modhi) Iyi API inotsanangurwa maererano neJava zvinhu, zvinopesana neiyo yepasi resource model API, iyo inotsanangurwa maererano nemaforodha nemafaira. Iyo mikuru yekupindirana kweiyo Java element muti inoratidzwa muFig. 4.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 4. Java Model Elements

Muenzaniso weJava unoshandisa chibatiso chimwechete/madimikira emuviri sechishandiso (Mufananidzo 5). IJavaElement ndiyo mubato, uye JavaElementInfo inotamba basa remuviri. Iyo IJavaElement interface inotsanangura protocol yakajairika kune ese Java zvinhu. Dzimwe dzenzira dzayo dzinobata-chete: getElementName(), getParent(), etc. Chinhu cheJavaElementInfo chinochengetedza mamiriro echinhu chinoenderana: chimiro chayo uye hunhu.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 5. IJavaElement uye JavaElementInfo

Iyo Java modhi ine mimwe misiyano mukushandiswa kweiyo yekutanga mubato / dhizaini yemuviri kana ichienzaniswa neiyo resource modhi. Sezvataurwa pamusoro apa, mune resource modhi, iyo element tree, iyo node iri resource info zvinhu, irimo mundangariro. Asi mufananidzo weJava unogona kuva nenhamba yakakura zvikuru yezvinhu kupfuura muti wekushandisa, nokuti inomiririrawo chimiro chemukati che.java uye .class mafaira: marudzi, minda, uye nzira.

Kuti udzivise kunyatsoita muti wese wezvinhu mundangariro, iyo Java modhi yekumisikidza inoshandisa yakaganhurwa saizi LRU cache yechinhu info, uko kiyi inobata IJavaElement. element info zvinhu zvinogadzirwa pakudiwa sezvo muti we element unofambiswa. Muchiitiko ichi, zvinhu zvisinganyanyi kushandiswa zvinodzingwa kubva mucheki, uye mashandisirwo emumodhi anoramba akaganhurirwa kune yakatsanangurwa cache saizi. Iyi ndiyo imwe bhenefiti yekubata-yakavakirwa dhizaini, iyo inovanza zvachose ruzivo rwakadaro rwekuita kubva kune kodhi yemutengi.

Iyo nzira yekuzivisa shanduko kuJava zvinhu zvakangofanana nenzira yekutevera shanduko kune yebasa zviwanikwa zvakurukurwa pamusoro. Mutengi anoda kutarisa shanduko muJava modhi anonyoresa kune zviziviso, izvo zvinomiririrwa seElementChangedEvent chinhu chine IJavaElementDelta (Mufananidzo 6).

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 6. ElementChangedEvent uye IJavaElementDelta

Iyo Java modhi haina ruzivo nezve nzira miviri kana kugadzirisa zita, saka kune yakadzama ongororo yekodhi yakanyorwa muJava, JDT Core inopa imwe yekuwedzera (isina-mubato-yakavakirwa) modhi: abstract syntax tree (abstract syntax muti, AST). AST inomiririra mhedzisiro yekupatsanurwa kwemavara ekwakabva. AST node dzinoenderana nezvikamu zvechimiro cheiyo sosi module (zviziviso, vanoshanda, mataurirwo, nezvimwewo) uye ine ruzivo nezve kurongeka kwechinhu chinoenderana muzvinyorwa zvechinyorwa, pamwe ne (sesarudzo) ruzivo nezve kugadziriswa kwezita mu. chimiro chezvibatanidza kune zvinodaidzwa kusunga. Zvisungo zvinhu zvinomiririra masangano ane mazita, akadai semhando, nzira, uye zvakasiyana-siyana, zvinozivikanwa kumugadziri. Kusiyana neAST nodes, iyo inoumba muti, zvisungo zvinotsigira kuyambuka-referencing uye kazhinji zvinogadzira girafu. Iyo abstract kirasi ASTNode ndiyo yakajairika base kirasi kune ese maAST node. ASTNode madiki madiki anoenderana neakananga magadzirirwo emutauro weJava.

Nekuti miti ye syntax inogona kudya yakakura ndangariro, JDT inongobata imwe chete AST yemupepeti anoshanda. Kusiyana nemuenzaniso weJava, iyo AST inowanzoonekwa se "yepakati", "yenguva pfupi" modhi, zvinhu izvo vatengi havafanirwe kubata mareferensi kune kunze kwemamiriro ekushanda kwakatungamira mukusikwa kweAST.

Iwo akanyorwa matatu mamodheru (Java modhi, AST, zvisungo) pamwe chete zvinoumba hwaro hwekuvaka "hungwaru maturusi ekuvandudza" muJDT, kusanganisira ine simba Java mupepeti ane "vabatsiri" vakasiyana, zviito zvakasiyana-siyana zvekugadzirisa source code (kusanganisira kuronga runyoro rwekupinza kunze. mazita uye mafomati zvinoenderana nemaitiro akajairwa), kutsvaga nekugadzirisa maturusi. Muchiitiko ichi, iyo Java modhi inoita basa rakakosha, sezvo iri iyo inoshandiswa sehwaro hwechiratidzo chechimiro chechimiro chechishandiso chiri kuvandudzwa (semuenzaniso, muPackage Explorer, Outline, Tsvaga, Call Hierarchy, uye Type Hierarchy).

Eclipse zvikamu zvinoshandiswa mu1C:Enterprise Developments Zvishandiso

Mumufananidzo. Mufananidzo 7 unoratidza zvikamu zveEclipse zvinoumba hwaro hwepuratifomu tekinoroji ye1C:Enterprise Development Tools.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 7. Eclipse sepuratifomu ye1C:Enterprise Development Tools

Eclipse Platform inopa zvivakwa zvekutanga. Takatarisa zvimwe zvezvivakwa izvi muchikamu chapfuura.

Eclipse Modelling Framework (EMF) inopa yakajairika nzira yekuenzanisira yakarongeka data. EMF inosanganiswa neEclipse Platform, asi inogona zvakare kushandiswa zvakasiyana mune yakajairwa Java application. Kazhinji, vanogadzira Eclipse vatsva vakatonyatsoziva EMF, kunyangwe ivo vasati vanyatsonzwisisa kuomesesa kweEclipse Platform. Chimwe chezvikonzero zvekufarirwa kwakadaro kwakakodzera ndeye dhizaini yepasirese, iyo inosanganisira, pakati pezvimwe zvinhu, yakabatana meta-level API, iyo inobvumidza iwe kushanda nechero EMF modhi nenzira yakajairika. Iwo ekutanga mashandisirwo emhando yezvinhu zvakapihwa neEMF uye subsystem yekugadzira modhi kodhi yakavakirwa pameta-modhi inosimudzira zvakanyanya kukurumidza kwekusimudzira uye kuderedza huwandu hwekukanganisa. EMF zvakare ine nzira dzekuisa serializing modhi, yekutevera shanduko kune modhi, uye zvimwe zvakawanda.

Kungofanana nechero chishandiso chechinangwa chechokwadi, EMF inokodzera kugadzirisa matambudziko mazhinji ekuenzanisa, asi mamwe makirasi emamodheru (semuenzaniso, mamodheru-anotariswa pamusoro apa) angangoda mamwe maturusi ekuenzanisira. Kutaura nezve EMF ibasa rekusatenda, kunyanya mukati meganhuriro dzechinyorwa chimwe chete, sezvo ichi chiri nyaya yebhuku rakasiyana, uye rakakora. Ngationei chete kuti iyo yemhando yepamusoro sisitimu ye generalizations iri pasi peEMF yakabvumira kuzvarwa kwehuwandu hwemapurojekiti akatsaurirwa kuenzanisa, ayo anosanganisirwa muchikamu chepamusoro chirongwa. Eclipse Modelling pamwe chete neEMF pachayo. Imwe purojekiti yakadaro Eclipse Xtext.

Eclipse Xtext inopa "text modeling" zvivakwa. Xtext inoshandisa ANTLR yekutsanangudza chinyorwa chekwakabva uye EMF yekumiririra inozobuda ASG (abstract semantic graph, inova musanganiswa weAST nemabindings), inonziwo "semantic modhi". Iyo girama yemutauro wakaenzanisirwa neXtext inotsanangurwa mumutauro weXtext. Izvi zvinokutendera kuti usangogadzira tsananguro yegirama yeANTLR, asi zvakare kuti uwane iyo AST serialization mashini (kureva Xtext inopa zvese zviri zviviri parser uye unparser), chinongedzo chechinyorwa, uye akati wandei ezvimwe zvikamu zvemitauro. Kune rimwe divi, mutauro wegirama unoshandiswa muXtext hauchinjiki pane, toti, mutauro wegirama unoshandiswa muANTLR. Naizvozvo, dzimwe nguva zvinodikanwa "kukotamisa" mutauro wakashandiswa kuXtext, rinowanzo risiri dambudziko kana tichitaura nezve mutauro uri kuvandudzwa kubva mukutanga, asi ungave usingagamuchirwe kumitauro ine syntax yakatosimbiswa. Zvisinei neizvi, Xtext parizvino ndiyo yakanyanya kukura, chimiro-chakapfuma, uye chinoshandiswa zvakasiyana-siyana muEclipse yekuvaka mitauro yekuronga uye maturusi ekuvandudza kwavari. Kunyanya, chishandiso chakanakira kukurumidza prototyping mitauro yakanangana nenzvimbo (domain-specific language, DSL). Pamusoro peiyo yataurwa pamusoro "yemutauro musimboti" yakavakirwa paANTLR neEMF, Xtext inopa akawanda anobatsira epamusoro-level zvikamu, zvinosanganisira indexing masisitimu, kuwedzera kuvaka, "smart editor", uye zvakawanda, zvakawanda, asi inosiya mubato- mienzaniso yemitauro yakavakirwa. Kufanana neEMF, Xtext inyaya yakakodzera bhuku rakasiyana, uye isu hatigone kana kutaura muchidimbu nezvese kugona kwayo izvozvi.

1C:Enterprise Development Tools inoshingairira kushandisa ese EMF pachayo uye akati wandei mamwe mapurojekiti eEclipse Modelling. Kunyanya, Xtext ndiyo imwe yenheyo dzematurusi ekuvandudza akadaro 1C: Bhizinesi mitauro seyakavakirwa-mukati programming mutauro uye mubvunzo mutauro. Imwe hwaro hwezvishandiso zvekusimudzira izvi iEclipse Handly purojekiti, yatichakurukura zvakadzama (yezvikamu zveEclipse zvakanyorwa, ichiri isinganyanyozivikanwa).

Eclipse Handly, chikamu cheEclipse Technology chepamusoro-level chirongwa, chakabuda semhedzisiro yekutanga kodhi mupiro kuEclipse Foundation yakaitwa na1C muna 2014. Kubva ipapo, 1C yakaramba ichitsigira kuvandudzwa kweprojekiti: Handly commiters vashandi vekambani. Iyo purojekiti idiki, asi inogara yakasarudzika niche muEclipse: chinangwa chayo chikuru kutsigira kuvandudzwa kwemamodhi-akavakirwa modhi.

Misimboti yekuvaka yemhando-yakavakirwa modhi, semubato/dimikira remuviri, yakakurukurwa pamusoro pachishandiswa resource modhi uye Java modhi semuenzaniso. Yakacherekedzawo kuti ese ari maviri echishandiso modhi uye yeJava modhi hwaro hwakakosha hweEclipse Java kuvandudza maturusi (JDT). Uye sezvo angangoita ese *DT Eclipse mapurojekiti ane chivakwa chakafanana neJDT, hazvingave zvekuwedzeredza kutaura kuti mamodheru-akavakirwa pasi peakawanda, kana asiri ese maIDE akavakirwa pamusoro peEclipse Platform. Semuyenzaniso, Eclipse C/C++ Development Tooling (CDT) ine mubato-based C/C++ modhi inoita basa rimwechete mukuvakwa kweCDT sezvinoitwa neJava modhi muJDT.

Pamberi peHandly, Eclipse haina kupa maraibhurari akasarudzika ekuvaka mamodheru emitauro. Iwo mamodheru aripo parizvino akagadzirwa zvakanyanya nekugadzirisa zvakananga Java modhi kodhi (aka kopi / paste), mumamiriro ezvinhu apo inobvumira Eclipse Public License (EPL). (Zviripachena, iyi kazhinji haisi nyaya yepamutemo ye, toti, mapurojekiti eEclipse pachawo, asi kwete ezvigadzirwa zvakavharwa.) Pamusoro pekusagadzikana kwayo, nzira iyi inounza matambudziko anozivikanwa: kudzokorora kwekodhi kunounzwa kana uchichinjika kune zvikanganiso, etc. Chakanyanya kuipa ndechekuti mamodheru anozosara ari "zvinhu mukati mawo" uye haatore mukana weiyo mukana wekubatana. Asi kupatsanura pfungwa dzakajairwa uye maprotocol emhando dzemutauro wemubato zvinogona kutungamira mukugadzirwa kwezvinhu zvinogoneka zvekushanda nazvo, zvakafanana nezvakaitika munyaya yeEMF.

Hakusi kuti Eclipse aisanzwisisa nyaya idzi. Kare muna 2005 Martin Aeschlimann, muchidimbu chiitiko chekugadzira iyo CDT prototype, akakakavadzana kudiwa kwekugadzira chimiro chakafanana chemienzaniso yemitauro, kusanganisira mamodheru emubato. Asi, sezvinowanzoitika, nekuda kwemabasa epamusoro-soro, kushandiswa kwemazano aya hakuna kumbosvika pazviri. Zvichakadaro, factorization ye *DT kodhi ichiri imwe yemisoro isina kugadzirwa muEclipse.

Mune imwe pfungwa, iyo Handly purojekiti yakagadzirirwa kugadzirisa anenge matambudziko akafanana neEMF, asi yemhando-yakavakirwa modhi, uye kunyanya mitauro (kureva, inomiririra maumbirwo emumwe mutauro wechirongwa). Zvinangwa zvikuru zvinoiswa paunenge uchigadzira Handly zvakanyorwa pazasi:

  • Kuzivikanwa kwezvisungo zvikuru zvenzvimbo yenyaya.
  • Kuderedza kushanda nesimba uye kuvandudza kunaka kwekushandiswa kwemaitiro emutauro wemubato kuburikidza nekushandisazve kodhi.
  • Kupa yakabatana meta-level API kune anozobuda modhi, zvichiita kuti zvikwanise kugadzira zvakajairika maIDE zvikamu zvinoshanda nemitauro mubato-based modhi.
  • Flexibility uye scalability.
  • Kubatanidzwa neXtext (mune rakasiyana layer).

Kuratidza pfungwa dzakajairika uye maprotocol, kushandiswa kuripo kwemitauro mubato-kwakavakirwa modhi kwakaongororwa. Iyo huru yekupindirana uye yekutanga kuita inopihwa neHandly inoratidzwa muFig. 8.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 8. Common interfaces uye zvakakosha zvekushandisa zveHandly zvinhu

Iyo IElement interface inomiririra mubato wechinhu uye yakajairika kune zvinhu zveese maHandly-based modhi. The abstract class Element inoshandisa generalized handle/body mechanism (Fig. 9).

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 9. IElement uye generic mubato / kushandiswa kwemuviri

Mukuwedzera, Handly inopa maitiro akazara ekuzivisa pamusoro pekuchinja kwemuenzaniso zvinhu (Fig. 10). Sezvauri kuona, zvakangofanana nemaitiro ekuzivisa anoitwa mumuenzaniso wezvishandiso uye modhi yeJava, uye inoshandisa IElementDelta kupa inomiririra yakabatana yeruzivo rwekuchinja chinhu.

Eclipse sepuratifomu tekinoroji ye1C:Enterprise Development Zvishandiso
Mupunga. 10. General interfaces uye mashandisirwo ekutanga eHandly notification mechanism

The Handly chikamu chakurukurwa pamusoro (Fig. 9 uye 10) inogona kushandiswa kumiririra chero mubato-based modhi. Zvekugadzira linguistic mamodheru, iyo purojekiti inopa humwe mashandiro - kunyanya, akajairwa maratidziro uye ekutanga mashandisirwo ezvikamu zveiyo sosi yemavara mameseji, ayo anonzi source elements (Mufananidzo 8). Iyo ISourceFile interface inomiririra sosi faira, uye ISourceConstruct inomiririra chinhu chiri mukati meiyo faira faira. Iwo abstract makirasi SourceFile uye SourceConstruct shandisa maitiro akajairwa kutsigira kushanda neanobva mafaera uye zvinhu zvawo, semuenzaniso, kushanda nemavara mabhafa, anosunga kune anorongedzerwa echinhu chiri mugwaro chinyorwa, kuyananisa mamodheru nezviri mukati meiyo inoshanda kopi buffer. , nezvimwewo. Kushandisa nzira idzi kunowanzo kunetsa, uye Handly inogona kuderedza zvakanyanya kuedza kwekugadzira mamodheru emutauro wemamodheru nekupa zvemhando yepamusoro zvekushandisa.

Kuwedzera kune epakati masisitimu akanyorwa pamusoro, Handly inopa zvivakwa zvemavara mabhafa uye snapshots, tsigiro yekubatanidza neye source code edhita (kusanganisira kunze-kwe-iyo-bhokisi kubatanidzwa neXtext mupepeti), pamwe nezvimwe zvakajairika UI zvikamu izvo. shanda nevapepeti vekodhi. Kuenzanisira kugona kwayo, chirongwa ichi chinopa mienzaniso yakati wandei, kusanganisira kuita kweiyo Java modhi muHandly. (Kuenzaniswa nekuitwa kuzere kweiyo Java modhi muJDT, modhi iyi inorerutswa nemaune kuti ijekeswe.)

Sezvambotaurwa, chinonyanya kutariswa panguva yekutanga dhizaini yeHandly uye kusimudzira kwakazotevera kwaive uye kunoramba kuri pa scalability uye kuchinjika.

Muchidimbu, mamodhi-akavakirwa mamodheru anokwira zvakanaka "nekugadzira". Semuyenzaniso, mubato/madimikira emuviri anotendera iwe kudzikamisa huwandu hwendangariro inopedzwa nemuenzaniso. Asi panewo nuances. Saka, pakuyedzwa Nemaoko kuti scalability, dambudziko rakaonekwa mukushandiswa kwechiziviso chekuzivisa - apo nhamba huru yezvinhu yakashandurwa, kuvaka deltas kwakatora nguva yakawandisa. Zvakazoitika kuti dambudziko rimwechete raivepo mumuenzaniso weJDT Java, kubva kune iyo kodhi inoenderana yakambogadziriswa. Isu takagadzirisa bug muHandly uye takagadzirira chigamba chakafanana cheJDT, icho chakagamuchirwa nemufaro. Uyu ungori muenzaniso mumwechete wekuti kuunza Handly mune iripo modhi mashandisirwo anogona kuve anobatsira, nekuti mune iyi nyaya iyi bug inogona kugadziriswa munzvimbo imwechete.

Kuita kuti kushandisa Nemawoko mune iripo modhi mashandisirwo anogoneka, raibhurari inofanirwa kuve nekuchinjika kwakakosha. Dambudziko guru nderekuchengetedza kumashure kuenderana kune iyo API modhi. Dambudziko iri rakagadziriswa mukati Kubata 0.5 nekunyatsoparadzanisa muenzaniso-chaiyo API, inotsanangurwa uye inodzorwa zvizere nemugadziri, kubva kune yakabatana meta-level API inopiwa neraibhurari. Izvi hazvingoite kuti zviite tekinoroji kushandisa Handly mukuita kuripo, asi zvakare zvinopa iyo nyowani modhi yekuvandudza rusununguko rwakakosha pakugadzira iyo API.

Kuchinjika kune zvimwe zvinhu zvakare. Semuyenzaniso, Handly inoisa dzinenge dzisina zvirambidzo pachimiro cheiyo modhi uye inogona kushandiswa kuenzanisira ese ari maviri-chinangwa uye dura-chaiwo mitauro. Paunenge uchigadzira chimiro cheiyo faira faira, Handly haatauri chero imwe nzira yekumiririra AST uye, musimboti, haitombodi kuvepo kweAST pachayo, nekudaro kuve nechokwadi chekuenderana nechero nzira yekufambisa. Pakupedzisira, Handly inotsigira kubatanidzwa kwakazara neEclipse workspace, asi inogonawo kushanda zvakananga nemafaira masisitimu nekuda kwekubatanidzwa kwayo ne Eclipse File System (EFS).

Current version Kubata 0.6 yakabuda muna December 2016. Pasinei nokuti iyo purojekiti ikozvino iri mumamiriro ekugadzirisa uye API haisati yagadziriswa, Handly yakatoshandiswa muzvigadzirwa zviviri zvakakura zvekutengeserana zvakatora njodzi yekuita se "vatangi vekutanga", uye, ndinofanira kutaura, musazvidemba.

Sezvataurwa pamusoro apa, chimwe chezvigadzirwa izvi 1C:Enterprise Development Zvishandiso, apo Handly inoshandiswa kubva pakutanga kuenzanisira zvinhu zvemhando yepamusoro-soro yemhando yakadai 1C: Bhizinesi mitauro seyakavakirwa-mukati programming mutauro uye mubvunzo mutauro. . Chimwe chigadzirwa hachizivikanwi kune veruzhinji. Izvi Vadivelu Comedy Codasip Studio, yakasanganiswa dhizaini nharaunda yekushandisa-chaiwo kuraira-set processor (ASIP), inoshandiswa mukati mekambani yeCzech Codasip pachayo uye nevatengi vayo, kusanganisira AMD, AVG, Vanguvero, Sigma Dhizaini. Codasip yanga ichishandisa Handly mukugadzira kubvira 2015, kutanga neshanduro Handly 0.2. Iyo yazvino kuburitswa kweCodasip Studio inoshandisa vhezheni 0.5, yakaburitswa muna Chikumi 2016. OndΕ™ej Ilčík, anotungamira budiriro yeIDE kuCodasip, ari kusangana neprojekiti, achipa mhinduro yakakosha pachinzvimbo che "wechitatu bato anotora". Akatokwanisa kuwana imwe nguva yemahara yekutora chikamu zvakananga mukuvandudza kweprojekiti, achishandisa UI layer (~ 4000 mitsetse yekodhi) kune imwe yeHandly mienzaniso, yeJava modhi. Ruzivo rwakadzama rwekutanga-ruoko nezve kushandiswa kweHandly nevatambi vanogona kuwanikwa pane peji Success Stories project.

Tinovimba kuti mushure mekusunungurwa kwevhezheni 1.0 ine vimbiso yekugadzikana kweAPI uye purojekiti ichisiya incubation state, Handly ichava nevatambi vatsva. Zvichakadaro, purojekiti inoenderera mberi nekuyedza uye nekuvandudza API, ichiburitsa maviri "makuru" kuburitswa pagore - muna Chikumi (zuva rakafanana nekuburitswa kweEclipse panguva imwe chete) uye Zvita, zvichipa hurongwa hunofungidzirwa hunogona kuvimbwa nahwo. Isu tinogona zvakare kuwedzera kuti "bug rate" yepurojekiti inoramba iri padanho rakaderera uye Handly anga achishanda akavimbika muzvigadzirwa zvevatangi vekutanga kubva pashanduro dzekutanga. Kuti uwedzere kuongorora Eclipse Handly, unogona kushandisa Kutanga Tutorial ΠΈ Architectural Ongororo.

Source: www.habr.com

Voeg