Jista 'jkun,
F'dan l-artikolu, li huwa ħarsa ġenerali fin-natura, se nippruvaw inħarsu lejn uħud mill-baŜi tal-arkitettura Eclipse bħala pjattaforma għall-bini ta 'għodod ta' żvilupp integrati u nagħtu idea inizjali tal-komponenti Eclipse li jiffurmaw il-pedament tat-teknoloġija. pjattaforma għall-“Konfiguratur il-ġdid” 1C: Enterprise.
Introduzzjoni għall-Arkitettura Eclipse
Ejja l-ewwel nħarsu lejn xi aspetti ġenerali tal-arkitettura Eclipse billi tuża l-eżempju
L-ewwelnett, għandu jiġi nnutat li Eclipse hija kkaratterizzata minn saffi arkitettoniċi pjuttost ċari, bis-separazzjoni tal-funzjonalità indipendenti mill-lingwa minn funzjonalità ddisinjata biex tappoġġja lingwi ta' programmar speċifiċi, u s-separazzjoni ta' komponenti "qalba" indipendenti mill-UI minn komponenti assoċjati. b'interface tal-utent ta 'appoġġ.
Għalhekk, il-Pjattaforma Eclipse tiddefinixxi infrastruttura komuni, indipendenti mill-lingwa, u l-għodod ta 'żvilupp Java jżidu IDE Java b'karatteristika sħiħa ma' Eclipse. Kemm il-Pjattaforma Eclipse kif ukoll il-JDT jikkonsistu f'diversi komponenti, li kull wieħed minnhom jappartjeni jew għal "qalba" indipendenti mill-UI jew saff UI (Figura 1).
Ross. 1. Pjattaforma Eclipse u JDT
Ejja elenka l-komponenti ewlenin tal-Pjattaforma Eclipse:
- Runtime — Jiddefinixxi l-infrastruttura tal-plugin. Eclipse hija kkaratterizzata minn arkitettura modulari. Essenzjalment, Eclipse hija ġabra ta '"punti ta' estensjoni" u "estensjonijiet".
- Spazju tax-xogħol — Tmexxi proġett wieħed jew aktar. Proġett jikkonsisti minn folders u fajls li huma mmappjati direttament mas-sistema tal-fajls.
- Sett ta' Għodda ta' Widget Standard (SWT) - Jipprovdi elementi bażiċi tal-interface tal-utent integrati mas-sistema operattiva.
- JFace — Jipprovdi numru ta' oqfsa tal-IU mibnija fuq SWT.
- Workbench — Jiddefinixxi l-paradigma Eclipse UI: edituri, fehmiet, perspettivi.
Għandu jingħad li l-Pjattaforma Eclipse tipprovdi wkoll ħafna komponenti utli oħra għall-bini ta 'għodod ta' żvilupp integrati, inklużi Debug, Qabbel, Fittex, u Tim. Għandha ssir referenza speċjali għal JFace Text - il-bażi għall-bini ta '"edituri intelliġenti" tal-kodiċi tas-sors. Sfortunatament, anke eżami sommarju ta 'dawn il-komponenti, kif ukoll il-komponenti tas-saff UI, mhuwiex possibbli fl-ambitu ta' dan l-artikolu, għalhekk fil-bqija ta 'din it-taqsima aħna se nillimitaw ruħna għal ħarsa ġenerali tal-komponenti ewlenin "qalba" ta' il-Pjattaforma Eclipse u JDT.
Core Runtime
L-infrastruttura tal-plugin Eclipse hija bbażata fuq
Spazju tax-Xogħol Core
Kważi kull ambjent ta' żvilupp integrat mibni fuq il-Pjattaforma Eclipse jaħdem mal-ispazju tax-xogħol Eclipse. Huwa l-ispazju tax-xogħol li normalment ikun fih il-kodiċi tas-sors tal-applikazzjoni żviluppata fl-IDE. Il-mapep tal-ispazju tax-xogħol direttament mas-sistema tal-fajls u jikkonsisti fi proġetti, li fihom folders u fajls. Dawn il-proġetti, folders, u fajls jissejħu riżorsi spazju tax-xogħol. L-implimentazzjoni tal-ispazju tax-xogħol f'Eclipse sservi bħala cache fir-rigward tas-sistema tal-fajls, li tagħmilha possibbli li titħaffef b'mod sinifikanti t-traversament tas-siġra tar-riżorsi. Barra minn hekk, l-ispazju tax-xogħol jipprovdi għadd ta 'servizzi addizzjonali, inklużi
Il-komponent tar-Riżorsi Ewlenin (plugin org.eclipse.core.resources) huwa responsabbli għall-appoġġ tal-ispazju tax-xogħol u r-riżorsi tiegħu. B'mod partikolari, dan il-komponent jipprovdi aċċess programmatiku għall-ispazju tax-xogħol fil-forma mudelli tar-riżorsi. Biex jaħdmu b'mod effettiv ma 'dan il-mudell, il-klijenti jeħtieġu mod sempliċi biex jippreżentaw link għal riżorsa. F'dan il-każ, ikun mixtieq li jinħbew l-oġġett li jaħżen direttament l-istat tar-riżorsa fil-mudell mill-aċċess tal-klijent. Inkella, fil-każ ta ', pereżempju, tħassar fajl, il-klijent jista' jkompli jżomm oġġett li m'għadux fil-mudell, bil-problemi li jirriżultaw. Eclipse issolvi din il-problema billi tuża xi ħaġa msejħa jimmaniġġaw riżorsa. Immaniġġja jaġixxi bħala ċavetta (jaf biss it-triq għar-riżorsa fl-ispazju tax-xogħol) u tikkontrolla kompletament l-aċċess għall-oġġett tal-mudell intern, li jaħżen direttament informazzjoni dwar l-istat tar-riżorsa. Dan id-disinn huwa varjazzjoni tal-mudell
Ross. Il-Figura 2 turi l-idjoma Handle/Body kif applikata għall-mudell tar-riżorsi. L-interface IResource tirrappreżenta l-manku ta 'riżorsa u hija API, b'differenza mill-klassi Resource, li timplimenta din l-interface, u l-klassi ResourceInfo, li tirrappreżenta l-korp, li mhumiex APIs. Aħna nenfasizzaw li l-manku jaf biss it-triq għar-riżors relattiv għall-għerq tal-ispazju tax-xogħol u ma fihx link għall-informazzjoni tar-riżorsi. Oġġetti ta' informazzjoni tar-riżorsi jiffurmaw l-hekk imsejħa "siġra tal-elementi". Din l-istruttura tad-data hija kompletament immaterjalizzata fil-memorja. Biex issib l-istanza tal-informazzjoni tar-riżorsi li tikkorrispondi għal manku, is-siġra tal-element hija traversata skont il-mogħdija maħżuna f'dak il-manku.
Ross. 2. IResource u ResourceInfo
Kif ser naraw aktar tard, id-disinn bażiku tal-mudell tar-riżorsi (nistgħu nsejħulu bbażat fuq il-manku) jintuża f'Eclipse għal mudelli oħra wkoll. Għalissa, ejja nsemmi xi wħud mill-proprjetajiet distintivi ta 'dan id-disinn:
- Manku huwa oġġett ta 'valur. Oġġetti ta' valur huma oġġetti immutabbli li l-ugwaljanza tagħhom mhix ibbażata fuq l-identità. Oġġetti bħal dawn jistgħu jintużaw b'mod sigur bħala ċavetta f'kontenituri hashed. Każijiet multipli ta 'manku jistgħu jirreferu għall-istess riżorsa. Biex tqabbelhom, trid tuża l-metodu equals(Object).
- Manku jiddefinixxi l-imġieba ta 'riżorsa, iżda ma fihx informazzjoni dwar l-istat tar-riżorsa (l-unika dejta li taħżen hija ċ-"ċavetta", it-triq għar-riżorsa).
- L-immaniġġjar jista' jirreferi għal riżorsa li ma teżistix (jew riżorsa li għadha ma ġietx maħluqa, jew riżorsa li diġà tħassret). L-eżistenza ta' riżorsa tista' tiġi ċċekkjata bl-użu tal-metodu IResource.exists().
- Xi operazzjonijiet jistgħu jiġu implimentati bbażati biss fuq informazzjoni maħżuna fil-manku innifsu (l-hekk imsejħa operazzjonijiet tal-manku biss). Eżempji huma IResource.getParent(), getFullPath(), eċċ. Ir-riżorsa m'għandhiex għalfejn teżisti biex operazzjoni bħal din tirnexxi. Operazzjonijiet li jeħtieġu li teżisti riżorsa biex tirnexxi jarmu CoreException jekk ir-riżorsa ma teżistix.
Eclipse jipprovdi mekkaniżmu effiċjenti biex jinnotifika bidliet fir-riżorsi tal-ispazju tax-xogħol (Figura 3). Ir-riżorsi jistgħu jinbidlu jew bħala riżultat ta 'azzjonijiet imwettqa fi ħdan l-IDE Eclipse innifsu jew bħala riżultat ta' sinkronizzazzjoni mas-sistema tal-fajls. Fiż-żewġ każijiet, il-klijenti li jabbonaw għan-notifiki jingħataw informazzjoni dettaljata dwar il-bidliet fil-forma ta '"deltas tar-riżorsi". Delta tiddeskrivi bidliet bejn żewġ stati ta’ (sotto-)siġra tar-riżorsi tal-ispazju tax-xogħol u hija stess siġra, li kull nodu tagħha jiddeskrivi bidla għal riżorsa u fih lista ta’ deltas fil-livell li jmiss li jiddeskrivu bidliet fir-riżorsi tat-tfal.
Ross. 3. IResourceChangeEvent u IResourceDelta
Il-mekkaniżmu ta' notifika bbażat fuq deltas tar-riżorsi għandu l-karatteristiċi li ġejjin:
- Bidla waħda u ħafna bidliet huma deskritti bl-użu tal-istess struttura, peress li d-delta hija mibnija bl-użu tal-prinċipju ta 'kompożizzjoni rikorsiv. Il-klijenti tal-abbonati jistgħu jipproċessaw notifiki ta’ tibdil tar-riżorsi billi jużaw dixxendenza rikorsiva permezz ta’ siġra tad-deltas.
- Id-delta fiha informazzjoni kompluta dwar bidliet fir-riżorsa, inkluż il-moviment tagħha u/jew bidliet fil-“markaturi” assoċjati magħha (pereżempju, żbalji ta’ kumpilazzjoni huma rappreżentati bħala markaturi).
- Peress li r-referenzi tar-riżorsi jsiru permezz tal-manku, delta jista 'naturalment jirreferi għal riżorsa remota.
Kif se naraw dalwaqt, il-komponenti ewlenin tad-disinn tal-mekkaniżmu ta 'notifika tal-bidla tal-mudell tar-riżorsi huma rilevanti wkoll għal mudelli oħra bbażati fuq il-manku.
JDT Core
Il-mudell tar-riżorsi tal-ispazju tax-xogħol Eclipse huwa mudell fundamentali agnostiku tal-lingwa. Il-komponent JDT Core (plugin org.eclipse.jdt.core) jipprovdi API għan-navigazzjoni u l-analiżi tal-istruttura tal-ispazju tax-xogħol minn perspettiva Java, l-hekk imsejjaħ "mudell Java" (Mudell Java). Din l-API hija definita f'termini ta 'elementi Java, għall-kuntrarju tal-mudell ta' riżorsi sottostanti API, li huwa definit f'termini ta 'folders u fajls. L-interfaces ewlenin tas-siġra tal-element Java huma murija fil-Fig. 4.
Ross. 4. Elementi tal-Mudell Java
Il-mudell Java juża l-istess manku/idjoma tal-ġisem bħall-mudell tar-riżorsi (Figura 5). IJavaElement huwa l-manku, u JavaElementInfo għandu r-rwol tal-ġisem. L-interface IJavaElement tiddefinixxi protokoll komuni għall-elementi Java kollha. Uħud mill-metodi tiegħu huma manku biss: getElementName(), getParent(), eċċ. L-oġġett JavaElementInfo jaħżen l-istat tal-element korrispondenti: l-istruttura u l-attributi tiegħu.
Ross. 5. IJavaElement u JavaElementInfo
Il-mudell Java għandu xi differenzi fl-implimentazzjoni tad-disinn bażiku tal-manku/korp meta mqabbel mal-mudell tar-riżorsi. Kif innutat hawn fuq, fil-mudell tar-riżorsi, is-siġra tal-element, li n-nodi tagħha huma oġġetti ta 'informazzjoni tar-riżorsi, tinsab kompletament fil-memorja. Iżda l-mudell Java jista 'jkollu numru ferm akbar ta' elementi mis-siġra tar-riżorsi, minħabba li jirrappreżenta wkoll l-istruttura interna tal-fajls .java u .class: tipi, oqsma, u metodi.
Biex tevita kompletament li timmaterjalizza s-siġra kollha tal-elementi fil-memorja, l-implimentazzjoni tal-mudell Java tuża cache LRU ta 'daqs limitat ta' informazzjoni dwar l-elementi, fejn iċ-ċavetta hija manku IJavaElement. oġġetti info element huma maħluqa fuq talba kif is-siġra element hija navigata. F'dan il-każ, l-oġġetti li jintużaw l-inqas ta 'spiss jiġu żgumbrati mill-cache, u l-konsum tal-memorja tal-mudell jibqa' limitat għad-daqs tal-cache speċifikat. Dan huwa vantaġġ ieħor ta 'disinn ibbażat fuq manku, li jaħbi kompletament dettalji ta' implimentazzjoni bħal dawn mill-kodiċi tal-klijent.
Il-mekkaniżmu għan-notifika tal-bidliet fl-elementi Java huwa ġeneralment simili għall-mekkaniżmu għall-intraċċar tal-bidliet fir-riżorsi tal-ispazju tax-xogħol diskuss hawn fuq. Klijent li jixtieq jissorvelja l-bidliet fil-mudell Java jissottoskrivi għan-notifiki, li huma rappreżentati bħala oġġett ElementChangedEvent li fih IJavaElementDelta (Figura 6).
Ross. 6. ElementChangedEvent u IJavaElementDelta
Il-mudell Java ma fihx informazzjoni dwar il-korpi tal-metodi jew ir-riżoluzzjoni tal-ismijiet, għalhekk għal analiżi dettaljata tal-kodiċi miktub f'Java, JDT Core jipprovdi mudell addizzjonali (mhux ibbażat fuq il-manku):
Minħabba li s-siġar tas-sintassi jistgħu jikkunsmaw ammont sinifikanti ta 'memorja, JDT jaħżen AST wieħed biss għall-editur attiv. B'differenza mill-mudell Java, l-AST huwa tipikament meqjus bħala mudell "intermedju," "temporanju" li l-membri tiegħu m'għandhomx jinżammu referenzjati mill-klijenti barra mill-kuntest tal-operazzjoni li wasslet għall-ħolqien tal-AST.
It-tliet mudelli elenkati (mudell Java, AST, rbit) flimkien jiffurmaw il-bażi għall-bini ta '"għodod ta' żvilupp intelliġenti" f'JDT, inkluż editur Java b'saħħtu b'diversi "helpers", azzjonijiet varji għall-ipproċessar tal-kodiċi tas-sors (inkluż l-organizzazzjoni ta 'lista ta' importazzjoni ismijiet u ifformattjar skond l-istil personalizzat), għodod ta 'tfittxija u refactoring. F'dan il-każ, il-mudell Java għandu rwol speċjali, peress li huwa li jintuża bħala l-bażi għal rappreżentazzjoni viżwali tal-istruttura tal-applikazzjoni li qed tiġi żviluppata (pereżempju, f'Pakkett Explorer, Outline, Fittex, Ġerarkija tas-Sejħiet, u Ġerarkija tat-Tip).
Komponenti Eclipse użati f'1C: Għodda ta' Żviluppi ta' Intrapriża
Fil-Fig. Il-Figura 7 turi l-komponenti Eclipse li jiffurmaw il-pedament tal-pjattaforma tat-teknoloġija għal 1C:Enterprise Development Tools.
Ross. 7. Eclipse bħala pjattaforma għal 1C:Enterprise Development Tools
Pjattaforma Eclipse jipprovdi infrastruttura bażika. Ħarsa lejn xi aspetti ta’ din l-infrastruttura fit-taqsima preċedenti.
Bħal kull għodda ta 'għan tassew ġenerali, l-EMF hija adattata biex issolvi firxa wiesgħa ta' problemi ta 'mudellar, iżda xi klassijiet ta' mudelli (per eżempju, il-mudelli bbażati fuq il-manku diskussi hawn fuq) jistgħu jeħtieġu għodod ta 'mudellar aktar speċjalizzati. Li titkellem dwar l-EMF hija kompitu ingrat, speċjalment fil-limiti limitati ta 'artiklu wieħed, peress li dan huwa s-suġġett ta' ktieb separat, u wieħed pjuttost oħxon. Ejja ninnutaw biss li s-sistema ta 'ġeneralizzazzjonijiet ta' kwalità għolja sottostanti l-EMF ippermettiet it-twelid ta 'firxa sħiħa ta' proġetti ddedikati għall-immudellar, li huma inklużi fil-proġett tal-ogħla livell.
1C:L-Għodod tal-Iżvilupp tal-Intrapriża jużaw b'mod attiv kemm l-EMF innifsu kif ukoll għadd ta' proġetti oħra ta' Eclipse Modeling. B'mod partikolari, Xtext huwa wieħed mill-pedamenti ta 'għodod ta' żvilupp għal 1C: lingwi Enterprise bħal lingwa ta 'programmar u lingwa ta' mistoqsija integrata. Bażi oħra għal dawn l-għodod ta 'żvilupp huwa l-proġett Eclipse Handly, li se niddiskutu f'aktar dettall (mill-komponenti elenkati ta' Eclipse, għadu l-inqas magħruf).
Il-prinċipji arkitettoniċi bażiċi ta 'mudelli bbażati fuq manku, bħall-idjoma manku/korp, ġew diskussi hawn fuq bl-użu tal-mudell tar-riżorsi u l-mudell Java bħala eżempji. Innota wkoll li kemm il-mudell tar-riżorsi kif ukoll il-mudell Java huma pedamenti importanti għall-għodod ta 'żvilupp Eclipse Java (JDT). U peress li kważi l-proġetti kollha *DT Eclipse għandhom arkitettura simili għal JDT, ma tkunx esaġerazzjoni kbira li wieħed jgħid li mudelli bbażati fuq il-manku huma l-bażi ta' ħafna, jekk mhux kollha IDEs mibnija fuq il-Pjattaforma Eclipse. Pereżempju, l-Eclipse C/C++ Development Tooling (CDT) għandu mudell C/C++ ibbażat fuq il-manku li għandu l-istess rwol fl-arkitettura CDT bħall-mudell Java fil-JDT.
Qabel Handly, Eclipse ma offrietx libreriji speċjalizzati għall-bini ta' mudelli tal-lingwa bbażati fuq il-manku. Il-mudelli li jeżistu bħalissa nħolqu prinċipalment bl-adattament dirett tal-kodiċi tal-mudell Java (magħruf ukoll bħala kopja/pejst), f’każijiet fejn tippermetti Eclipse Public License (EPL). (Ovvjament, din is-soltu mhix kwistjoni legali għal, ngħidu aħna, proġetti Eclipse innifsu, iżda mhux għal prodotti ta 'sors magħluq.) Minbarra l-haphazardness inerenti tagħha, din it-teknika tintroduċi problemi magħrufa sew: duplikazzjoni tal-kodiċi introdotta minn meta tadatta għal żbalji, eċċ. L-agħar huwa li l-mudelli li jirriżultaw jibqgħu "affarijiet fihom infushom" u ma jieħdux vantaġġ mill-potenzjal għall-unifikazzjoni. Iżda l-iżolament ta 'kunċetti u protokolli komuni għal mudelli ta' lingwa bbażati fuq manku jista 'jwassal għall-ħolqien ta' komponenti li jistgħu jerġgħu jintużaw biex jaħdmu magħhom, simili għal dak li ġara fil-każ tal-EMF.
Mhux li Eclipse ma fehmitx dawn il-kwistjonijiet. Lura fl-2005
F'ċertu sens, il-proġett Handly huwa ddisinjat biex isolvi bejn wieħed u ieħor l-istess problemi bħall-EMF, iżda għal mudelli bbażati fuq il-manku, u primarjament dawk tal-lingwa (jiġifieri, li jirrappreżentaw elementi tal-istruttura ta 'xi lingwa ta' programmar). L-għanijiet ewlenin stabbiliti meta tfassal Handly huma elenkati hawn taħt:
- Identifikazzjoni tal-astrazzjonijiet ewlenin tal-qasam tas-suġġett.
- It-tnaqqis tal-isforz u t-titjib tal-kwalità tal-implimentazzjoni tal-mudelli tal-lingwa bbażati fuq il-manku permezz tal-użu mill-ġdid tal-kodiċi.
- Tipprovdi API ta 'meta-livell unifikata lill-mudelli li jirriżultaw, li jagħmilha possibbli li jinħolqu komponenti IDE komuni li jaħdmu ma' mudelli bbażati fuq il-manku tal-lingwa.
- Flessibilità u skalabbiltà.
- Integrazzjoni ma 'Xtext (f'saff separat).
Biex jiġu enfasizzati kunċetti u protokolli komuni, ġew analizzati implimentazzjonijiet eżistenti ta 'mudelli bbażati fuq il-manku tal-lingwa. L-interfaces ewlenin u l-implimentazzjonijiet bażiċi pprovduti minn Handly huma murija fil-Fig. 8.
Ross. 8. Interfaces komuni u implimentazzjonijiet bażiċi ta 'elementi Handly
L-interface IElement tirrappreżenta l-manku ta 'element u hija komuni għall-elementi tal-mudelli kollha bbażati fuq Handly. L-Element tal-klassi astratta timplimenta l-mekkaniżmu ġeneralizzat tal-manku/korp (Fig. 9).
Ross. 9. IElement u manku ġeneriku/implimentazzjoni tal-ġisem
Barra minn hekk, Handly jipprovdi mekkaniżmu ġeneralizzat biex jinnotifika dwar bidliet fl-elementi tal-mudell (Fig. 10). Kif tistgħu taraw, huwa ġeneralment simili għall-mekkaniżmi ta 'notifika implimentati fil-mudell tar-riżorsi u l-mudell Java, u juża IElementDelta biex jipprovdi rappreżentazzjoni unifikata tal-informazzjoni dwar il-bidla tal-element.
Ross. 10. Interfaċċji ġenerali u implimentazzjonijiet bażiċi tal-mekkaniżmu ta' notifika Handly
Il-parti Handly diskussa hawn fuq (Fig. 9 u 10) tista 'tintuża biex tirrappreżenta kważi kull mudelli bbażati fuq manku. Għall-ħolqien lingwistiku mudelli, il-proġett joffri funzjonalità addizzjonali - b'mod partikolari, interfaces komuni u implimentazzjonijiet bażiċi għal elementi tal-istruttura tat-test sors, l-hekk imsejħa elementi tas-sors (Fig. 8). L-interface ISourceFile tirrappreżenta fajl tas-sors, u ISourceConstruct jirrappreżenta element fil-fajl tas-sors. Il-klassijiet astratti SourceFile u SourceConstruct jimplimentaw mekkaniżmi ġeneralizzati biex jappoġġjaw il-ħidma mal-fajls tas-sors u l-elementi tagħhom, pereżempju, jaħdmu ma 'buffers tat-test, jorbtu mal-koordinati ta' element fit-test sors, jirrikonċiljaw mudelli mal-kontenut attwali ta 'buffer ta' kopja tax-xogħol. , eċċ. L-implimentazzjoni ta 'dawn il-mekkaniżmi ġeneralment hija pjuttost sfida, u Handly jista' jnaqqas b'mod sinifikanti l-isforz tal-iżvilupp ta 'mudelli tal-lingwa bbażati fuq il-manku billi jipprovdi implimentazzjonijiet bażiċi ta' kwalità għolja.
Minbarra l-mekkaniżmi ewlenin elenkati hawn fuq, Handly jipprovdi infrastruttura għal test buffers u snapshots, appoġġ għall-integrazzjoni mal-edituri tal-kodiċi tas-sors (inkluża integrazzjoni out-of-the-box mal-editur Xtext), kif ukoll xi komponenti komuni tal-UI li taħdem ma 'edituri tal-kodiċi tas-sors mudelli Handly bħal qafas outline. Biex juri l-kapaċitajiet tiegħu, il-proġett jipprovdi diversi eżempji, inkluża implimentazzjoni tal-mudell Java f'Handly. (Imqabbel mal-implimentazzjoni sħiħa tal-mudell Java f'JDT, dan il-mudell huwa intenzjonalment kemmxejn simplifikat għal aktar ċarezza.)
Kif innutat qabel, fokus ewlieni matul id-disinn inizjali ta 'Handly u l-iżvilupp sussegwenti kien u għadu fuq l-iskalabbiltà u l-flessibilità.
Fil-prinċipju, mudelli bbażati fuq il-manku jiskalaw pjuttost tajjeb "minn id-disinn". Pereżempju, l-idjoma tal-manku/korp jippermettilek tillimita l-ammont ta 'memorja kkunsmata minn mudell. Iżda hemm ukoll sfumaturi. Għalhekk, meta ttestja Handly għall-iskalabbiltà, ġiet skoperta problema fl-implimentazzjoni tal-mekkaniżmu ta 'notifika - meta nbidlu numru kbir ta' elementi, il-kostruzzjoni tad-deltas ħa wisq ħin. Irriżulta li l-istess problema kienet preżenti fil-mudell JDT Java, li minnu l-kodiċi korrispondenti darba ġie adattat. Irranġajna l-bug f'Handly u ħejjejna garża simili għal JDT, li waslet b'gratitudni. Dan huwa eżempju wieħed biss fejn l-introduzzjoni ta' Handly fl-implimentazzjonijiet tal-mudell eżistenti tista' tkun potenzjalment utli, għaliex f'dan il-każ tali bug jista' jiġi ffissat f'post wieħed biss.
Biex tagħmel l-implimentazzjoni ta' Handly f'implimentazzjonijiet ta' mudelli eżistenti teknikament fattibbli, il-librerija għandu jkollha flessibilità sinifikanti. Il-problema ewlenija hija li tinżamm il-kompatibilità b'lura madwar il-mudell API. Din il-problema ġiet solvuta fi
Il-flessibbiltà għandha aspetti oħra wkoll. Pereżempju, Handly ma jimponi kważi l-ebda restrizzjoni fuq l-istruttura tal-mudell u jista 'jintuża biex jimmudella kemm lingwi għal skopijiet ġenerali kif ukoll lingwi speċifiċi għad-dominju. Meta tibni l-istruttura tal-fajl tas-sors, Handly ma jippreskrivi ebda forma partikolari ta 'rappreżentazzjoni AST u, fil-prinċipju, lanqas teħtieġ il-preżenza ta' AST innifsu, u b'hekk tiżgura kompatibilità ma 'kważi kull mekkaniżmu ta' parsing. Fl-aħħarnett, Handly jappoġġja integrazzjoni sħiħa mal-ispazju tax-xogħol Eclipse, iżda jista 'wkoll jaħdem direttament ma' sistemi ta 'fajls grazzi għall-integrazzjoni tiegħu ma'
Verżjoni kurrenti
Kif innutat hawn fuq, wieħed minn dawn il-prodotti huwa 1C:Enterprise Development Tools, fejn Handly jintuża mill-bidu nett biex jimmudella l-elementi tal-istruttura ta’ livell għoli ta’ tali 1C:Enterprise languages bħala l-lingwa ta’ programmar u l-lingwa tal-mistoqsijiet inkorporati. . Prodott ieħor huwa inqas magħruf mill-pubbliku ġenerali. Dan
Nittamaw li wara r-rilaxx tal-verżjoni 1.0 b'garanzija ta 'stabbiltà tal-API u l-proġett li jħalli l-istat ta' inkubazzjoni, Handly ikollu adottaturi ġodda. Sadanittant, il-proġett ikompli jittestja u jtejjeb aktar l-API, jirrilaxxa żewġ rilaxxi "maġġuri" fis-sena - f'Ġunju (l-istess data tar-rilaxx simultanju ta 'Eclipse) u f'Diċembru, li jipprovdi skeda prevedibbli li dawk li jadottaw jistgħu jistrieħu fuqha. Nistgħu nżidu wkoll li r-"rata ta 'bug" tal-proġett tibqa' f'livell baxx b'mod konsistenti u Handly ilu jaħdem b'mod affidabbli fil-prodotti ta 'dawk li jadottaw l-ewwel sa mill-ewwel verżjonijiet. Biex tesplora aktar Eclipse Handly, tista 'tuża
Sors: www.habr.com