Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools

Mwina, kadamsana sichinasowe chiyambi chapadera. Anthu ambiri amadziwa za Eclipse chifukwa cha zida zachitukuko za Eclipse Java (JDT). Ndi Java IDE yotchuka iyi yomwe opanga ambiri amalumikizana ndi mawu oti "Eclipse". Komabe, Eclipse ndi nsanja yowonjezereka yophatikizira zida zachitukuko (Eclipse Platform), ndi ma IDE angapo omangidwa pamaziko ake, kuphatikiza JDT. Eclipse ndi Project Eclipse, pulojekiti yapamwamba kwambiri yomwe imagwirizanitsa chitukuko cha Eclipse Platform ndi JDT, ndi Eclipse SDK, zotsatira za chitukukochi. Pomaliza, Eclipse ndi maziko otseguka omwe ali ndi ntchito zambiri, zomwe sizinalembedwe mu Java kapena zokhudzana ndi zida zachitukuko (mwachitsanzo, mapulojekiti). Eclipse IoT ΠΈ Sayansi ya Eclipse). Dziko la Eclipse ndilosiyana kwambiri.

M'nkhaniyi, yomwe ili mwachidule m'chilengedwe, tiyesa kuyang'ana zina mwazofunikira za zomangamanga za Eclipse monga nsanja yopangira zida zopangira chitukuko ndikupereka lingaliro loyamba la zigawo za Eclipse zomwe zimapanga maziko a teknoloji. nsanja ya "Configurator yatsopano" 1C: Enterprise. 1C: Zida Zopangira Mabizinesi. Zachidziwikire, kuwunika kotereku kudzakhala kwachiphamaso komanso kochepa, kuphatikiza chifukwa sitikuyang'ana okhawo omwe akutukula a Eclipse monga omvera. Komabe, tikukhulupirira kuti ngakhale opanga ma Eclipse odziwa zambiri azitha kupeza zambiri zosangalatsa m'nkhaniyi. Mwachitsanzo, tikambirana chimodzi mwa "zinsinsi za Eclipse", pulojekiti yatsopano komanso yosadziwika bwino. Eclipse Handly, yomwe idakhazikitsidwa ndikuthandizidwa ndi 1C.
Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools

Chiyambi cha Eclipse Architecture

Choyamba, tiyeni tiwone mbali zina za kamangidwe ka Eclipse pogwiritsa ntchito chitsanzo Zida zopangira Eclipse Java (JDT). Kusankha kwa JDT monga chitsanzo sikunangochitika mwangozi. Aka ndi malo oyamba ophatikizika achitukuko kuwonekera mu Eclipse. Mapulojekiti ena a *DT Eclipse, monga Eclipse C/C++ Development Tooling (CDT), adapangidwa pambuyo pake ndikubwereka mfundo zonse zomanga ndi zidutswa za ma code source kuchokera ku JDT. Zofunikira pakumanga zomwe zidayikidwa mu JDT ndizofunika mpaka pano pafupifupi pafupifupi IDE iliyonse yomangidwa pamwamba pa Eclipse Platform, kuphatikiza 1C: Zida Zachitukuko cha Enterprise.

Choyamba, ziyenera kudziwidwa kuti Eclipse imadziwika ndi kusanjika kowoneka bwino, ndikulekanitsa magwiridwe antchito odziyimira pawokha kuchokera kuzinthu zomwe zimapangidwira kuti zithandizire zilankhulo zinazake, komanso kulekanitsidwa kwa zigawo zodziyimira pawokha za UI kuchokera kuzinthu zomwe zimagwirizana. ndi mawonekedwe othandizira ogwiritsa ntchito.

Chifukwa chake, Platform ya Eclipse imatanthawuza malo wamba, odziyimira pawokha chilankhulo, ndipo zida zachitukuko za Java zimawonjezera mawonekedwe a Java IDE ku Eclipse. Zonse za Eclipse Platform ndi JDT zimakhala ndi zigawo zingapo, zomwe ziri za "core" yodziyimira payokha ya UI kapena UI wosanjikiza (Chithunzi 1).

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 1. Eclipse Platform ndi JDT

Tiyeni titchule zigawo zazikulu za Eclipse Platform:

  • Nthawi yochezera - Imatanthawuza maziko a plugin. Eclipse imadziwika ndi kamangidwe kake. Kwenikweni, Eclipse ndi gulu la "zowonjezera" ndi "zowonjezera".
  • Malo ogwirira ntchito - Amayang'anira ntchito imodzi kapena zingapo. Pulojekiti imakhala ndi zikwatu ndi mafayilo omwe amajambulidwa mwachindunji ku fayilo ya fayilo.
  • Standard Widget Toolkit (SWT) - Imapereka zinthu zoyambira zolumikizirana ndi ogwiritsa ntchito.
  • JFace - Imapereka ma UI angapo omangidwa pamwamba pa SWT.
  • Workbench - Imatanthauzira paradigm ya Eclipse UI: okonza, malingaliro, malingaliro.

Ziyenera kunenedwa kuti Platform ya Eclipse imaperekanso zida zina zambiri zothandiza pomanga zida zachitukuko zophatikizika, kuphatikiza Debug, Compare, Search, and Team. Kutchulidwa mwapadera kuyenera kunenedwa za JFace Text - maziko opangira "akonzi anzeru" a code source. Tsoka ilo, ngakhale kuwunika kwachidule kwa zigawozi, komanso zigawo za UI, sizingatheke m'nkhani ino, kotero mu gawo lotsalira la gawoli tidzangoyang'ana mwachidule zigawo zazikulu za "core" Eclipse Platform ndi JDT.

Core Runtime

Mapulagini a Eclipse adakhazikitsidwa OSGi ndi kuperekedwa ndi polojekiti Eclipse Equinox. Pulagi iliyonse ya Eclipse ndi mtolo wa OSGi. Mafotokozedwe a OSGi amatanthauzira, makamaka, njira zosinthira ndikusintha kudalira. Kuphatikiza pa njira zokhazikika izi, Equinox imayambitsa lingaliro mfundo zowonjezera. Pulagi iliyonse imatha kufotokozera mfundo zake zowonjezera, komanso kuyambitsa ntchito zina ("zowonjezera") ku dongosolo pogwiritsa ntchito mfundo zowonjezera zomwe zimatanthauzidwa ndi mapulagini omwewo kapena ena. Kufotokozera mwatsatanetsatane kwa machitidwe a OSGi ndi Equinox sikungatheke m'nkhaniyi. Tingodziwa kuti modularization mu Eclipse ndiyokwanira (kagawo kalikonse, kuphatikiza Runtime, imakhala ndi mapulagini amodzi kapena angapo), ndipo pafupifupi chilichonse mu Eclipse ndichowonjezera. Komanso, mfundozi zidaphatikizidwa muzomangamanga za Eclipse kalekale asanakhazikitsidwe OSGi (panthawiyo adagwiritsa ntchito ukadaulo wawo, wofanana kwambiri ndi OSGi).

Core Workspace

Pafupifupi malo aliwonse ophatikizika opangidwa pamwamba pa Eclipse Platform amagwira ntchito ndi Eclipse workspace. Ndilo malo ogwirira ntchito omwe nthawi zambiri amakhala ndi code yoyambira pulogalamu yomwe imapangidwa mu IDE. Mamapu a malo ogwirira ntchito mwachindunji ku fayilo yamafayilo ndipo amakhala ndi ma projekiti, omwe ali ndi zikwatu ndi mafayilo. Mapulojekiti awa, zikwatu, ndi mafayilo amatchedwa zothandizira malo ogwira ntchito. Kukhazikitsa malo ogwirira ntchito ku Eclipse kumagwira ntchito ngati cache pokhudzana ndi mafayilo amafayilo, zomwe zimapangitsa kuti zitheke kufulumizitsa kwambiri kudutsa kwa mtengo wazothandizira. Kuphatikiza apo, malo ogwirira ntchito amapereka ntchito zingapo zowonjezera, kuphatikiza zidziwitso zakusintha kwazinthu ΠΈ owonjezera zomangamanga zomangamanga.

Chigawo cha Core Resources (org.eclipse.core.resources plugin) chili ndi udindo wothandizira malo ogwirira ntchito ndi zothandizira. Makamaka, gawo ili limapereka mwayi wopezeka pa malo ogwirira ntchito mu mawonekedwe zitsanzo zothandizira. Kuti agwire bwino ntchito ndi chitsanzo ichi, makasitomala amafunikira njira yosavuta yowonetsera ulalo kuzinthu. Pankhaniyi, zingakhale zofunika kubisa chinthu chomwe chimasungira mwachindunji chikhalidwe cha gwero mu chitsanzo kuchokera ku mwayi wa kasitomala. Apo ayi, ngati, mwachitsanzo, kuchotsa fayilo, kasitomala akhoza kupitiriza kugwira chinthu chomwe sichilinso mu chitsanzo, ndi mavuto omwe akubwera. Eclipse amathetsa vutoli pogwiritsa ntchito chinthu chotchedwa kusamalira gwero. Handle imakhala ngati kiyi (imangodziwa njira yopita kuzinthu zogwirira ntchito) ndikuwongolera kwathunthu mwayi wa chinthu chamkati, chomwe chimasunga mwachindunji chidziwitso chokhudza momwe zinthu ziliri. Mapangidwe awa ndi kusiyana kwa chitsanzo Chogwirizira/Thupi.

Mpunga. Chithunzi 2 chikuwonetsa mawu ophiphiritsa a Handle/Body monga momwe amagwiritsidwira ntchito pazachitsanzo. Mawonekedwe a IResource amayimira chogwirira ntchito ndipo ndi API, mosiyana ndi gulu la Resource, lomwe limagwiritsa ntchito mawonekedwewa, ndi gulu la ResourceInfo, lomwe limayimira thupi, lomwe si API. Timatsindika kuti chogwirizira chimangodziwa njira yopita kuzinthu zokhudzana ndi muzu wa malo ogwirira ntchito ndipo sichikhala ndi ulalo wazinthu zothandizira. Zinthu zachidziwitso zimapanga zomwe zimatchedwa "mtengo wa chinthu". Dongosolo la datali limapangidwa mwamakumbukiro. Kuti mupeze chidziwitso chofananira ndi chogwirira, mtengo wa elementi umadutsa molingana ndi njira yomwe yasungidwa mu chogwiriracho.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 2. IResource ndi ResourceInfo

Monga tiwona pambuyo pake, kapangidwe koyambira kachitsanzo (tingatchule chogwirizira) amagwiritsidwanso ntchito mu Eclipse pamitundu inanso. Pakadali pano, tiyeni titchule zina mwazinthu zapadera zamapangidwe awa:

  • Handle ndi chinthu chamtengo wapatali. Zinthu zamtengo wapatali ndi zinthu zosasinthika zomwe kufanana kwake sikuchokera pazidziwitso. Zinthu zotere zitha kugwiritsidwa ntchito ngati kiyi m'mitsuko ya hashed. Nthawi zambiri zogwirira ntchito zimatha kutanthauza chida chomwecho. Kuti muwafananize, muyenera kugwiritsa ntchito njira yofanana (Chinthu).
  • Handle imatanthawuza machitidwe a gwero, koma ilibe chidziwitso chokhudza momwe zinthu ziliri (zokhazo zomwe zimasunga ndi "kiyi", njira yopita kuzinthuzo).
  • Chogwirizira chingatanthauze chinthu chomwe kulibe (chinthu chomwe sichinapangidwe, kapena chida chomwe chachotsedwa kale). Kukhalapo kwa gwero kumatha kuwonedwa pogwiritsa ntchito njira ya IResource.exists().
  • Zochita zina zitha kukhazikitsidwa potengera zomwe zasungidwa mu chogwiriracho (chomwe chimatchedwa chogwirira chokha). Zitsanzo ndi IResource.getParent(), getFullPath(), etc. Zothandizira siziyenera kukhalapo kuti ntchitoyi ichitike bwino. Ntchito zomwe zimafuna kuti chithandizo chikhalepo kuti chichite bwino chimaponya CoreException ngati palibe.

Eclipse imapereka njira yabwino yodziwitsira kusintha kwazinthu zogwirira ntchito (Chithunzi 3). Zothandizira zimatha kusintha chifukwa cha zochita zomwe zimachitika mkati mwa Eclipse IDE yokha kapena chifukwa cholumikizana ndi fayilo. M'zochitika zonsezi, makasitomala omwe amalembetsa zidziwitso amapatsidwa zambiri zokhudza kusintha kwa mawonekedwe a "resource deltas". Delta imalongosola kusintha pakati pa zigawo ziwiri za malo ogwirira ntchito (sub-) mtengo ndipo palokha mtengo, node iliyonse imalongosola kusintha kwa gwero ndipo ili ndi mndandanda wa deltas pa mlingo wotsatira womwe umafotokoza kusintha kwa zinthu za ana.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 3. IResourceChangeEvent ndi IResourceDelta

Makina azidziwitso potengera ma resource deltas ali ndi izi:

  • Kusintha kumodzi ndi zosintha zambiri zimafotokozedwa pogwiritsa ntchito dongosolo lomwelo, popeza delta imamangidwa pogwiritsa ntchito mfundo yobwerezabwereza. Makasitomala olembetsa amatha kukonza zidziwitso zakusintha kwazinthu pogwiritsa ntchito kutsika kobwerezabwereza kudzera mumtengo wa deltas.
  • Delta ili ndi chidziwitso chonse chokhudza kusintha kwazinthu, kuphatikizapo kayendetsedwe kake ndi / kapena kusintha kwa "zolemba" zomwe zimagwirizanitsidwa nazo (mwachitsanzo, zolakwika zophatikiza zimayimiridwa ngati zolembera).
  • Popeza maumboni azinthu amapangidwa ndi chogwirira, delta mwachilengedwe imatha kutchula zakutali.

Monga momwe tidzaonera posachedwa, zigawo zazikulu za mapangidwe a kusintha kwachidziwitso kwachitsanzo ndizofunikanso kwa zitsanzo zina zogwiritsira ntchito.

JDT Core

Mtundu wa Eclipse workspace resource model ndi chitsanzo chodziwika bwino cha chinenero. Chigawo cha JDT Core (plugin org.eclipse.jdt.core) chimapereka API yoyendetsa ndikuwunika momwe malo ogwirira ntchito amagwirira ntchito kuchokera kumawonedwe a Java, otchedwa "Java model" (Java model). API iyi imatanthauzidwa malinga ndi zinthu za Java, mosiyana ndi API yachidziwitso chachidziwitso, chomwe chimatanthauzidwa malinga ndi mafoda ndi mafayilo. Zolumikizira zazikulu za mtengo wa Java element zikuwonetsedwa mkuyu. 4.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 4. Java Model Elements

Mtundu wa Java umagwiritsa ntchito chigwiriro / chiganizo chofanana cha thupi ngati chothandizira (Chithunzi 5). IJavaElement ndiye chogwirizira, ndipo JavaElementInfo imatenga gawo la thupi. Mawonekedwe a IJavaElement amatanthauzira protocol yofanana ndi zinthu zonse za Java. Zina mwa njira zake ndi zogwirira ntchito: getElementName(), getParent(), etc. Chinthu cha JavaElementInfo chimasunga chikhalidwe cha chinthu chofanana: kapangidwe kake ndi mawonekedwe ake.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 5. IJavaElement ndi JavaElementInfo

Mtundu wa Java uli ndi zosiyana pakukhazikitsa koyambira / kapangidwe ka thupi poyerekeza ndi mtundu wazinthu. Monga tafotokozera pamwambapa, muzoyimira zothandizira, mtengo wa element, womwe node zake ndi zinthu zachidziwitso, uli m'makumbukidwe. Koma chitsanzo cha Java chikhoza kukhala ndi chiwerengero chokulirapo cha zinthu kuposa mtengo wothandizira, chifukwa chimayimiranso mawonekedwe amkati a .java ndi .class mafayilo: mitundu, minda, ndi njira.

Kuti mupewe kupangitsa mtengo wonse wazinthu kukumbukira, kukhazikitsa kwachitsanzo cha Java kumagwiritsa ntchito cache ya LRU yocheperako, pomwe fungulo limagwirira IJavaElement. element info zinthu zimapangidwa pofunidwa pamene mtengo wa elementi umayendetsedwa. Pankhaniyi, zinthu zomwe zimagwiritsidwa ntchito mobwerezabwereza zimachotsedwa mu cache, ndipo kukumbukira kwachitsanzo kumakhalabe ndi kukula kwake kwa cache. Uwu ndi mwayi wina wamapangidwe opangidwa ndi chogwirira, chomwe chimabisa kwathunthu tsatanetsatane wotsatirawu kuchokera ku code ya kasitomala.

Njira yodziwitsira kusintha kwa zinthu za Java nthawi zambiri imakhala yofanana ndi njira yotsatirira kusintha kwa malo ogwirira ntchito omwe takambirana pamwambapa. Makasitomala omwe akufuna kuyang'anira kusintha kwa mtundu wa Java amalembetsa zidziwitso, zomwe zimaimiridwa ngati chinthu cha ElementChangedEvent chomwe chili ndi IJavaElementDelta (Chithunzi 6).

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 6. ElementChangedEvent ndi IJavaElementDelta

Mtundu wa Java ulibe chidziwitso chokhudza matupi a njira kapena kusintha kwa mayina, chifukwa chake pakuwunika mwatsatanetsatane kachidindo kolembedwa ku Java, JDT Core imapereka mtundu wowonjezera (wopanda chogwirira): abstract syntax mtengo (abstract syntax tree, AST). AST imayimira zotsatira zakusintha mawu akugwero. Ma node a AST amafanana ndi mawonekedwe a gawo loyambira (zolengeza, ogwiritsa ntchito, mawu, ndi zina) ndipo ali ndi chidziwitso chokhudzana ndi zomwe zikugwirizana ndi zomwe zalembedwa, komanso (monga njira) zokhudzana ndi kusankha kwa mayina mawonekedwe a maulalo otchedwa zomangira. Zomangiriza ndi zinthu zomwe zimayimira mabungwe otchulidwa, monga mitundu, njira, ndi zosinthika, zomwe zimadziwika ndi wopanga. Mosiyana ndi ma node a AST, omwe amapanga mtengo, zomangira zimathandizira kuloza panjira ndipo nthawi zambiri zimapanga graph. Gulu losamveka la ASTNode ndiye gulu lodziwika bwino pama node onse a AST. Magawo a ASTNode amafanana ndi zomangira zachiyankhulo cha Java.

Chifukwa mitengo ya syntax imatha kukumbukira zinthu zambiri, JDT imasunga AST imodzi yokha ya mkonzi wokhazikika. Mosiyana ndi mtundu wa Java, AST nthawi zambiri imawonedwa ngati "yapakatikati", "yakanthawi", zinthu zomwe makasitomala sayenera kukhala ndi zonena zakunja kwa zomwe zidapangitsa kuti AST ipangidwe.

Mitundu itatu yomwe yatchulidwa (chitsanzo cha Java, AST, zomangira) palimodzi zimapanga maziko omanga "zida zachitukuko zanzeru" ku JDT, kuphatikiza mkonzi wamphamvu wa Java wokhala ndi "othandizira" osiyanasiyana, zochita zosiyanasiyana pakukonza ma code source (kuphatikiza kukonza mndandanda wazolowera kunja. mayina ndi masanjidwe malinga ndi kalembedwe makonda), kufufuza ndi refactoring zida. Pankhaniyi, mtundu wa Java umagwira ntchito yapadera, chifukwa ndi yomwe imagwiritsidwa ntchito ngati maziko a chiwonetsero cha mawonekedwe a pulogalamu yomwe ikupangidwa (mwachitsanzo, mu Package Explorer, Outline, Search, Call Hierarchy, ndi Type Hierarchy).

Zigawo za Eclipse zomwe zimagwiritsidwa ntchito mu 1C: Zida Zachitukuko cha Enterprise

Mku. Chithunzi 7 chikuwonetsa zigawo za Eclipse zomwe zimapanga maziko a nsanja yaukadaulo ya 1C: Zida Zopanga Mabizinesi.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 7. Eclipse ngati nsanja ya 1C:Enterprise Development Tools

Eclipse Platform imapereka maziko oyambira. Tinayang'ana mbali zina za zomangamanga mu gawo lapitalo.

Eclipse Modelling Framework (EMF) imapereka njira zambiri zowonetsera deta yokhazikika. EMF imaphatikizidwa ndi Eclipse Platform, koma itha kugwiritsidwanso ntchito padera pamapulogalamu anthawi zonse a Java. Nthawi zambiri, opanga ma Eclipse atsopano amadziwa kale EMF, ngakhale samamvetsetsa zovuta za Eclipse Platform. Chimodzi mwa zifukwa za kutchuka koyenera kotereku ndi chilengedwe chonse, chomwe chimaphatikizapo, mwa zina, API yogwirizana ya meta-level, yomwe imakulolani kuti mugwire ntchito ndi chitsanzo chilichonse cha EMF mwa njira yonse. Kukhazikitsa koyambira kwa zinthu zachitsanzo zoperekedwa ndi EMF ndi kagawo kakang'ono kopanga kachidindo kachitsanzo kutengera meta-model kumakulitsa kwambiri liwiro lachitukuko ndikuchepetsa kuchuluka kwa zolakwika. EMF ilinso ndi njira zosinthira mitundu, kutsatira zosintha zamitundu, ndi zina zambiri.

Monga chida chilichonse chodziwika bwino, EMF ndiyoyenera kuthana ndi zovuta zambiri zamachitsanzo, koma magulu ena amitundu (mwachitsanzo, zitsanzo zogwiritsa ntchito zomwe takambirana pamwambapa) zingafunike zida zapadera zowonera. Kulankhula za EMF ndi ntchito yosayamika, makamaka mkati mwazochepera za nkhani imodzi, popeza iyi ndi nkhani ya bukhu losiyana, komanso lokhuthala. Tiyeni tingodziwa kuti dongosolo lapamwamba lazinthu zonse zomwe zili mu EMF zinalola kubadwa kwa mapulojekiti osiyanasiyana operekedwa ku chitsanzo, omwe akuphatikizidwa mu polojekiti yapamwamba. Eclipse Modelling pamodzi ndi EMF yokha. Ntchito imodzi yotereyi ndi Eclipse Xtext.

Eclipse Xtext amapereka "text modelling" zomangamanga. Xtext amagwiritsa ntchito ANTLR pofotokoza zomwe zachokera ndi EMF yoyimira zotsatira za ASG (abstract semantic graph, yomwe kwenikweni imaphatikiza AST ndi zomangira), zomwe zimatchedwanso "semantic model". Kalankhulidwe ka chilankhulo chopangidwa ndi Xtext akufotokozedwa m'chilankhulo cha Xtext. Izi zimakupatsani mwayi kuti musamangofotokoza za galamala ya ANTLR, komanso kuti mupeze kachipangizo ka AST (mwachitsanzo, Xtext imapereka chofotokozera komanso chosasintha), lingaliro lachidziwitso, ndi zigawo zingapo zazilankhulo zina. Kumbali ina, chilankhulo cha galamala chomwe chimagwiritsidwa ntchito mu Xtext sichitha kusinthasintha ngati, tinene, chilankhulo chogwiritsidwa ntchito mu ANTLR. Chifukwa chake, nthawi zina pamafunika "kupindika" chilankhulo chomwe chakhazikitsidwa ku Xtext, chomwe nthawi zambiri sichikhala vuto ngati tikulankhula za chilankhulo chomwe chimapangidwa kuyambira pachiyambi, koma chingakhale chosavomerezeka m'zilankhulo zomwe zili ndi syntax yokhazikitsidwa kale. Ngakhale izi zili choncho, Xtext ndiye chida chokhwima kwambiri, cholemera kwambiri, komanso chosunthika mu Eclipse pomangira zilankhulo zamapulogalamu ndi zida zachitukuko. Makamaka, ndi chida chabwino kwa prototyping mofulumira zilankhulo za domain (Chiyankhulo chachindunji, DSL). Kuphatikiza pa "chiyankhulo chachikulu" chomwe tatchula pamwambapa chozikidwa pa ANTLR ndi EMF, Xtext imapereka zigawo zambiri zofunikira zapamwamba, kuphatikiza njira zolozera, zomangamanga, "smart editor", ndi zina zambiri, koma zimasiya chogwirizira- zotengera zinenero. Monga EMF, Xtext ndi mutu woyenera kukhala ndi buku lapadera, ndipo sitingathe ngakhale kulankhula mwachidule za kuthekera kwake pakali pano.

1C: Zida Zotukula Mabizinesi zimagwiritsa ntchito EMF yokha komanso ma projekiti ena angapo a Eclipse Modelling. Makamaka, Xtext ndi imodzi mwamaziko a zida zachitukuko za 1C: Zilankhulo zamabizinesi monga chilankhulo chomangidwira komanso chilankhulo cha mafunso. Maziko ena a zida zachitukukozi ndi pulojekiti ya Eclipse Handly, yomwe tikambirana mwatsatanetsatane (pazigawo zomwe zalembedwa za Eclipse, sizikudziwikabe).

Eclipse Handly, gawo la pulojekiti yapamwamba ya Eclipse Technology, idatuluka chifukwa cha zopereka zoyambirira ku Eclipse Foundation zopangidwa ndi 1C mu 2014. Kuyambira nthawi imeneyo, 1C yapitirizabe kuthandizira chitukuko cha polojekitiyi: Ogwira ntchito pamanja ndi antchito a kampani. Pulojekitiyi ndi yaying'ono, koma imakhala ndi kagawo kakang'ono ka Eclipse: cholinga chake chachikulu ndikuthandizira kukulitsa zitsanzo zogwiritsa ntchito ma handle.

Mfundo zazikuluzikulu zamapangidwe a zitsanzo zogwiritsira ntchito zogwirira ntchito, monga chogwirira / chiganizo cha thupi, zinakambidwa pamwambapa pogwiritsa ntchito chitsanzo chothandizira ndi Java monga zitsanzo. Idawonanso kuti mitundu yonse yachidziwitso ndi mtundu wa Java ndi maziko ofunikira a zida zachitukuko za Eclipse Java (JDT). Ndipo popeza pafupifupi mapulojekiti onse a *DT Eclipse ali ndi zomanga zofanana ndi JDT, sikungakhale kukokomeza kwambiri kunena kuti zitsanzo zokhala ndi zida zimatsata zambiri, ngati si ma IDE onse omangidwa pamwamba pa Eclipse Platform. Mwachitsanzo, Eclipse C/C++ Development Tooling (CDT) ili ndi chogwirizira C/C++ chitsanzo chomwe chimagwira ntchito yofananira ndi kamangidwe ka CDT monga momwe Java imachitira mu JDT.

Pamaso pa Handly, Eclipse sankapereka malaibulale apadera omangira zilankhulo zozikidwa ndi machino. Mitundu yomwe ilipo pakadali pano idapangidwa makamaka ndikusintha kachidindo ka Java (aka copy/paste), muzochitika zomwe zimaloleza Eclipse Public License (EPL). (Mwachiwonekere, iyi nthawi zambiri si nkhani yalamulo, tinene, mapulojekiti a Eclipse okha, koma osati pazinthu zotsekedwa.) Kuphatikiza pa kusakhazikika kwake, njira iyi imabweretsa mavuto odziwika bwino: kubwereza ma code komwe kumayambitsidwa ndikusintha zolakwika, ndi zina. Choipa kwambiri ndi chakuti zitsanzo zomwe zimatsatira zimakhalabe "zinthu mwazokha" ndipo sizimagwiritsa ntchito mwayi wogwirizanitsa. Koma kupatula malingaliro odziwika ndi ma protocol a zilankhulo zozikidwa pamagwiridwe atha kupangitsa kuti pakhale zigawo zomwe zingagwiritsidwenso ntchito kuti zigwire nawo ntchito, zofanana ndi zomwe zidachitika pa EMF.

Sikuti Eclipse sanamvetse nkhaniyi. Kale mu 2005 Martin Aeschlimann, kufotokoza mwachidule zomwe zidachitika popanga chitsanzo cha CDT, anatsutsana kufunikira kopanga chikhazikitso chofanana cha zitsanzo za zilankhulo, kuphatikiza zitsanzo zotengera zogwirira ntchito. Koma, monga zimachitika nthawi zambiri, chifukwa cha ntchito zofunika kwambiri, kukhazikitsidwa kwa malingalirowa sikunafike pamenepo. Pakadali pano, factorization ya *DT code idakali imodzi mwamitu yosatukuka mu Eclipse.

Mwanjira ina, pulojekiti ya Handly idapangidwa kuti ithetse pafupifupi mavuto ofanana ndi EMF, koma pazitsanzo zokhazikitsidwa ndi chogwirira, komanso makamaka zilankhulo (ie, zoyimira zigawo za kapangidwe ka chilankhulo china). Zolinga zazikulu zomwe zimakhazikitsidwa popanga Handly zalembedwa pansipa:

  • Kuzindikiritsa zidule zazikulu za gawo la phunzirolo.
  • Kuchepetsa kuyesetsa komanso kuwongolera kagwiritsidwe ntchito ka zilankhulo pogwiritsa ntchito ma code.
  • Kupereka meta-level API yolumikizana kumitundu yomwe yatuluka, kupangitsa kuti zitheke kupanga zida zofananira za IDE zomwe zimagwira ntchito ndi ma motchi otengera zilankhulo.
  • Kusinthasintha ndi scalability.
  • Kuphatikiza ndi Xtext (mugawo lina).

Kuti muwonetsere malingaliro ndi ma protocol omwe amafanana, kukhazikitsidwa komwe kulipo kwamitundu yotengera chilankhulo kunawunikidwa. Zolumikizira zazikulu ndi zoyambira zomwe zimaperekedwa ndi Handly zikuwonetsedwa mkuyu. 8.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 8. Kulumikizana wamba ndi kukhazikitsa kofunikira kwa Handly elements

Mawonekedwe a IElement amayimira chogwirira cha chinthu ndipo ndi wamba pazinthu zamitundu yonse ya Handly-based. The abstract class Element imagwiritsa ntchito chogwirira / thupi lonse (mkuyu 9).

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 9. IElement ndi generic chogwirira / thupi kukhazikitsa

Kuonjezera apo, Pamanja amapereka njira yodziwika bwino yodziwitsa za kusintha kwa zinthu zachitsanzo (mkuyu 10). Monga mukuwonera, ndizofanana kwambiri ndi njira zodziwitsira zomwe zimagwiritsidwa ntchito muzachitsanzo ndi mtundu wa Java, ndipo imagwiritsa ntchito IElementDelta kuti ipereke chiwonetsero chogwirizana chakusintha kwazinthu.

Eclipse ngati nsanja yaukadaulo ya 1C:Enterprise Development Tools
Mpunga. 10. Kulumikizana kwakanthawi ndi kukhazikitsidwa koyambira kwa Handly notification mechanism

Gawo la Pamanja lomwe lakambidwa pamwambapa (mkuyu 9 ndi 10) lingagwiritsidwe ntchito kuyimira pafupifupi mitundu yonse yotengera chogwirira. Za kulenga zinenero zitsanzo, pulojekitiyi imapereka zina zowonjezera - makamaka, zolumikizira wamba ndi zoyambira zoyambira pamapangidwe amtundu wa gwero, zomwe zimatchedwa gwero zinthu (Mkuyu 8). Mawonekedwe a ISourceFile amayimira fayilo yoyambira, ndipo ISourceConstruct imayimira chinthu mkati mwa fayilo yoyambira. Makalasi ang'onoang'ono SourceFile ndi SourceConstruct amagwiritsa ntchito njira zosinthira kuti zithandizire kugwira ntchito ndi mafayilo oyambira ndi zinthu zawo, mwachitsanzo, kugwira ntchito ndi zosunga mawu, kumangiriza zolumikizira za chinthu chomwe chili patsamba loyambira, kuyanjanitsa zitsanzo ndi zomwe zili mu buffer yomwe ikugwira ntchito. , ndi zina. Kugwiritsa ntchito njirazi nthawi zambiri kumakhala kovuta kwambiri, ndipo Handly imatha kuchepetsa kwambiri kuyesayesa kopanga zilankhulo zozikidwa pamagwiridwe popereka zida zapamwamba kwambiri.

Kuphatikiza pamakina oyambira omwe atchulidwa pamwambapa, Handly imapereka zida zopangira ma buffers ndi zithunzithunzi, chithandizo chophatikizira ndi osintha ma code source (kuphatikiza kunja kwa bokosi kuphatikiza ndi Xtext mkonzi), komanso zida zina za UI zomwe gwirani ntchito ndi ma source code editors. Kuti awonetse mphamvu zake, polojekitiyi imapereka zitsanzo zingapo, kuphatikizapo kukhazikitsa mtundu wa Java mu Handly. (Poyerekeza ndi kukhazikitsidwa kwathunthu kwa mtundu wa Java mu JDT, chitsanzochi ndi chosavuta kuti chimveke bwino.)

Monga tanenera kale, cholinga chachikulu pakupanga koyamba kwa Handly ndi chitukuko chotsatira chinali ndipo chikupitirirabe pa scalability ndi kusinthasintha.

M'malo mwake, zitsanzo zopangidwa ndi manja zimakula bwino "mwa mapangidwe". Mwachitsanzo, chogwirizira/chimake cha thupi chimakulolani kuchepetsa kuchuluka kwa kukumbukira komwe kumagwiritsidwa ntchito ndi chitsanzo. Koma palinso ma nuances. Chifukwa chake, poyesa Pamanja kuti scalability, vuto linapezeka pakukhazikitsa makina azidziwitso - pomwe zinthu zambiri zidasinthidwa, kupanga ma deltas kudatenga nthawi yochulukirapo. Zinapezeka kuti vuto lomwelo linalipo mu mtundu wa JDT Java, pomwe code yofananira idasinthidwa kamodzi. Tinakonza cholakwikacho mu Handly ndikukonzekera chigamba chofanana cha JDT, chomwe chidalandiridwa mothokoza. Ichi ndi chitsanzo chimodzi pomwe kuyambitsa Handly mumayendedwe omwe alipo kale kungakhale kothandiza, chifukwa pamenepa cholakwika chotere chikhoza kukhazikitsidwa pamalo amodzi.

Kuti kugwiritsa ntchito moyenera mumayendedwe omwe alipo kale kutheka mwaukadaulo, laibulale iyenera kukhala ndi kusinthasintha kwakukulu. Vuto lalikulu ndikusunga mayendedwe am'mbuyo pamitundu yonse ya API. Vutoli lidathetsedwa Pafupifupi 0.5 mwa kulekanitsa momveka bwino API yachitsanzo, yofotokozedwa ndi kulamulidwa mokwanira ndi wopanga mapulogalamu, kuchokera ku meta-level API yogwirizana yoperekedwa ndi laibulale. Izi sizimangopangitsa kuti zitheke mwaukadaulo kukhazikitsa Handly muzokhazikitsidwa zomwe zilipo, komanso zimapatsa wopanga machitsanzo atsopano ufulu waukulu popanga API.

Kusinthasintha kulinso ndi mbali zina. Mwachitsanzo, Handly imayika pafupifupi zoletsa zilizonse pamapangidwe achitsanzo ndipo itha kugwiritsidwa ntchito kutengera zilankhulo zanthawi zonse komanso zilankhulo zenizeni. Popanga mawonekedwe a fayilo yoyambira, Handly samapereka mawonekedwe aliwonse a AST ndipo, kwenikweni, safuna ngakhale kukhalapo kwa AST palokha, kuwonetsetsa kuti ikugwirizana ndi pafupifupi makina aliwonse opangira. Pomaliza, Handly imathandizira kuphatikiza kwathunthu ndi malo ogwirira ntchito a Eclipse, koma imatha kugwiranso ntchito mwachindunji ndi mafayilo amafayilo chifukwa chophatikizana ndi Eclipse File System (EFS).

Mtundu wapano Pafupifupi 0.6 idatuluka mu December 2016. Ngakhale kuti polojekitiyi ili pakalipano ndipo API sichinakhazikitsidwe, Handly imagwiritsidwa ntchito kale muzinthu ziwiri zazikulu zamalonda zomwe zinkaika chiopsezo chokhala ngati "otengera oyambirira", ndipo, ndiyenera kunena, osanong'oneza bondo panobe.

Monga tafotokozera pamwambapa, imodzi mwazinthuzi ndi 1C: Zida Zopangira Bizinesi, pomwe Handly imagwiritsidwa ntchito kuyambira pachiyambi kuti ipange mawonekedwe apamwamba a 1C: Zilankhulo zamabizinesi monga chilankhulo chokhazikika komanso chilankhulo chofunsa mafunso. . Chinthu china sichidziwika kwa anthu wamba. Izi Kodi Studio, malo ophatikizika amapangidwe a purosesa yeniyeni yogwiritsira ntchito malangizo (ASIP), yomwe imagwiritsidwa ntchito mu kampani yaku Czech Codasip yokha komanso ndi makasitomala ake, kuphatikiza AMD, AVG, Mobileye, Zojambula za Sigma. Codasip yakhala ikugwiritsa ntchito Handly popanga kuyambira 2015, kuyambira ndi mtundu wa Handly 0.2. Kutulutsidwa kwaposachedwa kwa Codasip Studio kumagwiritsa ntchito mtundu 0.5, wotulutsidwa mu June 2016. OndΕ™ej Ilčík, yemwe amatsogolera chitukuko cha IDE ku Codasip, akugwirizana ndi polojekitiyi, ndikupereka mayankho ofunikira m'malo mwa "wolandira chipani chachitatu". Anatha ngakhale kupeza nthawi yaulere kuti atenge nawo mbali pakupanga polojekitiyi, pogwiritsa ntchito UI wosanjikiza (~ 4000 mizere ya code) pa chitsanzo chimodzi cha Handly, Java model. Zambiri mwatsatanetsatane woyamba wogwiritsa ntchito Handly by adopters angapezeke patsamba Nkhani Zopambana polojekiti.

Tikukhulupirira kuti pambuyo pa kutulutsidwa kwa mtundu wa 1.0 ndi chitsimikizo cha kukhazikika kwa API ndi pulojekiti yochoka kumalo osungira, Handly adzakhala ndi otengera atsopano. Pakalipano, polojekitiyi ikupitirizabe kuyesa ndi kupititsa patsogolo API, kutulutsa zotulutsidwa ziwiri "zazikulu" pachaka - mu June (tsiku lomwelo la kutulutsidwa kwa Eclipse nthawi imodzi) ndi December, kupereka ndondomeko yodziwikiratu yomwe omvera angadalire. Titha kuwonjezeranso kuti "chiwopsezo" cha pulojekitiyi chimakhalabe chotsika kwambiri ndipo Handly yakhala ikugwira ntchito modalirika pazinthu za omwe adatengera koyambirira kuyambira matembenuzidwe oyamba. Kuti mufufuzenso Eclipse Handly, mutha kugwiritsa ntchito Chiyambi cha Maphunziro ΠΈ Zomangamanga mwachidule.

Source: www.habr.com

Kuwonjezera ndemanga