{"id":32464,"date":"2019-10-31T21:47:12","date_gmt":"2019-10-31T18:47:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools\/"},"modified":"2019-10-31T21:47:12","modified_gmt":"2019-10-31T18:47:12","slug":"eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","title":{"rendered":"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ilmselt, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/\">Eclipse<\/a><\/noindex> ei vaja enam erilist tutvustust. Paljud tunnevad Eclipse'i t\u00e4nu Eclipse Java arendust\u00f6\u00f6riistadele (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/jdt\/\">JDT<\/a><\/noindex>). Just see populaarne avatud l\u00e4htekoodiga Java IDE seostatakse enamiku arendajate seas s\u00f5naga \u201cEclipse\u201d. Kuid Eclipse on ka arendust\u00f6\u00f6riistade integreerimise laiendatav platvorm (Eclipse Platform) ja terve rida selle p\u00f5hjal ehitatud IDE-sid, sealhulgas JDT. Eclipse on ka Eclipse Project, k\u00f5rgema taseme projekt, mis koordineerib Eclipse Platvormi ja JDT arendust, ning Eclipse SDK \u2013 selle arenduse tulemus. L\u00f5puks on Eclipse avatud l\u00e4htekoodiga fond, millel on suur projektide kogukond, kusjuures kaugel mitte k\u00f5ik neist on kirjutatud Java keeles v\u00f5i seotud arendust\u00f6\u00f6riistadega (n\u00e4iteks projektid <noindex><a rel=\"nofollow\" href=\"https:\/\/iot.eclipse.org\/\">Eclipse IoT<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/science.eclipse.org\/\">Eclipse Science<\/a><\/noindex>). Eclipse'i maailm on v\u00e4ga mitmekesine.<\/p>\n<p>Antud artiklis, mille iseloom on \u00fclevaatlik, proovime k\u00e4sitleda m\u00f5ningaid Eclipse'i arhitektuuri p\u00f5hialuseid kui integreeritud arendust\u00f6\u00f6riistade platvormi ning anda esialgne \u00fclevaade Eclipse'i komponentidest, mis moodustavad 1C: Ettev\u00f5tte \u201euue Konfiguratori\u201d tehnoloogilise platvormi aluse, <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/release_IDE\/\">1C:Enterprise Development Tools<\/a><\/noindex>. Loomulikult on selline k\u00e4sitlus paratamatult pinnapealne ja \u00fcsna piiratud, sealhulgas seet\u00f5ttu, et me ei keskendu ainult Eclipse arendajatele sihtr\u00fchmana. Siiski loodame, et isegi kogenud Eclipse arendajad leiavad artiklist huvitavat teavet. N\u00e4iteks r\u00e4\u00e4gime \u00fchest Eclipse'i \"saladusest\", suhteliselt uuest ja praegu veel v\u00e4he tuntud projektist. <noindex><a rel=\"nofollow\" href=\"http:\/\/eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex>, mis on loodud ja mida toetab ettev\u00f5te 1C.<br \/>\n<img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/eb399a50bf86b6acce1df9e3d40848d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Eclipse'i arhitektuuri tutvustus<\/h2>\n<p>\nAlustame m\u00f5nede \u00fcldiste aspektide vaatlemist Eclipse'i arhitektuurist n\u00e4itena <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/jdt\/overview.php\">Eclipse Java arendustooted<\/a><\/noindex> (JDT). Just JDT valimine n\u00e4iteks ei ole juhuslik. See on esimene integreeritud arenduskeskkond, mis ilmus Eclipse'is. \u00dclej\u00e4\u00e4nud *DT projektid Eclipse'is, nagu Eclipse C\/C++ Development Tooling (CDT), loodi hiljem ja laenasid nii p\u00f5hialuste arhitektuuri kui ka \u00fcksikute koodifragmente JDT-st. JDT-sse rajatud arhitektuuri alused on endiselt asjakohased peaaegu iga Eclipse Platformi peal ehitatud IDE jaoks, sealhulgas 1C:Enterprise Development Tools.<\/p>\n<p>Eclipse'i iseloomustab selge arhitektuuriline kihistumine, kus keele-dependeeritud funktsionaalsus eraldatakse keele-s\u00f5ltumatust funktsionaalsusest, samuti eraldatakse UI-s\u00f5ltumatud \"tuum\" komponendid, mis on seotud kasutajaliidese toetamisega.<\/p>\n<p>Eclipse Platform m\u00e4\u00e4ratleb \u00fchtse, keele-s\u00f5ltumatu infrastruktuuri, samas kui Java arendust\u00f6\u00f6riistad lisavad Eclipse'ile funktsionaalsuse, et muuta see t\u00e4isfunktsionaalseks Java IDE-ks. N nii Eclipse Platform kui ka JDT koosnevad mitmest komponendist, millest iga\u00fcks kuulub kas UI-s\u00f5ltumatu \"tuuma\" v\u00f5i UI kihi alla (vt joonis 1).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/230825124962e721ecca7dfb7dee9a0c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 1. Eclipse Platform ja JDT<\/b><\/p>\n<p>Loetlege Eclipse Platformi p\u00f5hikomponendid:<\/p>\n<ul>\n<li><b>Runtime<\/b> \u2014 M\u00e4\u00e4ratleb plugin'ite infrastruktuuri. Eclipse'i iseloomustab modulaalne arhitektuur. Tegelikult on Eclipse kogum \"laienduspunkte\" ja \"laiendusi\".<\/li>\n<li><b>Workspace<\/b> \u2014 Haldate \u00fchte v\u00f5i mitut projekti. Projekt koosneb kaustadest ja failidest, mis kuvatakse otse failis\u00fcsteemis.<\/li>\n<li><b>Standard Widget Toolkit (SWT)<\/b> \u2014 Pakub p\u00f5hielemente, mis on integreeritud operatsioonis\u00fcsteemiga.<\/li>\n<li><b>JFace<\/b> \u2014 Pakub mitmeid UI raamistikku, mis on ehitatud SWT peale.<\/li>\n<li><b>Workbench<\/b> \u2014 M\u00e4\u00e4ratleb Eclipse'i UI-paradigma: redigeerijad, vaated, perspektiivid.<\/li>\n<\/ul>\n<p>\nOluline on m\u00e4rkida, et Eclipse Platform pakub palju muid kasulikke komponente integreeritud arendust\u00f6\u00f6riistade loomiseks, sealhulgas Debug, Compare, Search ja Team. Eriti tuleks mainida JFace Text'i \u2013 aluseks \"intelligentsete\" koodiredaktorite loomiseks. Kahjuks on isegi nende komponentide kiire \u00fclevaade, samuti UI-kihi komponendid, selle artikli raames v\u00f5imatu, seega piirdume j\u00e4rgnevas osas Eclipse Platformi ja JDT peamiste \"tuum\" komponentide \u00fclevaatusega.<\/p>\n<h4>Core Runtime<\/h4>\n<p>\nEclipse'i pluginainfrastruktuur p\u00f5hineb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.osgi.org\/developer\/specifications\/\">OSGi<\/a><\/noindex> ja selle eest vastutab projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/equinox\/\">Eclipse Equinox<\/a><\/noindex>. Iga Eclipse'i plugin on OSGi-pakk. OSGi spetsifikatsioon m\u00e4\u00e4ratleb muu hulgas versioonihaldamise ja s\u00f5ltuvuste lahendamise mehhanismid. Lisaks nendele standardsetele mehhanismidele tutvustab Equinox m\u00f5istet <i>laiendamispunkt.<\/i>. Iga plugin v\u00f5ib m\u00e4\u00e4rata oma laienduspunktid ja tuua s\u00fcsteemi t\u00e4iendavat funktsionaalsust (\u201elaiendused\u201c), kasutades selle sama v\u00f5i teiste pluginatega m\u00e4\u00e4ratud laienduspunktide s\u00fcsteemi. OSGi ja Equinox mehhanismide \u00fcksikasjalik kirjeldus \u00fcletab selle artikli raame. Oluline on m\u00e4rkida, et Eclipse'is on modulariseerimine k\u00f5ikeh\u00f5lmav (iga alams\u00fcsteem, sealhulgas Runtime, koosneb \u00fchest v\u00f5i mitmest pluginast) ja praktiliselt k\u00f5ik Eclipse'is on laiendamine. Need p\u00f5him\u00f5tted olid Eclipse'i arhitektuuri juurdunud veel enne OSGi rakendamist (sel ajal kasutati oma tehnoloogiat, mis oli mitmeti OSGi sarnane).<\/p>\n<h4>Tuumikula<\/h4>\n<p>\nPeaaegu iga integreeritud arenduskeskkond, mis on \u00fcles ehitatud Eclipse Platformi p\u00f5hjal, t\u00f6\u00f6tab Eclipse'i t\u00f6\u00f6ruumi (workspace) kaudu. Just t\u00f6\u00f6ruum sisaldab tavaliselt IDE-s arendatava rakenduse l\u00e4htekoodi. T\u00f6\u00f6ruum peegeldub otse failis\u00fcsteemis ja koosneb projektidest, mis sisaldavad kaustu ja faile. Need projektid, kaustad ja failid on nimetatud <i>ressurssideks<\/i> workspace. Workspace'i realiseerimine Eclipse'is toimib nagu vahem\u00e4lu failis\u00fcsteemi suhtes, mis kiirendab oluliselt ressursi puu l\u00e4bimist. Lisaks pakub workspace mitmeid t\u00e4iendavaid teenuseid, sealhulgas <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Resource-deltas\/resource-deltas.html\">ressursside muutuste teavitamise mehhanismi<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Builders\/builders.html\">inkrementeerivate ehitajate infrastruktuuri<\/a><\/noindex>.<\/p>\n<p>Workspace'i ja selle ressursside toetamise eest vastutab komponent Core Resources (plugin org.eclipse.core.resources). T\u00e4psemalt pakub see komponent programmilist ligip\u00e4\u00e4su workspace'ile j\u00e4rgmise <i>ressursimudeli<\/i>. Efektiivseks t\u00f6\u00f6tamiseks selle mudeliga vajavad kliendid lihtsat viisi ressursi lingi esitamiseks. Samal ajal oleks soovitav peita kliendi ligip\u00e4\u00e4su alt objekt, mis otseselt s\u00e4ilitab ressursi oleku mudelis. Vastasel juhul, n\u00e4iteks faili kustutamise korral, v\u00f5ib klient j\u00e4tkuvalt hoida objekti, mida mudelis enam ei eksisteeri, mis v\u00f5ib p\u00f5hjustada mitmeid probleeme. Eclipse lahendab selle \u00fclesande, kasutades nn <i>handle<\/i> ressurs. Handle toimib v\u00f5tmena (see tunneb ainult teed ressursile t\u00f6\u00f6ruumis) ja kontrollib t\u00e4ielikult ligip\u00e4\u00e4su mudeli sisemisele objektile, mis salvestab teavet ressursi oleku kohta. See disain on variatsioon mustrist <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.c2.com\/?HandleBodyPattern\">Handle\/Body<\/a><\/noindex>.<\/p>\n<p>Joonis 2 illustreerib Handle\/Body idiomi ressursimudeli kontekstis. IResource liides esindab ressursi handle'it ja on API, erinevalt Resource klassist, mis seda liidest rakendab, ja ResourceInfo klassist, mis esindab body't, mis ei ole API. T\u00f5stame esile, et handle tunneb ainult teed ressursile t\u00f6\u00f6ruumi juurest ja ei sisalda viidet resource info'le. Resource info objektid moodustavad nn \"elementide puu\" (element tree). See andmestruktuur on t\u00e4ielikult materialiseeritud m\u00e4lus. Et leida resource info eksemplar, mis vastab teatud handle'ile, k\u00e4iakse element tree l\u00e4bi vastavalt sellele handle'is hoitavale teele.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/9d17cd95be3730ab6b5b9e6e3ed71ace.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 2. IResource ja ResourceInfo<\/b><\/p>\n<p>Nagu me hiljem n\u00e4eme, kasutatakse ressursimudeli p\u00f5hikujundust (mida v\u00f5ib nimetada handle-p\u00f5hiseks) Eclipse'is ning teistes mudelites. Aga enne kui toome v\u00e4lja m\u00f5ned selle disaini erip\u00e4rad:<\/p>\n<ul>\n<li>Handle on v\u00e4\u00e4rtusobjekt (value object). V\u00e4\u00e4rtusobjektid on muutumatud (immutable) objektid, mille v\u00f5rdsus ei p\u00f5hine identiteedil. Selliseid objekte saab ohutult kasutada v\u00f5tmena hashitud konteinerites. Mitmed handle'i eksemplarid v\u00f5ivad viidata samale resursile. Nende v\u00f5rdlemiseks tuleb kasutada meetodit equals(Object).<\/li>\n<li>Handle m\u00e4\u00e4ratleb ressursi k\u00e4itumise, kuid ei sisalda teavet ressursi oleku kohta (ainukesed andmed, mida ta salvestab, on \u201ev\u00f5ti\u201d, tee ressursini).<\/li>\n<li>Handle v\u00f5ib viidata mitteeksisteerivale ressursile (kas ressursile, mis pole veel loodud, v\u00f5i ressursile, mis on juba kustutatud). Ressursi olemasolu saab kontrollida meetodi IResource.exists() abil.<\/li>\n<li>M\u00f5ned operatsioonid v\u00f5ivad olla rakendatud ainult handle'is endas salvestatud teabe alusel (nii nimetatud ainult handle'i operatsioonid). N\u00e4iteks on IResource.getParent(), getFullPath jne. Ressurss ei pea eksisteerima, et sellist operatsiooni edukalt t\u00e4ita. Operatsioonid, mille edukaks t\u00e4itmiseks on vajalik ressursi olemasolu, viskavad erandi (CoreException), kui ressurss ei eksisteeri.<\/li>\n<\/ul>\n<p>\nEclipse pakub t\u00f5husat mehhanismi t\u00f6\u00f6ruumi ressursside muutuste teavitamiseks. Ressursid v\u00f5ivad muutuda nii Eclipse IDE-s endas toimuva tegevuse t\u00f5ttu kui ka failis\u00fcsteemiga s\u00fcnkroonimise tulemusena. M\u00f5lemal juhul antakse teavitustele registreerunud klientidele \u00fcksikasjalik teave muudatuste kohta 'ressursi delta' kujul. Delta kirjeldab muudatusi kahe (al)puu t\u00f6\u00f6ruumi ressursside oleku vahel ja on ise puu, kus iga s\u00f5lm kirjeldab teatud ressursi muutust ning sisaldab nimekirja j\u00e4rgmise tasandi deltadest, mis kirjeldavad alamresursside muudatusi.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/8af412412ee97d205137ab70c8444a50.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 3. IResourceChangeEvent ja IResourceDelta<\/b><\/p>\n<p>Resursi deltadest p\u00f5hinev teavitamise mehhanism omab j\u00e4rgmisi omadusi:<\/p>\n<ul>\n<li>\u00dchtne muudatus ja mitmed muudatused on kirjeldatud sama struktuuriga, kuna delta on \u00fcles ehitatud rekursiivse kompositsiooni p\u00f5him\u00f5ttel. Klientide tellijad saavad t\u00f6\u00f6tleda ressursside muudatusi teavitusi, rakendades rekursiivset allak\u00e4iku deltade puul.<\/li>\n<li>Deleht sisaldab kogu teavet ressursi muudatuste kohta, sealhulgas selle liikumise ja\/v\u00f5i sellega seotud \u201emarkerite\u201d muutmise kohta (markerite kujul esitatakse n\u00e4iteks kompileerimisvead).<\/li>\n<li>Kuna ressursile viidatakse handle'i kaudu, saab deleht loomulikult viidata ka eemalolevale ressurssile.<\/li>\n<\/ul>\n<p>\nNagu me varsti n\u00e4eme, on ressursimudeli muutmise teavitamismehhanismi peamised komponendid asjakohased ka teiste handle-p\u00f5histe mudelite jaoks.<\/p>\n<h4>JDT Core<\/h4>\n<p>\nEclipse workspace'i ressursimudel on p\u00f5hialuseks olev keelest s\u00f5ltumatu mudel. JDT Core komponent (plugin org.eclipse.jdt.core) pakub API-d workspace'i struktuuri navigeerimiseks ja anal\u00fc\u00fcsimiseks Java vaatepunktist, nii nimetatud \u201eJava mudel\u201d (<i>Java mudel<\/i>). See API on m\u00e4\u00e4ratletud Java elementide m\u00f5istetena, erinevalt ressursimudeli alusele API-st, mis on m\u00e4\u00e4ratletud kaustade ja failide m\u00f5istetena. Java elementide puu peamised liidesed on kujutatud joonisel 4.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/67bfd31e93eaa66aa94b30281693a318.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 4. Java mudeli elemendid<\/b><\/p>\n<p>Java mudel kasutab sama handle\/body idiomi kui ressursside mudel (vt joonis 5). IJavaElement on handle ja JavaElementInfo m\u00e4ngib body rolli. IJavaElementi liides m\u00e4\u00e4ratleb protokolli, mis on \u00fchine k\u00f5igile Java elementidele. M\u00f5ned selle meetoditest on ainult handle-ettepanekud: getElementName(), getParent() jne. JavaElementInfo objekt salvestab vastava elemendi oleku: selle struktuuri ja atribuudid.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/5b473cccfc8f258d563033ce334cb94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 5. IJavaElement ja JavaElementInfo<\/b><\/p>\n<p>Java mudelil on m\u00f5ned erinevused baseeruva handle\/body disaini rakendamisel v\u00f5rreldes ressursside mudeliga. Nagu \u00fclalmainitud, on ressursside mudelis element tree, mille s\u00f5lmedeks on resource info objektid, t\u00e4ielikult m\u00e4lus. Kuid Java mudelis v\u00f5ib elementide arv olla m\u00e4rkimisv\u00e4\u00e4rselt suurem kui ressursside puus, kuna seal on esindatud ka .java ja .class failide sisemine struktuur: t\u00fc\u00fcbid, v\u00e4ljad ja meetodid.<\/p>\n<p>Kuna v\u00e4ltida kogu elemendi puu materjaliseerimist m\u00e4lu piiresse, kasutab Java mudeli implementatsioon piiratud suurusega LRU-vahem\u00e4lu elementinfo jaoks, kus v\u00f5tmena kasutatakse handle IJavaElementi. Elementinfo objekte luuakse n\u00f5udmisel, kui navigeeritakse elemendi puus. Selle k\u00e4igus t\u00f5rjutakse k\u00f5ige v\u00e4hem sagedasti kasutatud elemendid vahem\u00e4lust v\u00e4lja, hoides mudeli m\u00e4lutarbimise m\u00e4\u00e4ratud vahem\u00e4lu suuruses. See on veel \u00fcks eelis handle-p\u00f5hisele disainile, mis peidab neid teostuse detaile t\u00e4ielikult kliendikoodilt.<\/p>\n<p>Java elementide muutmise teavitamise mehhanism on \u00fcldiselt sarnane \u00fclaltoodud t\u00f6\u00f6ruumi ressursside muutuste j\u00e4lgimise mehhanismile. Klient, kes soovib j\u00e4lgida muutusi Java mudelis, registreerib end teavitustele, mis esitatakse ElementChangedEvent objekti vormis, mis sisaldab IJavaElementDelta't (joon. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/0402ec362078eaf50f47756e7f24de01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joon. 6. ElementChangedEvent ja IJavaElementDelta<\/b><\/p>\n<p>Java mudel ei sisalda teavet meetodite kehade v\u00f5i nimede lahendamise kohta, seet\u00f5ttu pakub JDT Core t\u00e4iendavat (mitte handle-p\u00f5hist) mudelit Java koodianal\u00fc\u00fcsiks: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/articles\/Article-JavaCodeManipulation_AST\/index.html\">abstraktne s\u00fcntakspuu<\/a><\/noindex> (abstraktne s\u00fcntaksipuu, AST). AST esindab l\u00e4hte teksti s\u00fcntaksianal\u00fc\u00fcsi tulemust. AST s\u00f5lmed vastavad l\u00e4hte mooduli struktuuri elementidele (deklaratsioonid, operaatorid, v\u00e4ljendid jne) ja sisaldavad teavet vastava elemendi koordinaatide kohta l\u00e4hte tekstis ning (valikuliselt) teavet nimede lahendamise kohta viidete kujul niisugustele <i>seosed<\/i>. Sidemed on objektid, mis esindavad nimelisi entiteete, nagu t\u00fc\u00fcbid, meetodid ja muutujad, mis on kompilaatorile teada. Erinevalt AST s\u00f5lmedest, mis moodustavad puu, toetavad sidemed ristviiteid ja \u00fcldiselt moodustavad graafi. Abstraktne klass ASTNode on k\u00f5igi AST s\u00f5lmede \u00fchine baasklass. ASTNode alamklassid vastavad Java keele konkreetsetele s\u00fcntaktilistele konstruktsioonidele.<\/p>\n<p>Kuna s\u00fcntaksipuud v\u00f5ivad tarbida m\u00e4rkimisv\u00e4\u00e4rselt palju m\u00e4lu, salvestab JDT ainult \u00fche AST aktiivse redaktori jaoks. Erinevalt Java mudelist k\u00e4sitletakse AST-d tavaliselt kui \"vahe\" v\u00f5i \"ajutine\" mudel, mille elementidele ei tohiks klientidel hoida viiteid v\u00e4ljaspool konteksti, mis viis AST loomisele.<\/p>\n<p>Loetletud kolm mudelit (Java mudel, AST, sidemed) moodustavad koos \u201eintelligentsete arendust\u00f6\u00f6riistade\u201d aluse JDT-s, sealhulgas v\u00f5imas Java redaktor koos erinevate \u201eabimeestega\u201d, erinevad l\u00e4htekoodi t\u00f6\u00f6tlemise toimingud (sealhulgas nime importimise loendi korraldamine ja vormindamine vastavalt seatud stiilile), otsingut\u00f6\u00f6riistad ja refaktoreerimise t\u00f6\u00f6riistad. Samuti m\u00e4ngib Java mudel erilist rolli, kuna just seda kasutatakse arendatava rakenduse struktuuri visuaalse esitamise aluseks (n\u00e4iteks Package Exploreris, Outline'is, Search'is, Call Hierarchy's ja Type Hierarchy's).<\/p>\n<h2>Eclipse'i komponendid, mida kasutatakse 1C:Enterprise Development Tools'is<\/h2>\n<p>\nKujutisel 7 on n\u00e4idatud Eclipse'i komponente, mis moodustavad 1C:Enterprise Development Tools'i tehnoloogilise platvormi aluse.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/248cceea47ee507b9ad22d6964738ee7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Kujutis 7. Eclipse platvormina 1C:Enterprise Development Tools'i jaoks<\/b><\/p>\n<p><b>Eclipse Platvorm<\/b> pakub p\u00f5histruktuuri. Oleme eelnevas jaotises arutanud selle infrastruktuuri m\u00f5ningaid aspekte.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/modeling\/emf\/\">Eclipse Modelleerimise Raamistik<\/a><\/noindex><\/b> (<b>EMF<\/b>) pakub \u00fcldisi vahendeid struktureeritud andmete modelleerimiseks. EMF on integreeritud Eclipse Platvormiga, kuid seda saab kasutada ka eraldi tavalistes Java rakendustes. Sage on see, et algajad Eclipse arendajad on juba EMF-iga h\u00e4sti tuttavad, kuigi nad ei pruugi veel Eclipse Platvormi n\u00fcansse t\u00e4ielikult m\u00f5ista. \u00dcks p\u00f5hjuseid, miks see on nii austatud, on universaalne disain, mis sisaldab ka \u00fchtset metataseme API-d, mis v\u00f5imaldab \u00fcldiselt t\u00f6\u00f6tada igasuguste EMF mudelitega. EMF-i pakutavad mudeli objektide p\u00f5hiteostused ja mudeli koodigeneratsiooni alams\u00fcsteem meta-mudelist suurendavad oluliselt arendamiskiirust ja v\u00e4hendavad vigade arvu. Samuti sisaldab EMF mehhanisme mudelite serialiseerimiseks, mudeli muudatuste j\u00e4lgimiseks ja palju muud. <\/p>\n<p>Nagu igasugune t\u00f5eliselt universaalne t\u00f6\u00f6riist, sobib EMF mitmesuguste modelleerimisega seotud \u00fclesannete lahendamiseks, kuid m\u00f5ned mudeliklassid (nt eespool k\u00e4sitletud handle-p\u00f5hised mudelid) v\u00f5ivad vajada spetsiifilisemaid modelleerimisvahendeid. EMF-st r\u00e4\u00e4kida on t\u00e4namatu \u00fclesanne, eriti \u00fche artikli piiratud raames, kuna see on eraldi raamatu teema ja \u00fcsna paks. Tuleb m\u00e4rkida, et kvaliteetne \u00fcldistuste s\u00fcsteem, mis EMF-i aluseks on, on v\u00f5imaldanud luua terve rea modelleerimise projekte, mis kuuluvad \u00fclemise taseme projekti. <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/modeling\/\">Eclipse Modeling<\/a><\/noindex> koos ise EMF-iga. \u00dcks selline projekt on Eclipse Xtext.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/Xtext\/\">Eclipse Xtext<\/a><\/noindex><\/b> pakub \u201etekstimudeli\u201d infrastruktuuri. Xtext kasutab <noindex><a rel=\"nofollow\" href=\"http:\/\/www.antlr.org\/\">ANTLR<\/a><\/noindex> s\u00fcntaktilise anal\u00fc\u00fcsi jaoks algtekstist ja EMF tulemuse ASG (abstraktse semantilise graafiku, mis sisuliselt \u00fchendab AST ja sidumised), mida nimetatakse ka \"semantilise mudeliks\". Xtext'i abil modelleeritud keele grammatika on kirjeldatud selle enda Xtext keeles. See v\u00f5imaldab mitte ainult generaatori grammatika kirjeldust ANTLR-ile, vaid ka AST serialiseerimise mehhanismi (st Xtext pakub nii parserit kui unparserit), kontekstitundlikku vihjet ning mitmeid muid keelekomponente. Teiselt poolt on grammatika kirjeldamise keel, mida Xtext kasutab, v\u00e4hem paindlik v\u00f5rreldes n\u00e4iteks ANTLR-i grammatika kirjeldamise keelega. Seet\u00f5ttu tuleb m\u00f5nikord Xtext'i elluviimiseks \"k\u00f5verdada\" rakendatavat keelt, mis ei ole tavaliselt probleemiks, kui on tegemist nullist arendatava keelega, kuid v\u00f5ib olla vastuv\u00f5etamatu juba v\u00e4ljakujunenud s\u00fcntaksiga keeltele. sellest hoolimata on Xtext praegu k\u00f5ige k\u00fcpsem, funktsionaalselt t\u00e4ielik ja universaalne t\u00f6\u00f6riist Eclipse'is programmeerimiskeelte ja nende arendust\u00f6\u00f6riistade ehitamiseks. Eriti sobib see kiire protot\u00fc\u00fcpimise jaoks. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA\">spetsiifiliste domeenide keeled<\/a><\/noindex> (domain-specific language, DSL). Lisaks eelpool mainitud ANTLR-i ja EMF-i p\u00f5hjalisele \u201ekeele tuumale\u201d pakub Xtext palju kasulikke k\u00f5rgema taseme komponente, sealhulgas indekseerimise mehhanisme, inkrementaalset ehitust, \u201enutikat redaktorit\u201d ja palju muud, kuid j\u00e4tab k\u00f5rvale keele mudelid, mis p\u00f5hinevad k\u00e4epidemetel. Nagu EMF, on Xtext teema, mis v\u00e4\u00e4rib eraldi raamatut, ja me t\u00f5en\u00e4oliselt ei suuda isegi pinnapealselt r\u00e4\u00e4kida k\u00f5ikidest selle v\u00f5imalustest.<\/p>\n<p>1C:Enterprise Development Tools kasutavad aktiivselt nii EMF-i ennast kui ka mitmeid teisi Eclipse Modeling projekte. Eriti on Xtext \u00fcks peamisi arendust\u00f6\u00f6riistu selliste 1C:Enterprise keelte jaoks nagu sisseehitatud programmeerimiskeel ja p\u00e4ringukeel. Teine selle arendust\u00f6\u00f6riistade alus on projekt Eclipse Handly, millest me r\u00e4\u00e4gime l\u00e4hemalt (k\u00f5ikidest loetletud Eclipse komponentidest on see seni k\u00f5ige v\u00e4hem tuntud).<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex><\/b>, alusprojekt k\u00f5rgtaseme projektile Eclipse Technology, tekkis 2014. aastal 1C ettev\u00f5tte algse koodikontributsiooni tulemusena Eclipse Foundationis. Sellest ajast alates j\u00e4tkab firma 1C projekti arendamise toetamist: Handly committer\u2019id on ettev\u00f5tte t\u00f6\u00f6tajad. Projekt on v\u00e4ike, kuid omab \u00fcsna ainulaadset ni\u0161\u0161i Eclipse\u2019is: selle peamine eesm\u00e4rk on toetada handle-p\u00f5histe mudelite arendamist.<\/p>\n<p>Handle-p\u00f5histe mudelite peamised arhitektuurilised p\u00f5him\u00f5tted, nagu handle\/body idiom, on varem arutatud ressursimudeli ja Java mudeli n\u00e4itel. Seal m\u00e4rgiti, et nii ressursimudel kui Java mudel on olulised alused Eclipse Java arendust\u00f6\u00f6riistade (JDT) jaoks. Kuna praktiliselt k\u00f5ik Eclipse'i *DT projektid jagavad arhitektuuri JDT-ga, ei ole liialdus \u00f6elda, et handle-p\u00f5hised mudelid on paljude, kui mitte k\u00f5ikide Eclipse'i Platformi peal ehitatud IDE-de aluseks. N\u00e4iteks Eclipse C\/C++ Development Tooling (CDT) sisaldab handle-p\u00f5hist mudelit C\/C++, mis m\u00e4ngib arhitektuuris CDT sama rolli, mida Java mudel JDT-s.<\/p>\n<p>Enne Handly ilmumist ei pakkunud Eclipse spetsialiseeritud raamatukogusid k\u00e4epidemep\u00f5histe mudelite loomiseks. Olemasolevad mudelid loodi enamasti Java mudeli koodi otsese kohandamise kaudu (nt kopeerimine \/ kleepimine), <i>kui see on lubatud<\/i> Eclipse'i avaliku litsentsi (EPL) alusel. (On selge, et Eclipse'i enda projektide jaoks pole see tavaliselt juriidiliselt probleem, kuid see ei kehti suletud l\u00e4htekoodiga toodete kohta.) Lisaks iseloomulikule s\u00fcsteemitusle toob selline meetod kaasa h\u00e4sti tuntud probleemid: koodi dubleerimise, kohandamise k\u00e4igus sisse toodud vead jne. Mis veelgi hullem, saadud mudelid j\u00e4\u00e4vad \"asjaks endas\" ega kasuta olemasolevat potentsiaali \u00fchtlustamiseks. Nimelt v\u00f5iks k\u00e4epidemep\u00f5histe mudelite jaoks \u00fcldiste m\u00f5istete ja protokollide eristamine viia korduvkasutatavate komponendi loomisele, nagu see juhtus EMF-i puhul.<\/p>\n<p>Ei saa \u00f6elda, et Eclipse'is ei oleks neid probleeme m\u00f5istetud. Juba 2005. aastal <noindex><a rel=\"nofollow\" href=\"https:\/\/www.xing.com\/profile\/Martin_Aeschlimann\">Martin Aeschlimann<\/a><\/noindex>, kokku v\u00f5ttes CDT protot\u00fc\u00fcbi arendamise kogemust, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/org\/langsymp\/position_paper_martin_aeschlimann.html\">argumenteeris<\/a><\/noindex> keelemudelite, sealhulgas handle-p\u00f5histe mudelite, \u00fchise infrastruktuuri loomise vajadus. Kuid nagu sageli juhtub, j\u00e4i nende ideede elluviimine sagedamate \u00fclesannete t\u00f5ttu l\u00f5puks tegemata. Vahepeal j\u00e4\u00e4b koodi faktoreerimine *DT-projektide seas endiselt \u00fchel halvasti arendatud teemal Eclipse'is.<\/p>\n<p>Teatud m\u00f5ttes on projekt Handly suunatud sarnastele \u00fclesannetele nagu EMF, kuid handle-p\u00f5histe mudelite jaoks, eelk\u00f5ige keeleliseks (st programmeerimiskeele struktuurielemente esindavaks). Allpool on loetletud peamised eesm\u00e4rgid, mis seati Handly projekteerimisel:<\/p>\n<ul>\n<li>Peamiste valdkonnaabstraktsioonide eristamine.<\/li>\n<li>Keeltestrateegiate handle-p\u00f5histe mudelite rakendamise pingutuste v\u00e4hendamine ja kvaliteedi t\u00f5stmine koodi taaskasutamise kaudu.<\/li>\n<li>\u00dchtse API pakkumine, mis tagab meta-taseme tulemuseks olevate mudelite, mis v\u00f5imaldab luua \u00fchiseid IDE komponente, mis t\u00f6\u00f6tavad keele handle-p\u00f5histe mudelitega.<\/li>\n<li>Paindlikkus ja skalaarne lahendus.<\/li>\n<li>Integratsioon Xtextiga (eraldi kihina).<\/li>\n<\/ul>\n<p>\n\u00dchiskontseptsioonide ja protokollide esile t\u00f5stmiseks on anal\u00fc\u00fcsitud olemasolevaid keele-baasil mudeleid. Peamised liidesed ja p\u00f5hiimplementatsioonid, mida Handly pakub, on n\u00e4htavad joonisel 8.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/47f4bf74093245334b8d67b149734dfc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 8. \u00dchised liidesed ja p\u00f5hiimplementatsioonid Handly elementide jaoks<\/b><\/p>\n<p>IElement liides esindab elemendi handle'it ja on \u00fchine k\u00f5igi Handly-p\u00f5histe mudelite elementide jaoks. Abstraktne klass Element rakendab \u00fcldist handle\/body mehhanismi (joonis 9).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/0651c1f284b7edfa36313d4b51d72f08.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 9. IElement ja \u00fcldine handle\/body rakendus<\/b><\/p>\n<p>Lisaks pakub Handly \u00fcldist mehhanismi mudeli elementide muudatustest teavitamiseks (joonis 10). Nagu n\u00e4ha, sarnaneb see \u00fcldjoontes ressursside mudeli ja Java-mudeli teavitamismehanismidega ning kasutab IElementDelta'd, et esitada teavet elemendi muudatuste kohta \u00fchtselt.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse tehnoloogilise platvormina 1C:Enterprise Development Tools jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/cbdec8cf874308e0fa9dd96d04f62703.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 10. \u00dchised liidesed ja p\u00f5hiimplementatsioonid Handly teavitamismehhanismi jaoks<\/b><\/p>\n<p>\u00dclaltoodud Handly osa (joonised 9 ja 10) v\u00f5ib kasutada praktiliselt k\u00f5igi handle-p\u00f5histe mudelite esindamiseks. Loome <i>keeleseid<\/i> mudelid pakuvad t\u00e4iendavaid funktsioone \u2013 eelk\u00f5ige \u00fcldisi liideseid ja baasilahendusi algteksti struktuuri elementide jaoks, nii-\u00f6elda <i>allikaelemendid<\/i> (joonis 8). ISourceFile liides esindab algfaili, samas kui ISourceConstruct on element algfailis. Abstraktsed klassid SourceFile ja SourceConstruct rakendavad \u00fcldisi mehhanisme algfailide ja nende elementidega t\u00f6\u00f6tamiseks, n\u00e4iteks tekstipuhvereid, elemendi seotust algteksti koordinaatidega, mudelite koosk\u00f5lastamist t\u00f6\u00f6tava koopia praeguse sisu \u00fcle jne. Nende mehhanismide rakendamine on tavaliselt \u00fcsna keeruline \u00fclesanne, ning Handly v\u00f5ib oluliselt v\u00e4hendada keelep\u00f5histe mudelite arendamiseks vajalikku vaeva, pakkudes kvaliteetseid baasilahendusi.<\/p>\n<p>Lisaks \u00fclaltoodud peamistele mehhanismidele pakub Handly tekstivaru ja \"snapshootide\" infrastruktuuri, toetust integreerimiseks l\u00e4htekoodi redaktoritega (sealhulgas \"kastist v\u00e4ljas\" integreerimine Xtext redaktoriga) ning m\u00f5ned \u00fcldised UI-komponendid, mis t\u00f6\u00f6tavad Handly mudelitega, nagu outline framework. Oma v\u00f5imaluste illustreerimiseks esitab projekt mitmeid n\u00e4iteid, sealhulgas Java mudeli rakenduse Handly-l. (V\u00f5rreldes Java-mudeli t\u00e4ieliku rakendusega JDT-s, on see mudel tahtlikult veidi lihtsustatud, et tagada paremat arusaadavust.)<\/p>\n<p>Nagu eelnevalt mainitud, on Handly algse projekteerimise ja edasise arendamise k\u00e4igus suurenenud t\u00e4helepanu p\u00f6\u00f6ratud skaleeritavusele ja paindlikkusele. <\/p>\n<p>Tegelikult on handle-p\u00f5hised mudelid \u201edisainilt\u201d piisavalt h\u00e4sti skaleeritavad. N\u00e4iteks v\u00f5imaldab handle\/body idiom piirata mudeli m\u00e4lutarbimist. Kuid on ka n\u00fcansse. N\u00e4iteks tootlikkuse testimisel avastati Handly skaleeritavuses probleem, mis oli seotud teavitamise mehhanismi rakendamisega \u2013 kui muudeti suurt hulka elemente, v\u00f5ttis deltasid koostamine liiga kaua aega. Selgus, et sama probleem oli olemas ka Java-mudelis JDT, millest vastav kood omal ajal kohandatud oli. Parandasime Handly vead ja ettevalmistatud sarnane plaastr JDT jaoks, mis v\u00f5eti t\u00e4nuga vastu. See on vaid \u00fcks n\u00e4ide, kus Handly kasutuselev\u00f5tt olemasolevates mudelites v\u00f5iks potentsiaalselt kasulik olla, kuna sellise vea saaks sel juhul parandada vaid \u00fches kohas.<\/p>\n<p>Kuna Handly sisseviimine olemasolevates mudelites oleks tehniliselt v\u00f5imalik, peab teek olema piisavalt paindlik. Peamine probleem on s\u00e4ilitada mudeli API tagurpidi \u00fchilduvus. See \u00fclesanne on lahendatud <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/NewIn05\">Handly 0.5<\/a><\/noindex> mudeli API spetsiifilise selge eristamise kaudu, mida m\u00e4\u00e4ratleb ja kontrollib t\u00e4ielikult arendaja, ning \u00fchise taseme API kaudu, mida pakub raamatukogu. See mitte ainult ei v\u00f5imalda tehniliselt Handly integreerimist olemasolevatesse rakendustesse, vaid annab ka uue mudeli arendajale m\u00e4rkimisv\u00e4\u00e4rse vabaduse API projekteerimisel.<\/p>\n<p>Paindlikkusel on ka teised aspektid. N\u00e4iteks ei kehtesta Handly mingeid piiranguid mudeli struktuurile ja seda saab kasutada nii \u00fcldotstarbeliste kui ka spetsialiseeritud keelte modelleerimiseks. Algfaili struktuuri ehitamisel ei n\u00f5ua Handly mingit kindlat AST esitamise vormi ja ei n\u00f5ua isegi AST olemasolu, pakkudes seega \u00fchilduvust praktiliselt igasuguste s\u00fcntaksianal\u00fc\u00fcsi mehhanismidega. L\u00f5puks toetab Handly t\u00e4ielikku integratsiooni Eclipse'i t\u00f6\u00f6keskkonnaga, kuid v\u00f5ib samuti t\u00f6\u00f6tada otse failis\u00fcsteemidega, t\u00e4nu integratsioonile <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/EFS\">Eclipse'i failis\u00fcsteem<\/a><\/noindex> (EFS).<\/p>\n<p>Praegune versioon <noindex><a rel=\"nofollow\" href=\"https:\/\/projects.eclipse.org\/projects\/technology.handly\/releases\/0.6\">Handly 0.6<\/a><\/noindex> ilmus 2016. aasta detsembris. Kuigi projekt on praegu inkubeerimise faasis ja API ei ole l\u00f5plikult kindlaks m\u00e4\u00e4ratud, kasutatakse Handlyt juba kahel suurel kommertstootel, mis julgesid astuda \"varajaste omaks v\u00f5tjate\" ritta, ja peame \u00fctlema, et nad ei kahetse seda.<\/p>\n<p>Nagu eelnevalt mainitud, on \u00fcks nende toodetest \u2013 1C:Enterprise Development Tools, kus Handlyt kasutatakse algusest peale 1C:Ettev\u00f5tte k\u00f5rgema taseme struktuurielementide modelleerimiseks, sealhulgas sisseehitatud programmeerimiskeele ja p\u00e4ringute keele jaoks. Teine toode on laiemale publikule v\u00e4hem tuntud. See on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.codasip.com\/custom-processor\/\">Codasip Studio<\/a><\/noindex>, probleemide lahendamisele suunatud protsessorite integreeritud disainikeskkond (application-specific instruction-set processor, ASIP), mida kasutatakse nii T\u0161ehhi ettev\u00f5ttes Codasip sees kui ka tema klientide seas, nende hulgas <noindex>AMD<\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.avg.com\/\">AVG<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mobileye.com\/\">Mobileye<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.sigmadesigns.com\/\">Sigma Designs<\/a><\/noindex>. Codasip kasutab Handly't tootmises alates 2015. aastast, alustades versioonist Handly 0.2. Viimane praegu saadaval olev versioon Codasip Studio's kasutab versiooni 0.5, mis ilmus juunis 2016. Ond\u0159ej Il\u010d\u00edk, kes juhib IDE arendust Codasipis, on projektiga pidevalt kontaktis, pakkudes \u00e4\u00e4rmiselt olulist tagasisidet \u00abkolmanda osapoole adopteerijatelt\u00bb. Ta leidis isegi natuke vaba aega, et otseselt osaleda projekti arendamisel, luues UI kihi (~ 4000 rida koodi) \u00fche Handly n\u00e4ite, Java mudeli, jaoks. T\u00e4iendavat teavet \u00abesimese k\u00e4e\u00bb kasutamise kohta Handly adopteerijatelt saab leida lehelt <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/Adopters\">Edu lood<\/a><\/noindex> projekti.<\/p>\n<p>Loodame, et p\u00e4rast versiooni 1.0 v\u00e4ljalaskmist, mis tagab API stabiilsuse, ja projekti inkubatsioonist v\u00e4ljumist, tuleb Handly'le ka uusi adaptereid. Seni j\u00e4tkab projekt API katsetamist ja edasist t\u00e4iustamist, andes v\u00e4lja kaks \u201esuur\u201c versiooni aastas \u2013 juunis (sama kuup\u00e4eval, mil toimub samaaegne Eclipse'i v\u00e4ljaanne) ja detsembris, tagades ennustatavad ajakavad, millele adapterid v\u00f5ivad toetuda. Samuti v\u00f5ib lisada, et projekti \u201evea m\u00e4\u00e4r\u201c p\u00fcsib pidevalt madalal tasemel ja Handly t\u00f6\u00f6tab usaldusv\u00e4\u00e4rselt varajaste kasutajate toodetes alates esimestest versioonidest. Eclipse Handly'ga edasise tutvumise jaoks saab kasutada <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pisv\/gethandly\/wiki\">Alustamise \u00d5petus<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/downloads\/download.php?file=\/handly\/docs\/handly-overview.pdf&amp;r=1\">Arhitektuuri \u00dclevaade<\/a><\/noindex>.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/323508\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, Eclipse \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Eclipse \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Eclipse Java development tools (JDT). \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f open-source Java IDE \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u201cEclipse\u201d. \u041e\u0434\u043d\u0430\u043a\u043e Eclipse \u2013 \u044d\u0442\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Eclipse Platform), \u0438 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 IDE, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432 \u0442\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24268,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, Eclipse \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Eclipse \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Eclipse Java development tools (JDT). \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f open-source Java IDE \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u201cEclipse\u201d. \u041e\u0434\u043d\u0430\u043a\u043e Eclipse \u2013 \u044d\u0442\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Eclipse Platform), \u0438 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 IDE, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432 \u0442\u043e\u043c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Eclipse \u043a\u0430\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f 1C:Enterprise Development Tools | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, Eclipse \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Eclipse \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Eclipse Java development tools (JDT). \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f open-source Java IDE \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u201cEclipse\u201d. \u041e\u0434\u043d\u0430\u043a\u043e Eclipse \u2013 \u044d\u0442\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Eclipse Platform), \u0438 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 IDE, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432 \u0442\u043e\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:47:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:47:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Eclipse kui tehnoloogiline platvorm 1C:Enterprise arendust\u00f6\u00f6riistade jaoks | ProHoster","description":"T\u00f5en\u00e4oliselt ei vaja Eclipse enam erilist tutvustamist. Paljud tunnevad Eclipse'i t\u00e4nu Eclipse Java arendust\u00f6\u00f6riistadele (JDT). Just see populaarne avatud l\u00e4htekoodiga Java IDE seondub enamikule arendajatele s\u00f5naga \u201eEclipse\u201d. Ent Eclipse on ka laiendatav platvorm arendust\u00f6\u00f6riistade integreerimiseks (Eclipse Platform) ja terve rida IDE-sid, mis on selle alusel loodud.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Eclipse \u043a\u0430\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f 1C:Enterprise Development Tools | ProHoster","og:description":"\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, Eclipse \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Eclipse \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Eclipse Java development tools (JDT). \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f open-source Java IDE \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u201cEclipse\u201d. \u041e\u0434\u043d\u0430\u043a\u043e Eclipse \u2013 \u044d\u0442\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Eclipse Platform), \u0438 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 IDE, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432 \u0442\u043e\u043c","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:47:12+00:00","article:modified_time":"2019-10-31T18:47:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32464","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:00:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:24","updated":"2026-01-21 11:00:20"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=32464"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/32464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/24268"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=32464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=32464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=32464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}