Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ

Eleghi anya, eklips nwere ogologo kemgbe mkpa ọ bụla pụrụ iche iwebata. Ọtụtụ ndị mmadụ maara Eclipse nke ọma n'ihi ngwá ọrụ mmepe Eclipse Java (JDT). Ọ bụ Java IDE mepere emepe na-ewu ewu ka ọtụtụ ndị mmepe na-ejikọta ya na okwu ahụ bụ "Eclipse". Otú ọ dị, Eclipse bụ ma ikpo okwu nwere ike ime iji jikọta ngwá ọrụ mmepe (Eclipse Platform), yana ọtụtụ IDE wuru na ndabere ya, gụnyere JDT. Eclipse bụ ma Eclipse Project, ọrụ dị elu nke na-ahazi mmepe nke Eclipse Platform na JDT, na Eclipse SDK, nke ewepụtara na mmepe ahụ. N'ikpeazụ, Eclipse bụ ntọala mepere emepe nke nwere nnukwu ọrụ ọrụ, ọ bụghị ihe niile edere na Java ma ọ bụ metụtara ngwaọrụ mmepe (dịka ọmụmaatụ, ọrụ). Eclipse IoT и Sayensị Eclipse). Ụwa Eclipse dị nnọọ iche iche.

N'isiokwu a, nke bụ nkọwa nke okike, anyị ga-agbalị ileba anya na ụfọdụ ihe ndị bụ isi nke Eclipse architecture dị ka ikpo okwu maka ịmepụta ngwá ọrụ mmepe jikọtara ọnụ ma nye echiche mbụ nke ihe ndị Eclipse nke na-etolite ntọala nkà na ụzụ. ikpo okwu maka “Configurator ọhụrụ” 1C: Enterprise. 1C: Ngwa mmepe ụlọ ọrụ. N'ezie, nlebanya dị otú ahụ ga-abụ nke na-enweghị atụ na nke nwere oke, gụnyere n'ihi na anyị na-elekwasị anya ọ bụghị nanị na ndị mmepe Eclipse dị ka ndị na-ege ntị. Otú ọ dị, anyị na-atụ anya na ọbụna ndị mmepe Eclipse nwere ahụmahụ ga-enwe ike ịchọta ozi na-adọrọ mmasị n'isiokwu ahụ. Dịka ọmụmaatụ, anyị ga-ekwu maka otu n'ime "ihe nzuzo nke Eclipse", ọrụ ọhụrụ na nke a ma ama. Eclipse nke ọma, nke 1C hiwere ma kwado ya.
Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ

Okwu Mmalite nke Eclipse Architecture

Ka anyị buru ụzọ leba anya n'akụkụ ụfọdụ nke ihe owuwu Eclipse site n'iji ihe atụ Eclipse Java mmepe ngwaọrụ (JDT). Nhọrọ nke JDT dịka ọmụmaatụ abụghị ihe mberede. Nke a bụ mpaghara mmepe agbakwunyere nke mbụ pụtara na Eclipse. Ndị ọzọ * DT Eclipse oru ngo, dị ka Eclipse C/C++ Development Tooling (CDT), ka emechara emechaa wee gbazite ụkpụrụ ụkpụrụ ụlọ na ibe koodu onye ọ bụla sitere na JDT. Ihe ndabere nke ihe owuwu nke edobere na JDT dị mkpa ruo taa maka ihe fọrọ nke nta ka ọ bụrụ IDE ọ bụla e wuru n'elu Eclipse Platform, gụnyere 1C:Enterprise Development Tools.

Nke mbu, ekwesiri iburu n’uche na eji eji usoro ihe owuwu doro anya mara Eclipse, yana ikewapụta ọrụ na-adabereghị na asụsụ site na arụrụ ọrụ emebere iji kwado asụsụ mmemme dị iche iche, yana ikewapụta ihe “isi” nke UI nwere onwe ya na akụrụngwa jikọtara ya. na-akwado interface ọrụ.

Ya mere, Eclipse Platform na-akọwapụta akụrụngwa nke na-anaghị asụ asụsụ, yana ngwa mmepe Java na-agbakwunye Java IDE zuru oke na Eclipse. Ma Eclipse Platform na JDT nwere ọtụtụ ihe, nke ọ bụla bụ nke UI na-adabere na "isi" ma ọ bụ oyi akwa UI (Njirimara 1).

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 1. Eclipse Platform na JDT

Ka anyị depụta ihe ndị bụ isi nke Platform Eclipse:

  • Oge ojiri gaa - Akọwapụta akụrụngwa ngwa mgbakwunye. A na-eji usoro ihe owuwu mara n'ehihie. N'ụzọ bụ isi, Eclipse bụ nchịkọta nke "isi ihe ndọtị" na "mgbakwunye".
  • Oghere ọrụ - Na-achịkwa otu ọrụ ma ọ bụ karịa. Otu oru ngo nwere nchekwa na faịlụ ndị etinyere na sistemụ faịlụ ozugbo.
  • Ngwa ngwa wijetị ọkọlọtọ (SWT) - Na-enye isi ihe interface onye ọrụ jikọtara na sistemụ arụmọrụ.
  • JFace - Na-enye ọnụ ọgụgụ nke UI frameworks wuru n'elu SWT.
  • Ọrụ - Kọwaa ihe atụ Eclipse UI: ndị ndezi, echiche, echiche.

Ekwesịrị ikwu na Eclipse Platform na-enyekwa ọtụtụ ihe ndị ọzọ bara uru maka iwulite ngwa mmepe agbakwunyere, gụnyere Debug, Compare, Chọọ na Otu. Ekwesịrị ikwupụta aha pụrụ iche maka ederede JFace - ntọala maka iwulite koodu “smart editọ” nke koodu isi mmalite. N'ụzọ dị mwute, ọbụna nyochaa cursory nke ihe ndị a, yana akụkụ UI oyi akwa, agaghị ekwe omume n'ime oke nke isiokwu a, ya mere na nke fọdụrụ na nkebi a, anyị ga-ejedebe onwe anyị na nchịkọta nke isi "isi" components. Eclipse Platform na JDT.

Core Runtime

Akụrụngwa Eclipse ngwa mgbakwunye dabere na OSGi ma nyere site na oru ngo Eclipse Equinox. Ngwa mgbakwunye Eclipse ọ bụla bụ ngwugwu OSGi. Nkọwa OSGi na-akọwa, ọkachasị, usoro maka mbipụta na mkpebi ndabere. Na mgbakwunye na usoro ọkọlọtọ ndị a, Equinox na-ewebata echiche a ihe mgbasawanye. Ngwa mgbakwunye ọ bụla nwere ike ịkọwapụta ihe ndọtị nke ya, ma webata ọrụ ndị ọzọ (“mgbakwunye”) na sistemụ site na iji isi ndọtị akọwapụtara site na otu ma ọ bụ plugins ndị ọzọ. Nkọwa ọ bụla zuru ezu nke usoro OSGi na Equinox karịrị oke edemede a. Ka anyị mara naanị na modularization na Eclipse bụ mkpokọta (usoro ọ bụla, gụnyere Oge ojiri gaa, nwere otu plugins ma ọ bụ karịa), na ihe fọrọ nke nta ka ọ bụrụ ihe niile dị na Eclipse bụ ndọtị. Ọzọkwa, ụkpụrụ ndị a agbakwunyere na Eclipse architecture ogologo oge tupu iwebata OSGi (n'oge ahụ ha na-eji teknụzụ nke ha, nke yiri OSGi).

Oghere ọrụ isi

Ihe fọrọ nke nta ka ọ bụrụ gburugburu mmepe agbakwunyere n'elu Eclipse Platform na-arụ ọrụ na oghere ọrụ Eclipse. Ọ bụ ebe ọrụ na-enwekarị koodu mmalite nke ngwa emepụtara na IDE. Maapụ ebe ọrụ ozugbo na sistemụ faịlụ ma mejupụtara ọrụ nwere nchekwa na faịlụ. A na-akpọ ọrụ, nchekwa na faịlụ ndị a akụrụngwa oghere ọrụ. Nrụ ọrụ oghere ọrụ na Eclipse na-eje ozi dị ka ebe nchekwa n'ihe metụtara sistemụ faịlụ, nke na-eme ka o nwee ike mee ka ọ dị ngwa ngwa ịgafe osisi akụ. Na mgbakwunye, ebe ọrụ na-enye ọtụtụ ọrụ ndị ọzọ, gụnyere usoro ngosi maka mgbanwe akụ и incremental wuru akụrụngwa.

Ihe akụrụngwa Core (org.eclipse.core.resources plugin) bụ maka ịkwado ebe ọrụ na akụrụngwa ya. Karịsịa, akụkụ a na-enye ohere mmemme na-arụ ọrụ na ụdị ụdị akụ. Iji rụọ ọrụ nke ọma na ihe nlereanya a, ndị ahịa chọrọ ụzọ dị mfe iji gosipụta njikọ na akụrụngwa. N'okwu a, ọ ga-abụ ihe na-achọsi ike izobe ihe na-echekwa kpọmkwem ọnọdụ nke ihe onwunwe na ihe nlereanya site na ịnweta ndị ahịa. Ma ọ bụghị ya, n'ihe banyere, dịka ọmụmaatụ, ihichapụ faịlụ, onye ahịa ahụ nwere ike ịnọgide na-ejide ihe na-adịghịzi na ihe nlereanya ahụ, na nsogbu ndị na-esote. Eclipse na-eji ihe akpọrọ aka akụ. Ijikwa na-eme dị ka isi (ọ na-mara naanị ụzọ akụ na workspace) na kpamkpam njikwa ohere nke esịtidem nlereanya ihe, nke kpọmkwem na-echekwa ozi banyere ala nke akụ. Nhazi a bụ mgbanwe nke ụkpụrụ Aka/ahụ.

Osikapa. Ọgụgụ 2 na-akọwa akpaalaokwu Handle/Ara dị ka etinyere n'ụdị akụrụngwa. Iresource interface na-anọchi anya aka nke akụrụngwa ma bụrụ API, n'adịghị ka klas Resource, nke na-arụ ọrụ interface a, yana klaasị ResourceInfo, nke na-anọchite anya ahụ, nke na-abụghị API. Anyị na-ekwusi ike na njikwa ahụ maara naanị ụzọ nke akụrụngwa metụtara mgbọrọgwụ ebe ọrụ ma enweghị njikọ na ozi akụrụngwa. Ihe ọmụma akụrụngwa na-etolite ihe a na-akpọ "osisi mmewere". Ihe owuwu data a na-edobe kpamkpam na ebe nchekwa. Ka ịchọta ozi akụrụngwa dabara na aka, a na-agafe osisi mmewere dịka ụzọ echekwara na aka ahụ siri dị.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 2. IResource na ResourceInfo

Dịka anyị ga-ahụ ma emechaa, a na-eji usoro ihe eji eme ihe n'ụdị akụrụngwa (anyị nwere ike ịkpọ ya dabere) na Eclipse maka ụdị ndị ọzọ. Maka ugbu a, ka anyị depụta ụfọdụ njirimara pụrụ iche nke imewe a:

  • Aka bụ ihe bara uru. Ihe bara uru bụ ihe a na-apụghị ịgbanwe agbanwe nke nha ha na-adabereghị na njirimara. Enwere ike iji ihe ndị dị otú ahụ mee ihe n'enweghị nsogbu dị ka igodo n'ime akpa awụsara. Otutu ihe atụ nke njikwa nwere ike ịkọwa otu akụrụngwa. Iji tụnyere ha, ịkwesịrị iji usoro nhata (Ihe).
  • Handle na-akọwapụta omume nke akụrụngwa, mana enweghị ozi gbasara ọnọdụ akụ (naanị data ọ na-echekwa bụ “igodo”, ụzọ nke akụ).
  • Aka nwere ike na-ezo aka na akụrụngwa na-adịghị adị (ma ọ bụ akụrụngwa nke emebebeghị, ma ọ bụ akụrụngwa ehichapụrịrị). Enwere ike ịlele ịdị adị nke akụrụngwa site na iji usoro IResource.exists().
  • Enwere ike ịrụ ọrụ ụfọdụ dabere naanị na ozi echekwara na njikwa n'onwe ya (nke a na-akpọ naanị njikwa aka). Ọmụmaatụ bụ IResource.getParent(), getFullPath(), wdg. Akụrụngwa ahụ adịghị mkpa ịdị adị maka ọrụ dị otú ahụ iji gaa nke ọma. Ọrụ ndị chọrọ akụ ka ọ dị adị iji nwee ihe ịga nke ọma na-atụba CoreException ma ọ bụrụ na akụrụngwa adịghị.

Eclipse na-enye usoro na-arụ ọrụ nke ọma maka ịkọwa mgbanwe akụrụngwa ohere ọrụ (Nyocha 3). Akụrụngwa nwere ike ịgbanwe ma ọ bụ n'ihi omume emere n'ime Eclipse IDE n'onwe ya ma ọ bụ n'ihi mmekọrịta ya na sistemụ faịlụ. N'okwu abụọ ahụ, ndị ahịa ndị debanyere aha na ọkwa na-enye nkọwa zuru ezu banyere mgbanwe n'ụdị "deltas akụ". A delta na-akọwa mgbanwe n'etiti steeti abụọ nke ọrụ ebe ọrụ (sub-) osisi na ọ bụ n'onwe ya osisi, ọnụ nke ọ bụla nke na-akọwa mgbanwe na akụ ma nwee ndepụta nke deltas na ọkwa ọzọ nke na-akọwa mgbanwe na akụrụngwa ụmụaka.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 3. IResourceChangeEvent na IResourceDelta

Usoro ngosi dabere na akụ deltas nwere njirimara ndị a:

  • A na-akọwa otu mgbanwe na ọtụtụ mgbanwe site na iji otu nhazi ahụ, ebe ọ bụ na a na-ewu delta site n'iji ụkpụrụ nke recursive mejupụtara. Ndị ahịa ndị debanyere aha nwere ike hazie ọkwa mgbanwe akụrụngwa site na iji mgbada na-agbadata site na osisi deltas.
  • Delta nwere ozi zuru oke gbasara mgbanwe na akụrụngwa, gụnyere mmegharị ya na/ma ọ bụ mgbanwe na “akara ngosi” jikọtara ya (dịka ọmụmaatụ, njehie mkpokọta na-anọchi anya dị ka akara).
  • Ebe ọ bụ na a na-eji aka ahụ eme ntụaka akụrụngwa, delta nwere ike na-ezo aka na akụ dịpụrụ adịpụ.

Dị ka anyị ga-ahụ n'oge na-adịghị anya, akụkụ ndị bụ isi nke imewe nke usoro mgbanwe mgbanwe usoro ihe enyemaka dịkwa mkpa maka ụdị aka ndị ọzọ.

Isi okwu JDT

Ụdị ihe enyemaka ohere ọrụ Eclipse bụ ihe nrịbama asụsụ-ihe atụ nke amaghị ihe. Akụkụ JDT Core (plugin org.eclipse.jdt.core) na-enye API maka ịnyagharị na nyochaa nhazi ebe ọrụ site na echiche Java, nke a na-akpọ "Java model" (Ụdị Java). A kọwapụtara API a n'usoro nke ihe ndị Java, na-emegide ihe atụ akụrụngwa API, nke akọwara n'usoro nchekwa na faịlụ. A na-egosi ihe ndị bụ isi nke osisi mmewere Java na fig. 4.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 4. Ihe Nlereanya Java

Ihe nlere Java na-eji otu aka/ akpaalaokwu ahụ dị ka ihe nlere akụrụngwa (Njirimara 5). IJavaElement bụ aka, JavaElementInfo na-arụkwa ọrụ nke ahụ. IJavaElement interface na-akọwapụta ụkpụrụ na-emekarị na ihe Java niile. Ụfọdụ ụzọ ya bụ naanị aka: getElementName(), getParent(), wdg. Ihe JavaElementInfo na-echekwa ọnọdụ nke mmewere kwekọrọ: nhazi ya na njirimara ya.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 5. IJavaElement na JavaElementInfo

Ụdị Java nwere ụfọdụ ndịiche na mmejuputa atumatu nke isi aka / ahụ imewe tụnyere ihe onwunwe nlereanya. Dị ka e kwuru n'elu, n'ụdị akụrụngwa, osisi mmewere, nke ọnụ ya bụ ihe ọmụma ihe onwunwe, dị kpamkpam na ebe nchekwa. Ma ihe nlereanya Java nwere ike inwe ọnụ ọgụgụ buru ibu nke ihe dị ukwuu karịa osisi akụ, n'ihi na ọ na-anọchitekwa anya nhazi nke faịlụ .java na .class: ụdị, ubi, na ụzọ.

Iji zere ịmegharị osisi nke ihe niile na ebe nchekwa kpamkpam, mmejuputa ụdị Java na-eji obere oghere LRU nke ozi mmewere, ebe igodo ahụ na-ejikwa IJavaElement. A na-emepụta ihe ọmụma elementrị n'ọchịchọ ka a na-agagharị osisi elementrị. N'okwu a, a na-achụpụ ihe ndị a na-ejikarị eme ihe na cache, na oriri ebe nchekwa ihe nlereanya na-anọgide naanị na nha cache akọwapụtara. Nke a bụ uru ọzọ nke nhazi ejiri aka, nke na-ezochi nkọwa mmejuputa dị otú ahụ kpamkpam site na koodu ndị ahịa.

Usoro maka ịkọwa mgbanwe na ihe Java bụ n'ozuzu ya na usoro maka nsochi mgbanwe na akụrụngwa oghere a tụlere n'elu. Onye ahịa chọrọ ileba anya mgbanwe na ụdị Java na-edebanye aha na amamọkwa, nke a na-anọchi anya ihe ElementChangedEvent nke nwere IJavaElementDelta (Nyocha 6).

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 6. ElementChangedEvent na IJavaElementDelta

Ụdị Java enweghị ozi gbasara usoro ahụ ma ọ bụ mkpebi aha, yabụ maka nyocha zuru ezu nke koodu edere na Java, JDT Core na-enye ihe atụ agbakwunyere (anaghị eji aka): osisi syntax abtract (osisi syntax abstract, AST). AST na-anọchite anya nsonaazụ ntụgharị ederede isi mmalite. AST nodes kwekọrọ na akụkụ nke nhazi nke modul isi iyi (nkwupụta, ndị na-arụ ọrụ, okwu, wdg) ma nwee ozi gbasara nhazi nke ihe kwekọrọ na ederede isi mmalite, yana (dị ka nhọrọ) ozi gbasara mkpebi aha na. ụdị njikọ nke a na-akpọ njikọ. Njide bụ ihe na-anọchi anya ụlọ ọrụ akpọrọ aha, dị ka ụdị, ụzọ na mgbanwe, nke ndị nchịkọta mara. N'adịghị ka ọnụ AST, nke na-akpụ osisi, njikọ na-akwado ntinye aka na n'ozuzu ya na-emepụta eserese. Klas nkịtị ASTNode bụ klaasị nkịtị maka ọnụ AST niile. Klas nke ASTNode kwekọrọ na nhazi nke asụsụ Java.

N'ihi na osisi syntax nwere ike iri nnukwu ebe nchekwa, JDT na-echekwa naanị otu AST maka onye ndezi nọ n'ọrụ. N'adịghị ka ụdị Java, a na-ele AST anya dị ka ihe nlereanya "etiti," "nwa oge" nke ndị ahịa na-ekwesịghị ijide n'aka ndị otu ya na-abụghị ihe gbasara ọrụ ahụ butere ịmepụta AST.

Ụdị atọ edepụtara (ụdị Java, AST, bindings) ọnụ na-etolite ntọala maka iwulite "ngwaọrụ mmepe nwere ọgụgụ isi" na JDT, gụnyere onye nchịkọta akụkọ Java dị ike na "ndị enyemaka" dị iche iche, omume dị iche iche maka nhazi koodu isi mmalite (gụnyere ịhazi ndepụta nke mbubata. aha na nhazi dị ka ụdị ahaziri ahazi), ihe nchọgharị na nhazigharị. N'okwu a, ihe nlereanya Java na-arụ ọrụ pụrụ iche, ebe ọ bụ na ọ bụ ya ka a na-eji dị ka ihe ndabere maka ihe ngosi anya nke nhazi nke ngwa a na-emepụta (dịka ọmụmaatụ, na Package Explorer, Outline, Search, Call Hierarchy, na Ụdị Hierarchy).

Ihe mejupụtara eklips eji na 1C:Ngwaọrụ mmepe ụlọ ọrụ

Na fig. Ọgụgụ 7 na-egosi akụkụ Eclipse nke na-etolite ntọala teknụzụ teknụzụ maka 1C: Ngwá Ọrụ Mmepe Enterprise.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 7. Eclipse dị ka ikpo okwu maka 1C: Enterprise Development Tools

Eclipse Platform na-enye akụrụngwa akụrụngwa. Anyị lere anya n'akụkụ ụfọdụ nke akụrụngwa a na ngalaba gara aga.

Framework Modeling Eclipse (EMF) na-enye ụzọ n'ozuzu nke ịmebe data ahaziri ahazi. Ejikọtara EMF na Eclipse Platform, mana enwere ike iji ya iche na ngwa Java oge niile. Ọtụtụ mgbe, ndị mmepe Eclipse ọhụrụ amatala EMF nke ọma, n'agbanyeghị na ha amabeghị nke ọma mgbagwoju anya nke Eclipse Platform. Otu n'ime ihe kpatara ewu ewu kwesịrị ekwesị dị otú ahụ bụ nhazi zuru ụwa ọnụ, nke gụnyere, n'etiti ihe ndị ọzọ, API meta-level jikọtara ọnụ, nke na-enye gị ohere ịrụ ọrụ na ụdị EMF ọ bụla n'ozuzu ya. Ihe mmejuputa iwu nke ihe nlereanya nke EMF na usoro subsystem maka ịmepụta koodu nlereanya dabere na meta-ihe nlereanya na-abawanye ngwa ngwa nke mmepe ma belata ọnụ ọgụgụ njehie. EMF nwekwara usoro maka ịdekọ ụdị, nsochi mgbanwe na ụdị, na ọtụtụ ndị ọzọ.

Dị ka ngwá ọrụ ọ bụla nwere nzube n'ozuzu, EMF kwesịrị ekwesị maka idozi nsogbu dị iche iche nke nhazi nhazi, ma ụfọdụ klaasị nke ụdị (dịka ọmụmaatụ, ụdị ejiri aka a tụlere n'elu) nwere ike ịchọ ngwa ọrụ nhazi pụrụ iche. Ikwu banyere EMF bụ ọrụ enweghị ekele, ọkachasị n'ime oke oke nke otu akụkọ, ebe nke a bụ isiokwu nke akwụkwọ dị iche, yana nke siri ike. Ka anyị rịba ama na usoro dị elu nke usoro izugbe n'okpuru EMF kwere ka ọmụmụ nke ọrụ dị iche iche nke a raara nye maka ịme ihe ngosi, nke gụnyere na ọrụ kachasị elu. Nlereanya eklips yana EMF n'onwe ya. Otu ọrụ dị otú ahụ bụ Eclipse Xtext.

Eclipse Xtext na-enye akụrụngwa "ederede ederede". Xtext na-eji ANTLR maka ịkọwapụta ederede isi mmalite yana EMF maka ịnọchite anya ASG na-esi na ya pụta (graph semantic graph, nke bụ n'ezie nchikota nke AST na njikọ), nke a na-akpọkwa "ihe atụ semantic". A kọwara ụtọ asụsụ nke asụsụ nke Xtext mere n'asụsụ nke Xtext. Nke a na-enye gị ohere ọ bụghị naanị ịmepụta nkọwa ụtọ asụsụ maka ANTLR, kamakwa ịnweta usoro serialization AST (ya bụ Xtext na-enye ma parser na unparser), ihe nrịba ama gburugburu, yana ọtụtụ akụkụ asụsụ ndị ọzọ. N'aka nke ọzọ, asụsụ ụtọ asụsụ eji na Xtext adịghị agbanwe agbanwe karịa, sịnụ, asụsụ ụtọ asụsụ eji na ANTLR. Ya mere, mgbe ụfọdụ, ọ dị mkpa ka "ehulata" asụsụ etinyere na Xtext, nke na-abụkarị ọ bụghị nsogbu ma ọ bụrụ na anyị na-ekwu maka asụsụ a na-emepụta site na ọkọ, ma ọ nwere ike ịbụ ihe na-adịghị anabata maka asụsụ ndị nwere syntax emeberela. N'agbanyeghị nke a, Xtext bụ ngwa kachasị tozuo oke, nke bara ụba na ngwa ọrụ dị na Eclipse maka iwulite asụsụ mmemme na ngwa mmepe maka ha. Karịsịa, ọ bụ ngwá ọrụ dị mma maka ngwa ngwa prototyping asụsụ ndị akọwapụtara ngalaba (asụsụ akọwapụtara ngalaba, DSL). Na mgbakwunye na "isi asụsụ" ahụ a kpọtụrụ aha n'elu dabere na ANTLR na EMF, Xtext na-enye ọtụtụ ihe bara uru dị elu dị elu, gụnyere usoro ntinye aha, mmepụta ihe mmepụta ihe, "onye nchịkọta akụkọ", na ọtụtụ ihe ndị ọzọ, ma na-ahapụ aka- ụdị asụsụ dabere. Dị ka EMF, Xtext bụ isiokwu kwesịrị akwụkwọ dị iche, na anyị enweghị ike ikwu okwu nkenke maka ike ya niile ugbu a.

1C: Ngwá ọrụ mmepe ụlọ ọrụ na-eji ma EMF n'onwe ya yana ọtụtụ ọrụ Modeling Eclipse ndị ọzọ. Karịsịa, Xtext bụ otu n'ime ntọala ngwaọrụ mmepe maka 1C dị otú ahụ: asụsụ azụmahịa dị ka asụsụ mmemme wuru na asụsụ ajụjụ. Ihe ndabere ọzọ maka ngwa ọrụ mmepe ndị a bụ ọrụ Eclipse Handly, nke anyị ga-atụle n'ụzọ zuru ezu (nke akụkụ Eclipse edepụtara, ọ ka bụ nke kacha nta mara).

Eclipse nke ọma, isiokwu nke ọrụ elu-ọkwa nke Eclipse Technology, pụtara n'ihi ntinye koodu mbụ na Eclipse Foundation nke 1C mere na 2014. Kemgbe ahụ, 1C na-aga n'ihu na-akwado mmepe nke ọrụ ahụ: Ndị na-arụ ọrụ aka bụ ndị ọrụ nke ụlọ ọrụ ahụ. Ọrụ a dị obere, mana ọ nwere niche pụrụ iche na Eclipse: ebumnuche ya bụ ịkwado mmepe nke ụdị ejiri aka.

A tụlere ụkpụrụ ụkpụrụ ụkpụrụ ụlọ nke ụdị ejiri aka, dị ka akpaala okwu/okwu ahụ, n'elu site n'iji usoro akụrụngwa yana ụdị Java dịka ọmụmaatụ. Ọ chọpụtakwara na ma ụdị akụrụngwa na ụdị Java bụ ntọala dị mkpa maka Eclipse Java Development tools (JDT). Ebe ọ bụ na ihe fọrọ nke nta ka ọ bụrụ ọrụ * DT Eclipse niile nwere ụkpụrụ ụlọ yiri JDT, ọ gaghị abụ nnukwu ikwubiga okwu ókè ikwu na ụdị ejiri aka na-adabere ọtụtụ, ma ọ bụrụ na ọ bụghị IDE niile wuru n'elu Eclipse Platform. Dịka ọmụmaatụ, Eclipse C/C++ Development Tooling (CDT) nwere ụdị C/C++ na-eji aka nke na-arụ otu ọrụ na nhazi CDT dị ka Java nlereanya na-eme na JDT.

Tupu Handly, Eclipse enyeghị ọba akwụkwọ pụrụ iche maka iwulite ụdị asụsụ dabere na aka. Emepụtara ụdịdị ndị dị ugbu a ọkachasị site na imegharị koodu ụdị Java ozugbo (aka oyiri/mado), n'ọnọdụ ebe ọ na-enye ohere Ikikere Ọha Eclipse (EPL). (N'ụzọ doro anya, nke a anaghị abụkarị okwu gbasara iwu maka, sịnụ, Eclipse na-arụ ọrụ n'onwe ya, ma ọ bụghị maka ngwaahịa ndị mechiri emechi.) Na mgbakwunye na ihe mgbagwoju anya ya, usoro a na-ewebata nsogbu ndị a maara nke ọma: mbiputegharị koodu ewepụtara mgbe ọ na-emegharị na njehie. wdg. Nke ka njọ bụ na ụdị ndị a na-arụpụta na-anọgide "ihe dị n'ime onwe ha" ma ghara iji ohere maka ịdị n'otu. Mana ikewapụ echiche na ụkpụrụ nkịtị maka ụdị asụsụ ejiri aka mee nwere ike iduga n'ichepụta ihe ndị nwere ike iji rụọ ọrụ na ha, dịka ihe mere n'ihe gbasara EMF.

Ọ bụghị na Eclipse aghọtaghị okwu ndị a. Laa azụ na 2005 Martin Aeschlimann, na-achịkọta ahụmahụ nke ịmepụta ụdị CDT, rụrụ ụka mkpa ọ dị imepụta akụrụngwa nkịtị maka ụdị asụsụ, gụnyere ụdị ejiri aka. Ma, dị ka ọ na-emekarị, n'ihi ọrụ ndị dị elu dị mkpa, mmejuputa echiche ndị a abanyeghị na ya. Ka ọ dị ugbu a, imepụta koodu *DT ka bụ otu n'ime isiokwu emebebeghị na Eclipse.

N'otu aka ahụ, a haziri ọrụ Handly iji dozie ihe dị ka otu nsogbu dị ka EMF, mana maka ụdị ejiri aka, yana nke bụ isi asụsụ (ya bụ, na-anọchi anya ihe nhazi nke ụfọdụ asụsụ mmemme). Edepụtara ebumnuche ndị bụ isi mgbe ị na-emepụta Handly n'okpuru:

  • Nchọpụta nke isi abstractions nke mpaghara isiokwu.
  • Mbelata mbọ na imeziwanye ogo nke mmejuputa ụdị asụsụ dabere na iji koodu.
  • Na-enye API meta-larịị ọnụ ọnụ n'ụdị arụpụtara, na-eme ka o kwe omume ịmepụta ngwa IDE nkịtị na-arụ ọrụ na ụdị ejiri asụsụ.
  • Mgbanwe na scalability.
  • Njikọ na Xtext (na oyi akwa dị iche).

Iji mee ka echiche na ụkpụrụ nkịtị pụta ìhè, a tụlere mmejuputa iwu dị ugbu a nke ụdị dabere na asụsụ. Isi interface na mmejuputa iwu nke Handly nyere ka egosiri na fig. 8.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 8. Common interfaces na isi mmejuputa iwu nke Handly ọcha

Ihe interface nke Ielement na-anọchi anya aka nke ihe mmewere ma bụrụ nke a na-ahụkarị na ụdị niile dabere na Handly. Ihe klaasị na-adịghị ahụkebe na-emejuputa usoro njikwa ahụ/ahụ niile (Fig 9).

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 9. Ielement na generic handle / ahu mmejuputa iwu

Na mgbakwunye, Handly na-enye usoro n'ozuzu maka ịkọwapụta mgbanwe na ihe nlereanya (Fig 10). Dị ka ị na-ahụ, ọ na-adịkarị ka usoro ngosi etinyere n'ụdị akụrụngwa yana ụdị Java, ma na-eji IelementDelta iji nye nnochite anya jikọtara ọnụ nke ozi mgbanwe mmewere.

Eclipse dị ka ikpo okwu teknụzụ maka 1C: Ngwá Ọrụ Mmepe ụlọ ọrụ
Osikapa. 10. Ntụgharị izugbe na mmejuputa isi nke usoro ngosi Handly

Akụkụ Handly a tụlere n'elu (Fig 9 na 10) nwere ike iji gosipụta ihe fọrọ nke nta ka ọ bụrụ ụdị ejiri aka ọ bụla. Maka ịmepụta asụsụ ụdị, oru ngo na-enye ndị ọzọ ọrụ - akpan akpan, nkịtị interfaces na isi mmejuputa iwu nke ihe nke isi iyi ederede Ọdịdị, nke a na-akpọ. isi mmalite (Fig 8). Ihe interface ISourceFile na-anọchite anya faịlụ isi mmalite, na ISourceConstruct na-anọchite anya mmewere n'ime faịlụ isi mmalite. Klaasị abstract SourceFile na SourceConstruct na-emejuputa usoro zuru oke iji kwado ịrụ ọrụ na faịlụ isi mmalite na ihe ha, dịka ọmụmaatụ, iji ihe nchekwa ederede na-arụ ọrụ, na-ejikọ aka na nhazi nke ihe dị na ederede isi mmalite, na-emekọrịta ụdị na ọdịnaya dị ugbu a nke nchekwa oyiri na-arụ ọrụ. , wdg. Ime usoro ndị a na-abụkarị ihe ịma aka, na Handly nwere ike ibelata mbọ nke imepụta ụdị asụsụ ejiri aka site n'iwepụta mmejuputa ntọala dị elu.

Na mgbakwunye na isi usoro edepụtara n'elu, Handly na-enye akụrụngwa maka nchekwa ederede na snapshots, nkwado maka njikọta na ndị editọ koodu isi (gụnyere ntinye n'ime igbe na onye editọ Xtext), yana ụfọdụ ihe UI nkịtị na-ahụkarị. soro ndị ndezi koodu isi rụọ ọrụ. Iji gosi ike ya, oru ngo a na-enye ọtụtụ ọmụmaatụ, gụnyere mmejuputa usoro Java na Handly. (Tụnyere na mmejuputa usoro Java zuru oke na JDT, a na-ama ụma mee ka ihe nlereanya a dị mfe maka nghọta ka ukwuu.)

Dị ka e kwuru na mbụ, isi ihe elekwasị anya n'oge nhazi mbụ Handly na mmepe sochirinụ bụ na ọ na-aga n'ihu na scalability na mgbanwe.

N'ụkpụrụ, ụdị ejiri aka na-agbakọ nke ọma “site na imewe”. Dịka ọmụmaatụ, akpaala okwu aka/ahụ na-enye gị ohere ịmachi oke ebe nchekwa nke ihe nlereanya na-eri. Mana enwerekwa nuances. Ya mere, mgbe a na-anwale Handly maka scalability, nsogbu achọpụtara na mmejuputa usoro ngosi - mgbe a gbanwere ọtụtụ ihe, ịmepụta deltas were ogologo oge. Ọ tụgharịrị na otu nsogbu ahụ dị na ụdị JDT Java, nke e si na ya megharịa koodu kwekọrọ. Anyị doziri ahụhụ ahụ na Handly wee kwadoo ihe mgbochi yiri nke ahụ maka JDT, nke ejiri obi ekele nata. Nke a bụ naanị otu ọmụmaatụ ebe iwebata Handly n'ime mmejuputa ụdịdị dị nwere ike ịba uru, n'ihi na n'ọnọdụ a enwere ike idozi ụdị ahụhụ ahụ n'otu ebe.

Iji mee ka mmejuputa Handly n'ime mmejuputa ụdịdị dị ugbu a n'ụzọ teknụzụ ga-ekwe omume, ọbá akwụkwọ ahụ ga-enwerịrị mgbanwe dị ukwuu. Isi nsogbu bụ idowe ndakọrịta azụ n'ofe API. E doziri nsogbu a n'ime Dị mfe 0.5 site na ikewapụta nke ọma API ụdịdị akọwapụtara nke ọma, nke onye nrụpụta kọwapụtara yana jikwaa ya nke ọma, na API meta-ọkwa dị n'otu nke ọbá akwụkwọ nyere. Ọ bụghị naanị na nke a na-eme ka teknụzụ nwee ike itinye Handly n'ime mmejuputa iwu dị ugbu a, mana na-enyekwa onye nrụpụta ihe nlereanya ọhụrụ nnwere onwe dị ukwuu mgbe ọ na-emepụta API.

Mgbanwe nwere akụkụ ndị ọzọ. Dịka ọmụmaatụ, Handly anaghị enye iwu ihe fọrọ nke nta ka ọ bụrụ ihe mgbochi ọ bụla na nhazi nke ihe nlereanya a, enwere ike iji ya mee ihe n'ụdị ma ebumnuche izugbe yana asụsụ ndị akọwapụtara ngalaba. Mgbe ị na-arụ nhazi nke faịlụ isi mmalite, Handly anaghị akọwapụta ụdị ọ bụla nke nnọchite anya AST na, n'ụkpụrụ, anaghị achọ ọnụnọ nke AST n'onwe ya, si otú a na-ahụ na ndakọrịta na ihe fọrọ nke nta ka ọ bụrụ usoro nyocha ọ bụla. N'ikpeazụ, Handly na-akwado nkwado zuru oke na Eclipse workspace, mana ọ nwekwara ike ịrụ ọrụ ozugbo na sistemụ faịlụ ekele maka ntinye ya na ya. Sistemụ faịlụ eklips (EFS).

Ụdị ugbu a Dị mfe 0.6 pụtara na December 2016. N'agbanyeghị eziokwu na oru ngo bụ ugbu a na a ọnọdụ nke incubation na API emebebeghi emecha ofu, Handly na-ama na-eji na abụọ nnukwu azụmahịa ngwaahịa na weere ihe ize ndụ nke na-eme ihe dị ka "n'oge adopters", na, M ga-asị, unu akwakwala ụta ma.

Dị ka e kwuru n'elu, otu n'ime ngwaahịa ndị a bụ 1C: Enterprise Development Tools, ebe a na-eji Handly mee ihe site na mmalite iji gosipụta ihe dị iche iche nke nhazi ọkwa dị elu nke 1C: asụsụ ụlọ ọrụ dị ka asụsụ mmemme na asụsụ ajụjụ. . Ngwaahịa ọzọ bụ nke ọha ọha amachaghị ama. Nke a Ụlọ ọrụ Codasip Studio, gburugburu imewe agbakwunyere maka ngwa-specific instruction-set processor (ASIP), ejiri ma n'ime ụlọ ọrụ Czech Codasip n'onwe ya na ndị ahịa ya, gụnyere AMD, Ọkara, Ngwongwo, Atụmatụ Sigma. Codasip na-eji Handly emeputa kemgbe 2015, malite na ụdị Handly 0.2. Mwepụta ọhụrụ nke Codasip Studio na-eji ụdị 0.5, ewepụtara na June 2016. Ondřej Ilčík, onye na-eduzi mmepe IDE na Codasip, na-akpọtụrụ ọrụ ahụ, na-enye nzaghachi dị mkpa n'aha "onye nkuchi nke atọ". Ọbụna ọ nwere ike ịchọta oge n'efu iji sonye ozugbo na mmepe nke ọrụ ahụ, na-emejuputa UI oyi akwa (~ 4000 ahịrị koodu) maka otu n'ime ihe atụ Handly, ụdị Java. Enwere ike ịhụ ozi aka mbụ zuru oke gbasara ojiji Handly site na ndị nkuchi na ibe Ịga nke Ọma Akụkọ oru ngo.

Anyị nwere olile anya na mgbe ahapụchara ụdị 1.0 na nkwa nke nkwụsi ike API yana ọrụ ahụ na-ahapụ steeti incubation, Handly ga-enwe ndị nnabata ọhụrụ. Ka ọ dị ugbu a, ọrụ ahụ na-aga n'ihu na-anwale ma na-emeziwanye API, na-ewepụta mwepụta abụọ "isi" kwa afọ - na June (otu ụbọchị dị ka ntọhapụ Eclipse na-emekọrịta ihe) na December, na-enye usoro nhazi amụma nke ndị na-azụ nwere ike ịdabere na ya. Anyị nwekwara ike ịgbakwunye na "ọnụego ahụhụ" nke oru ngo na-anọgide na-adị ala mgbe niile na Handly na-arụ ọrụ nke ọma na ngwaahịa nke ndị nabatara oge mbụ kemgbe nsụgharị mbụ. Iji nwetakwuo nyocha Eclipse Handly, ị nwere ike iji Nkuzi mmalite и Nhazi ụlọ.

isi: www.habr.com

Tinye a comment