Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo

Mohlomong fifala ha letsatsi haesale ho hlokahala matseno a khethehileng. Batho ba bangata ba tloaelane le Eclipse ka lebaka la lisebelisoa tsa ntlafatso tsa Eclipse Java (JDT). Ke Java IDE e tsebahalang e bulehileng eo bahlahisi ba bangata ba e amahanyang le lentsoe "Eclipse". Leha ho le joalo, Eclipse ka bobeli ke sethala se atolositsoeng sa ho kopanya lisebelisoa tsa nts'etsopele (Eclipse Platform), le li-IDE tse 'maloa tse hahiloeng motheong oa eona, ho kenyeletsoa JDT. Eclipse ka bobeli ke Morero oa Eclipse, projeke ea boemo bo holimo e hokahanyang nts'etsopele ea Eclipse Platform le JDT, le Eclipse SDK, sephetho se fanoeng sa nts'etsopele eo. Qetellong, Eclipse ke Motheo o bulehileng o nang le merero e mengata ea sechaba, eseng kaofela e ngotsoeng ka Java kapa e amanang le lisebelisoa tsa nts'etsopele (mohlala, merero. Eclipse IoT и Eclipse Science). Lefatše la Eclipse le fapane haholo.

Sengoliloeng sena, e leng kakaretso ea tlhaho, re tla leka ho sheba tse ling tsa metheo ea meralo ea Eclipse e le sethala sa ho aha lisebelisoa tse kopaneng tsa nts'etsopele le ho fana ka mohopolo oa mantlha oa likarolo tsa Eclipse tse thehang motheo oa theknoloji. sethala sa "Configurator e ncha" 1C: Khoebo. 1C: Lisebelisoa tsa Ntlafatso ea Khoebo. Ehlile, tlhahlobo e joalo e tla be e le ea kaholimo feela ebile e na le moeli, ho kenyeletsoa hobane ha rea ​​shebana feela le bahlahisi ba Eclipse joalo ka batho bao ho shebiloeng ho bona. Leha ho le joalo, re tšepa hore esita le baetsi ba Eclipse ba nang le phihlelo ba tla khona ho fumana lintlha tse thahasellisang sehloohong sena. Ka mohlala, re tla bua ka e 'ngoe ea "liphiri tsa Eclipse", morero o mocha le o sa tsejoeng haholo. Eclipse Handly, e ileng ea thehoa le ho tšehetsoa ke 1C.
Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo

Kenyelletso ea Eclipse Architecture

Ha re qale ka ho sheba likarolo tse akaretsang tsa meralo ea Eclipse re sebelisa mohlala Lisebelisoa tsa ntlafatso ea Eclipse Java (JDT). Khetho ea JDT e le mohlala ha e etsahale ka phoso. Ena ke tikoloho ea pele ea ntlafatso e kopaneng e hlahang ho Eclipse. Merero e meng ea *DT Eclipse, joalo ka Eclipse C/C++ Development Tooling (CDT), e entsoe hamorao mme ea alima melaoana ea mantlha ea meralo le likhechana tsa khoutu ea mohloli ho tsoa ho JDT. Metheo ea meaho e behiloeng ho JDT e ntse e sebetsa le kajeno bakeng sa hoo e ka bang IDE efe kapa efe e hahiloeng holim'a Eclipse Platform, ho kenyeletsoa 1C: Lisebelisoa tsa Nts'etsopele ea Khoebo.

Pele ho tsohle, hoa lokela ho hlokomeloa hore Eclipse e tšoauoa ka moralo o hlakileng oa meralo, ka karohano ea ts'ebetso e ikemetseng ea puo ho ts'ebetso e etselitsoeng ho ts'ehetsa lipuo tse itseng tsa mananeo, le karohano ea likarolo tsa "core" tse ikemetseng tsa UI ho tsoa ho likarolo tse amanang. ka tshehetso ya mosebedisi.

Kahoo, Eclipse Platform e hlalosa mokhoa oa motheo o tloaelehileng, o ikemetseng oa puo, 'me lisebelisoa tsa ntlafatso ea Java li eketsa Java IDE e feletseng ho Eclipse. Ka bobeli Eclipse Platform le JDT li na le likarolo tse 'maloa, tseo e' ngoe le e 'ngoe e leng ea "core" e ikemetseng ea UI kapa lera la UI (Setšoantšo sa 1).

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 1. Eclipse Platform le JDT

Ha re thathamiseng likarolo tsa mantlha tsa Eclipse Platform:

  • Runtime - E hlalosa lisebelisoa tsa plugin. Eclipse e tšoauoa ka meralo ea modular. Ha e le hantle, Eclipse ke pokello ea "lintlheng tse atolositsoeng" le "extensions".
  • Sebaka sa mosebetsi - E laola morero o le mong kapa ho feta. Morero o na le lifoldara le lifaele tse entsoeng 'mapa ka kotloloho ho sistimi ea faele.
  • Tloaelehileng Widget Toolkit (SWT) - E fana ka likarolo tsa mantlha tsa mosebelisi tse kopantsoeng le sistimi e sebetsang.
  • JFace - E fana ka meralo e mengata ea UI e hahiloeng holim'a SWT.
  • Workbench - E hlalosa paradigm ea Eclipse UI: bahlophisi, maikutlo, maikutlo.

Ho tlameha ho boleloa hore Eclipse Platform e boetse e fana ka likarolo tse ling tse ngata tsa bohlokoa bakeng sa ho aha lisebelisoa tse kopaneng tsa nts'etsopele, ho kenyeletsoa Debug, Compare, Search, le Team. Ho lokela ho buuoa ka ho khetheha ka JFace Text - motheo oa ho haha ​​​​"bahlophisi ba bohlale" ba khoutu ea mohloli. Ka bomalimabe, esita le tlhahlobo e potlakileng ea likarolo tsena, hammoho le likarolo tsa lera la UI, ha li khonehe ka har'a sengoloa sena, kahoo karolong e setseng ea karolo ena re tla ipehela moeli oa kakaretso ea likarolo tse kholo tsa "core" tsa. Sethala sa Eclipse le JDT.

Core Runtime

The Eclipse plugin infrastructure e thehiloe ho OSGi le ho fanoa ke morero Eclipse Equinox. Plugin e 'ngoe le e' ngoe ea Eclipse ke sephutheloana sa OSGi. Tlhaloso ea OSGi e hlalosa, haholo-holo, mekhoa ea ho fetolela le ho rarolla mathata. Ntle le mekhoa ena e tloaelehileng, Equinox e hlahisa mohopolo lintlha tsa katoloso. Plugin e 'ngoe le e' ngoe e ka hlalosa lintlha tsa eona tsa katoloso, hape e hlahisa ts'ebetso e eketsehileng ("extensions") ho sistimi e sebelisa lintlha tsa katoloso tse hlalositsoeng ke li-plugins tse tšoanang kapa tse ling. Tlhaloso e 'ngoe le e' ngoe e qaqileng ea mekhoa ea OSGi le Equinox e ka holimo ho sebaka sa sengoloa sena. A re hlokomeleng feela hore modularization ho Eclipse ke kakaretso (sesebelisoa sefe kapa sefe, ho kenyeletsoa Runtime, se na le plugins e le 'ngoe kapa ho feta), mme hoo e batlang e le ntho e ngoe le e ngoe e ho Eclipse ke katoloso. Ho feta moo, melao-motheo ena e ne e kenngoa mohahong oa Eclipse nako e telele pele ho kenyelletsoa OSGi (ka nako eo ba ne ba sebelisa theknoloji ea bona, e tšoanang haholo le OSGi).

Sebaka sa ho sebetsa sa mantlha

Hoo e ka bang tikoloho efe kapa efe e kopaneng ea nts'etsopele e hahiloeng holim'a Eclipse Platform e sebetsa le sebaka sa mosebetsi sa Eclipse. Ke sebaka sa mosebetsi seo hangata se nang le khoutu ea mohloli oa kopo e ntlafalitsoeng ho IDE. Limmapa tsa sebaka sa ho sebetsa ka kotloloho ho sistimi ea faele mme e na le merero, e nang le lifoldara le lifaele. Merero ena, lifoldara, le lifaele li bitsoa lisebelisoa sebaka sa mosebetsi. Ts'ebetso ea sebaka sa ts'ebetso ho Eclipse e sebetsa e le cache mabapi le sistimi ea faele, e etsang hore ho khonehe ho potlakisa phallo ea sefate sa lisebelisoa. Ho phaella moo, sebaka sa mosebetsi se fana ka palo ea litšebeletso tse eketsehileng, ho kenyeletsa mokhoa oa tsebiso bakeng sa liphetoho tsa lisebelisoa и meaho ea lihahi tse ntseng li eketseha.

Karolo ea Core Resources (org.eclipse.core.resources plugin) e ikarabella ho tšehetsa sebaka sa mosebetsi le lisebelisoa tsa sona. Haholo-holo, karolo ena e fana ka phihlello ea mananeo sebakeng sa mosebetsi ka foromo mehlala ea lisebelisoa. Ho sebetsa ka katleho le mohlala ona, bareki ba hloka mokhoa o bonolo oa ho hlahisa sehokelo ho sesebelisoa. Tabeng ena, e ka ba ho lakatsehang ho pata ntho e bolokang ka ho toba boemo ba mohlodi ka mohlala ho tloha ho fihlella bareki. Ho seng joalo, tabeng ea, ka mohlala, ho hlakola faele, mofani a ka tsoela pele ho tšoara ntho e seng e le mohlala, ka mathata a latelang. Eclipse e rarolla bothata bona ka ho sebelisa ntho e bitsoang sebetsana mohlodi. Tšoara e sebetsa e le senotlolo (e tseba feela tsela ea ho ea mohloling sebakeng sa mosebetsi) 'me e laola ka ho feletseng ho fihlella ntho e ka hare ea mohlala, e bolokang ka ho toba tlhahisoleseding e mabapi le boemo ba mohloli. Moqapi ona ke phapang ea mohlala Motshoaro/Mmele.

Raese. Setšoantšo sa 2 se bontša lepetjo la Handle/Body joalokaha le sebelisoa mofuteng oa lisebelisoa. Sebopeho sa IResource se emela ho sebetsana le sesebelisoa mme ke API, ho fapana le sehlopha sa Resource, se sebelisang sebopeho sena, le sehlopha sa ResourceInfo, se emelang 'mele, e seng li-API. Re totobatsa hore mothapo o tseba feela tsela ea ho ea mohloling o amanang le motso oa sebaka sa mosebetsi mme ha o na sehokelo sa tlhaiso-leseling ea lisebelisoa. Lintlha tsa lintlha tsa lisebelisoa li theha se bitsoang "sefate sa element". Sebopeho sena sa data se entsoe ka botlalo mohopolong. Ho fumana mohlala oa tlhaiso-leseling ea lisebelisoa o tsamaellanang le mothapo, sefate sa element se tsamaellana ho latela tsela e bolokiloeng moheleng oo.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 2. IResource le ResourceInfo

Joalo ka ha re tla bona hamorao, moralo oa mantlha oa mofuta oa lisebelisoa (re ka o bitsang-handle-based) o sebelisoa ho Eclipse bakeng sa mefuta e meng hape. Hajoale, a re ke re thathamiseng tse ling tsa litšobotsi tse ikhethang tsa moralo ona:

  • Handle ke ntho ea bohlokoa. Lintho tsa boleng ke lintho tse sa fetoheng tseo tekano ea tsona e sa itšetlehang ka boitsebiso. Lintho tse joalo li ka sebelisoa ka mokhoa o sireletsehileng e le senotlolo ka har'a lijana tse hashed. Likarolo tse ngata tsa ho sebetsana li ka bua ka sesebelisoa se le seng. Ho li bapisa, o hloka ho sebelisa mokhoa o lekanang (Object).
  • Handle e hlalosa boits'oaro ba sesebelisoa, empa ha e na tlhahisoleseling mabapi le boemo ba sesebelisoa (data e le 'ngoe feela eo e e bolokang ke "senotlolo", tsela e eang mohloling).
  • Handle e ka bolela sesebelisoa se seng se le teng (ebang ke sesebelisoa se e-so thetsoe, kapa se seng se hlakotsoe). Boteng ba sesebelisoa bo ka hlahlojoa ho sebelisoa mokhoa oa IResource.exists().
  • Lits'ebetso tse ling li ka kengoa ts'ebetsong ho ipapisitsoe le tlhaiso-leseling e bolokiloeng ka har'a mofeng ka boeona (ho thoeng ke ts'ebetso ea ho sebetsana feela). Mehlala ke IResource.getParent(), getFullPath(), joalo-joalo. Mohloli ha o hloke ho ba teng hore ts'ebetso e joalo e atlehe. Ts'ebetso e hlokang hore sesebelisoa se be teng hore se atlehe, se lahlela CoreException haeba sesebelisoa se le sieo.

Eclipse e fana ka mokhoa o sebetsang oa ho tsebisa liphetoho tsa sebaka sa mosebetsi (setšoantšo sa 3). Lisebelisoa li ka fetoha ka lebaka la liketso tse entsoeng ka har'a Eclipse IDE ka boeona kapa ka lebaka la ho lumellana le tsamaiso ea lifaele. Maemong ana ka bobeli, bareki ba ingolisang ho litsebiso ba fuoa lintlha tse qaqileng mabapi le liphetoho ka mokhoa oa "resource deltas". Delta e hlalosa liphetoho lipakeng tsa linaha tse peli tsa sebaka sa mosebetsi (sub-) sefate 'me ka boeona ke sefate, se seng le se seng se hlalosa phetoho ho sesebelisoa mme se na le lethathamo la deltas boemong bo latelang le hlalosang liphetoho ho lisebelisoa tsa bana.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 3. IResourceChangeEvent le IResourceDelta

Mochini oa tsebiso o ipapisitseng le deltas ea lisebelisoa o na le litšobotsi tse latelang:

  • Phetoho e le 'ngoe le liphetoho tse ngata li hlalosoa ho sebelisoa sebopeho se ts'oanang, kaha delta e hahiloe ho sebelisoa molao-motheo oa sebopeho se pheta-phetoang. Bareki ba ngolisitseng ba ka sebetsana le litemoso tsa phetoho ea lisebelisoa ba sebelisa ho khutla hape ka sefate sa deltas.
  • Delta e na le tlhaiso-leseling e felletseng mabapi le liphetoho mohloding, ho kenyeletsoa motsamao oa ona le/kapa liphetoho ho "matshwao" a amanang le ona (mohlala, liphoso tsa ho bokella li emeloa joalo ka matšoao).
  • Kaha litšupiso tsa lisebelisoa li etsoa ka mofeng, delta ka tlhaho e ka supa mohloli o hole.

Joalokaha re tla bona haufinyane, likarolo tse ka sehloohong tsa moralo oa mokhoa oa ho fetola mokhoa oa lisebelisoa li boetse li bohlokoa bakeng sa mehlala e meng e thehiloeng ho sebetsana.

JDT Core

Mohlala oa lisebelisoa tsa sebaka sa mosebetsi oa Eclipse ke mohlala oa bohlokoa oa puo-agnostic. Karolo ea JDT Core (plugin org.eclipse.jdt.core) e fana ka API bakeng sa ho tsamaea le ho sekaseka sebopeho sa sebaka sa mosebetsi ho latela pono ea Java, e bitsoang "mohlala oa Java" (Mohlala oa Java). API ena e hlalosoa ho latela likarolo tsa Java, ho fapana le API ea mohlala oa lisebelisoa, e hlalosoang ho latela lifoldara le lifaele. Likarolo tsa mantlha tsa sefate sa elementi sa Java li bonts'itsoe ho Fig. 4.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 4. Java Model Elements

Moetso oa Java o sebelisa maele a tšoanang / 'mele joalo ka mohlala oa lisebelisoa (setšoantšo sa 5). IJavaElement ke molamu, 'me JavaElementInfo e bapala karolo ea' mele. Sebopeho sa IJavaElement se hlalosa protocol e tloaelehileng ho likarolo tsohle tsa Java. E meng ea mekhoa ea eona ke ea ho sebetsana feela: getElementName(), getParent(), joalo-joalo. Ntho ea JavaElementInfo e boloka boemo ba ntho e lumellanang le eona: sebopeho le litšobotsi tsa eona.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 5. IJavaElement le JavaElementInfo

Mohlala oa Java o na le liphapang tse itseng ts'ebetsong ea moralo oa motheo oa ho tšoara / 'mele ha o bapisoa le mohlala oa lisebelisoa. Joalokaha ho boletsoe ka holimo, mofuteng oa lisebelisoa, sefate sa element, seo li-node tsa sona e leng lintho tsa boitsebiso ba lisebelisoa, li fumaneha ka ho feletseng mohopolong. Empa mohlala oa Java o ka ba le palo e kholoanyane ea likarolo ho feta sefate sa mohloli, hobane e boetse e emela sebopeho sa ka hare sa .java le .class lifaele: mefuta, masimo le mekhoa.

Ho qoba ho etsa hore sefate sohle sa lintho se hopoloe ka botlalo, ts'ebetsong ea mohlala oa Java e sebelisa cache ea LRU ea boholo bo fokolang ba lintlha tsa element, moo senotlolo se sebetsanang le IJavaElement. element info lintho li entsoe ka tlhokahalo ha sefate sa element se ntse se tsamaisoa. Tabeng ena, lintho tse sa sebelisoang hangata li ntšoa ka har'a cache, 'me tšebeliso ea memori ea mohlala e lula e lekanyelitsoe ho boholo ba cache e boletsoeng. Ena ke molemo o mong oa moralo o thehiloeng ho sebetsana, o patang ka ho feletseng lintlha tse joalo tsa ts'ebetsong ho tsoa ho khoutu ea bareki.

Mokhoa oa ho tsebisa liphetoho ho likarolo tsa Java ka kakaretso o ts'oana le mochini oa ho latela liphetoho ho lisebelisoa tsa sebaka sa mosebetsi tse boletsoeng ka holimo. Moreki ea lakatsang ho beha leihlo liphetoho tsa mofuta oa Java o ingolisa ho litsebiso, tse emeloang e le ntho ea ElementChangedEvent e nang le IJavaElementDelta (Setšoantšo sa 6).

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 6. ElementChangedEvent le IJavaElementDelta

Moetso oa Java ha o na tlhahisoleseling mabapi le mekhatlo ea mekhoa kapa ho rarolloa ha mabitso, kahoo bakeng sa tlhahlobo e qaqileng ea khoutu e ngotsoeng ho Java, JDT Core e fana ka mohlala o eketsehileng (o sa sebetsaneng le letsoho): sefate se sa bonahaleng sa syntax (sefate se sa bonahaleng sa syntax, AST). AST e emetse sephetho sa tlhahlobo ea mohloli. Li-node tsa AST li tsamaellana le likarolo tsa sebopeho sa mojule oa mohloli (liphatlalatso, basebelisi, lipolelo, joalo-joalo) 'me li na le tlhahisoleseling mabapi le likhokahano tsa ntho e tsamaellanang mohloling oa mohloli, hammoho le (e le khetho) tlhahisoleseling mabapi le qeto ea mabitso ho sebopeho sa mahokelo ho seo ho thoeng ke tlamo. Litlaleho ke lintho tse emelang mekhatlo e nang le mabitso, joalo ka mefuta, mekhoa, le mefuta-futa, e tsejoang ke moqapi. Ho fapana le li-node tsa AST, tse etsang sefate, litlamo li tšehetsa litšupiso tse fapaneng 'me ka kakaretso li etsa kerafo. Sehlopha sa abstract ASTNode ke sehlopha se tloaelehileng sa li-node tsohle tsa AST. Li-subclasses tsa ASTNode li tsamaellana le meaho e ikhethileng ea puo ea Java.

Hobane lifate tsa syntax li ka ja mohopolo o mongata, JDT e boloka AST e le 'ngoe feela bakeng sa mohlophisi ea sebetsang. Ho fapana le mofuta oa Java, AST hangata e nkuoa e le mohlala oa "bohareng," "oa nakoana" oo litho tsa ona li sa lokelang ho ts'oaroa ke bareki kantle ho maemo a ts'ebetso e lebisitseng ho thehoeng ha AST.

Mefuta e meraro e thathamisitsoeng (mohlala oa Java, AST, litlamo) hammoho e theha motheo oa ho aha "lisebelisoa tse bohlale tsa ntlafatso" ho JDT, ho kenyeletsoa mohlophisi ea matla oa Java o nang le "bathusi" ba fapaneng, liketso tse fapaneng tsa ho sebetsana le khoutu ea mohloli (ho kenyeletsoa le ho hlophisa lethathamo la lintho tse tsoang kantle ho naha). mabitso le ho fometa ho latela setaele se ikhethileng), lisebelisoa tsa ho batla le tsa ho etsa lintho bocha. Tabeng ena, mohlala oa Java o bapala karolo e khethehileng, kaha ke eona e sebelisoang e le motheo oa pontšo ea pono ea sebopeho sa kopo e ntseng e ntlafatsoa (mohlala, ho Package Explorer, Outline, Search, Call Hierarchy le. Mofuta oa Hierarchy).

Likarolo tsa Eclipse tse sebelisitsoeng ho 1C:Lisebelisoa tsa Nts'etsopele ea Khoebo

Ho sa feiga. Setšoantšo sa 7 se bontša likarolo tsa Eclipse tse etsang motheo oa sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntšetso-pele ea Khoebo.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 7. Eclipse e le sethala sa 1C: Lisebelisoa tsa Ntšetso-pele ea Khoebo

Sethala sa Eclipse e fana ka lisebelisoa tsa motheo. Re ile ra sheba likarolo tse ling tsa meralo ena karolong e fetileng.

Eclipse Modelling Framework (EMF) e fana ka mokhoa o akaretsang oa ho etsa mohlala oa data e hlophisitsoeng. EMF e hokahane le Eclipse Platform, empa e ka boela ea sebelisoa ka thoko lits'ebetsong tse tloaelehileng tsa Java. Khafetsa, bahlahisi ba bacha ba Eclipse ba se ba ntse ba tloaelane le EMF, leha ba e-so utloisise ka botlalo ho rarahana ha Eclipse Platform. E 'ngoe ea mabaka a botumo bo loketseng joalo ke moralo oa bokahohle, o kenyelletsang, har'a lintho tse ling, API e kopaneng ea meta-level, e u lumellang hore u sebetse le mofuta ofe kapa ofe oa EMF ka mokhoa o akaretsang. Ts'ebetso ea mantlha ea lintho tsa mohlala tse fanoeng ke EMF le subsystem bakeng sa ho hlahisa khoutu ea mohlala e thehiloeng meta-mohlala e eketsa lebelo la nts'etsopele le ho fokotsa palo ea liphoso. EMF e boetse e na le mekhoa ea ho hlophisa mehlala, ho latela liphetoho ho mohlala, le tse ling tse ngata.

Joalo ka sesebelisoa leha e le sefe sa morero o akaretsang, EMF e loketse ho rarolla mathata a mangata a fapaneng a mohlala, empa lihlopha tse ling tsa mehlala (mohlala, mehlala e thehiloeng ho mohele e boletsoeng ka holimo) e ka hloka lisebelisoa tse khethehileng tsa ho etsa mohlala. Ho bua ka EMF ke mosebetsi o hlokang teboho, haholo-holo ka har'a meeli e lekanyelitsoeng ea sengoloa se le seng, kaha ena ke taba ea buka e arohaneng, e teteaneng haholo. A re ke re hlokomeleng feela hore tsamaiso ea boleng bo phahameng ba kakaretso e thehiloeng ho EMF e lumelletse ho tsoaloa ha merero e mengata e ikemiselitseng ho etsa mohlala, e kenyelletsoeng morerong oa boemo bo holimo. Eclipse Modelling hammoho le EMF ka boeona. Morero o mong o joalo ke Eclipse Xtext.

Eclipse Xtext e fana ka "text modelling" meralo ea motheo. Xtext e sebelisa KHAHLISO bakeng sa ho arola mohloli le EMF bakeng sa ho emela sephetho sa ASG (abstract semantic graph, eo ha e le hantle e leng motsoako oa AST le li-bindings), hape o bitsoa "semantic model". Thutapuo ea puo e hlophisitsoeng ke Xtext e hlalosoa ka puo ea Xtext. Sena ha se o lumelle feela ho hlahisa tlhaloso ea sebōpeho-puo bakeng sa ANTLR, empa hape le ho fumana mokhoa oa AST serialization (ke hore, Xtext e fana ka mohlahlobi le mohlahlobi), tlhahiso ea moelelo, le likarolo tse ling tsa puo. Ka lehlakoreng le leng, puo ea sebōpeho-puo e sebelisitsoeng ho Xtext ha e feto-fetohe ho feta, ha re re, puo ea sebōpeho-puo e sebelisoang ho ANTLR. Ka hona, ka linako tse ling hoa hlokahala ho "koba" puo e sebelisitsoeng ho Xtext, eo hangata e seng bothata haeba re bua ka puo e ntseng e ntlafatsoa ho tloha qalong, empa e kanna ea se amoheloe bakeng sa lipuo tse nang le syntax e seng e thehiloe. Leha ho le joalo, Xtext hajoale ke sesebelisoa se holileng ka ho fetesisa, se nang le likarolo tse ngata ebile se sebetsa ka mokhoa o fapaneng ho Eclipse bakeng sa ho aha lipuo tsa mananeo le lisebelisoa tsa ntlafatso bakeng sa bona. Haholo-holo, ke sesebelisoa se loketseng bakeng sa prototyping e potlakileng lipuo tse khethehileng tsa domain (puo e ikhethileng ea sebaka, DSL). Ntle le "mokonoko oa puo" o boletsoeng ka holimo o ipapisitse le ANTLR le EMF, Xtext e fana ka likarolo tse ngata tsa bohlokoa tsa boemo bo holimo, ho kenyeletsoa mekhoa ea indexing, kaho e ntseng e eketseha, "mohlophisi ea bohlale", le tse ling tse ngata, empa e siea letsoho- mehlala ea puo e thehiloeng. Joalo ka EMF, Xtext ke taba e lokeloang ke buka e arohaneng, 'me ha ho bonolo ho bua ka bokhoni bohle ba eona hajoale.

1C: Lisebelisoa tsa Nts'etsopele ea Khoebo li sebelisa EMF ka boyona le merero e meng e mengata ea Eclipse Modelling. Haholo-holo, Xtext ke e 'ngoe ea metheo ea lisebelisoa tsa nts'etsopele bakeng sa 1C: Lipuo tsa khoebo e le puo ea lenaneo e hahelletsoeng le puo ea lipotso. Motheo o mong oa lisebelisoa tsena tsa nts'etsopele ke projeke ea Eclipse Handly, eo re tla e tšohla ka botlalo (ea likarolo tsa Eclipse tse thathamisitsoeng, e ntse e sa tsejoe haholo).

Eclipse Handly, morero oa boemo bo holimo oa Eclipse Technology, o hlahile ka lebaka la tlatsetso ea pele ea khoutu ho Eclipse Foundation e entsoeng ke 1C ka 2014. Ho tloha ka nako eo, 1C e 'nile ea tsoela pele ho tšehetsa nts'etsopele ea morero: Baithaopi ba sebetsang ke basebetsi ba k'hamphani. Morero o monyane, empa o na le sebaka se ikhethileng ho Eclipse: sepheo sa eona se seholo ke ho ts'ehetsa nts'etsopele ea mefuta e thehiloeng ho mohato.

Melao-motheo ea meralo ea meralo e thehiloeng moheleng, joalo ka mofeng/maele a 'mele, e ile ea tšohloa ka holimo ho sebelisoa mohlala oa lisebelisoa le mohlala oa Java joalo ka mehlala. E boetse e hlokometse hore mohlala oa lisebelisoa le mofuta oa Java ke metheo ea bohlokoa bakeng sa lisebelisoa tsa ntlafatso ea Eclipse Java (JDT). 'Me kaha hoo e batlang e le merero eohle ea *DT Eclipse e na le meralo e ts'oanang le JDT, e ke ke ea e-ba pheteletso e kholo ho bolela hore mefuta e thehiloeng ho sebetsana e fana ka tse ngata, haeba e se li-IDE tsohle tse hahiloeng holim'a Eclipse Platform. Ka mohlala, Eclipse C/C++ Development Tooling (CDT) e na le mohlala oa C/C++ o nang le mohele o bapalang karolo e tšoanang mohahong oa CDT joalokaha mohlala oa Java o etsa JDT.

Pele ho Handly, Eclipse e ne e sa fane ka lilaebrari tse khethehileng bakeng sa ho haha ​​​​mefuta ea lipuo tse thehiloeng ho molamu. Mefuta e teng hona joale e entsoe haholo-holo ka ho fetola khoutu ea mohlala ea Java ka ho toba (aka copy/paste), maemong ao e lumellang Eclipse Public License (EPL). (Ho hlakile hore hangata sena ha se taba ea molao bakeng sa merero ea Eclipse ka boeona, empa eseng bakeng sa lihlahisoa tsa mohloli o koalehileng.) Ntle le ho se sebetse ha eona ka tlhaho, mokhoa ona o hlahisa mathata a tsebahalang: ho pheta-pheta ha khoutu ho hlahisoa ha u ikamahanya le liphoso, etc. Ho hobe le ho feta ke hore mehlala e hlahisoang e lula e le "lintho ka botsona" 'me ha e sebelise monyetla oa ho kopanya. Empa ho arola likhopolo le liprothokholo tse tloaelehileng bakeng sa mehlala ea lipuo tse thehiloeng ho sebetsana ho ka lebisa ho thehoeng ha likarolo tse ka sebelisoang hape bakeng sa ho sebetsa le tsona, tse tšoanang le tse etsahetseng tabeng ea EMF.

Ha se hore Eclipse o ne a sa utloisise litaba tsena. Ho tloha ka 2005 Martin Aeschlimann, ho akaretsa boiphihlelo ba ho theha prototype ea CDT, khang tlhokeho ya ho theha motheo o tshwanang bakeng sa mehlala ya puo, ho kenyeletswa dikao tse thehilweng ka mohele. Empa, joalo ka ha ho etsahala hangata, ka lebaka la mesebetsi e tlang pele haholo, ts'ebetsong ea mehopolo ena ha ea ka ea fihla ho eona. Ho sa le joalo, factorization ea *DT code e ntse e le e 'ngoe ea lihlooho tse sa ntlafatsoang ho Eclipse.

Ka kutloisiso e itseng, morero oa Handly o etselitsoe ho rarolla mathata a batlang a tšoana le a EMF, empa bakeng sa mehlala e thehiloeng ho sebetsana, 'me haholo-holo puo (ke hore, e emelang likarolo tsa sebopeho sa puo e itseng ea lenaneo). Lipheo tsa mantlha tse behiloeng ha u rala Handly li thathamisitsoe ka tlase:

  • Ho tsebahatsa lintlha tsa mantlha tsa sebaka seo ho buuoang ka sona.
  • Ho fokotsa boikitlaetso le ho ntlafatsa boleng ba ts'ebetsong ea mekhoa ea lipuo tse thehiloeng ho molamu ka ho sebelisa khoutu hape.
  • Ho fana ka API e kopaneng ea meta-level ho mefuta e hlahisoang, ho etsa hore ho khonehe ho theha likarolo tse tloaelehileng tsa IDE tse sebetsang ka mefuta e thehiloeng ho sebetsana le puo.
  • Ho tenyetseha le scalability.
  • Ho kopanya le Xtext (ka lehlakoreng le arohaneng).

Ho totobatsa maikutlo a tloaelehileng le li-protocol, ts'ebetsong e teng ea mekhoa e thehiloeng ho lipuo e ile ea hlahlojoa. Likarolo tsa mantlha le lits'ebetso tsa mantlha tse fanoeng ke Handly li bonts'itsoe ho Fig. 8.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 8. Li-interfaces tse tloaelehileng le ts'ebetsong ea motheo ea likarolo tsa Handly

Sehokelo sa IElement se emela setshwaro sa elemente mme se tloaelehile ho likarolo tsa mefuta eohle e thehiloeng ho Handly-based. The abstract class Element e sebelisa mokhoa o akaretsang oa ho sebetsana le 'mele (setšoantšo sa 9).

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 9. IElement le generic handle / 'mele ts'ebetsong

Ho phaella moo, Handly e fana ka mokhoa o akaretsang oa ho tsebisa ka liphetoho tsa likarolo tsa mohlala (setšoantšo sa 10). Joalo ka ha u bona, e ts'oana ka mokhoa o pharalletseng le mekhoa ea tsebiso e kentsoeng tšebetsong ea lisebelisoa le mohlala oa Java, 'me e sebelisa IElementDelta ho fana ka kemiso e kopaneng ea tlhaiso-leseling ea phetoho.

Eclipse e le sethala sa theknoloji bakeng sa 1C: Lisebelisoa tsa Ntlafatso ea Khoebo
Raese. 10. Khokahano e akaretsang le ts'ebetsong ea mantlha ea mochini oa tsebiso oa Handly

Karolo ea Handly e tšohliloeng ka holimo (setšoantšo sa 9 le sa 10) e ka sebelisoa ho emela hoo e batlang e le mehlala efe kapa efe e thehiloeng ho sebetsana. Bakeng sa ho bopa puong mehlala, morero o fana ka ts'ebetso e eketsehileng - haholo-holo, li-interfaces tse tloaelehileng le ts'ebetsong ea motheo bakeng sa likarolo tsa sebopeho sa mongolo oa mohloli, seo ho thoeng ke likarolo tsa mohloli (Setšoantšo sa 8). Sebopeho sa ISourceFile se emela faele ea mohloli, 'me ISourceConstruct e emela ntho e ka hare ho faele ea mohloli. Lihlopha tse sa bonahaleng SourceFile le SourceConstruct li sebelisa mekhoa e akaretsang ho ts'ehetsa ho sebetsa ka lifaele tsa mohloli le likarolo tsa tsona, mohlala, ho sebetsa ka li-buffers tsa mongolo, ho tlamahanngoa le likhokahano tsa ntho e hlahang mohloling, ho hokahanya mehlala le litaba tsa hajoale tsa buffer e sebetsang. , joalo-joalo. Ho kenya ts'ebetsong mekhoa ena hangata ke phephetso e kholo, 'me Handly e ka fokotsa haholo boiteko ba ho hlahisa mekhoa ea lipuo tse thehiloeng ho molamu ka ho fana ka ts'ebetsong ea maemo a holimo.

Ntle le mekhoa ea mantlha e thathamisitsoeng ka holimo, Handly e fana ka lisebelisoa tsa motheo bakeng sa li-buffers tsa mongolo le li-snapshots, ts'ehetso ea ho kopanngoa le bahlophisi ba khoutu ea mohloli (ho kenyeletsoa ka ntle ho lebokose ho kopanngoa le Xtext editor), hammoho le likarolo tse ling tse tloaelehileng tsa UI. sebetsa le bahlophisi ba khoutu ea mohloli Mehlala e sebelisoang ka letsoho joalo ka moralo oa moralo. Ho bontša bokhoni ba eona, morero ona o fana ka mehlala e 'maloa, ho kenyelletsa le ts'ebetsong ea mohlala oa Java ka Handly. (Ha ho bapisoa le ts'ebetsong e felletseng ea mofuta oa Java ho JDT, mofuta ona o nolofalitsoe ka boomo hore o hlake haholoanyane.)

Joalo ka ha ho boletsoe pejana, sepheo se seholo nakong ea moralo oa Handly oa pele le nts'etsopele e ileng ea latela e ne e ntse e tsoela pele ho ba ho scalability le ho tenyetseha.

Ha e le hantle, mehlala e thehiloeng ho sebetsana le boemo bo botle haholo "ka moralo". Ka mohlala, letshwao/maele a mmele a o dumella ho fokotsa boholo ba mohopolo o sebediswang ke moetso. Empa ho boetse ho na le li-nuances. Kahoo, ha ho hlahlojoa Handly bakeng sa scalability, bothata bo ile ba sibolloa ts'ebetsong ea mochine oa tsebiso - ha palo e kholo ea likarolo e fetoloa, ho haha ​​​​li-deltas ho ile ha nka nako e ngata haholo. Ho ile ha fumaneha hore bothata bo tšoanang bo ne bo le teng mofuteng oa JDT Java, oo khoutu e lumellanang e kileng ea fetoloa ho eona. Re ile ra lokisa bothata ka Handly mme ra lokisetsa patch e tšoanang bakeng sa JDT, e ileng ea amoheloa ka thabo. Ona ke mohlala o le mong feela moo ho kenyelletsa Handly ho ts'ebetsong ea mehlala e teng ho ka bang molemo, hobane tabeng ena bothata bo joalo bo ka lokisoa sebakeng se le seng feela.

Ho etsa hore ho kengoa ts'ebetsong ka letsoho ho kenyelletsoang ha mehlala e teng ho khoneha ka tekheniki, laeborari e tlameha ho ba le phetoho e kholo. Bothata bo boholo ke ho boloka tumellano ea morao-rao ho pholletsa le mohlala oa API. Bothata bona bo ile ba rarolloa ka Ka letsoho 0.5 ka ho arola ka ho hlaka API e khethehileng ea mohlala, e hlalositsoeng le e laoloang ka ho feletseng ke moqapi, ho tloha ho API ea boemo ba meta e kopantsoeng e fanoeng ke laebrari. Sena ha se etse feela hore ho khonehe ka botekgeniki ho kenya tšebetsong Handly ts'ebetsong e seng e ntse e le teng, empa hape e fa moqapi e mocha tokoloho ea bohlokoa ha a theha API.

Ho tenyetseha ho na le likarolo tse ling hape. Mohlala, Handly e beha hoo e batlang e se lithibelo holim'a sebopeho sa mohlala mme e ka sebelisoa ho etsisa lipuo tse akaretsang le tse ikhethileng. Ha ho etsoa sebopeho sa faele ea mohloli, Handly ha e fane ka mofuta o itseng oa boemeli ba AST mme, ha e le hantle, ha e hloke le boteng ba AST ka boeona, ka hona e netefatsa hore e lumellana le hoo e batlang e le mochine ofe kapa ofe oa ho qhekella. Qetellong, Handly e ts'ehetsa ho hokahana ka botlalo le sebaka sa ho sebetsa sa Eclipse, empa hape e ka sebetsa ka kotloloho le lits'ebetso tsa faele ka lebaka la ho kopanngoa ha eona le Sistimi ea faele ea Eclipse (EFS).

Phetolelo ea hajoale Ka letsoho 0.6 e ile ea lokolloa ka December 2016. Ho sa tsotellehe taba ea hore morero hona joale o boemong ba ho kenngoa 'me API ha e e-s'o lokisoe qetellong, Handly e se e sebelisoa lihlahisoa tse peli tse kholo tsa khoebo tse ileng tsa nka kotsi ea ho sebetsa e le "ba amohelang pele",' me, ke tlameha ho re, u se ke ua ikoahlaea leha ho le joalo.

Joalokaha ho boletsoe ka holimo, e 'ngoe ea lihlahisoa tsena ke 1C:Enterprise Development Tools, moo Handly e sebelisitsoeng ho tloha qalong ho etsa mohlala oa likarolo tsa sebopeho sa boemo bo phahameng ba 1C: Lipuo tsa khoebo e le puo ea lenaneo e hahelletsoeng le puo ea lipotso. . Sehlahisoa se seng ha se tsejoe hakaalo ke batho ka kakaretso. Sena Codasip Studio, tikoloho e kopantsoeng ea moralo bakeng sa processor-specific instruction-set processor (ASIP), e sebelisoang ka hare ho k'hamphani ea Czech Codasip ka boeona le ke bareki ba eona, ho kenyeletsoa. AMD, AVG, Mobileye, Mekhoa ea Sigma. Codasip esale e sebelisa Handly tlhahiso ho tloha 2015, ho qala ka mofuta oa Handly 0.2. Tokollo ea morao-rao ea Codasip Studio e sebelisa mofuta oa 0.5, o lokollotsoeng ka Phuptjane 2016. Ondřej Ilčík, ea etellang pele nts'etsopele ea IDE ho Codasip, o buisana le morero, a fana ka maikutlo a bohlokoa lebitsong la "motho oa boraro ea amohelang". O bile a khona ho fumana nako ea mahala ea ho kenya letsoho ka kotloloho ho nts'etsopele ea morero, ho kenya ts'ebetsong lera la UI (~ 4000 lines of code) bakeng sa e 'ngoe ea mehlala ea Handly, mohlala oa Java. Lintlha tse ling tse qaqileng tsa pele mabapi le tšebeliso ea Handly by adopters li ka fumanoa leqepheng Lipale tsa Katleho morero.

Re tšepa hore ka mor'a ho lokolloa ha mofuta oa 1.0 ka tiisetso ea botsitso ba API le morero o tlohang sebakeng sa ho incubation, Handly e tla ba le ba amohelang ba bacha. Ho sa le joalo, morero ona o ntse o tsoela pele ho leka le ho ntlafatsa API ka ho eketsehileng, ho lokolla litokollo tse peli tse "kholo" ka selemo - ka June (letsatsi le tšoanang le la ho lokolloa ha Eclipse ka nako e le 'ngoe) le December, ho fana ka kemiso e sa lebelloang eo ba amohelang ba ka itšetlehang ka eona. Re ka boela ra eketsa hore "sekhahla sa likokoana-hloko" sa morero se ntse se le boemong bo tlaase 'me Handly e ntse e sebetsa ka botšepehi lihlahisoa tsa batho ba qalang ho li sebelisa ho tloha liphetolelong tsa pele. Ho tsoela pele ho hlahloba Eclipse Handly, u ka e sebelisa Thuto ea ho Qala и Kakaretso ea Meaho.

Source: www.habr.com

Eketsa ka tlhaloso