{"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 kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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 tutvustamist. Paljud tunnevad Eclipse'i t\u00e4nu Eclipse Java arendusvahenditele (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/jdt\/\">JDT<\/a><\/noindex>). Just see populaarne avatud l\u00e4htekoodiga Java IDE seostatakse enamus arendajatega s\u00f5naga \u201cEclipse\u201d. Kuid Eclipse on ka laiendatav platvorm arendusvahendite integreerimiseks (Eclipse Platform) ning mitmed IDE-d, mis on v\u00e4ljat\u00f6\u00f6tatud selle baasil, sealhulgas JDT. Eclipse on ka Eclipse Project, tippprojekt, mis koordineerib Eclipse Platform ja JDT arendust ning Eclipse SDK \u2013 selle arenduse tulemus. L\u00f5puks on Eclipse avatud allikas sihtasutus, millel on tohutu projektide kogukond, kusjuures mitte k\u00f5ik need projektid ei ole kirjutatud Java's ega seotud arendusvahenditega (nt 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>K\u00e4esolevas artiklis, mis on iseloomult \u00fclevaatlik, proovime arutada m\u00f5ningaid p\u00f5hialuseid Eclipse'i arhitekturist kui platvormist integreeritud arendusvahendite loomiseks ja anda esmase \u00fclevaate Eclipse'i komponentidest, mis moodustavad tehnoloogilise platvormi aluse \u201cuuele Konfiguratorile\u201d 1C: Ettev\u00f5tte, <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/release_IDE\/\">1C:Enterprise Development Tools<\/a><\/noindex>. Loomulikult on selline k\u00e4sitlus paratamatult osaliselt pinnapealne ja \u00fcsna piiratud, sealhulgas seet\u00f5ttu, et suunatakse mitte ainult Eclipse arendajatele kui sihtr\u00fchmale. Siiski loodame, et isegi kogenud Eclipse arendajad suudavad artiklist leida huvitavat teavet. N\u00e4iteks r\u00e4\u00e4gime \u00fchest \u201cEclipse'i saladusest\u201d, suhteliselt uuest ja veel v\u00e4he tuntud projektist <noindex><a rel=\"nofollow\" href=\"http:\/\/eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex>, mis on loodud ja toetatud firma 1C.<br \/>\n<img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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>Sissejuhatus Eclipse'i arhitektuuri<\/h2>\n<p>\nArutame alguses m\u00f5ned \u00fcldised aspektid Eclipse'i arhitektuurist n\u00e4itena <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/jdt\/overview.php\">Eclipse Java arendusvahendid<\/a><\/noindex> (JDT). JDT valik n\u00e4itena ei ole juhuslik. See on esimene integreeritud arendus keskkond, mis ilmus Eclipse'is. Teised *DT Eclipse projektid, nagu n\u00e4iteks Eclipse C\/C++ Development Tooling (CDT), loodi hiljem ja laenasid nii p\u00f5histruktuurid kui ka eraldi koodifragmente JDT-st. JDT-sse rajatud arhitektuuri alused kehtivad t\u00e4nap\u00e4eval praktiliselt iga IDE puhul, mis on ehitatud Eclipse Platform'i peale, sealhulgas 1C:Enterprise Development Tools jaoks.<\/p>\n<p>Eelk\u00f5ige tasub m\u00e4rkida, et Eclipse'l on \u00fcsna selge arhitektuuriline kihistumine, kus eristatakse keelest s\u00f5ltumatut funktsionaalsust konkreetsete programmeerimiskeelte toetamise funktsionaalsusest ning eristatakse UI-st s\u00f5ltumatuid \u201etuum\u201d komponente komponentidest, mis on seotud kasutajaliidese toe pakkumisega.<\/p>\n<p>Nii m\u00e4\u00e4ratleb Eclipse Platform \u00fcldise, keelest s\u00f5ltumatu infrastruktuuri, samas kui Java arendustooted lisavad Eclipse'le t\u00e4ie\u00f5igusliku Java IDE. Nii Eclipse Platform kui ka JDT koosnevad mitmest komponendist, millest iga\u00fcks kuulub kas UI-st s\u00f5ltumatu \u201etuuma\u201d v\u00f5i UI kihisse (vt joonis 1).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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>Loetleme Eclipse Platformi p\u00f5hikomponendid:<\/p>\n<ul>\n<li><b>Runtime<\/b> \u2014 M\u00e4\u00e4ratleb pistikprogrammide infrastruktuuri. Eclipse'l on moodulaarne arhitektuur. P\u00f5him\u00f5tteliselt on Eclipse kogum \u201elaiendamise punkte\u201d ja \u201elaiendusi\u201d.<\/li>\n<li><b>Workspace<\/b> \u2014 Haldab \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 baas kasutajaliidese elemente, mis on integreeritud operatsioonis\u00fcsteemiga.<\/li>\n<li><b>JFace<\/b> \u2014 Pakub mitmeid UI raamistikke, mis on loodud SWT k\u00f5rgemale.<\/li>\n<li><b>T\u00f6\u00f6laud<\/b> \u2014 M\u00e4\u00e4ratleb Eclipse'i UI paradigmad: redigeerijad, vaated, perspektiivid.<\/li>\n<\/ul>\n<p>\nTasub mainida, et Eclipse Platform pakub ka palju teisi kasulikke komponente integreeritud arendusvahendite loomiseks, sealhulgas Debug, Compare, Search ja Team. Eraldi peaksite p\u00f6\u00f6rama t\u00e4helepanu JFace Textile \u2013 alusele \u201enutikate redigeerijate\u201d loomisel. Kahjuks ei ole sellel artiklil v\u00f5imalust vaadata neid komponente, samuti UI-kihti, seet\u00f5ttu piirame selle osa \u00fclevaadet Eclipse Platformi ja JDT peamistest \u201etuuma\u201d komponentidest.<\/p>\n<h4>Core Runtime<\/h4>\n<p>\nEclipse'i pistikprogrammide infrastruktuur p\u00f5hineb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.osgi.org\/developer\/specifications\/\">OSGi<\/a><\/noindex> ja seda pakub projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/equinox\/\">Eclipse Equinox.<\/a><\/noindex>Iga Eclipse'i pistikprogramm on OSGi-bundle. OSGi spetsifikatsioon m\u00e4\u00e4ratleb muuhulgas versioonimise ja s\u00f5ltuvuste lahendamise mehhanisme. Lisaks nendele standardsetele mehhanismidele toob Equinox sisse m\u00f5iste <i>laiendamise punkt<\/i>. Iga plugin saab m\u00e4\u00e4rata oma laienduspunkte ja tuua s\u00fcsteemi t\u00e4iendavat funktsionaalsust (\"laiendused\"), kasutades selle sama v\u00f5i teiste pluginatega m\u00e4\u00e4ratud laienduspunkte. \u00dcksikasjalik OSGi ja Equinox mehhanismide kirjeldus \u00fcletab selle artikli ulatuse. Tuleb m\u00e4rkida, et Eclipse'i modulariseerimine on p\u00f5hjalik (iga alams\u00fcsteem, sealhulgas k\u00e4itusaeg, koosneb \u00fchest v\u00f5i mitmest pluginast) ning praktiliselt k\u00f5ik Eclipse'is on laiendus. Need p\u00f5him\u00f5tted olid sisseehitatud Eclipse'i arhitektuuri juba ammu enne OSGi rakendamist (sel ajal kasutati oma tehnoloogiat, mis oli suurte sarnane OSGi-le).<\/p>\n<h4>Tuumiku t\u00f6\u00f6ruum<\/h4>\n<p>\nPraktiselt iga integreeritud arenduskeskkond, mis on loodud Eclipse'i platvormi p\u00f5hjal, t\u00f6\u00f6tab Eclipse'i t\u00f6\u00f6ruumiga. T\u00f6\u00f6ruum sisaldab tavaliselt IDE-s arendatava rakenduse l\u00e4htekoodi. T\u00f6\u00f6ruum peegeldab otse failis\u00fcsteemi ja koosneb projektidest, mis sisaldavad kaustu ja faile. Need projektid, kaustad ja failid nimetatakse <i>ressurssideks<\/i> . T\u00f6\u00f6ruumi rakendamine Eclipse'is toimib kui vahem\u00e4lu failis\u00fcsteemi suhtes, mis v\u00f5imaldab oluliselt kiirendada ressursside puu l\u00e4bimist. Lisaks pakub t\u00f6\u00f6ruum 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\">inkrementaalsete koostajate infrastruktuuri<\/a><\/noindex>.<\/p>\n<p>T\u00f6\u00f6ruumi ja selle ressursside eest vastutab komponent Core Resources (plugin org.eclipse.core.resources). Konkreetselt pakub see komponent programmilist juurdep\u00e4\u00e4su t\u00f6\u00f6ruumile kujul <i>ressursside mudel<\/i>. Selle mudeliga t\u00f5husaks t\u00f6\u00f6tamiseks vajavad kliendid lihtsat viisi ressursi viite esitamiseks. Sel juhul oleks soovitav varjata objekt, mis otse hoiab ressursi olekut mudelis, kliendi juurdep\u00e4\u00e4su eest. Vastasel juhul, n\u00e4iteks faili kustutamisel, v\u00f5ib klient j\u00e4tkuvalt hoida objekti, mis ei ole enam mudelis olemas, tekitades sellega seotud probleeme. Eclipse lahendab selle \u00fclesande, kasutades nn <i>handle'i<\/i> ressursi. Handle toimib v\u00f5tmena (ta teab ainult teed ressursile t\u00f6\u00f6ruumis) ja kontrollib t\u00e4ielikult juurdep\u00e4\u00e4su mudeli sisemisele objekti, mis otse hoiab teavet ressursi oleku kohta. Antud 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 idioomi ressursimudeli kontekstis. IResource liides esindab ressursi handle'it ja on API, erinevalt Resource klassist, mis rakendab seda liidest, ning ResourceInfo klassist, mis esindab body't ja ei ole API. T\u00f5stame esile, et handle teab vaid tee ressursini v\u00f5rreldes workspace'i juurega ega hoia endas viidet resource info'le. Resource info objektid moodustavad nn \"elementide puu\" (element tree). See andmestruktuur on t\u00e4ielikult m\u00e4lus materialiseeritud. Korrektse resource info eksemplari leidmiseks, mis vastab m\u00f5nele handle'ile, k\u00e4iakse element tree'd \u00fcle vastavalt sellele handle'ist salvestatud teele.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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\u00f5histruktuuri (mida v\u00f5ib nimetada handle-p\u00f5hiseks) ka Eclipse'is ja teiste mudelite puhul. Praegu toome v\u00e4lja m\u00f5ned sellele disainile iseloomulikud omadused:<\/p>\n<ul>\n<li>Handle on v\u00e4\u00e4rtusobjekt (value object). V\u00e4\u00e4rtusobjektid on immutable objektid, mille v\u00f5rdsus ei p\u00f5hine identiteedil. Selliseid objekte saab ohutult kasutada v\u00f5tmetena hashitud konteinerites. Mitmed handle'i eksemplarid v\u00f5ivad viidata samale ressursile. Nende v\u00f5rdlemiseks tuleb kasutada meetodit equals(Object).<\/li>\n<li>Handle m\u00e4\u00e4ratleb ressursi k\u00e4itumise, kuid ei hoia ressursi olekuteavet (ainukesed andmed, mida ta hoiab, on \"v\u00f5ti\", tee ressursini).<\/li>\n<li>Handle v\u00f5ib viidata mitteeksisteerivale ressursile (kas ressursile, mida veel ei ole loodud, v\u00f5i ressursile, mis on juba eemaldatud). Ressursi olemasolu saab kontrollida meetodi IResource.exists() abil.<\/li>\n<li>M\u00f5ned operatsioonid v\u00f5ivad p\u00f5hineda ainult informatsioonil, mis on salvestatud ise handle'i (nn handle-only operatsioonid). N\u00e4iteks on IResource.getParent(), getFullPath jne. Ressurss ei pea tingimata eksisteerima sellise operatsiooni edukaks teostamiseks. Operatsioonid, milleks on vajalik ressursi olemasolu, viskavad erandi (CoreException), kui ressurs ei eksisteeri.<\/li>\n<\/ul>\n<p>\nEclipse pakub t\u00f5husat mehhanismi workspace'i ressursside muudatuste teavitamiseks (vt joonis 3). Ressursse v\u00f5ib muuta nii Eclipse IDE enda tegevuste kaudu kui ka failis\u00fcsteemiga s\u00fcnkroniseerimise k\u00e4igus. M\u00f5lemal juhul antakse teavitustele registreerunutele \u00fcksikasjalik teave muudatuste kohta \"ressursi delta\" vormis. Delta kirjeldab muutusi kahe oleku (al-)puu vahel ja on ise puu, mille iga s\u00f5lm kirjeldab m\u00f5ne ressursi muudatust ja sisaldab loendit j\u00e4rgmise taseme deltadest, mis kirjeldavad alamressursside muudatusi.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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>Ressursidelt poolt v\u00e4lja t\u00f6\u00f6tatud teavituste mehhanism omab j\u00e4rgmisi omadusi:<\/p>\n<ul>\n<li>\u00dchtne muudatus ja mitu muudatust kirjeldatakse sama struktuuri kaudu, kuna delta ehitatakse rekursiivse koostamise p\u00f5him\u00f5tte kohaselt. Klientide tellijad saavad hallata ressursimuudatuste teavitusi, j\u00e4rgides delta puu rekursiivset allak\u00e4iku.<\/li>\n<li>Delta sisaldab t\u00e4ielikku teavet ressursi muudatuse kohta, sealhulgas selle edasiviimist ja\/v\u00f5i sellega seotud \"markerite\" muudatusi (millena esitatakse n\u00e4iteks kompileerimise vead).<\/li>\n<li>Kuna viidatakse ressurssidele k\u00e4sitsemise kaudu, saab delta loomulikult viidata eemalolevale ressursile.<\/li>\n<\/ul>\n<p>\nKuid nagu me peagi n\u00e4eme, on ressursside mudeli muudatuste teavitamise mehhanismi peamised koostisosad asjakohased ka muude k\u00e4sitsemise mehaanika mudelite jaoks.<\/p>\n<h4>JDT Core<\/h4>\n<p>\nEclipse workspace'i ressursside mudel on p\u00f5hiseadmeline keele- s\u00f5ltumatu mudel. JDT Core komponent (plugin org.eclipse.jdt.core) pakub API-t workspace'i struktuuri navigatsiooniks ja anal\u00fc\u00fcsiks Java perspektiivist, nii nimetatud \"Java mudel\" (<i>Java model<\/i>). See API on m\u00e4\u00e4ratletud Java elementide terminoloogiaga, erinevalt ressursside mudeli p\u00f5hisisust API-st, mis on m\u00e4\u00e4ratletud kaustade ja failide m\u00f5istes. Java elementide puu p\u00f5hiinterfacid on kujutatud joonisel 4.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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 nagu ressursside mudel (joonis 5). IJavaElement on handle ja JavaElementInfo m\u00e4ngib body rolli. IJavaElementliides m\u00e4\u00e4ratleb protokolli, mis on \u00fchine k\u00f5ikidele Java elementidele. M\u00f5ned selle meetoditest on ainult handle'i p\u00f5hised: getElementName(), getParent() jne. JavaElementInfo objekt salvestab vastava elemendi oleku: selle struktuuri ja atribuudid.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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 handle\/body p\u00f5hikujunduse rakenduses v\u00f5rreldes ressursside mudeliga. Nagu eespool mainitud, on ressursside mudeli elementide puu, mille s\u00f5lmedeks on resource info objektid, t\u00e4ielikult m\u00e4lus. Kuid Java mudelis v\u00f5ib elementide arv olla oluliselt suurem kui ressursside puus, kuna see h\u00f5lmab ka .java ja .class failide sisemist struktuuri: t\u00fc\u00fcbid, v\u00e4ljad ja meetodid.<\/p>\n<p>Kogu elementide puu t\u00e4ielik materialiseerimine m\u00e4lus v\u00e4ltimiseks kasutab Java mudeli rakendus piiratud suurusega LRU-cache element info jaoks, kus v\u00f5tmena on IJavaElement handle. Element info objekte luuakse n\u00f5udmisel, kui toimub navigatsioon elementide puus. Samuti t\u00f5rjutakse harva kasutatud elemendid vahelt, hoides m\u00e4lutarbimist mudeli jaoks m\u00e4\u00e4ratud kassa suurusega. See on veel \u00fcks eelis handle-p\u00f5hisest disainist, mis varjab sellised rakenduse \u00fcksikasjad t\u00e4ielikult kliendikoodilt.<\/p>\n<p>Java elementide muutmise teavitamise mehhanism on \u00fcldjoontes sarnane \u00fclaltoodud ressursside t\u00f6\u00f6ruumi muutuste j\u00e4lgimise mehhanismiga. Klient, kes soovib j\u00e4lgida Java mudelis toimuvaid muudatusi, registreerib end teavituste saamiseks, mis esitatakse ElementChangedEvent objekti kujul, mis sisaldab IJavaElementDelta (joonis 6).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/0402ec362078eaf50f47756e7f24de01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 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-koodide \u00fcksikasjalikuks anal\u00fc\u00fcsiks: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/articles\/Article-JavaCodeManipulation_AST\/index.html\">abstraktne s\u00fcntaksipuu<\/a><\/noindex> (abstraktne s\u00fcntaksipuu, AST). AST esindab algteksti s\u00fcntaktilise anal\u00fc\u00fcsi tulemust. AST s\u00f5lmed vastavad l\u00e4hteaine struktuuri elementidele (deklareerimisele, operaatoritele, avald Pintusele jne) ning sisaldavad teavet vastava elemendi koordinaatide kohta algses tekstis, samuti (valikuliselt) teavet nimede lahendamise kohta, ese viidatud nii-\u00f6elda <i>sidemed<\/i>. Sidemed on objektid, mis esindavad nimetatud entiteete, nagu t\u00fc\u00fcbid, meetodid ja muutujad, mille kohta kompilaatoril on teave. Erinevalt AST s\u00f5lmedest, mis moodustavad puu, toetavad sidemed ristviiteid ja tavaliselt moodustavad nad graafi. Abstraktne klass ASTNode on k\u00f5igi AST s\u00f5lmede \u00fchine aluseks olev klass. ASTNode alams\u00f5lmed vastavad keele Java s\u00fcntaktilistele konstruktsioonidele.<\/p>\n<p>Kuna s\u00fcntaktilised puud v\u00f5ivad tarbida m\u00e4rkimisv\u00e4\u00e4rselt palju m\u00e4lu, siis JDT vahem\u00e4lustab ainult \u00fchte AST-d aktiivse redaktori jaoks. Erinevalt Java mudelist, k\u00e4sitletakse AST-d tavaliselt kui \"vahe-\", \"ajutist\" mudelit, mille elementidele ei tohiks kliendid viidata v\u00e4ljaspool konteksti, milles AST loodi.<\/p>\n<p>Loetletud kolm mudelit (Java mudel, AST, sidemed) koos moodustavad aluse JDT-s \"intelligentsete arendust\u00f6\u00f6riistade\" loomiseks, sealhulgas v\u00f5imas Java redaktor koos mitmesuguste \"abiainetega\", erinevad allika t\u00f6\u00f6tlemise toimingud (sealhulgas nimede impordi nimekirja organiseerimine ja vormindamine vastavalt seadistatud stiilile), otsimise ja refaktoreerimise t\u00f6\u00f6riistad. Samal ajal m\u00e4ngib Java mudel erilist rolli, kuna just seda kasutatakse arendatava rakenduse struktuuri visuaalse esitamise aluseks (nt Package Explorer, Outline, Search, Call Hierarchy ja Type Hierarchy).<\/p>\n<h2>Eclipse'i komponendid, mida kasutatakse 1C:Enterprise arendusvahendites<\/h2>\n<p>\nJoonisel 7 on n\u00e4idatud Eclipse'i komponente, mis moodustavad 1C:Enterprise Development Tools tehnoloogilise platvormi aluse.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/248cceea47ee507b9ad22d6964738ee7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 7. Eclipse platvorm 1C:Enterprise Development Tools jaoks<\/b><\/p>\n<p><b>Eclipse platform<\/b> pakub p\u00f5histruktuuri. Oleme k\u00e4sitlenud m\u00f5ningaid selle infrastruktuuri aspekte eelnevas jaotises.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/modeling\/emf\/\">Eclipse'i modelleerimisraamistik<\/a><\/noindex><\/b> (<b>EMF<\/b>) pakub \u00fcldisi vahendeid struktureeritud andmete modelleerimiseks. EMF on integreeritud Eclipse Platformiga, kuid seda saab kasutada ka iseseisvalt tavalistes Java rakendustes. Algajad Eclipse arendajad on sageli EMF'ga juba h\u00e4sti kursis, kuigi nad ei pruugi veel t\u00e4ielikult m\u00f5ista Eclipse Platformi n\u00fcansse. \u00dcks p\u00f5hjusi, miks see on nii tuntud, on universaalne disain, mis h\u00f5lmab ka \u00fchtset API meta-tasandil, mis v\u00f5imaldab \u00fcldiselt t\u00f6\u00f6tada iga EMF mudeliga. EMF pakutavad baasteostused mudeliobjektide jaoks ja meta-mudeli p\u00f5hine mudelikoode genereerimise alam-s\u00fcsteem suurendavad m\u00e4rkimisv\u00e4\u00e4rselt arenduskiirust ja v\u00e4hendavad vigade arvu. Samuti sisaldab EMF mehhanisme mudelite serialiseerimiseks, mudeli muudatuste j\u00e4lgimiseks ja palju muud. <\/p>\n<p>Nagu iga t\u00f5eliselt universaalne t\u00f6\u00f6riist, sobib EMF laia valiku modelleerimis\u00fclesannete lahendamiseks, kuid m\u00f5ned mudeliklassid (n\u00e4iteks eespool k\u00e4sitletud handle-p\u00f5hised mudelid) v\u00f5ivad vajada spetsiifilisemaid modelleerimisvahendeid. R\u00e4\u00e4kida EMF'ist on t\u00e4namatu ettev\u00f5tmine, eriti \u00fche artikli piirides, kuna see on teema eraldi raamatu jaoks, ja \u00fcsna mahuka. T\u00f5stame esile vaid seda, et EMF'i aluseks olev kvaliteetne \u00fcldistuste s\u00fcsteem on v\u00f5imaldanud luua terve hulga modelleerimisprojekte, mis kuuluvad \u00fclemise taseme projekti. <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/modeling\/\">Eclipse Modelleerimine<\/a><\/noindex> koos 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 'teksti modelleerimise' infrastruktuuri. Xtext kasutab <noindex><a rel=\"nofollow\" href=\"http:\/\/www.antlr.org\/\">ANTLR<\/a><\/noindex> s\u00fcntaktilise anal\u00fc\u00fcsi jaoks l\u00e4hteteksti ja EMF-i tulemuse ASG (abstraktse semantilise graafiku, mis sisuliselt on AST ja bind\u2019ide kombinatsioon), mida nimetatakse ka \"semantilise mudelina\". Xtext abil modelleeritud keele grammatika kirjeldatakse Xtexti omas keeles. See v\u00f5imaldab mitte ainult genereerida grammatika kirjelduse ANTLR-ile, vaid ka saada AST serialiseerimise mehhanismi (st Xtext pakub nii parserit kui ka unparsereid), konteksti n\u00e4pun\u00e4iteid ja mitmeid teisi keelekomponente. Teisest k\u00fcljest on Xtextis kasutatav grammatika kirjeldamise keel v\u00e4hem paindlik v\u00f5rreldes n\u00e4iteks ANTLR-i grammatika kirjeldamise keelega. Seet\u00f5ttu tuleb m\u00f5nikord Xtextile k\u00fclge \u201epainutada\u201d rakendatavat keelt, mis ei ole tavaliselt probleem, kui tegu on nullist arendatava keelega, kuid v\u00f5ib olla vastuv\u00f5etamatu juba v\u00e4ljakujunenud s\u00fcntaksiga keelte puhul. Sellest hoolimata on Xtext praegu k\u00f5ige k\u00fcpsem, funktsionaalselt t\u00e4ielik ja universaalne t\u00f6\u00f6riist Eclipse\u2019is programmeerimiskeelte ja nende arendust\u00f6\u00f6riistade loomise jaoks. Eelk\u00f5ige on see ideaalne vahend kiireks protot\u00fc\u00fcpimiseks. <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\">ainep\u00f5hised keeled<\/a><\/noindex> (domain-specific language, DSL). Peale eelpool mainitud ANTLR ja EMF p\u00f5hist \"keele tuuma\" pakub Xtext palju kasulikke k\u00f5rgema taseme komponente, sealhulgas indekseerimise mehhanisme, inkrimenteerimise ehitust, \"nutikat redigeerijat\" ja palju, palju muud, kuid j\u00e4tab k\u00f5rvale keele handle-p\u00f5hised mudelid. Nagu EMF, on Xtext eraldi raamatu v\u00e4\u00e4riline teema, ja me ei suuda isegi \u00fclevaatlikult r\u00e4\u00e4kida k\u00f5igist selle v\u00f5imalustest.<\/p>\n<p>1C:Enterprise Development Tools kasutavad aktiivselt nii EMF-i iseenesest kui ka mitmeid teisi Eclipse Modeling projekte. Eelk\u00f5ige on Xtext \u00fcks 1C:Ettev\u00f5tte arenduskeelte, nagu sisseehitatud programmeerimiskeel ja p\u00e4ringukeel, arendusvahendite aluseid. Teine nende arendusvahendite alus on Eclipse Handly projekt, millele keskendume l\u00e4hemalt (loetletud Eclipse'i komponentidest on see praegu k\u00f5ige v\u00e4hem tuntud).<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex><\/b>, \u00fclemprojekti Eclipse Technology alaprojekt, sai alguse koodide algsest sisendamisest Eclipse Foundationi, mille viis ellu ettev\u00f5te 1C 2014. aastal. Sellest ajast alates j\u00e4tkab ettev\u00f5te 1C projekti arendamise toetamisega: committer'id Handly on ettev\u00f5tte t\u00f6\u00f6tajad. Projekt on v\u00e4ike, kuid omab \u00fcsna unikaalset ni\u0161i Eclipse'is: selle peamine eesm\u00e4rk on toetada handle-p\u00f5histe mudelite arendamist.<\/p>\n<p>Handle-p\u00f5histe mudelite p\u00f5histruktuuri p\u00f5him\u00f5tted, nagu handle\/body idiom, on juba varem k\u00e4sitletud ressursside mudeli ja Java mudeli n\u00e4itel. Samuti on m\u00e4rgitud, et nii ressursside mudel kui ka Java mudel on olulised alusp\u00f5hjad Eclipse Java arendusvahendite (JDT) jaoks. Kuna praktiliselt k\u00f5ik Eclipse'i *DT projektid j\u00e4rgivad sarnast arhitektuuri nagu JDT, ei ole liialdus \u00f6elda, et handle-p\u00f5hised mudelid kujundavad paljude, kui mitte k\u00f5ikide Eclipse Platformi peal ehitatud IDE-de aluse. N\u00e4iteks Eclipse C\/C++ Development Tooling (CDT) sisaldab handle-p\u00f5hist C\/C++ mudelit, mis m\u00e4ngib CDT arhitektuuris sama rolli, mis Java mudel JDT-s.<\/p>\n<p>Enne Handly ilmumist ei pakkunud Eclipse spetsialiseeritud raamatukogusid keeleliste handle-p\u00f5histe mudelite loomiseks. Praegu eksisteerivad mudelid on peamiselt loodud Java mudeli koodi otsese kohandamise (a.k.a. copy\/paste) abil, <i>neis olukordades, kus see on lubatud<\/i> Eclipse'i avalik litsents (EPL). (M\u00f5istetav, et n\u00e4iteks Eclipse'i enda projektide puhul ei ole see tavaliselt \u00f5iguste poolest probleem, mida ei saa \u00f6elda suletud l\u00e4htekoodiga toodete kohta.) Lisaks sellele iseloomulikule s\u00fcsteemituslikusele, toob selline meetod esile h\u00e4sti tuntud probleemid: kopeerimise ja kohandamise k\u00e4igus tekkinud koodi dubleerimine ning sellega seotud vead jne. Veelgi hullem, saadud mudelid j\u00e4\u00e4vad \"asjaks iseeneses\" ning ei kasuta olemasolevat potentsiaali \u00fchtsuse saavutamiseks. Ometi v\u00f5iks \u00fchiste m\u00f5istete ja protokollide esiletoomine handle-p\u00f5histe mudelite jaoks viia taaskasutatavate komponentide loomisele, nagu see juhtus EMF-i puhul.<\/p>\n<p>Ei saa \u00f6elda, et Eclipse'is ei m\u00f5istetud neid probleeme. Juba 2005. aastal <noindex><a rel=\"nofollow\" href=\"https:\/\/www.xing.com\/profile\/Martin_Aeschlimann\">Martin Aeschlimann<\/a><\/noindex>, kokkuv\u00f5ttes CDT protot\u00fc\u00fcbi arendamise kogemus, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/org\/langsymp\/position_paper_martin_aeschlimann.html\">t\u00f5i v\u00e4lja argumendid<\/a><\/noindex> \u00fcldise infrastruktuuri loomise vajadus keelemudelite jaoks, sealhulgas ka handle-p\u00f5histe mudelite jaoks. Kuid nagu tihti juhtub, j\u00e4i nende ideede elluviimise aeg k\u00f5rpriority \u00fclesannete t\u00f5ttu tulemata. Sellegipoolest j\u00e4\u00e4b koodi faktoriseerimine *DT-projektide jaoks endiselt \u00fcheks piisavalt arendamata teemaks Eclipse'is.<\/p>\n<p>Teatud m\u00f5ttes on projekt Handly suunatud sarnastele \u00fclesannetele nagu EMF, kuid handle-p\u00f5histe mudelite jaoks, eelk\u00f5ige keelelistele (st, mis esindavad m\u00f5ne programmeerimiskeele struktuuri elemente). Allpool on loetletud peamised eesm\u00e4rgid, mis olid Handly kavandamisel.<\/p>\n<ul>\n<li>Peamiste teemaalaste abstraktsioonide esiletoomine.<\/li>\n<li>Keerukuse v\u00e4hendamine ja keeleliste handle-p\u00f5histe mudelite realiseerimise kvaliteedi t\u00f5stmine koodi taaskasutamise kaudu.<\/li>\n<li>\u00dchtse API pakkumine meta-tasandil tulemusk mudelite jaoks, mis v\u00f5imaldab luua \u00fchised IDE komponendid, mis t\u00f6\u00f6tavad keeleliste handle-p\u00f5histe mudelitega.<\/li>\n<li>Paindlikkus ja skaleeritavus.<\/li>\n<li>Integratsioon Xtextiga (eraldises kihis).<\/li>\n<\/ul>\n<p>\n\u00dchiste m\u00f5istete ja protokollide esiletoomiseks anal\u00fc\u00fcsiti olemasolevaid keelelisi handle-p\u00f5hiseid mudelite realiseerimisi. Peamised liidesed ja baasseosed, mida Handly pakub, on esitatud joonisel 8.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/47f4bf74093245334b8d67b149734dfc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 8. \u00dchised liidesed ja baasseosed Handly elementidest<\/b><\/p>\n<p>IElement liides esindab elemendi handle'it ja on \u00fchine k\u00f5igi Handly p\u00f5histe mudelite elementide jaoks. Abstraktne Element klass realiseerib \u00fcldise handle\/body mehhanismi (joonis 9).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade 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 realiseerimine<\/b><\/p>\n<p>Lisaks pakub Handly \u00fcldist mehhanismi mudeli elementide muutmise teadete edastamiseks (joonis 10). Nagu n\u00e4ha, on see \u00fcldiselt sarnane muutuste teavitamise mehhanismidega, mis on realiseeritud ressursi mudelis ja Java mudelis, ning kasutab IElementDelta't teabe \u00fchtseks esitamiseks elemendi muutusest.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse kui tehnoloogia platvorm 1C:Enterprise arendust\u00f6\u00f6riistade jaoks\" src=\"\/wp-content\/uploads\/2019\/04\/cbdec8cf874308e0fa9dd96d04f62703.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Joonis 10. \u00dchised liidesed ja baasseosed Handly teavitamise mehhanismi jaoks<\/b><\/p>\n<p>Eeltoodud Handly osa (joonis 9 ja 10) saab kasutada praktiliselt mis tahes handle-p\u00f5histe mudelite esindamiseks. Keelestruktuuride mudelite loomiseks pakub projekt t\u00e4iendavat funktsionaalsust - eelk\u00f5ige \u00fchiseid liideseid ja baasseoseid l\u00e4htekoodi struktuuri elementide jaoks, nii nimetatud <i>keelelistele<\/i> mudelitele projekt pakub t\u00e4iendavaid funktsioone - nimelt \u00fchised liidesed ja baasseosed l\u00e4htekoodi struktuuri elementide jaoks, nii nimetatud <i>source elements<\/i> (kujund 8). ISourceFile liides esindab l\u00e4htefaili, samas kui ISourceConstruct on element l\u00e4htefailis. Abstraktsed klassid SourceFile ja SourceConstruct rakendavad \u00fcldiselt mehhanisme l\u00e4htefailide ja nende elementide t\u00f6\u00f6tamiseks, n\u00e4iteks tekstibufferite haldamise, elemendi koordinaatide sidumise l\u00e4htekstis, mudeli \u00fchtlustamise t\u00f6\u00f6kopi hetke sisuga jne. Nende mehhanismide rakendamine on tavaliselt piisavalt keeruline \u00fclesanne ja Handly v\u00f5ib oluliselt v\u00e4hendada keelep\u00f5histe k\u00e4sitlemismudelite arendamiseks vajalikku t\u00f6\u00f6j\u00f5udu, pakkudes kvaliteetseid p\u00f5hiraamistikke.<\/p>\n<p>Peale \u00fclaltoodud p\u00f5himehhanismide pakub Handly tekstibufferite ja \u201esnapshot'ide\u201d infrastruktuuri, toega l\u00e4htekoodi redigeerijate integreerimisele (sealhulgas rakendatud \u201ekastist v\u00e4ljas\u201d integreerimine Xtext redigeerijaga) ning m\u00f5ned \u00fcldised UI-komponendid, mis t\u00f6\u00f6tavad Handly mudelitega, nagu outline framework. Oma v\u00f5imaluste illustreerimiseks esitab projekt mitu n\u00e4idet, sealhulgas Handly p\u00f5hine Java mudel. (V\u00f5rreldes t\u00e4israkendusega Java mudel JDT-s, on see mudel \u00e4\u00e4rmiselt lihtsustatud, et oleks kergem arusaada.)<\/p>\n<p>Nagu eelnevalt mainitud, on Handly algse projekteerimise ja edasise arenduse k\u00e4igus olnud t\u00f5sine t\u00e4helepanu p\u00f6\u00f6ratud skaleeritavusele ja paindlikkusele. <\/p>\n<p>P\u00f5him\u00f5tteliselt on handle-p\u00f5hised mudelid \u201cdisaini\u201d t\u00f5ttu piisavalt h\u00e4sti skaleeritavad. N\u00e4iteks handle\/body idiom v\u00f5imaldab piirata mudeli tarbitavat m\u00e4lu. Kuid on ka n\u00fcansse. N\u00e4iteks Handsy skaleeritavuse testimisel avastati probleem teavitamismehhanismi rakenduses - suure hulga elementide muutmisel v\u00f5ttis delta genereerimine liiga palju aega. Selgus, et sama probleem esines ka Java mudelis JDT-s, millest vastav kood kunagi kohandati. Parandasime Handlys vea ja valmistasime sarnase pat\u0161i JDT-le, mis v\u00f5eti t\u00e4nuga vastu. See on vaid \u00fcks n\u00e4ide, kus Handly rakendamine olemasolevates mudelite rakendustes v\u00f5iks olla potentsiaalselt kasulik, kuna sellisel juhul oleks sellise vea parandamine v\u00f5imalik vaid \u00fches kohas.<\/p>\n<p>Kuna Handly implementeerimine olemasolevates tehnilistes mudelites oleks tehniliselt v\u00f5imalik, peab raamatukogu olema m\u00e4rkimisv\u00e4\u00e4rselt paindlik. Peamine probleem on s\u00e4ilitada API mudeli tagasip\u00f6\u00f6ratavus. See \u00fclesanne on lahendatud <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/NewIn05\">Handly 0.5<\/a><\/noindex> spetsiaalselt mudeli API selge jaotumise kaudu, mida m\u00e4\u00e4ratleb ja kontrollib t\u00e4ielikult arendaja, universaalse meta-tasandi API eristamise kaudu, mida raamatukogu pakub. See mitte ainult ei muuda Handly rakendamist olemasolevates implementatsioonides tehniliselt v\u00f5imalikuks, vaid annab ka uue mudeli arendajale m\u00e4rkimisv\u00e4\u00e4rse vabaduse API projekteerimisel.<\/p>\n<p>Paindlikkusel on ka muid aspekte. N\u00e4iteks ei sea Handly praktiliselt mingeid piiranguid mudeli struktuurile ning seda saab kasutada nii \u00fcldkeeleline mudeldamine kui ka valdkondade spetsiifilised keeled. Algfaili struktuuri loomisel ei kehtesta Handly mingit kindlat AST esitusvormi ja p\u00f5him\u00f5tteliselt ei n\u00f5ua ta isegi AST olemasolu, tagades seel\u00e4bi \u00fchilduvuse peaaegu k\u00f5ikide s\u00fcntakside anal\u00fc\u00fcsi mehhanismidega. L\u00f5puks toetab Handly t\u00e4ielikku integratsiooni Eclipse t\u00f6\u00f6ruumiga, kuid v\u00f5ib t\u00f6\u00f6tada ka otse failis\u00fcsteemidega, t\u00e4nu integratsioonile <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/EFS\">Eclipse File System<\/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> v\u00e4lja anti 2016. aasta detsembris. Kuigi projekt on praegu inkubeerimisfaasis ja API ei ole veel l\u00f5plikult kindlaks m\u00e4\u00e4ratud, kasutatakse Handly juba kahes suures kaubanduslikus tootes, mis julgevad astuda \u201evarajaste adopteerijate\u201c rolli, ning tuleb \u00f6elda, et nad ei kahetse.<\/p>\n<p>Nagu eelnevalt mainitud, on \u00fcks neist toodetest \u2013 1C:Enterprise Development Tools, kus Handly on algusest peale kasutusel k\u00f5rgetasemeliste struktuuride mudeldamiseks 1C:Ettev\u00f5te keelte, nagu sisseehitatud programmeerimiskeel ja p\u00e4ringukeel. Teine toode on \u00fcldiselt v\u00e4hem tuntud. See on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.codasip.com\/custom-processor\/\">Codasip Studio<\/a><\/noindex>, integreeritud keskkond probleemip\u00f5histe protsessorite (application-specific instruction-set processor, ASIP) projekteerimiseks, mida kasutatakse nii T\u0161ehhi ettev\u00f5ttes Codasip kui ka selle klientide seas, keda on <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 praegune v\u00e4ljaanne Codasip Studio kasutab versiooni 0.5, mis ilmus 2016. aasta juunis. Ond\u0159ej Il\u010d\u00edk, kes juhib IDE arendust Codasipis, on projektiga kontaktis, esitades \u00e4\u00e4rmiselt olulist tagasisidet \u201ekolmanda osapoole adopteerijana\u201c. Tal \u00f5nnestus isegi leida veidi vaba aega, et otseselt osaleda projekti arenduses, rakendades UI kihti (umbes 4000 rida koodi) \u00fche Handly n\u00e4ite, Java mudeli, jaoks. Rohkem \u00fcksikasju \u201eesimese allika\u201c kohta Handly kasutamisest adopteerijate seas on saadaval lehelt <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/Adopters\">Edukad lood<\/a><\/noindex> projekti.<\/p>\n<p>Loodame, et p\u00e4rast versiooni 1.0 v\u00e4ljalaskmist, millega kaasneb API stabiilsuse garantii ja projekti inkubatsioonist v\u00e4ljaviimine, tuleb Handlyle juurde uusi adopteerijaid. Seni j\u00e4tkab projekt API testimist ja edasist t\u00e4iustamist, v\u00e4ljastades aastas kaks \u201esuurte\u201c v\u00e4ljaannet \u2013 juunis (samal kuup\u00e4eval, mil toimub ka Eclipse'i samal ajal toimuva v\u00e4ljaande v\u00e4ljalaskmine) ja detsembris, tagades ennustatava ajakava, millele adopteerijad saavad toetuda. V\u00f5ib lisada, et projekti \u201eveavoolu\u201c n\u00e4itaja p\u00fcsib pidevalt madalal tasemel ja Handly t\u00f6\u00f6tab usaldusv\u00e4\u00e4rselt varajaste adopteerijate toodetes alates esimestest versioonidest. Edasi tutvumiseks Eclipse Handly'ga saab kasutada <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pisv\/gethandly\/wiki\">Alustamise juhend<\/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 \u00fclevaade<\/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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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 tehnoloogia platvorm 1C:Enterprise Development Tools | ProHoster","description":"T\u00f5en\u00e4oliselt ei vaja Eclipse enam erilist tutvustamist.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}