Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci

Wataƙila, husufi ya dade ba buƙatar gabatarwa ta musamman. Mutane da yawa sun saba da Eclipse godiya ga kayan aikin haɓaka Eclipse Java (JDT). Wannan sanannen tushen tushen Java IDE ne yawancin masu haɓakawa ke danganta kalmar "Eclipse". Koyaya, Eclipse duka dandamali ne mai fa'ida don haɗa kayan aikin haɓakawa (Eclipse Platform), da adadin IDE da aka gina akan sa, gami da JDT. Eclipse duka biyun aikin Eclipse ne, babban matakin aikin da ke daidaita haɓakar Eclipse Platform da JDT, da Eclipse SDK, sakamakon wannan ci gaban. A ƙarshe, Eclipse wata ƙungiya ce mai buɗe ido tare da ɗimbin ayyukan al'umma, ba duka waɗanda aka rubuta su cikin Java ba ko kuma suna da alaƙa da kayan aikin haɓakawa (misali, ayyuka). Eclipse IoT и Kimiyyar Eclipse). Duniyar Eclipse tana da bambanci sosai.

A cikin wannan labarin, wanda shine bayyani a yanayi, za mu yi ƙoƙari mu dubi wasu daga cikin abubuwan da suka shafi gine-ginen Eclipse a matsayin dandalin gina kayan aiki na ci gaba da kuma ba da tunanin farko game da abubuwan da ke tattare da Eclipse waɗanda suka zama tushen fasaha. dandamali don "sabon Configurator" 1C: Kasuwanci. 1C: Kayayyakin Ci gaban Kasuwanci. Tabbas, irin wannan bita ba makawa zai zama na zahiri kuma yana da iyaka, gami da saboda muna mai da hankali ba kawai ga masu haɓaka Eclipse a matsayin masu sauraro da aka yi niyya ba. Koyaya, muna fatan har ma ƙwararrun masu haɓaka Eclipse za su iya samun bayanai masu ban sha'awa a cikin labarin. Alal misali, za mu yi magana game da ɗaya daga cikin "asirin Eclipse", sabon aikin da ba a san shi ba. Eclipse Handly, wanda aka kafa kuma yana goyan bayan 1C.
Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci

Gabatarwa ga Eclipse Architecture

Bari mu fara duba wasu sassa na gaba ɗaya na gine-ginen Eclipse ta amfani da misali Eclipse Java ci gaban kayan aikin (JDT). Zaɓin JDT a matsayin misali ba na haɗari ba ne. Wannan shine mahallin ci gaba na farko da ya bayyana a cikin Eclipse. Sauran ayyukan *DT Eclipse, irin su Eclipse C/C++ Development Tooling (CDT), an ƙirƙira su daga baya kuma sun ari duka ƙa'idodin gine-ginen gine-gine da guntuwar lambar tushe guda ɗaya daga JDT. Tushen gine-ginen da aka shimfida a JDT sun dace har wa yau don kusan kowane IDE da aka gina a saman Eclipse Platform, gami da 1C: Kayayyakin Ci gaban Kasuwanci.

Da farko, ya kamata a lura da cewa Eclipse yana da cikakkiyar shimfidar shimfidar gine-gine, tare da rarrabuwa na ayyuka masu zaman kansu na harshe daga ayyukan da aka tsara don tallafawa takamaiman harsunan shirye-shirye, da kuma rabuwa da abubuwan da suka shafi "cibiyar" masu zaman kansu na UI daga abubuwan da ke da alaƙa. tare da goyon bayan mai amfani dubawa.

Don haka, Eclipse Platform yana ma'anar gama gari, kayan more rayuwa masu zaman kansu na harshe, da kayan aikin haɓaka Java suna ƙara cikakken IDE Java zuwa Eclipse. Duka Platform Eclipse Platform da JDT sun ƙunshi abubuwa da yawa, kowannensu yana cikin ko dai “core” mai zaman kansa na UI ko Layer UI (Hoto 1).

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 1. Eclipse Platform da JDT

Bari mu lissafa manyan abubuwan da ke cikin Dandalin Eclipse:

  • Runtime - Yana bayyana kayan aikin plugin. Eclipse yana da tsarin gine-gine na zamani. Mahimmanci, Eclipse tarin "kayan kari" da " kari".
  • Wurin aiki - Sarrafa ayyuka ɗaya ko fiye. Aikin ya ƙunshi manyan fayiloli da fayilolin da aka tsara kai tsaye zuwa tsarin fayil.
  • Daidaitaccen Kayan aikin Widget (SWT) - Yana ba da ainihin abubuwan haɗin mai amfani da aka haɗa tare da tsarin aiki.
  • JFace - Yana ba da adadin tsarin UI da aka gina a saman SWT.
  • Workbench - Yana bayyana ma'anar Eclipse UI: masu gyara, ra'ayoyi, ra'ayoyi.

Dole ne a faɗi cewa Eclipse Platform kuma yana ba da wasu abubuwa masu amfani da yawa don gina kayan aikin haɓaka haɗin gwiwa, gami da Debug, Kwatanta, Bincike, da Ƙungiya. Ya kamata a ambaci musamman na JFace Text - tushen gina "masu gyara masu wayo" na lambar tushe. Abin baƙin cikin shine, ko da bincikar siginar waɗannan abubuwan, da kuma abubuwan haɗin UI, ba zai yiwu ba a cikin iyakar wannan labarin, don haka a cikin ragowar wannan sashe za mu taƙaita kanmu zuwa bayyani na manyan abubuwan "core" Eclipse Platform da JDT.

Core Runtime

Kayan aikin Eclipse plugin yana dogara ne akan OSGi da kuma samar da aikin Eclipse Equinox. Kowane plugin Eclipse tarin OSGi ne. Ƙididdigar OSGi ta bayyana, musamman, hanyoyin yin siga da ƙudurin dogaro. Baya ga waɗannan daidaitattun hanyoyin, Equinox yana gabatar da ra'ayi wuraren fadadawa. Kowane plugin zai iya ayyana abubuwan haɓaka nasa, sannan kuma ya gabatar da ƙarin ayyuka (“ kari”) zuwa tsarin ta amfani da maki tsawo da aka ayyana ta hanyar guda ɗaya ko wasu plugins. Duk wani cikakken bayanin hanyoyin OSGi da Equinox ya wuce iyakar wannan labarin. Bari mu lura kawai cewa modularization a cikin Eclipse shine duka (kowane tsarin ƙasa, gami da Runtime, ya ƙunshi plugins ɗaya ko fiye), kuma kusan komai a cikin Eclipse ƙari ne. Bugu da ƙari, waɗannan ƙa'idodin sun kasance a cikin gine-ginen Eclipse tun kafin ƙaddamar da OSGi (a lokacin sun yi amfani da nasu fasahar, kama da OSGi).

Core Space

Kusan duk wani haɗe-haɗe na yanayin ci gaba da aka gina a saman Eclipse Platform yana aiki tare da filin aiki na Eclipse. Wurin aiki ne wanda yawanci ya ƙunshi lambar tushe na aikace-aikacen da aka haɓaka a cikin IDE. Taswirorin sararin aiki kai tsaye zuwa tsarin fayil kuma ya ƙunshi ayyukan da ke ɗauke da manyan fayiloli da fayiloli. Ana kiran waɗannan ayyukan, manyan fayiloli, da fayiloli albarkatun filin aiki. Aiwatar da filin aiki a cikin Eclipse yana aiki azaman ma'auni dangane da tsarin fayil, wanda ke ba da damar yin saurin ƙetare bishiyar albarkatu. Bugu da ƙari, filin aiki yana ba da ƙarin ƙarin ayyuka, ciki har da tsarin sanarwa don canje-canjen albarkatu и haɓaka kayan aikin gini.

Bangaren Abubuwan Mahimmanci (org.eclipse.core.resources plugin) yana da alhakin tallafawa wurin aiki da albarkatun sa. Musamman, wannan bangaren yana ba da damar yin amfani da shirye-shirye zuwa wurin aiki a cikin tsari samfurin albarkatu. Don yin aiki yadda ya kamata tare da wannan ƙirar, abokan ciniki suna buƙatar hanya mai sauƙi don gabatar da hanyar haɗi zuwa hanya. A wannan yanayin, zai zama kyawawa don ɓoye abin da ke adana yanayin albarkatun kai tsaye a cikin samfurin daga samun damar abokin ciniki. In ba haka ba, a cikin yanayin, alal misali, share fayil, abokin ciniki zai iya ci gaba da riƙe wani abu wanda baya cikin samfurin, tare da matsalolin da ke biyo baya. Eclipse yana magance wannan matsala ta amfani da wani abu mai suna rike albarkatu. Handle yana aiki azaman maɓalli (kawai ya san hanyar zuwa albarkatu a cikin wurin aiki) kuma yana sarrafa gabaɗaya damar yin amfani da abun ƙirar ciki, wanda ke adana bayanai kai tsaye game da yanayin albarkatun. Wannan zane shine bambancin tsarin Hannu / Jiki.

Shinkafa Hoto na 2 yana kwatanta karin magana na Handle/Jiki kamar yadda aka yi amfani da shi ga samfurin albarkatu. Ƙididdigar IResource tana wakiltar ma'auni na albarkatu kuma API ne, sabanin ajin Resource, wanda ke aiwatar da wannan dubawa, da kuma ajin ResourceInfo, wanda ke wakiltar jiki, waɗanda ba APIs ba. Muna jaddada cewa rike kawai ya san hanyar zuwa albarkatu dangane da tushen sararin aiki kuma baya ƙunshe da hanyar haɗi zuwa bayanan albarkatu. Abubuwan bayanan albarkatu suna samar da abin da ake kira "itacen abubuwan". Wannan tsarin bayanan an yi shi gaba ɗaya cikin ƙwaƙwalwar ajiya. Don nemo misalin bayanan albarkatun da ya yi daidai da abin hannu, itacen kashi yana bi ta hanyar da aka adana a wannan hannun.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 2. IResource da ResourceInfo

Kamar yadda za mu gani daga baya, ainihin ƙirar ƙirar kayan aiki (muna iya kira ta tushen hannu) ana amfani da ita a cikin Eclipse don wasu ƙira kuma. A yanzu, bari mu lissafa wasu ƙayyadaddun kaddarorin wannan ƙira:

  • Handle abu ne mai ƙima. Abubuwan ƙima abubuwa ne marasa canzawa waɗanda daidaiton su bai dogara da asali ba. Ana iya amfani da irin waɗannan abubuwan cikin aminci azaman maɓalli a cikin kwantena masu haɗe-haɗe. Misalai da yawa na hannu na iya yin la'akari da albarkatu iri ɗaya. Don kwatanta su, kuna buƙatar amfani da hanyar daidaita (Abin).
  • Handle yana bayyana halayen albarkatun, amma ba ya ƙunshi bayanai game da yanayin albarkatun (bayanan da yake adana kawai shine "maɓalli", hanyar zuwa albarkatun).
  • Hannu na iya komawa zuwa albarkatun da babu shi (ko dai albarkatun da ba a ƙirƙira ba tukuna, ko kuma wata hanya da aka riga an goge). Ana iya bincika wanzuwar albarkatu ta amfani da hanyar IResource.exists().
  • Ana iya aiwatar da wasu ayyuka bisa ga bayanan da aka adana a cikin abin hannu da kanta (abin da ake kira ayyukan hannu-kawai). Misalai sune IResource.getParent(), getFullPath(), da sauransu. Ba ya buƙatar samun albarkatun don irin wannan aiki ya yi nasara. Ayyukan da ke buƙatar albarkatu don wanzuwa don yin nasara jefa CoreException idan babu albarkatun.

Eclipse yana ba da ingantacciyar hanya don sanar da canje-canjen albarkatun sararin aiki (Hoto na 3). Albarkatu na iya canzawa ko dai sakamakon ayyukan da aka yi a cikin Eclipse IDE kanta ko kuma sakamakon aiki tare da tsarin fayil. A cikin lokuta biyu, abokan ciniki waɗanda ke biyan kuɗi zuwa sanarwar ana ba su cikakkun bayanai game da canje-canje a cikin hanyar "deltas albarkatun". A delta yana kwatanta canje-canje tsakanin jihohi biyu na itacen kayan aiki (sub-) kuma ita kanta itace, kowane kumburi wanda ke bayyana canji zuwa albarkatun kuma ya ƙunshi jerin deltas a mataki na gaba wanda ke bayyana canje-canje ga albarkatun yara.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 3. IResourceChangeEvent da IResourceDelta

Na'urar sanarwar ta dogara da albarkatun deltas yana da halaye masu zuwa:

  • An kwatanta canji guda ɗaya da sauye-sauye da yawa ta amfani da tsari iri ɗaya, tun da an gina delta ta amfani da ka'idar recursive abun da ke ciki. Abokan ciniki na iya aiwatar da sanarwar canza kayan albarkatu ta amfani da saukowar maimaitawa ta bishiyar deltas.
  • Yankin delta ya ƙunshi cikakkun bayanai game da canje-canje ga albarkatun, gami da motsinsa da/ko canje-canje a cikin “alamomi” masu alaƙa da shi (misali, ana wakilta kurakuran tattarawa azaman alamomi).
  • Tun da an yi nassoshi albarkatun ta hannun hannu, delta na iya yin la'akari da wata hanya mai nisa.

Kamar yadda za mu gani nan ba da jimawa ba, manyan abubuwan da ke cikin ƙira na tsarin canjin kayan aiki su ma sun dace da sauran samfuran tushen hannu.

Farashin JDT

Samfurin albarkatu na sararin aiki Eclipse shine ainihin ƙirar harshe-agnostic. Bangaren JDT Core (plugin org.eclipse.jdt.core) yana ba da API don kewayawa da nazarin tsarin sararin aiki daga mahallin Java, abin da ake kira "samfurin Java" (Model Java). An ayyana wannan API cikin sharuddan abubuwan Java, sabanin tsarin tushen albarkatun API, wanda aka ayyana cikin sharuddan manyan fayiloli da fayiloli. Ana nuna manyan hanyoyin haɗin bishiyar Java a cikin siffa. 4.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 4. Java Model Elements

Samfurin Java yana amfani da hannaye/jiki iri ɗaya kamar samfurin albarkatu (Hoto 5). IJavaElement shine rike, kuma JavaElementInfo yana taka rawar jiki. IJavaElement interface yana bayyana ƙa'idar gama gari ga duk abubuwan Java. Wasu daga cikin hanyoyin sa ana amfani da su kawai: getElementName(), getParent(), da sauransu. Abun JavaElementInfo yana adana yanayin abin da ya dace: tsarinsa da halayensa.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 5. IJavaElement da JavaElementInfo

Samfurin Java yana da wasu bambance-bambance a cikin aiwatar da tsari na asali / ƙirar jiki idan aka kwatanta da samfurin albarkatu. Kamar yadda aka ambata a sama, a cikin tsarin albarkatun, itacen kashi, wanda kumburinsa abubuwa ne na bayanan albarkatu, yana ƙunshe gaba ɗaya a cikin ƙwaƙwalwar ajiya. Amma tsarin Java na iya samun adadi mai girma na abubuwa fiye da itacen albarkatu, saboda kuma yana wakiltar tsarin ciki na .java da fayilolin aji: iri, filayen, da hanyoyin.

Don guje wa ɗaukar dukkan bishiyar abubuwa cikin ƙwaƙwalwar ajiya gaba ɗaya, aiwatar da ƙirar Java yana amfani da ƙayyadaddun ma'ajiyar bayanai na LRU, inda maɓalli ke rike IJavaElement. Ana ƙirƙira abubuwan abubuwan bayanai akan buƙata yayin da ake kewaya bishiyar element. A wannan yanayin, ana fitar da mafi ƙarancin abubuwan da aka saba amfani da su daga ma'ajin, kuma amfanin ƙwaƙwalwar ƙirar ya kasance iyakance ga ƙayyadadden girman cache. Wannan wata fa'ida ce ta ƙirar tushen hannu, wanda ke ɓoye gabaɗayan irin waɗannan bayanan aiwatarwa daga lambar abokin ciniki.

Hanya don sanar da canje-canje ga abubuwan Java gabaɗaya yana kama da tsarin bin diddigin canje-canje ga albarkatun sararin aiki da aka tattauna a sama. Abokin ciniki da ke son saka idanu canje-canje a ƙirar Java yana biyan kuɗi zuwa sanarwa, waɗanda aka wakilta azaman abin ElementChangedEvent wanda ya ƙunshi IJavaElementDelta (Hoto na 6).

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 6. ElementChangedEvent da IJavaElementDelta

Samfurin Java ba ya ƙunshe da bayanai game da hanyoyin hanyoyin ko ƙudurin suna, don haka don cikakken nazarin lambar da aka rubuta a Java, JDT Core yana ba da ƙarin samfurin (wanda ba na hannu ba): m bishiyar syntax (Bishiyar syntax, AST). AST yana wakiltar sakamakon tantance rubutun tushen. AST nodes sun dace da abubuwa na tsarin tushen tushen (bayani, masu aiki, maganganu, da sauransu) kuma sun ƙunshi bayanai game da daidaitawar abubuwan da suka dace a cikin rubutun tushe, da kuma (a matsayin zaɓi) bayanai game da ƙudurin suna a ciki. nau'in hanyoyin haɗi zuwa abin da ake kira dauri. Abubuwan ɗaure abubuwa ne waɗanda ke wakiltar mahaɗan suna, kamar nau'ikan, hanyoyi, da masu canji, sananne ga mai tarawa. Ba kamar nodes na AST ba, waɗanda suka zama bishiya, ɗaure suna goyan bayan giciye kuma gabaɗaya suna yin hoto. AstNode na abstract shine ajin tushe gama gari don duk nodes na AST. Karamin azuzuwan ASTNode sun yi daidai da ƙayyadaddun tsarin ginin harshe na Java.

Saboda bishiyoyin syntax na iya cinye adadi mai yawa na ƙwaƙwalwar ajiya, JDT yana adana AST ɗaya kawai don edita mai aiki. Ba kamar tsarin Java ba, yawanci ana kallon AST a matsayin "tsakiyar," "na wucin gadi" wanda abokan ciniki bai kamata su rike membobinsu ba a waje da yanayin aikin da ya haifar da ƙirƙirar AST.

Samfuran da aka jera guda uku (samfurin Java, AST, ɗaure) tare suna samar da tushen ginin “kayan aikin haɓaka fasaha” a cikin JDT, gami da editan Java mai ƙarfi tare da “masu taimako” daban-daban, ayyuka daban-daban don sarrafa lambar tushe (ciki har da tsara jerin shigo da kaya). sunaye da tsarawa bisa ga salon da aka keɓance), bincike da kayan aikin sake fasalin. A wannan yanayin, tsarin Java yana taka muhimmiyar rawa, tun da yake shi ne ake amfani da shi a matsayin ginshiƙi na nuni na gani na tsarin aikace-aikacen da ake haɓaka (misali, a cikin Package Explorer, Outline, Search, Call Hierarchy, da sauransu). Nau'in Matsayi).

Abubuwan da aka yi amfani da kusufin kusufi a cikin 1C: Kayayyakin Ci gaban Kasuwanci

A cikin siffa. Hoto na 7 yana nuna abubuwan Eclipse waɗanda suka zama tushen tsarin fasahar don 1C: Kayayyakin Ci gaban Kasuwanci.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 7. Eclipse a matsayin dandamali don 1C: Kayayyakin Ci gaban Kasuwanci

Eclipse Platform yana ba da kayan aikin yau da kullun. Mun duba wasu bangarori na wannan ababen more rayuwa a sashin da ya gabata.

Tsarin Tsarin Eclipse Modeling (EMF) yana ba da gabaɗaya hanyoyin yin ƙirƙira bayanan da aka tsara. An haɗa EMF tare da Platform Eclipse, amma kuma ana iya amfani dashi daban a aikace-aikacen Java na yau da kullun. Sau da yawa, sabbin masu haɓaka Eclipse sun riga sun san EMF sosai, kodayake har yanzu ba su fahimci ƙaƙƙarfan tsarin Eclipse Platform ba. Ɗaya daga cikin dalilan irin wannan shaharar da aka cancanta shine ƙirar duniya, wanda ya haɗa da, a tsakanin sauran abubuwa, API ɗin haɗin kai na meta, wanda ke ba ku damar yin aiki tare da kowane samfurin EMF a gaba ɗaya. Abubuwan aiwatarwa na asali don abubuwan ƙira da EMF suka bayar da tsarin ƙima don samar da lambar ƙirar ƙira dangane da ƙirar meta yana haɓaka saurin haɓakawa da rage yawan kurakurai. EMF kuma ya ƙunshi hanyoyin ƙirƙira ƙira, bin diddigin canje-canje ga ƙirar, da ƙari mai yawa.

Kamar kowane kayan aiki na gama-gari na gaske, EMF ya dace da warware matsalolin ƙirar ƙira iri-iri, amma wasu nau'ikan ƙira (misali, ƙirar tushen da aka tattauna a sama) na iya buƙatar ƙarin kayan aikin ƙira na musamman. Magana game da EMF aiki ne na rashin godiya, musamman a cikin ƙayyadaddun iyaka na labarin ɗaya, tunda wannan batu ne na wani littafi daban, kuma mai kauri ne. Bari mu lura kawai cewa babban tsarin tsarin haɓakawa da ke ƙarƙashin EMF ya ba da izinin haihuwar dukkanin ayyukan da aka keɓe don yin samfuri, waɗanda aka haɗa a cikin babban matakin aikin. Modeling Eclipse tare da EMF kanta. Ɗayan irin wannan aikin shine Eclipse Xtext.

Eclipse Xtext yana samar da kayan aikin "rubutu". Xtext yana amfani Farashin ANTLR don rarraba rubutun tushen da EMF don wakiltar sakamakon ASG (jafin ma'anar ma'ana, wanda shine ainihin haɗin AST da ɗaure), wanda kuma ake kira "samfurin ma'anar". An kwatanta nahawu na harshen da Xtext ya tsara a cikin harshen na Xtext. Wannan yana ba ku damar samar da bayanin nahawu don ANTLR kawai, amma har ma don samun tsarin serialization AST (watau Xtext yana ba da duka parser da unparser), alamar mahallin, da adadin sauran sassan harshe. A daya bangaren kuma, harshen nahawu da ake amfani da shi a cikin Xtext ba shi da sassauci fiye da, a ce, harshen nahawu da ake amfani da shi a cikin ANTLR. Sabili da haka, wani lokacin yana da mahimmanci don "lanƙwasa" harshen da aka aiwatar zuwa Xtext, wanda yawanci ba matsala ba ne idan muna magana ne game da harshen da aka haɓaka daga karce, amma yana iya zama wanda ba a yarda da shi ba ga harsuna tare da haɗin gwiwar da aka riga aka kafa. Duk da wannan, Xtext a halin yanzu shine mafi girma, mai wadatuwa, da kayan aiki iri-iri a cikin Eclipse don gina harsunan shirye-shirye da kayan haɓakawa gare su. Musamman ma, kayan aiki ne mai dacewa don saurin samfur takamaiman harsunan yanki (harshen takamaiman yanki, DSL). Bugu da ƙari ga abin da aka ambata a sama "tushen harshe" dangane da ANTLR da EMF, Xtext yana ba da abubuwa masu girma masu yawa masu amfani, ciki har da hanyoyin ƙididdigewa, haɓaka haɓakawa, " edita mai basira ", da yawa, da yawa, amma ya bar rike- tushen harshe model. Kamar EMF, Xtext batu ne wanda ya cancanci wani littafi daban, kuma da ƙyar ba za mu iya yin magana a taƙaice game da duk iyawar sa a yanzu ba.

1C: Kayayyakin Ci gaban Kasuwanci suna amfani da EMF kanta da sauran ayyukan Modeling Eclipse. Musamman ma, Xtext yana ɗaya daga cikin tushe na kayan aikin haɓaka don irin waɗannan 1C: Harsunan kasuwanci kamar ginanniyar harshe shirye-shirye da harshen tambaya. Wani tushe na waɗannan kayan aikin haɓakawa shine aikin Eclipse Handly, wanda zamu tattauna dalla-dalla (na cikin abubuwan da aka jera Eclipse, har yanzu shine mafi ƙarancin sani).

Eclipse Handly, wani jigo na babban aikin fasahar Eclipse Technology, ya fito ne sakamakon gudummawar lambar farko ga Eclipse Foundation da 1C ta yi a cikin 2014. Tun daga wannan lokacin, 1C ya ci gaba da tallafawa ci gaban aikin: Masu aikin hannu su ne ma'aikatan kamfanin. Aikin karami ne, amma ya mamaye wani wuri na musamman a cikin Eclipse: babban burinsa shine tallafawa haɓaka samfuran tushen hannu.

An tattauna ainihin ƙa'idodin tsarin gine-gine na samfuran tushen hannu, kamar sumbari/jiki, an tattauna a sama ta amfani da samfurin albarkatu da samfurin Java a matsayin misalai. Har ila yau, an lura cewa duka samfurin albarkatun da kuma tsarin Java suna da mahimmanci ga kayan aikin haɓaka Java (JDT). Kuma tun da kusan dukkanin ayyukan *DT Eclipse suna da tsarin gine-gine mai kama da JDT, ba zai zama babban ƙari ba idan an ce samfuran da suka dogara da hannu suna ƙarƙashin da yawa, idan ba duk IDE ɗin da aka gina a saman Platform Eclipse ba. Misali, Eclipse C/C++ Development Tooling (CDT) yana da samfurin C/C++ mai hannu wanda ke taka rawa iri ɗaya a cikin tsarin gine-ginen CDT kamar yadda tsarin Java ke yi a JDT.

Kafin Handly, Eclipse bai bayar da ƙwararrun ɗakunan karatu don gina ƙirar tushen harshe ba. Samfuran da ke wanzuwa an ƙirƙira su ne ta hanyar daidaita lambar ƙirar Java kai tsaye (aka kwafi/ manna), a lokuta inda ya yarda Lasisin Jama'a na Eclipse (EPL). (Tabbas, wannan yawanci ba batun shari'a ba ne, a ce, Eclipse yana aiwatar da kansa, amma ba don samfuran rufaffiyar tushe ba.) Bugu da ƙari ga ɓarna na asali, wannan dabarar tana gabatar da sanannun matsalolin: kwafin lambar da aka gabatar ta lokacin daidaitawa ga kurakurai, da dai sauransu. Abin da ya fi muni shi ne cewa samfurin da aka samu ya kasance "abubuwa a cikin kansu" kuma ba sa amfani da damar haɗin kai. Amma ware ra'ayoyi na gama-gari da ka'idoji don ƙirar tushen harshe na iya haifar da ƙirƙirar abubuwan sake amfani da su don aiki tare da su, kama da abin da ya faru a yanayin EMF.

Ba wai Eclipse bai fahimci waɗannan batutuwa ba. Komawa cikin 2005 Martin Aeschlimann, taƙaita ƙwarewar haɓaka samfurin CDT, jayayya buƙatar ƙirƙirar kayan aikin gama gari don ƙirar harshe, gami da samfuran tushen hannu. Amma, kamar yadda sau da yawa yakan faru, saboda manyan ayyuka masu fifiko, aiwatar da waɗannan ra'ayoyin ba su taɓa zuwa ba. A halin yanzu, haɓaka lambar *DT har yanzu yana ɗaya daga cikin batutuwan da ba a haɓaka su ba a cikin Eclipse.

A wata ma'ana, aikin Handly an tsara shi ne don magance kusan matsaloli iri ɗaya da EMF, amma don ƙirar hannu, da farko na harshe (wato, wakiltar abubuwa na tsarin wasu shirye-shiryen harshe). Babban burin da aka saita lokacin zayyana Handly an jera su a ƙasa:

  • Gano babban abstractions na yankin batun.
  • Rage ƙoƙari da haɓaka ingancin aiwatar da samfuran tushen harshe ta hanyar sake amfani da lambar.
  • Samar da haɗe-haɗe na matakin API zuwa samfuran da aka samo, yana ba da damar ƙirƙirar abubuwan IDE gama gari waɗanda ke aiki tare da tushen tushen harshe.
  • Sassauci da scalability.
  • Haɗin kai tare da Xtext (a cikin wani Layer dabam).

Don haskaka ra'ayoyi na gama-gari da ka'idoji, an yi nazarin aiwatar da aiwatar da tsarin tushen harshe. Ana nuna manyan hanyoyin sadarwa da aiwatarwa na asali ta Handly a cikin siffa. 8.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 8. Abubuwan haɗin gwiwar gama gari da aiwatarwa na asali na abubuwan Handly

Ƙididdigar Ielement tana wakiltar hannun wani kashi kuma ya zama gama gari ga abubuwa na duk samfuran tushen Handly. Abun ajin abstract yana aiwatar da tsarin rikewa gaba ɗaya (Fig. 9).

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 9. Ielement da kuma aiwatar da hannu / jiki

Bugu da kari, Handly yana samar da tsarin gaba ɗaya don sanarwa game da canje-canje a cikin abubuwan ƙira (Fig. 10). Kamar yadda kake gani, yana kama da tsarin sanarwar da aka aiwatar a cikin samfurin albarkatu da ƙirar Java, kuma yana amfani da IelementDelta don samar da haɗe-haɗen wakilci na bayanan canjin kashi.

Eclipse a matsayin dandalin fasaha don 1C: Kayayyakin Ci gaban Kasuwanci
Shinkafa 10. Gabaɗaya musaya da aiwatarwa na asali na hanyar sanarwar Handly

Za a iya amfani da ɓangaren Handly da aka tattauna a sama (Fig. 9 da 10) don wakiltar kusan kowane nau'i na tushen hannu. Don ƙirƙirar harshe samfura, aikin yana ba da ƙarin ayyuka - musamman, musaya na gama gari da aiwatarwa na asali don abubuwa na tsarin rubutun tushen, abin da ake kira. tushen abubuwa (Hoto 8). Fayil ɗin ISourceFile yana wakiltar fayil ɗin tushe, kuma ISourceConstruct yana wakiltar wani abu a cikin fayil ɗin tushen. Azuzuwan abstract SourceFile da SourceConstruct suna aiwatar da ingantattun hanyoyin don tallafawa aiki tare da fayilolin tushen da abubuwan su, alal misali, aiki tare da masu buffer rubutu, ɗaure ga daidaitawar wani abu a cikin rubutun tushe, daidaita samfura tare da abubuwan da ke cikin yanzu na buffer kwafin aiki. , da dai sauransu. Aiwatar da waɗannan hanyoyin yawanci ƙalubale ne, kuma Handly na iya rage yunƙurin haɓaka samfuran tushen harshe ta hanyar samar da ingantaccen tushe aiwatarwa.

Baya ga mahimman hanyoyin da aka jera a sama, Handly yana ba da kayan aikin buffers na rubutu da hotuna, tallafi don haɗawa tare da masu gyara lambar tushe (ciki har da haɗawar waje tare da editan Xtext), da kuma wasu abubuwan gama gari na UI waɗanda Yi aiki tare da masu gyara lambar tushe. Samfuran hannu kamar tsarin zayyana. Don kwatanta iyawar sa, aikin yana ba da misalai da yawa, gami da aiwatar da ƙirar Java a Handly. (Idan aka kwatanta da cikakken aiwatar da ƙirar Java a cikin JDT, wannan ƙirar an sauƙaƙe shi da gangan don ƙarin haske.)

Kamar yadda aka ambata a baya, babban abin da aka fi mayar da hankali a lokacin ƙirar farko ta Handly da ci gaba na gaba shine kuma yana ci gaba da kasancewa akan haɓakawa da sassauƙa.

A ka'ida, samfuran tushen hannu suna yin girma sosai "ta ƙira". Misali, ma'anar hannu/jiki yana ba ku damar iyakance adadin ƙwaƙwalwar ajiya da abin ƙira ke cinyewa. Amma akwai kuma nuances. Don haka, lokacin gwada Handly don haɓakawa, an gano matsala a cikin aiwatar da tsarin sanarwa - lokacin da aka canza abubuwa da yawa, gina deltas ya ɗauki lokaci mai yawa. Ya bayyana cewa wannan matsala ta kasance a cikin tsarin JDT Java, wanda daga ciki aka daidaita lambar da ta dace. Mun gyara kwaro a Handly kuma mun shirya irin wannan faci don JDT, wanda aka karɓa cikin godiya. Wannan misali ɗaya ne kawai inda gabatar da Handly a cikin aiwatar da ƙirar ƙira zai iya zama mai fa'ida, saboda a wannan yanayin ana iya gyara irin wannan kwaro a wuri ɗaya kawai.

Don aiwatar da Handly cikin aiwatar da ƙirar da ake da su a zahiri, dole ne ɗakin karatu ya sami sassauci mai mahimmanci. Babban matsalar ita ce kiyaye daidaituwar baya a cikin tsarin API. An magance wannan matsalar a ciki Hannun hannu 0.5 ta hanyar keɓance takamaiman samfurin API, wanda mai haɓakawa ya siffanta kuma yana sarrafa shi gaba ɗaya, daga haɗe-haɗen matakin API ɗin da ɗakin karatu ya samar. Wannan ba wai kawai yana ba da damar ta hanyar fasaha don aiwatar da Handly cikin aiwatarwa da ake da su ba, har ma yana ba sabon mai haɓaka ƙirar ƴanci sosai lokacin zayyana API ɗin.

Sassautu yana da wasu bangarori kuma. Misali, Handly ba ya sanya kusan babu hani akan tsarin ƙirar kuma ana iya amfani da shi don yin ƙira ga maƙasudi na gaba ɗaya da takamaiman harsunan yanki. Lokacin gina tsarin fayil ɗin tushen, Handly baya tsara kowane nau'i na wakilcin AST kuma, bisa ƙa'ida, baya buƙatar kasancewar AST kanta, don haka yana tabbatar da dacewa tare da kusan kowane injin bincike. A ƙarshe, Handly yana goyan bayan cikakken haɗin kai tare da filin aiki na Eclipse, amma kuma yana iya aiki kai tsaye tare da tsarin fayil godiya ga haɗin kai tare da. Tsarin Fayil na Eclipse (EFS).

Sigar ta yanzu Hannun hannu 0.6 ya fito a watan Disamba 2016. Duk da cewa aikin a halin yanzu yana cikin yanayin haɓakawa kuma har yanzu ba a daidaita API ɗin ba, Handly an riga an yi amfani da shi a cikin manyan samfuran kasuwanci guda biyu waɗanda suka ɗauki haɗarin yin aiki a matsayin "masu ɗaukar nauyi", kuma, dole ne in ce, kar a yi nadama tukuna.

Kamar yadda muka gani a sama, ɗaya daga cikin waɗannan samfuran shine 1C: Kayayyakin Ci gaban Kasuwanci, inda ake amfani da Handly tun daga farko don ƙirƙirar abubuwa na babban tsari na irin wannan 1C: Harsunan kasuwanci kamar ginanniyar harshe shirye-shirye da harshen tambaya. . Wani samfurin kuma ba a san shi ba ga jama'a. Wannan Codasip Studio, Haɗaɗɗen yanayin ƙira don ƙayyadaddun tsari na ƙayyadaddun umarni-saitin aikace-aikacen (ASIP), wanda aka yi amfani da shi duka a cikin kamfanin Czech Codasip kanta da abokan cinikinsa, gami da AMD, AVG, wayar hannu, Zane-zanen Sigma. Codasip yana amfani da Handly a samarwa tun 2015, yana farawa da sigar Handly 0.2. Sabon sakin Codasip Studio yana amfani da sigar 0.5, wanda aka saki a watan Yuni 2016. Ondřej Ilčík, wanda ke jagorantar ci gaban IDE a Codasip, yana hulɗa da aikin, yana ba da ra'ayi mai mahimmanci a madadin "mai karɓa na ɓangare na uku". Har ma ya sami damar samun lokaci na kyauta don shiga kai tsaye a cikin ci gaban aikin, aiwatar da Layer UI (~ 4000 layin lamba) don ɗaya daga cikin misalan Handly, samfurin Java. Ana iya samun ƙarin cikakkun bayanai na hannun farko game da amfani da Handly ta masu karɓa akan shafin Success Stories aikin.

Muna fatan cewa bayan fitowar sigar 1.0 tare da garantin kwanciyar hankali na API da aikin barin yanayin shiryawa, Handly zai sami sabbin masu karɓa. A halin yanzu, aikin ya ci gaba da gwadawa da haɓaka API, yana fitar da "manyan" saki biyu a kowace shekara - a cikin watan Yuni (daidai da kwanan wata da sakin Eclipse na lokaci daya) da Disamba, yana ba da jadawalin tsinkaya wanda masu karɓa zasu iya dogara da su. Hakanan zamu iya ƙarawa cewa "ƙimar kwaro" na aikin ya kasance a ƙaramin matakin kuma Handly yana aiki da dogaro a cikin samfuran masu karɓar farkon tun farkon nau'ikan. Don ƙarin bincika Eclipse Handly, zaka iya amfani Koyarwar Farawa и Gine-ginen gine-gine.

source: www.habr.com

Add a comment