Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo

Boya, oṣupa ti gun niwon nilo ko si pataki ifihan. Ọpọlọpọ eniyan ni o mọ pẹlu Eclipse ọpẹ si awọn irinṣẹ idagbasoke Eclipse Java (JDT). O jẹ orisun ṣiṣi Java IDE olokiki ti ọpọlọpọ awọn olupilẹṣẹ ṣe idapọ pẹlu ọrọ “Eclipse”. Bibẹẹkọ, Eclipse mejeeji jẹ pẹpẹ ti o ṣeeṣe fun sisọpọ awọn irinṣẹ idagbasoke (Eclipse Platform), ati nọmba awọn IDE ti a ṣe lori ipilẹ rẹ, pẹlu JDT. Eclipse jẹ mejeeji Project Eclipse, iṣẹ akanṣe ipele oke ti o ṣe ipoidojuko idagbasoke ti Platform Eclipse ati JDT, ati Eclipse SDK, abajade ti idagbasoke yẹn. Ni ipari, Eclipse jẹ ipilẹ orisun-ìmọ pẹlu agbegbe nla ti awọn iṣẹ akanṣe, kii ṣe gbogbo eyiti a kọ si Java tabi ti o ni ibatan si awọn irinṣẹ idagbasoke (fun apẹẹrẹ, awọn iṣẹ akanṣe). Oṣupa IoT и Eclipse Imọ). Aye ti Eclipse jẹ oriṣiriṣi pupọ.

Ninu nkan yii, eyiti o jẹ awotẹlẹ ni iseda, a yoo gbiyanju lati wo diẹ ninu awọn ipilẹ ti faaji Eclipse bi pẹpẹ fun kikọ awọn irinṣẹ idagbasoke iṣọpọ ati fun imọran akọkọ ti awọn paati Eclipse ti o jẹ ipilẹ ti imọ-ẹrọ. Syeed fun "titun Configurator" 1C: Idawọlẹ. 1C: Awọn Irinṣẹ Idagbasoke Iṣowo. Nitoribẹẹ, iru atunyẹwo bẹẹ yoo daju pe o jẹ aipe ati kuku ni opin, pẹlu nitori pe a n dojukọ kii ṣe awọn olupilẹṣẹ Eclipse nikan bi awọn olugbo ibi-afẹde. Sibẹsibẹ, a nireti pe paapaa awọn olupilẹṣẹ Eclipse ti o ni iriri yoo ni anfani lati wa alaye ti o nifẹ ninu nkan naa. Fun apẹẹrẹ, a yoo sọrọ nipa ọkan ninu “awọn aṣiri ti Eclipse”, iṣẹ akanṣe tuntun ti a ko mọ. Oṣupa Ọwọ, eyiti a da ati atilẹyin nipasẹ 1C.
Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo

Ifihan to Eclipse Architecture

Jẹ ki a kọkọ wo diẹ ninu awọn abala gbogbogbo ti faaji Eclipse nipa lilo apẹẹrẹ Eclipse Java idagbasoke irinṣẹ (JDT). Yiyan JDT bi apẹẹrẹ kii ṣe lairotẹlẹ. Eyi ni agbegbe idagbasoke iṣọpọ akọkọ lati han ni Oṣupa. Miiran * DT Eclipse ise agbese, gẹgẹ bi awọn Eclipse C/C++ Development Tooling (CDT), won da nigbamii ati ki o ya mejeji awọn ipilẹ ayaworan ilana ati olukuluku orisun koodu ajeku lati JDT. Awọn ipilẹ ti faaji ti a gbe kalẹ ni JDT ṣe pataki titi di oni fun fere eyikeyi IDE ti a ṣe si oke ti Eclipse Platform, pẹlu 1C: Awọn Irinṣẹ Idagbasoke Iṣowo.

Ni akọkọ, o yẹ ki o ṣe akiyesi pe Eclipse jẹ ijuwe nipasẹ fifin ti ayaworan ti o han gbangba, pẹlu ipinya ti iṣẹ-ṣiṣe ominira ede lati iṣẹ ṣiṣe ti a ṣe lati ṣe atilẹyin awọn ede siseto kan pato, ati ipinya ti awọn paati “mojuto” ominira UI lati awọn paati ti o somọ. pẹlu atilẹyin ni wiwo olumulo.

Nitorinaa, Platform Eclipse n ṣalaye wọpọ, awọn amayederun ominira ede, ati awọn irinṣẹ idagbasoke Java ṣafikun Java IDE ti o ni kikun si Eclipse. Mejeeji Platform Eclipse ati JDT ni ọpọlọpọ awọn paati, ọkọọkan eyiti o jẹ ti boya “mojuto” olominira UI tabi Layer UI kan (Aworan 1).

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 1. Eclipse Platform ati JDT

Jẹ ki a ṣe atokọ awọn paati akọkọ ti Platform Eclipse:

  • Akoko asikogbọn - Awọn asọye ohun elo amayederun. Oṣupa jẹ ijuwe nipasẹ faaji apọjuwọn. Ni pataki, Eclipse jẹ akojọpọ “awọn aaye itẹsiwaju” ati “awọn amugbooro”.
  • Aaye iṣẹ - Ṣakoso awọn iṣẹ akanṣe kan tabi diẹ sii. Ise agbese kan ni awọn folda ati awọn faili ti o ya aworan taara si eto faili naa.
  • Ohun elo Ailorukọ Didara (SWT) - Pese awọn eroja wiwo olumulo ipilẹ ti a ṣepọ pẹlu ẹrọ ṣiṣe.
  • JFace - Pese nọmba kan ti awọn ilana UI ti a ṣe lori oke SWT.
  • Iṣẹ iṣẹ - Ṣe alaye apẹrẹ UI Eclipse: awọn olootu, awọn iwo, awọn iwoye.

O gbọdọ sọ pe Platform Eclipse tun pese ọpọlọpọ awọn ohun elo miiran ti o wulo fun kikọ awọn irinṣẹ idagbasoke iṣọpọ, pẹlu Debug, Afiwera, Wa, ati Ẹgbẹ. Apejuwe pataki yẹ ki o jẹ ti JFace Text - ipilẹ fun kikọ “awọn olootu ọlọgbọn” ti koodu orisun. Laisi ani, paapaa ayẹwo kọsọ ti awọn paati wọnyi, ati awọn paati Layer UI, ko ṣee ṣe laarin ipari ti nkan yii, nitorinaa ninu iyoku apakan yii a yoo fi opin si ara wa si awotẹlẹ ti awọn paati “mojuto” akọkọ ti Eclipse Platform ati JDT.

Akoko asiko mojuto

Awọn amayederun itanna Eclipse da lori OSGi ati ki o pese nipa ise agbese Eclipse Equinox. Ohun itanna Eclipse kọọkan jẹ akopọ OSGi. Sipesifikesonu OSGi n ṣalaye, ni pataki, awọn ọna ṣiṣe fun ikede ati ipinnu igbẹkẹle. Ni afikun si awọn ọna ṣiṣe boṣewa wọnyi, Equinox ṣafihan imọran naa imugboroosi ojuami. Ohun itanna kọọkan le ṣalaye awọn aaye ifaagun tirẹ, ati tun ṣafihan iṣẹ ṣiṣe afikun (“awọn amugbooro”) si eto nipa lilo awọn aaye itẹsiwaju ti asọye nipasẹ kanna tabi awọn afikun miiran. Eyikeyi apejuwe alaye ti awọn ẹrọ OSGi ati Equinox kọja ipari ti nkan yii. Jẹ ki a ṣe akiyesi nikan pe modularization ni Eclipse jẹ lapapọ (eyikeyi subsystem, pẹlu Runtime, oriširiši ọkan tabi diẹ ẹ sii afikun), ati ki o fere ohun gbogbo ni Eclipse jẹ ẹya itẹsiwaju. Pẹlupẹlu, awọn ilana wọnyi ti wa ni ifibọ sinu faaji Eclipse ni pipẹ ṣaaju iṣafihan OSGi (ni akoko yẹn wọn lo imọ-ẹrọ tiwọn, pupọ si OSGi).

Mojuto Workspace

O fẹrẹ to eyikeyi agbegbe idagbasoke iṣọpọ ti a ṣe lori oke ti Platform Eclipse ṣiṣẹ pẹlu aaye iṣẹ oṣupa. O jẹ aaye iṣẹ ti o nigbagbogbo ni koodu orisun ti ohun elo ti o dagbasoke ni IDE. Awọn maapu aaye iṣẹ taara si eto faili ati ni awọn iṣẹ akanṣe, eyiti o ni awọn folda ati awọn faili ninu. Awọn iṣẹ akanṣe wọnyi, awọn folda, ati awọn faili ni a pe oro aaye iṣẹ. Imuse aaye iṣẹ ni Eclipse ṣiṣẹ bi kaṣe kan ni ibatan si eto faili, eyiti o jẹ ki o ṣee ṣe lati yara ni iyara gbigbe ti igi orisun. Ni afikun, aaye iṣẹ n pese nọmba awọn iṣẹ afikun, pẹlu ilana iwifunni fun awọn ayipada orisun и afikun Akole amayederun.

Awọn paati Awọn orisun Core (org.eclipse.core.resources itanna) jẹ iduro fun atilẹyin aaye iṣẹ ati awọn orisun rẹ. Ni pataki, paati yii n pese iraye si eto si aaye iṣẹ ni fọọmu naa awọn awoṣe awọn oluşewadi. Lati ṣiṣẹ ni imunadoko pẹlu awoṣe yii, awọn alabara nilo ọna ti o rọrun lati ṣafihan ọna asopọ si orisun kan. Ni ọran yii, yoo jẹ iwunilori lati tọju ohun ti o tọju ipo ti orisun taara ni awoṣe lati iraye si alabara. Bibẹẹkọ, ninu ọran ti, fun apẹẹrẹ, piparẹ faili kan, alabara le tẹsiwaju lati mu ohun kan ti ko si ninu awoṣe, pẹlu awọn iṣoro ti o tẹle. Oṣupa n yanju iṣoro yii nipa lilo nkan ti a npe ni mu awọn oluşewadi. Mu ṣiṣẹ bi bọtini kan (o mọ ọna nikan si orisun ni aaye iṣẹ) ati iṣakoso patapata wiwọle si ohun awoṣe inu, eyiti o tọju alaye taara nipa ipo ti orisun naa. Apẹrẹ yii jẹ iyatọ ti apẹrẹ Mu / Ara.

Iresi. olusin 2 sapejuwe awọn Handle/Ara idiom bi loo si awọn oluşewadi awoṣe. Ni wiwo IResource duro fun mimu awọn oluşewadi kan ati pe o jẹ API, ko dabi kilasi orisun, eyiti o ṣe imuse wiwo yii, ati kilasi ResourceInfo, eyiti o duro fun ara, eyiti kii ṣe APIs. A tẹnu mọ pe mimu nikan mọ ọna si orisun ti o ni ibatan si gbongbo aaye iṣẹ ati pe ko ni ọna asopọ si alaye orisun. Awọn nkan alaye orisun jẹ ohun ti a pe ni “igi eroja”. Eto data yii jẹ ohun elo patapata ni iranti. Lati wa apẹẹrẹ alaye orisun ti o baamu si mimu, igi ano naa wa ni ibamu si ọna ti o fipamọ sinu ọwọ yẹn.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 2. IResource ati ResourceInfo

Gẹgẹbi a yoo rii nigbamii, apẹrẹ ipilẹ ti awoṣe orisun (a le pe ni ipilẹ-mu) ni a lo ni Eclipse fun awọn awoṣe miiran paapaa. Ni bayi, jẹ ki a ṣe atokọ diẹ ninu awọn ohun-ini iyasọtọ ti apẹrẹ yii:

  • Imudani jẹ ohun elo iye. Awọn nkan iye jẹ awọn nkan ti ko le yipada ti idọgba wọn ko da lori idanimọ. Iru awọn nkan bẹẹ le ṣee lo lailewu bi bọtini ninu awọn apoti hashed. Ọpọ instances ti mu le tọkasi awọn kanna awọn oluşewadi. Lati ṣe afiwe wọn, o nilo lati lo ọna dọgba (Nkan).
  • Mu awọn asọye ihuwasi ti a oluşewadi, sugbon ko ni alaye nipa awọn ipinle ti awọn oluşewadi (awọn nikan data ti o tọjú ni "bọtini", awọn ọna si awọn oluşewadi).
  • Imudani le tọka si orisun ti ko si (boya orisun ti ko tii ṣẹda, tabi orisun ti o ti paarẹ tẹlẹ). Aye ti orisun kan le ṣe ayẹwo ni lilo ọna IResource.exists().
  • Diẹ ninu awọn iṣẹ le ṣe imuse ti o da lori alaye ti o fipamọ sinu mimu funrararẹ (awọn iṣẹ ti a pe ni mimu-nikan). Awọn apẹẹrẹ jẹ IResource.getParent (), getFullPath (), ati bẹbẹ lọ. Awọn orisun ko nilo lati wa fun iru iṣẹ ṣiṣe kan lati ṣaṣeyọri. Awọn iṣẹ ṣiṣe ti o nilo orisun lati wa tẹlẹ lati ṣaṣeyọri jabọ CoreException ti orisun ko ba si.

Oṣupa n pese ẹrọ to munadoko fun ifitonileti awọn ayipada orisun aaye iṣẹ (Aworan 3). Awọn orisun le yipada boya nitori awọn iṣe ti a ṣe laarin Eclipse IDE funrararẹ tabi abajade mimuuṣiṣẹpọ pẹlu eto faili naa. Ni awọn ọran mejeeji, awọn alabara ti o ṣe alabapin si awọn iwifunni ni a pese pẹlu alaye alaye nipa awọn ayipada ni irisi “deltas orisun”. A delta ṣe apejuwe awọn iyipada laarin awọn ipinlẹ meji ti orisun aaye iṣẹ (sub-) igi ati pe o jẹ igi funrararẹ, oju ipade kọọkan eyiti o ṣe apejuwe iyipada si orisun kan ati pe o ni atokọ ti deltas ni ipele atẹle ti o ṣe apejuwe awọn iyipada si awọn orisun ọmọ.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 3. IResourceChangeEvent ati IResourceDelta

Ilana iwifunni ti o da lori awọn orisun deltas ni awọn abuda wọnyi:

  • Iyipada ẹyọkan ati ọpọlọpọ awọn ayipada ni a ṣe apejuwe ni lilo ọna kanna, nitori a ti kọ delta nipa lilo ipilẹ ti akopọ isọdọtun. Awọn alabara alabapin le ṣe ilana awọn ifitonileti iyipada awọn orisun nipa lilo isọsọ isọdọtun nipasẹ igi ti deltas kan.
  • Delta naa ni alaye pipe nipa awọn iyipada si orisun, pẹlu iṣipopada rẹ ati/tabi awọn iyipada ninu “awọn asami” ti o ni nkan ṣe pẹlu rẹ (fun apẹẹrẹ, awọn aṣiṣe akojọpọ jẹ aṣoju bi awọn asami).
  • Niwọn bi a ti ṣe awọn itọkasi orisun nipasẹ mimu, delta le ṣe itọkasi nipa ti ara ẹni awọn orisun jijin.

Bii a yoo rii laipẹ, awọn paati akọkọ ti apẹrẹ ti ẹrọ iyipada awọn oluşewadi ohun elo tun jẹ pataki fun awọn awoṣe ti o da lori mimu miiran.

JDT mojuto

Awoṣe orisun orisun aaye iṣẹ Eclipse jẹ apẹrẹ ede-agnostic ipilẹ kan. Ẹya paati JDT Core (afikun org.eclipse.jdt.core) n pese API kan fun lilọ kiri ati itupalẹ eto aaye iṣẹ lati irisi Java, eyiti a pe ni “awoṣe Java” (Java awoṣe). API yii jẹ asọye ni awọn ofin ti awọn eroja Java, ni idakeji si awoṣe orisun orisun API, eyiti o jẹ asọye ni awọn ofin ti awọn folda ati awọn faili. Awọn atọkun akọkọ ti igi eroja Java ni a fihan ni Ọpọtọ. 4.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 4. Java awoṣe eroja

Awoṣe Java nlo imudani kanna / idiom ara bi awoṣe orisun (olusin 5). IJavaElement ni imudani, ati JavaElementInfo ṣe ipa ti ara. Ni wiwo IJavaElement n ṣalaye ilana ti o wọpọ si gbogbo awọn eroja Java. Diẹ ninu awọn ọna rẹ jẹ mimu-nikan: getElementName(), getParent(), ati bẹbẹ lọ. Ohun JavaElementInfo n tọju ipo ti nkan ti o baamu: eto rẹ ati awọn abuda.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 5. IJavaElement ati JavaElementInfo

Awoṣe Java ni diẹ ninu awọn iyatọ ninu imuse ti ipilẹ mu / apẹrẹ ara ni akawe si awoṣe orisun. Gẹgẹbi a ti ṣe akiyesi loke, ninu awoṣe orisun, igi eroja, eyiti awọn apa rẹ jẹ awọn nkan alaye orisun, wa ni iranti patapata. Ṣugbọn awoṣe Java le ni nọmba ti o tobi pupọ ti awọn eroja ju igi orisun lọ, nitori pe o tun duro fun eto inu ti .java ati awọn faili kilasi: awọn oriṣi, awọn aaye, ati awọn ọna.

Lati yago fun ohun elo gbogbo igi ti awọn eroja ni iranti patapata, imuse awoṣe Java nlo kaṣe iwọn LRU to lopin ti alaye ano, nibiti bọtini ti wa ni mu IJavaElement. Awọn nkan alaye eroja ni a ṣẹda lori ibeere bi igi eroja ti wa ni lilọ kiri. Ni ọran yii, awọn ohun ti o kere julọ nigbagbogbo ni a le jade kuro ninu kaṣe, ati pe agbara iranti awoṣe wa ni opin si iwọn kaṣe pàtó kan. Eyi jẹ anfani miiran ti apẹrẹ ti o da lori mimu, eyiti o tọju iru awọn alaye imuse patapata lati koodu alabara.

Ilana fun ifitonileti awọn ayipada si awọn eroja Java jẹ ni apapọ si ẹrọ ti ipasẹ awọn ayipada si awọn orisun aaye iṣẹ ti a sọrọ loke. Onibara nfẹ lati ṣe atẹle awọn ayipada ninu awoṣe Java ṣe alabapin si awọn iwifunni, eyiti o jẹ aṣoju bi ohun ElementChangedEvent ti o ni IJavaElementDelta ninu (Aworan 6).

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 6. ElementChangedEvent ati IJavaElementDelta

Awoṣe Java ko ni alaye ninu nipa awọn ara ọna tabi ipinnu orukọ, nitorinaa fun itupalẹ alaye ti koodu ti a kọ sinu Java, JDT Core pese awoṣe afikun (ti kii ṣe-mu mu): áljẹbrà sintasi igi (igi sintasi áljẹbrà, AST). AST ṣe aṣoju abajade ti sisọ ọrọ orisun naa. Awọn apa AST ni ibamu si awọn eroja ti eto ti module orisun (awọn ikede, awọn oniṣẹ, awọn ikosile, ati bẹbẹ lọ) ati pe o ni alaye nipa awọn ipoidojuko ti nkan ti o baamu ninu ọrọ orisun, ati (gẹgẹbi aṣayan) alaye nipa ipinnu orukọ ni awọn fọọmu ti awọn ọna asopọ si ti a npe ni abuda. Awọn isopọ jẹ awọn nkan ti o ṣojuuṣe awọn nkan ti a darukọ, gẹgẹbi awọn oriṣi, awọn ọna, ati awọn oniyipada, ti a mọ si alakojọ. Ko dabi awọn apa AST, eyiti o jẹ igi kan, awọn ifọkasi ṣe atilẹyin itọkasi-agbelebu ati ni gbogbogbo ṣe apẹrẹ kan. Kilasi áljẹbrà ASTNode jẹ kilasi ipilẹ ti o wọpọ fun gbogbo awọn apa AST. Awọn kilaasi ASTNode badọgba si awọn igbelewọn syntactic kan pato ti ede Java.

Nitori awọn igi sintasi le jẹ iye pataki ti iranti, awọn caches JDT kan AST kan fun olootu ti nṣiṣe lọwọ. Ko dabi awoṣe Java, AST ni igbagbogbo wo bi “agbedemeji,” awoṣe “iwọn igba diẹ” ti awọn ọmọ ẹgbẹ ko yẹ ki o wa ni itọkasi nipasẹ awọn alabara ni ita aaye ti iṣẹ ṣiṣe ti o yori si ṣiṣẹda AST.

Awọn awoṣe mẹta ti a ṣe akojọ (awoṣe Java, AST, awọn abuda) papọ ṣe ipilẹ fun kikọ “awọn irinṣẹ idagbasoke oye” ni JDT, pẹlu olootu Java ti o lagbara pẹlu ọpọlọpọ “awọn oluranlọwọ”, awọn iṣe lọpọlọpọ fun sisẹ koodu orisun (pẹlu siseto atokọ ti agbewọle wọle. awọn orukọ ati ọna kika ni ibamu si aṣa ti a ṣe adani), wiwa ati awọn irinṣẹ atunṣe. Ni ọran yii, awoṣe Java ṣe ipa pataki kan, nitori o jẹ pe o jẹ ipilẹ fun aṣoju wiwo ti eto ohun elo ti o dagbasoke (fun apẹẹrẹ, ni Package Explorer, Apejuwe, Wa, Ipe logalomomoise, ati Iru Logalomomoise).

Awọn paati oṣupa ti a lo ninu 1C: Awọn Irinṣẹ Idagbasoke Idawọlẹ

Ninu Ọpọtọ. Nọmba 7 ṣe afihan awọn paati Eclipse ti o jẹ ipilẹ ti ipilẹ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 7. Oṣupa bi pẹpẹ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo

Eclipse Platform pese ipilẹ amayederun. A wo diẹ ninu awọn aaye ti amayederun yii ni apakan ti tẹlẹ.

Eclipse Modeling Framework (EMF) n pese awọn ọna gbogbogbo ti awoṣe ti eleto data. EMF ṣepọ pẹlu Platform Eclipse, ṣugbọn tun le ṣee lo lọtọ ni awọn ohun elo Java deede. Nigbagbogbo, awọn olupilẹṣẹ Eclipse tuntun ti mọ daradara pẹlu EMF, botilẹjẹpe wọn ko tii loye ni kikun awọn intricacies ti Platform Eclipse. Ọkan ninu awọn idi fun iru gbaye-gbale ti o tọ si ni apẹrẹ gbogbo agbaye, eyiti o pẹlu, ninu awọn ohun miiran, API ipele-ipele ti iṣọkan, eyiti o fun ọ laaye lati ṣiṣẹ pẹlu eyikeyi awoṣe EMF ni ọna gbogbogbo. Awọn imuṣẹ ipilẹ fun awọn nkan awoṣe ti a pese nipasẹ EMF ati eto ipilẹ fun ṣiṣẹda koodu awoṣe ti o da lori awoṣe-meta mu iyara idagbasoke pọ si ati dinku nọmba awọn aṣiṣe. EMF tun ni awọn ọna ṣiṣe fun serializing awọn awoṣe, ipasẹ awọn ayipada si awoṣe, ati pupọ diẹ sii.

Bii eyikeyi irinṣẹ idi gbogbogbo, EMF dara lati yanju ọpọlọpọ awọn iṣoro awoṣe, ṣugbọn diẹ ninu awọn kilasi ti awọn awoṣe (fun apẹẹrẹ, awọn awoṣe ti o da lori mimu ti a jiroro loke) le nilo awọn irinṣẹ awoṣe amọja diẹ sii. Sọrọ nipa EMF jẹ iṣẹ-ṣiṣe ti ko dupẹ, paapaa laarin awọn opin opin ti nkan kan, nitori eyi jẹ koko-ọrọ ti iwe ti o yatọ, ati pe o nipọn kuku. Jẹ ki a ṣe akiyesi nikan pe eto didara giga ti awọn gbogbogbo ti o wa labẹ EMF gba ibimọ gbogbo awọn iṣẹ akanṣe ti a ṣe igbẹhin si awoṣe, eyiti o wa ninu iṣẹ akanṣe ipele oke. Awoṣe Eclipse pẹlu EMF funrararẹ. Ọkan iru ise agbese ni Eclipse Xtext.

Eclipse Xtext pese a "ọrọ modeli" amayederun. Xtext nlo ANTLR fun sisọ ọrọ orisun ati EMF fun aṣoju ASG ti o jẹ abajade (aworan atọka ti o jẹ abẹrẹ, eyiti o jẹ pataki apapo AST ati awọn abuda), ti a tun pe ni “awoṣe atunmọ”. Giramu ti ede ti a ṣe nipasẹ Xtext jẹ apejuwe ninu ede ti ara Xtext. Eyi n gba ọ laaye lati ṣe agbekalẹ apejuwe giramu nikan fun ANTLR, ṣugbọn tun lati gba ilana isọdọtun AST kan (ie Xtext n pese mejeeji parser ati unparser), ofiri agbegbe, ati nọmba awọn paati ede miiran. Ní ọwọ́ kejì ẹ̀wẹ̀, Èdè Gírámà tí a lò nínú Xtext kò rọ̀ ju, sọ, èdè girama tí a lò nínú ANTLR. Nitorinaa, nigbakan o jẹ dandan lati “tẹ” ede imuse si Xtext, eyiti kii ṣe iṣoro nigbagbogbo ti a ba n sọrọ nipa ede ti o dagbasoke lati ibere, ṣugbọn o le jẹ itẹwẹgba fun awọn ede pẹlu sintasi ti iṣeto tẹlẹ. Bi o ti lẹ jẹ pe eyi, Xtext lọwọlọwọ jẹ ogbo julọ, ọlọrọ ẹya, ati ohun elo to wapọ ni Eclipse fun kikọ awọn ede siseto ati awọn irinṣẹ idagbasoke fun wọn. Ni pataki, o jẹ ohun elo ti o dara julọ fun adaṣe iyara ašẹ-kan pato awọn ede (ede-ašẹ kan pato, DSL). Ni afikun si “ikọkọ ede” ti a mẹnuba loke ti o da lori ANTLR ati EMF, Xtext n pese ọpọlọpọ awọn ohun elo ipele giga ti o wulo, pẹlu awọn ilana atọka, ikole afikun, “olootu ọlọgbọn”, ati pupọ, pupọ diẹ sii, ṣugbọn fi ọwọ silẹ- orisun ede awọn awoṣe. Bii EMF, Xtext jẹ koko-ọrọ ti o yẹ fun iwe lọtọ, ati pe a ko le paapaa sọrọ ni ṣoki nipa gbogbo awọn agbara rẹ ni bayi.

1C: Awọn irin-iṣẹ Idagbasoke Idawọlẹ lo taara mejeeji EMF funrararẹ ati nọmba awọn iṣẹ akanṣe Awoṣe Eclipse miiran. Ni pataki, Xtext jẹ ọkan ninu awọn ipilẹ ti awọn irinṣẹ idagbasoke fun iru 1C: Awọn ede ile-iṣẹ bi ede siseto ti a ṣe sinu ati ede ibeere. Ipilẹ miiran fun awọn irinṣẹ idagbasoke wọnyi ni iṣẹ akanṣe Eclipse Handly, eyiti a yoo jiroro ni awọn alaye diẹ sii (ti awọn paati Eclipse ti a ṣe akojọ, o tun jẹ eyiti o kere julọ ti a mọ).

Oṣupa Ọwọ, koko-ọrọ ti iṣẹ akanṣe oke-ipele giga ti Imọ-ẹrọ Eclipse, farahan bi abajade ti idasi koodu ibẹrẹ si Eclipse Foundation ti 1C ṣe ni ọdun 2014. Lati igbanna, 1C ti tẹsiwaju lati ṣe atilẹyin fun idagbasoke iṣẹ akanṣe: Awọn olufaraji ọwọ jẹ oṣiṣẹ ti ile-iṣẹ naa. Ise agbese na kere, ṣugbọn o wa ni aaye alailẹgbẹ kuku ni Eclipse: ibi-afẹde akọkọ rẹ ni lati ṣe atilẹyin idagbasoke ti awọn awoṣe ti o da lori mimu.

Awọn ipilẹ ayaworan ipilẹ ti awọn awoṣe ti o da lori mimu, gẹgẹbi imudani / idiom ara, ni a jiroro loke nipa lilo awoṣe orisun ati awoṣe Java gẹgẹbi apẹẹrẹ. O tun ṣe akiyesi pe mejeeji awoṣe orisun ati awoṣe Java jẹ awọn ipilẹ pataki fun awọn irinṣẹ idagbasoke Eclipse Java (JDT). Ati pe niwọn bi o ti fẹrẹẹ jẹ gbogbo awọn iṣẹ akanṣe * DT Eclipse ni faaji ti o jọra si JDT, kii yoo jẹ arosọ nla lati sọ pe awọn awoṣe ti o da lori mimu wa labẹ ọpọlọpọ, ti kii ṣe gbogbo awọn IDE ti a kọ sori oke ti Platform Eclipse. Fun apẹẹrẹ, Eclipse C/C ++ Development Tooling (CDT) ni o ni a mu-orisun C/C ++ awoṣe ti o yoo kanna ipa ni CDT faaji bi Java awoṣe ṣe ni JDT.

Ṣaaju Handly, Eclipse ko funni ni awọn ile-ikawe amọja fun kikọ awọn awoṣe ede ti o da lori imudani. Awọn awoṣe ti o wa lọwọlọwọ ni a ṣẹda nipataki nipasẹ isọdọtun taara koodu awoṣe Java (aka ẹda/lẹẹ mọ), ni igba ibi ti o faye gba Eclipse Public License (EPL). (O han ni, eyi kii ṣe ọrọ ofin fun, sọ, Eclipse awọn iṣẹ akanṣe funrararẹ, ṣugbọn kii ṣe fun awọn ọja orisun ti o ni pipade.) Ni afikun si aiṣedeede ti ara rẹ, ilana yii n ṣafihan awọn iṣoro ti o mọ daradara: atunkọ koodu ti a ṣe nipasẹ nigbati o ba ṣe deede si awọn aṣiṣe, ati be be lo. Ohun ti o buruju ni pe awọn awoṣe abajade wa “awọn nkan ninu ara wọn” ati pe ko lo anfani ti o pọju fun isokan. Ṣugbọn ipinya awọn imọran ti o wọpọ ati awọn ilana fun awọn awoṣe ede ti o da lori mimu le ja si ṣiṣẹda awọn ohun elo atunlo fun ṣiṣẹ pẹlu wọn, iru si ohun ti o ṣẹlẹ ninu ọran EMF.

Kii ṣe pe Eclipse ko loye awọn ọran wọnyi. Pada ni ọdun 2005 Martin Aeschlimann, ṣe akopọ iriri ti idagbasoke apẹrẹ CDT, jiyan iwulo lati ṣẹda awọn amayederun ti o wọpọ fun awọn awoṣe ede, pẹlu awọn awoṣe ti o da lori mimu. Ṣugbọn, bi igbagbogbo n ṣẹlẹ, nitori awọn iṣẹ-ṣiṣe pataki ti o ga julọ, imuse ti awọn imọran wọnyi ko ni ayika rẹ. Nibayi, isodipupo * koodu DT tun jẹ ọkan ninu awọn koko-ọrọ ti ko ni idagbasoke ni Eclipse.

Ni ori kan, iṣẹ akanṣe Handly jẹ apẹrẹ lati yanju isunmọ awọn iṣoro kanna bi EMF, ṣugbọn fun awọn awoṣe ti o da lori mimu, ati ni akọkọ awọn ede (ie, aṣoju awọn eroja ti igbekalẹ ti ede siseto). Awọn ibi-afẹde akọkọ ti a ṣeto nigbati o ṣe apẹrẹ Handly jẹ akojọ si isalẹ:

  • Idanimọ ti awọn abstractions akọkọ ti agbegbe koko.
  • Idinku igbiyanju ati imudarasi didara imuse ti awọn awoṣe ede ti o da lori mimu nipasẹ ilotunlo koodu.
  • Pese API ipele-meta ti iṣọkan si awọn awoṣe Abajade, ṣiṣe ki o ṣee ṣe lati ṣẹda awọn paati IDE ti o wọpọ ti o ṣiṣẹ pẹlu awọn awoṣe ti o da lori ede.
  • Ni irọrun ati scalability.
  • Integration pẹlu Xtext (ni lọtọ Layer).

Lati ṣe afihan awọn imọran ti o wọpọ ati awọn ilana, awọn imuse ti o wa tẹlẹ ti awọn awoṣe ti o da lori ede ni a ṣe atupale. Awọn atọkun akọkọ ati awọn imuse ipilẹ ti a pese nipasẹ Handly ni a fihan ni Ọpọtọ. 8.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 8. Awọn atọkun ti o wọpọ ati awọn imuse ipilẹ ti awọn eroja Handly

Ni wiwo Ielement duro fun mimu ohun elo ati pe o wọpọ si awọn eroja ti gbogbo awọn awoṣe ti o da lori Handly. Awọn kilasi áljẹbrà Ano nse awọn ti ṣakopọ mu / body siseto (eeya. 9).

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 9. Ielement ati jeneriki mu / imuse ara

Ni afikun, Handly pese a ti ṣakopọ siseto fun a leti nipa awọn ayipada ninu awoṣe eroja (olusin 10). Bi o ti le rii, o jọra ni fifẹ si awọn ilana ifitonileti ti a ṣe imuse ninu awoṣe orisun ati awoṣe Java, o si nlo IelementDelta lati pese aṣoju iṣọkan ti alaye iyipada eroja.

Oṣupa bi iru ẹrọ imọ-ẹrọ fun 1C: Awọn irinṣẹ Idagbasoke Iṣowo
Iresi. 10. Awọn atọkun gbogbogbo ati awọn imuse ipilẹ ti ẹrọ iwifunni Handly

Awọn Handly apakan sísọ loke (olusin 9 ati 10) le ṣee lo lati soju fere eyikeyi mu-orisun si dede. Fun ṣiṣẹda ede awọn awoṣe, iṣẹ akanṣe naa nfunni ni iṣẹ ṣiṣe afikun - ni pataki, awọn atọkun ti o wọpọ ati awọn imuse ipilẹ fun awọn eroja ti eto ọrọ orisun, eyiti a pe orisun eroja (Eya. 8). Ni wiwo ISourceFile duro fun faili orisun, ati ISourceConstruct duro fun ipin kan laarin faili orisun. Awọn kilasi áljẹbrà SourceFile ati SourceConstruct ṣe awọn ọna ṣiṣe gbogbogbo lati ṣe atilẹyin ṣiṣẹ pẹlu awọn faili orisun ati awọn eroja wọn, fun apẹẹrẹ, ṣiṣẹ pẹlu awọn buffers ọrọ, dipọ si awọn ipoidojuko ti nkan kan ninu ọrọ orisun, awọn awoṣe ilaja pẹlu awọn akoonu lọwọlọwọ ti ififinda ẹda iṣẹ , ati be be lo. Ṣiṣe awọn ọna ṣiṣe wọnyi nigbagbogbo jẹ ipenija pupọ, ati Handly le dinku ipa pataki ti idagbasoke awọn awoṣe ede ti o da lori mimu nipa ipese awọn imuse ipilẹ didara ga.

Ni afikun si awọn ilana mojuto ti a ṣe akojọ loke, Handly n pese awọn amayederun fun awọn buffers ọrọ ati awọn aworan, atilẹyin fun isọpọ pẹlu awọn olootu koodu orisun (pẹlu isọpọ-jade-ti-apoti pẹlu olootu Xtext), ati diẹ ninu awọn paati UI ti o wọpọ ti ṣiṣẹ pẹlu awọn olootu koodu orisun. Awọn awoṣe afọwọṣe gẹgẹbi ilana ilana. Lati ṣe apejuwe awọn agbara rẹ, ise agbese na pese awọn apẹẹrẹ pupọ, pẹlu imuse ti awoṣe Java ni Handly. (Ti a fiwera si imuse kikun ti awoṣe Java ni JDT, awoṣe yii jẹ imomose ni irọrun diẹ fun mimọ nla.)

Gẹgẹbi a ti ṣe akiyesi tẹlẹ, idojukọ pataki lakoko apẹrẹ ibẹrẹ Handly ati idagbasoke ti o tẹle jẹ ati tẹsiwaju lati wa lori iwọn ati irọrun.

Ni ipilẹ, awọn awoṣe ti o da lori mimu ṣe iwọn daradara “nipasẹ apẹrẹ”. Fun apẹẹrẹ, mimu / ara idiom faye gba o lati se idinwo iye ti iranti je nipa a awoṣe. Ṣugbọn awọn nuances tun wa. Nitorinaa, nigba idanwo Handly fun iwọn iwọn, iṣoro kan ti ṣe awari ni imuse ti ẹrọ iwifunni - nigbati nọmba nla ti awọn eroja ti yipada, ṣiṣe awọn deltas gba akoko pupọ. O wa jade pe iṣoro kanna wa ninu awoṣe JDT Java, lati eyiti koodu ti o baamu ti ni iyipada lẹẹkan. A ṣe atunṣe kokoro naa ni Handly ati pese iru alemo kan fun JDT, eyiti o ti gba pẹlu ọpẹ. Eyi jẹ apẹẹrẹ kan nibiti iṣafihan Handly sinu awọn imuse awoṣe ti o wa tẹlẹ le wulo, nitori ninu ọran yii iru kokoro kan le ṣe atunṣe ni aaye kan.

Lati jẹ ki imuse Fifọwọkan sinu awọn imuse awoṣe ti o wa tẹlẹ ṣiṣe ni imọ-ẹrọ, ile-ikawe gbọdọ ni irọrun pataki. Iṣoro akọkọ ni lati ṣetọju ibamu sẹhin kọja awoṣe API. Iṣoro yii ti yanju ni Ni ọwọ 0.5 nipa yiya sọtọ ni kedere awoṣe-pato API, asọye ati ni kikun iṣakoso nipasẹ awọn Olùgbéejáde, lati awọn ti iṣọkan orisirisi-ipele API pese nipa awọn ìkàwé. Eyi kii ṣe nikan jẹ ki o ṣee ṣe ni imọ-ẹrọ lati ṣe Handly sinu awọn imuse ti o wa, ṣugbọn tun fun olupilẹṣẹ awoṣe tuntun ni ominira pataki nigbati o n ṣe apẹrẹ API.

Irọrun ni awọn aaye miiran paapaa. Fun apẹẹrẹ, Handly ko fa awọn ihamọ kankan lori igbekalẹ awoṣe ati pe o le ṣee lo lati ṣe awoṣe mejeeji-idi gbogbogbo ati awọn ede-ašẹ kan pato. Nigbati o ba n ṣe agbekalẹ ọna ti faili orisun, Handly ko ṣe ilana eyikeyi fọọmu kan pato ti aṣoju AST ati, ni ipilẹ, paapaa ko nilo wiwa AST funrararẹ, nitorinaa aridaju ibamu pẹlu fere eyikeyi ẹrọ itupalẹ. Nikẹhin, Handly ṣe atilẹyin isọpọ ni kikun pẹlu aaye iṣẹ Eclipse, ṣugbọn tun le ṣiṣẹ taara pẹlu awọn ọna ṣiṣe faili o ṣeun si iṣọpọ rẹ pẹlu Eclipse File System (EFS).

Ẹya lọwọlọwọ Ni ọwọ 0.6 jade ni Oṣu kejila ọdun 2016. Bíótilẹ o daju wipe ise agbese ti wa ni Lọwọlọwọ ni ipinle kan ti abeabo ati awọn API ti ko sibẹsibẹ a ti wa titi nipari, Handly ti wa ni tẹlẹ lo ni meji ti o tobi owo awọn ọja ti o si mu awọn ewu ti sise bi "tete adopters", ati, Mo gbọdọ sọ, maṣe kabamọ sibẹsibẹ.

Gẹgẹbi a ti ṣe akiyesi loke, ọkan ninu awọn ọja wọnyi jẹ 1C: Awọn irinṣẹ Idagbasoke Iṣowo, nibiti a ti lo Handly lati ibẹrẹ lati ṣe apẹẹrẹ awọn eroja ti eto ipele giga ti iru 1C: Awọn ede ile-iṣẹ bi ede siseto ti a ṣe sinu ati ede ibeere. . Ọja miiran jẹ diẹ ti a mọ si gbogbogbo. Eyi Codasip Studio, Ayika apẹrẹ ti a ṣepọ fun ohun elo-pato ilana-ṣeto ero isise (ASIP), ti a lo mejeeji laarin ile-iṣẹ Czech Codasip funrararẹ ati nipasẹ awọn alabara rẹ, pẹlu AMD, AVG, mobileye, Awọn apẹrẹ Sigma. Codasip ti nlo Handly ni iṣelọpọ lati ọdun 2015, bẹrẹ pẹlu ẹya Handly 0.2. Itusilẹ tuntun ti Codasip Studio nlo ẹya 0.5, ti a tu silẹ ni Oṣu Karun ọdun 2016. Ondřej Ilčík, ti ​​o ṣe itọsọna idagbasoke IDE ni Codasip, wa ni olubasọrọ pẹlu iṣẹ akanṣe naa, n pese awọn esi to ṣe pataki ni aṣoju “olugba ti ẹnikẹta”. O paapaa ni anfani lati wa diẹ ninu akoko ọfẹ lati kopa taara ninu idagbasoke iṣẹ akanṣe, imuse Layer UI kan (~ 4000 awọn laini koodu) fun ọkan ninu awọn apẹẹrẹ Handly, awoṣe Java kan. Alaye diẹ sii ni ọwọ-akọkọ nipa lilo Handly nipasẹ awọn olugba le ṣee rii lori oju-iwe naa aseyori itan ise agbese.

A nireti pe lẹhin itusilẹ ti ikede 1.0 pẹlu iṣeduro iduroṣinṣin API ati iṣẹ akanṣe ti n lọ kuro ni ipo isubu, Handly yoo ni awọn alamọja tuntun. Ni akoko yii, iṣẹ akanṣe naa tẹsiwaju lati ṣe idanwo ati ilọsiwaju API siwaju, itusilẹ awọn idasilẹ “pataki” meji fun ọdun kan - ni Oṣu Karun (ọjọ kanna gẹgẹbi itusilẹ Eclipse nigbakanna) ati Oṣu Kejila, n pese iṣeto asọtẹlẹ ti awọn olugba le gbarale. A tun le ṣafikun pe “oṣuwọn kokoro” ti iṣẹ akanṣe naa wa ni ipele kekere nigbagbogbo ati Handly ti n ṣiṣẹ ni igbẹkẹle ninu awọn ọja ti awọn olufọwọsi ni kutukutu lati awọn ẹya akọkọ. Lati siwaju sii Ye Eclipse Handly, o le lo Bibẹrẹ Tutorial и Akopọ ayaworan.

orisun: www.habr.com

Fi ọrọìwòye kun