Var būt,
Å ajÄ rakstÄ, kas ir pÄrskats, mÄs mÄÄ£inÄsim aplÅ«kot dažus Eclipse arhitektÅ«ras pamatus kÄ platformu integrÄtu izstrÄdes rÄ«ku izveidei un sniegsim sÄkotnÄjo priekÅ”statu par Eclipse komponentiem, kas veido tehnoloÄ£ijas pamatu. platforma ājaunajam konfiguratoramā 1C: Enterprise.
Ievads Eclipse arhitektÅ«rÄ
Vispirms apskatÄ«sim dažus vispÄrÄ«gus Eclipse arhitektÅ«ras aspektus, izmantojot piemÄru
PirmkÄrt, jÄatzÄ«mÄ, ka Eclipse ir raksturÄ«gs diezgan skaidrs arhitektoniskais slÄÅojums, no valodas neatkarÄ«gas funkcionalitÄtes nodalÄ«Å”ana no funkcionalitÄtes, kas paredzÄta konkrÄtu programmÄÅ”anas valodu atbalstam, un no lietotÄja saskarnes neatkarÄ«go āpamataā komponentu atdalÄ«Å”anu no saistÄ«tajiem komponentiem. ar atbalsta lietotÄja interfeisu.
TÄdÄjÄdi Eclipse platforma definÄ kopÄ«gu, no valodas neatkarÄ«gu infrastruktÅ«ru, un Java izstrÄdes rÄ«ki Eclipse pievieno pilnvÄrtÄ«gu Java IDE. Gan Eclipse platforma, gan JDT sastÄv no vairÄkiem komponentiem, no kuriem katrs pieder vai nu no UI neatkarÄ«gam ākodolamā vai lietotÄja saskarnes slÄnim (1. attÄls).
RÄ«si. 1. Eclipse Platform un JDT
UzskaitÄ«sim Eclipse platformas galvenÄs sastÄvdaļas:
- Runtime ā definÄ spraudÅa infrastruktÅ«ru. Eclipse raksturo modulÄra arhitektÅ«ra. BÅ«tÄ«bÄ Eclipse ir "paplaÅ”inÄjuma punktu" un "paplaÅ”inÄjumu" kolekcija.
- Darbvieta ā pÄrvalda vienu vai vairÄkus projektus. Projekts sastÄv no mapÄm un failiem, kas ir tieÅ”i saistÄ«ti ar failu sistÄmu.
- Standarta logrÄ«ku rÄ«kkopa (SWT) - NodroÅ”ina pamata lietotÄja interfeisa elementus, kas integrÄti operÄtÄjsistÄmÄ.
- JFace ā NodroÅ”ina vairÄkas lietotÄja saskarnes ietvarus, kas izveidoti uz SWT.
- Workbench ā DefinÄ Eclipse UI paradigmu: redaktorus, skatus, perspektÄ«vas.
JÄsaka, ka Eclipse platforma nodroÅ”ina arÄ« daudzus citus noderÄ«gus komponentus integrÄtu izstrÄdes rÄ«ku, tostarp atkļūdoÅ”anas, salÄ«dzinÄÅ”anas, meklÄÅ”anas un komandas izveidei. ÄŖpaÅ”i jÄpiemin JFace Text - pamats avota koda āviedo redaktoruā izveidei. DiemžÄl pat virspusÄja Å”o komponentu, kÄ arÄ« lietotÄja interfeisa slÄÅa komponentu pÄrbaude Ŕī raksta ietvaros nav iespÄjama, tÄpÄc atlikuÅ”ajÄ Å”Ä«s sadaļas daÄ¼Ä mÄs aprobežosimies ar galveno āpamatkomponentuā pÄrskatu. Eclipse platforma un JDT.
Galvenais izpildlaiks
Eclipse spraudÅu infrastruktÅ«ra ir balstÄ«ta uz
GalvenÄ darbvieta
GandrÄ«z jebkura integrÄtÄ izstrÄdes vide, kas izveidota uz Eclipse platformas, darbojas ar Eclipse darbvietu. TÄ ir darbvieta, kurÄ parasti ir IDE izstrÄdÄtÄs lietojumprogrammas pirmkods. Darbvieta tiek kartÄta tieÅ”i uz failu sistÄmu un sastÄv no projektiem, kuros ir mapes un faili. Å ie projekti, mapes un faili tiek izsaukti resursus darbvieta. Darbvietas ievieÅ”ana programmÄ Eclipse kalpo kÄ keÅ”atmiÅa saistÄ«bÄ ar failu sistÄmu, kas ļauj ievÄrojami paÄtrinÄt resursu koka pÄrvietoÅ”anos. TurklÄt darbvieta nodroÅ”ina vairÄkus papildu pakalpojumus, tostarp
Pamatresursu komponents (org.eclipse.core.resources spraudnis) ir atbildÄ«gs par darbvietas un tÄs resursu atbalstu. Jo Ä«paÅ”i Å”is komponents nodroÅ”ina programmatisku piekļuvi darbvietai veidlapÄ resursu modeļi. Lai efektÄ«vi strÄdÄtu ar Å”o modeli, klientiem ir nepiecieÅ”ams vienkÄrÅ”s veids, kÄ parÄdÄ«t saiti uz resursu. Å ajÄ gadÄ«jumÄ bÅ«tu vÄlams no klienta piekļuves paslÄpt objektu, kas modelÄ« tieÅ”i saglabÄ resursa stÄvokli. PretÄjÄ gadÄ«jumÄ, piemÄram, faila dzÄÅ”anas gadÄ«jumÄ klients var turpinÄt turÄt objektu, kas modelÄ« vairs nav, ar no tÄ izrietoÅ”Äm problÄmÄm. Eclipse atrisina Å”o problÄmu, izmantojot kaut ko sauc rokturis resursu. Rokturis darbojas kÄ atslÄga (tas zina tikai ceļu uz resursu darbvietÄ) un pilnÄ«bÄ kontrolÄ piekļuvi iekÅ”ÄjÄ modeļa objektam, kas tieÅ”i glabÄ informÄciju par resursa stÄvokli. Å is dizains ir modeļa variÄcija
RÄ«si. 2. attÄlÄ ir parÄdÄ«ta roktura/Ä·ermeÅa idioma, kas tiek piemÄrota resursu modelim. IResource interfeiss attÄlo resursa rokturi un ir API, atŔķirÄ«bÄ no Resource klases, kas ievieÅ” Å”o saskarni, un ResourceInfo klases, kas apzÄ«mÄ pamattekstu, kas nav API. MÄs uzsveram, ka rokturis zina tikai ceļu uz resursu attiecÄ«bÄ pret darbvietas sakni un nesatur saiti uz resursa informÄciju. Resursu informÄcijas objekti veido tÄ saukto āelementu kokuā. Å Ä« datu struktÅ«ra ir pilnÄ«bÄ materializÄta atmiÅÄ. Lai atrastu resursa informÄcijas instanci, kas atbilst rokturim, elementu koks tiek ŔķÄrsots atbilstoÅ”i Å”ajÄ rokturÄ saglabÄtajam ceļam.
RÄ«si. 2. IResource un ResourceInfo
KÄ redzÄsim vÄlÄk, resursa modeļa (mÄs to varÄtu saukt par roktura bÄzes) pamata dizains tiek izmantots Eclipse arÄ« citiem modeļiem. PagaidÄm uzskaitÄ«sim dažas Ŕī dizaina atŔķirÄ«gÄs Ä«paŔības:
- Rokturis ir vÄrtÄ«bas objekts. VÄrtÄ«bu objekti ir nemainÄ«gi objekti, kuru vienlÄ«dzÄ«ba nav balstÄ«ta uz identitÄti. Å Ädus objektus var droÅ”i izmantot kÄ atslÄgu sajauktos konteineros. VairÄki roktura gadÄ«jumi var atsaukties uz vienu un to paÅ”u resursu. Lai tos salÄ«dzinÄtu, jÄizmanto metode vienÄds (Object).
- Rokturis nosaka resursa uzvedÄ«bu, bet nesatur informÄciju par resursa stÄvokli (vienÄ«gie dati, ko tas glabÄ, ir "atslÄga", ceļŔ uz resursu).
- Rokturis var attiekties uz resursu, kas neeksistÄ (vai nu uz resursu, kas vÄl nav izveidots, vai uz resursu, kas jau ir dzÄsts). Resursa esamÄ«bu var pÄrbaudÄ«t, izmantojot metodi IResource.exists().
- Dažas darbÄ«bas var Ä«stenot, pamatojoties tikai uz informÄciju, kas glabÄjas paÅ”Ä rokturÄ« (tÄ sauktÄs tikai roktura darbÄ«bas). PiemÄri ir IResource.getParent(), getFullPath() utt. Lai Å”Äda darbÄ«ba izdotos, resursam nav jÄbÅ«t. Ja resurss neeksistÄ, operÄcijas, kuru veiksmÄ«gai darbÄ«bai ir nepiecieÅ”ams resurss, rada CoreException.
Eclipse nodroÅ”ina efektÄ«vu mehÄnismu, lai paziÅotu par darbvietas resursu izmaiÅÄm (3. attÄls). Resursi var mainÄ«ties vai nu paÅ”Ä Eclipse IDE veikto darbÄ«bu rezultÄtÄ, vai arÄ« sinhronizÄcijas ar failu sistÄmu rezultÄtÄ. Abos gadÄ«jumos klientiem, kuri abonÄ paziÅojumus, tiek sniegta detalizÄta informÄcija par izmaiÅÄm āresursu deltaā veidÄ. Delta apraksta izmaiÅas starp diviem darbvietas resursa (apakÅ”)koka stÄvokļiem un pats par sevi ir koks, kura katrs mezgls apraksta izmaiÅas resursÄ un satur delta sarakstu nÄkamajÄ lÄ«menÄ«, kas apraksta izmaiÅas pakÄrtotajos resursos.
RÄ«si. 3. IResourceChangeEvent un IResourceDelta
PaziÅoÅ”anas mehÄnismam, kura pamatÄ ir resursu deltas, ir Å”Ädas Ä«paŔības:
- Viena un daudzas izmaiÅas ir aprakstÄ«tas, izmantojot vienu un to paÅ”u struktÅ«ru, jo delta tiek veidota, izmantojot rekursÄ«vÄs kompozÄ«cijas principu. Abonentu klienti var apstrÄdÄt resursu maiÅas paziÅojumus, izmantojot rekursÄ«vu nolaiÅ”anos caur delta koku.
- Delta satur pilnÄ«gu informÄciju par izmaiÅÄm resursÄ, ieskaitot tÄ kustÄ«bu un/vai izmaiÅas ar to saistÄ«tajos āmarÄ·ierosā (piemÄram, kompilÄcijas kļūdas tiek attÄlotas kÄ marÄ·ieri).
- TÄ kÄ atsauces uz resursiem tiek veiktas, izmantojot rokturi, delta, protams, var atsaukties uz attÄlo resursu.
KÄ mÄs drÄ«z redzÄsim, galvenÄs resursu modeļa izmaiÅu paziÅoÅ”anas mehÄnisma konstrukcijas sastÄvdaļas attiecas arÄ« uz citiem modeļiem, kuru pamatÄ ir rokturi.
JDT kodols
Eclipse darbvietas resursu modelis ir pamata valodas agnostisks modelis. JDT Core komponents (spraudnis org.eclipse.jdt.core) nodroÅ”ina API, lai pÄrvietotos un analizÄtu darbvietas struktÅ«ru no Java perspektÄ«vas, tÄ sauktais "Java modelis" (Java modelis). Å Ä« API ir definÄta Java elementu izteiksmÄ pretstatÄ pamata resursa modeļa API, kas ir definÄts kÄ mapes un faili. Java elementu koka galvenÄs saskarnes ir parÄdÄ«tas attÄlÄ. 4.
Rīsi. 4. Java modeļa elementi
Java modelÄ« tiek izmantota tÄda pati roktura/Ä·ermeÅa idioma kÄ resursa modelÄ« (5. attÄls). IJavaElement ir rokturis, un JavaElementInfo spÄlÄ korpusa lomu. IJavaElement saskarne definÄ protokolu, kas ir kopÄ«gs visiem Java elementiem. Dažas no tÄ metodÄm ir tikai apstrÄdÄjamas: getElementName(), getParent() utt. JavaElementInfo objekts saglabÄ atbilstoÅ”Ä elementa stÄvokli: tÄ struktÅ«ru un atribÅ«tus.
RÄ«si. 5. IJavaElement un JavaElementInfo
Java modelim ir dažas atŔķirÄ«bas pamata roktura/korpusa dizaina ievieÅ”anÄ salÄ«dzinÄjumÄ ar resursa modeli. KÄ minÄts iepriekÅ”, resursu modelÄ« elementu koks, kura mezgli ir resursa informÄcijas objekti, ir pilnÄ«bÄ ietverts atmiÅÄ. Bet Java modelim var bÅ«t ievÄrojami lielÄks elementu skaits nekÄ resursu kokÄ, jo tas arÄ« atspoguļo .java un .class failu iekÅ”Äjo struktÅ«ru: tipus, laukus un metodes.
Lai izvairÄ«tos no visa atmiÅÄ esoÅ”o elementu koka pilnÄ«gas materializÄcijas, Java modeļa ievieÅ”ana izmanto ierobežota izmÄra LRU elementu informÄcijas keÅ”atmiÅu, kur atslÄga ir rokturis IJavaElement. elementu informÄcijas objekti tiek izveidoti pÄc pieprasÄ«juma, pÄrvietojoties elementu kokÄ. Å ajÄ gadÄ«jumÄ no keÅ”atmiÅas tiek izlikti retÄk izmantotie vienumi, un modeļa atmiÅas patÄriÅÅ” paliek ierobežots lÄ«dz norÄdÄ«tajam keÅ”atmiÅas izmÄram. Å Ä« ir vÄl viena uz roktura balstÄ«ta dizaina priekÅ”rocÄ«ba, kas pilnÄ«bÄ slÄpj Å”Ädas ievieÅ”anas detaļas no klienta koda.
Java elementu izmaiÅu paziÅoÅ”anas mehÄnisms kopumÄ ir lÄ«dzÄ«gs iepriekÅ” apspriestajam darbvietas resursu izmaiÅu izsekoÅ”anas mehÄnismam. Klients, kurÅ” vÄlas pÄrraudzÄ«t Java modeļa izmaiÅas, abonÄ paziÅojumus, kas tiek attÄloti kÄ ElementChangedEvent objekts, kas satur IJavaElementDelta (6. attÄls).
RÄ«si. 6. ElementChangedEvent un IJavaElementDelta
Java modelÄ« nav informÄcijas par metožu korpusiem vai nosaukumu izŔķirtspÄju, tÄpÄc detalizÄtai Java valodÄ rakstÄ«ta koda analÄ«zei JDT Core nodroÅ”ina papildu (neuz roktura balstÄ«tu) modeli:
TÄ kÄ sintakses koki var patÄrÄt ievÄrojamu daudzumu atmiÅas, JDT aktÄ«vajam redaktoram saglabÄ tikai vienu AST. AtŔķirÄ«bÄ no Java modeļa, AST parasti tiek uzskatÄ«ts par "starpposma", "pagaidu" modeli, kura locekļiem nevajadzÄtu atsaukties uz klientiem Ärpus operÄcijas konteksta, kuras rezultÄtÄ tika izveidots AST.
UzskaitÄ«tie trÄ«s modeļi (Java modelis, AST, saistÄ«jumi) kopÄ veido pamatu āinteliÄ£entu izstrÄdes rÄ«kuā izveidei JDT, ieskaitot jaudÄ«gu Java redaktoru ar dažÄdiem āpalÄ«giemā, dažÄdÄm darbÄ«bÄm avota koda apstrÄdei (ieskaitot importÄÅ”anas saraksta organizÄÅ”anu). nosaukumi un formatÄjums atbilstoÅ”i pielÄgotajam stilam), meklÄÅ”anas un pÄrveidoÅ”anas rÄ«ki. Å ajÄ gadÄ«jumÄ Java modelim ir Ä«paÅ”a loma, jo tas tiek izmantots kÄ pamats izstrÄdÄtÄs lietojumprogrammas struktÅ«ras vizuÄlam attÄlojumam (piemÄram, programmÄ Package Explorer, Outline, Search, Call Hierarchy un Tipa hierarhija).
Eclipse komponenti, kas izmantoti 1C:Enterprise Developments Tools
AttÄlÄ 7. attÄlÄ parÄdÄ«ti Eclipse komponenti, kas veido 1C:Enterprise Development Tools tehnoloÄ£iju platformas pamatu.
RÄ«si. 7. Eclipse kÄ platforma 1C:Enterprise Development Tools
Eclipse platforma nodroÅ”ina pamata infrastruktÅ«ru. IepriekÅ”ÄjÄ sadaÄ¼Ä aplÅ«kojÄm dažus Ŕīs infrastruktÅ«ras aspektus.
TÄpat kÄ jebkurÅ” vispÄrÄjs rÄ«ks, EMF ir piemÄrots dažÄdu modelÄÅ”anas problÄmu risinÄÅ”anai, taÄu dažÄm modeļu klasÄm (piemÄram, modeļiem, kuru pamatÄ ir iepriekÅ” aprakstÄ«tie rokturi) var bÅ«t nepiecieÅ”ami specializÄtÄki modelÄÅ”anas rÄ«ki. RunÄt par EML ir nepateicÄ«gs uzdevums, it Ä«paÅ”i viena raksta ierobežotajÄ robežÄs, jo tas ir atseviŔķas grÄmatas temats un diezgan biezs. AtzÄ«mÄsim tikai to, ka EMF pamatÄ esoÅ”Ä kvalitatÄ«vÄ vispÄrinÄjumu sistÄma ļÄva izveidot veselu virkni modelÄÅ”anai veltÄ«tu projektu, kas ir iekļauti augstÄkÄ lÄ«meÅa projektÄ.
1C: Enterprise Development Tools aktÄ«vi izmanto gan paÅ”u EMF, gan vairÄkus citus Eclipse Modeling projektus. Jo Ä«paÅ”i Xtext ir viens no tÄdu 1C:Enterprise valodu izstrÄdes rÄ«ku pamatiem kÄ iebÅ«vÄtÄ programmÄÅ”anas valoda un vaicÄjumu valoda. VÄl viens Å”o izstrÄdes rÄ«ku pamats ir projekts Eclipse Handly, par kuru mÄs runÄsim sÄ«kÄk (no uzskaitÄ«tajiem Eclipse komponentiem tas joprojÄm ir vismazÄk zinÄms).
Uz rokturiem balstÄ«tu modeļu arhitektÅ«ras pamatprincipi, piemÄram, roktura/Ä·ermeÅa idioma, tika apspriesti iepriekÅ”, izmantojot resursu modeli un Java modeli kÄ piemÄrus. TÄ arÄ« atzÄ«mÄja, ka gan resursa modelis, gan Java modelis ir svarÄ«gs Eclipse Java izstrÄdes rÄ«ku (JDT) pamats. Un tÄ kÄ gandrÄ«z visiem *DT Eclipse projektiem ir JDT lÄ«dzÄ«ga arhitektÅ«ra, nebÅ«tu liels pÄrspÄ«lÄts teikt, ka uz rokturiem balstÄ«ti modeļi ir pamatÄ daudziem, ja ne visiem IDE, kas veidoti uz Eclipse platformas. PiemÄram, Eclipse C/C++ izstrÄdes rÄ«kam (CDT) ir uz roktura balstÄ«ts C/C++ modelis, kam CDT arhitektÅ«rÄ ir tÄda pati loma kÄ Java modelim JDT.
Pirms Handly Eclipse nepiedÄvÄja specializÄtas bibliotÄkas, lai izveidotu uz rokturiem balstÄ«tus valodu modeļus. PaÅ”laik esoÅ”ie modeļi tika izveidoti, galvenokÄrt tieÅ”i pielÄgojot Java modeļa kodu (aka copy/paste), gadÄ«jumos, kad tas atļauj Eclipse publiskÄ licence (EPL). (AcÄ«mredzot, tas parasti nav juridisks jautÄjums, piemÄram, paÅ”iem Eclipse projektiem, bet ne slÄgtÄ pirmkoda produktiem.) Papildus tam raksturÄ«gajam nejauÅ”umam Å”is paÅÄmiens rada labi zinÄmas problÄmas: koda dublÄÅ”anÄs, ko rada, pielÄgojoties kļūdÄm, utt. SliktÄkais ir tas, ka iegÅ«tie modeļi paliek "lietas paÅ”i par sevi" un neizmanto apvienoÅ”anÄs iespÄjas. TaÄu kopÄju koncepciju un protokolu izolÄÅ”ana valodas modeļiem, kuru pamatÄ ir rokturi, varÄtu radÄ«t atkÄrtoti lietojamus komponentus darbam ar tiem, lÄ«dzÄ«gi kÄ tas notika EML gadÄ«jumÄ.
Nav tÄ, ka Eclipse nesaprata Å”os jautÄjumus. VÄl 2005. gadÄ
ZinÄmÄ nozÄ«mÄ Handly projekts ir paredzÄts, lai atrisinÄtu aptuveni tÄdas paÅ”as problÄmas kÄ EMF, bet modeļiem, kuru pamatÄ ir rokturi, un galvenokÄrt valodu (t.i., attÄlojot kÄdas programmÄÅ”anas valodas struktÅ«ras elementus). Galvenie mÄrÄ·i, kas izvirzÄ«ti, izstrÄdÄjot Handly, ir uzskaitÄ«ti zemÄk:
- PriekÅ”meta jomas galveno abstrakciju identificÄÅ”ana.
- SamazinÄt pÅ«les un uzlabot uz rokturi balstÄ«tu valodu modeļu ievieÅ”anas kvalitÄti, izmantojot kodu atkÄrtoti.
- NodroÅ”inot iegÅ«tajiem modeļiem vienotu metalÄ«meÅa API, ļaujot izveidot kopÄ«gus IDE komponentus, kas darbojas ar modeļiem, kuru pamatÄ ir valodas rokturi.
- ElastÄ«gums un mÄrogojamÄ«ba.
- IntegrÄcija ar Xtext (atseviÅ”Ä·Ä slÄnÄ«).
Lai izceltu izplatÄ«tos jÄdzienus un protokolus, tika analizÄtas esoÅ”Äs valodas roktura modeļu ievieÅ”anas. Handly nodroÅ”inÄtÄs galvenÄs saskarnes un pamata ievieÅ”anas ir parÄdÄ«tas attÄlÄ. 8.
RÄ«si. 8. Handly elementu kopÄ«gÄs saskarnes un pamata implementÄcijas
IElement interfeiss attÄlo elementa rokturi un ir kopÄ«gs visu ar Handly balstÄ«tu modeļu elementiem. AbstraktÄ klase Element realizÄ vispÄrinÄto roktura/korpusa mehÄnismu (9. att.).
RÄ«si. 9. IEelements un vispÄrÄ«gÄ roktura/Ä·ermeÅa ievieÅ”ana
TurklÄt Handly nodroÅ”ina vispÄrinÄtu mehÄnismu paziÅoÅ”anai par modeļa elementu izmaiÅÄm (10. att.). KÄ redzat, tas kopumÄ ir lÄ«dzÄ«gs paziÅoÅ”anas mehÄnismiem, kas ieviesti resursa modelÄ« un Java modelÄ«, un izmanto IElementDelta, lai nodroÅ”inÄtu vienotu elementu izmaiÅu informÄcijas attÄlojumu.
RÄ«si. 10. Handly paziÅoÅ”anas mehÄnisma vispÄrÄ«gÄs saskarnes un pamata implementÄcijas
IepriekÅ” apskatÄ«to Handly daļu (9. un 10. att.) var izmantot, lai attÄlotu gandrÄ«z visus modeļus, kuru pamatÄ ir rokturi. Par radÄ«Å”anu lingvistiskais modeļus, projekts piedÄvÄ papildu funkcionalitÄti - jo Ä«paÅ”i kopÄjas saskarnes un pamata implementÄcijas avota teksta struktÅ«ras elementiem, t.s. avota elementi (8. att.). ISourceFile saskarne apzÄ«mÄ avota failu, un ISourceConstruct apzÄ«mÄ elementu avota failÄ. AbstraktÄs klases SourceFile un SourceConstruct Ä«steno vispÄrinÄtus mehÄnismus, lai atbalstÄ«tu darbu ar avota failiem un to elementiem, piemÄram, darbu ar teksta buferiem, saistÄ«Å”anu ar elementa koordinÄtÄm avota tekstÄ, modeļu saskaÅoÅ”anu ar darba kopiju bufera paÅ”reizÄjo saturu. utt. Å o mehÄnismu ievieÅ”ana parasti ir diezgan grÅ«ts izaicinÄjums, un Handly var ievÄrojami samazinÄt centienus izstrÄdÄt uz rokturiem balstÄ«tus valodu modeļus, nodroÅ”inot augstas kvalitÄtes pamata implementÄcijas.
Papildus iepriekÅ” uzskaitÄ«tajiem pamatmehÄnismiem Handly nodroÅ”ina infrastruktÅ«ru teksta buferiem un momentuzÅÄmumiem, atbalstu integrÄcijai ar pirmkoda redaktoriem (tostarp integrÄciju ar Xtext redaktoru), kÄ arÄ« dažus izplatÄ«tus lietotÄja interfeisa komponentus, kas strÄdÄt ar pirmkoda redaktoriem. Ärti modeļi, piemÄram, kontÅ«ru ietvars. Lai ilustrÄtu tÄ iespÄjas, projekts sniedz vairÄkus piemÄrus, tostarp Java modeļa ievieÅ”anu Handly. (SalÄ«dzinot ar pilnu Java modeļa ievieÅ”anu JDT, Å”is modelis ir apzinÄti nedaudz vienkÄrÅ”ots, lai nodroÅ”inÄtu lielÄku skaidrÄ«bu.)
KÄ minÄts iepriekÅ”, Handly sÄkotnÄjÄ dizaina un turpmÄkÄs izstrÄdes laikÄ galvenÄ uzmanÄ«ba tika pievÄrsta un joprojÄm ir mÄrogojamÄ«ba un elastÄ«ba.
PrincipÄ modeļi, kuru pamatÄ ir rokturi, ir diezgan labi mÄrogoti āpÄc dizainaā. PiemÄram, roktura/korpusa idioma ļauj ierobežot modeļa patÄrÄtÄs atmiÅas apjomu. Bet ir arÄ« nianses. TÄdÄjÄdi, pÄrbaudot Handly mÄrogojamÄ«bu, tika atklÄta problÄma paziÅoÅ”anas mehÄnisma ievieÅ”anÄ - mainot lielu skaitu elementu, deltu konstruÄÅ”ana aizÅÄma pÄrÄk daudz laika. IzrÄdÄ«jÄs, ka tÄ pati problÄma bija JDT Java modelÄ«, no kuras savulaik tika adaptÄts attiecÄ«gais kods. MÄs izlabojÄm kļūdu Handly un sagatavojÄm lÄ«dzÄ«gu ielÄpu JDT, kas tika pateicÄ«gi saÅemta. Å is ir tikai viens piemÄrs, kur Handly ievieÅ”ana esoÅ”o modeļu ievieÅ”anÄ varÄtu bÅ«t noderÄ«ga, jo Å”ajÄ gadÄ«jumÄ Å”Ädu kļūdu varÄtu novÄrst tikai vienÄ vietÄ.
Lai padarÄ«tu Handly ievieÅ”anu esoÅ”o modeļu ievieÅ”anÄ tehniski iespÄjamu, bibliotÄkai ir jÄbÅ«t ievÄrojamai elastÄ«bai. GalvenÄ problÄma ir saglabÄt atpakaļsaderÄ«bu visÄ API modelÄ«. Å Ä« problÄma tika atrisinÄta gadÄ
ElastÄ«bai ir arÄ« citi aspekti. PiemÄram, Handly neuzliek gandrÄ«z nekÄdus ierobežojumus modeļa struktÅ«rai, un to var izmantot, lai modelÄtu gan vispÄrÄjas nozÄ«mes, gan domÄnam specifiskas valodas. Veidojot avota faila struktÅ«ru, Handlijs nenosaka nekÄdu Ä«paÅ”u AST attÄlojuma veidu un principÄ pat neprasa paÅ”a AST klÄtbÅ«tni, tÄdÄjÄdi nodroÅ”inot saderÄ«bu ar gandrÄ«z jebkuru parsÄÅ”anas mehÄnismu. Visbeidzot, Handly atbalsta pilnÄ«gu integrÄciju ar Eclipse darbvietu, bet var arÄ« strÄdÄt tieÅ”i ar failu sistÄmÄm, pateicoties integrÄcijai ar
PaÅ”reizÄjÄ versija
KÄ minÄts iepriekÅ”, viens no Å”iem produktiem ir 1C:Enterprise Development Tools, kur Handly jau no paÅ”a sÄkuma tiek izmantots, lai modelÄtu Å”Ädu 1C:Enterprise valodu augsta lÄ«meÅa struktÅ«ras elementus kÄ iebÅ«vÄto programmÄÅ”anas valodu un vaicÄjumu valodu. . Cits produkts plaÅ”Äkai sabiedrÄ«bai ir mazÄk zinÄms. Å is
MÄs ceram, ka pÄc versijas 1.0 izlaiÅ”anas ar API stabilitÄtes garantiju un projekta aizieÅ”anas no inkubÄcijas stÄvokļa Handly bÅ«s jauni adoptÄtÄji. Pa to laiku projekts turpina testÄt un vÄl vairÄk uzlabot API, izlaižot divus "lielÄkos" laidienus gadÄ - jÅ«nijÄ (tajÄ paÅ”Ä datumÄ, kad tika izlaista vienlaicÄ«ga Eclipse izlaidums) un decembrÄ«, nodroÅ”inot paredzamu grafiku, uz kuru lietotÄji var paļauties. Varam arÄ« piebilst, ka projekta ākļūdu lÄ«menisā joprojÄm ir nemainÄ«gi zemÄ lÄ«menÄ« un Handly ir uzticami strÄdÄjis agrÄ«no lietotÅu produktos jau kopÅ” pirmajÄm versijÄm. Lai turpinÄtu izpÄtÄ«t Eclipse Handly, varat izmantot
Avots: www.habr.com