{"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\/cs\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","title":{"rendered":"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mo\u017en\u00e1, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/\">Eclipse<\/a><\/noindex> u\u017e d\u00e1vno nepot\u0159ebuje zvl\u00e1\u0161tn\u00ed p\u0159edstaven\u00ed. Mnoz\u00ed znaj\u00ed Eclipse d\u00edky Eclipse Java development tools (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/jdt\/\">JDT<\/a><\/noindex>). Tato popul\u00e1rn\u00ed open-source Java IDE se v\u011bt\u0161inou v\u00fdvoj\u00e1\u0159\u016f spojuje se slovem \u201eEclipse\u201c. Nicm\u00e9n\u011b Eclipse je tak\u00e9 roz\u0161i\u0159iteln\u00e1 platforma pro integraci v\u00fdvojov\u00fdch n\u00e1stroj\u016f (Eclipse Platform) a cel\u00e1 \u0159ada IDE postaven\u00fdch na jej\u00edm z\u00e1kladu, v\u010detn\u011b JDT. Eclipse je tak\u00e9 Eclipse Project, projekt nejvy\u0161\u0161\u00ed \u00farovn\u011b, kter\u00fd koordinuje v\u00fdvoj Eclipse Platform a JDT, a Eclipse SDK \u2013 dod\u00e1van\u00fd v\u00fdstup tohoto v\u00fdvoje. Kone\u010dn\u011b, Eclipse je open-source nadace s obrovskou komunitou projekt\u016f, z nich\u017e mnoh\u00e9 nejsou naps\u00e1ny v Jav\u011b nebo nemaj\u00ed vztah k v\u00fdvojov\u00fdm n\u00e1stroj\u016fm (nap\u0159\u00edklad projekty <noindex><a rel=\"nofollow\" href=\"https:\/\/iot.eclipse.org\/\">Eclipse IoT<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/science.eclipse.org\/\">Eclipse Science<\/a><\/noindex>). Sv\u011bt Eclipse je velmi r\u016fznorod\u00fd.<\/p>\n<p>V tomto \u010dl\u00e1nku, kter\u00fd m\u00e1 p\u0159ehledn\u00fd charakter, se pokus\u00edme p\u0159ezkoumat n\u011bkter\u00e9 z\u00e1klady architektury Eclipse jako platformy pro budov\u00e1n\u00ed integrovan\u00fdch v\u00fdvojov\u00fdch n\u00e1stroj\u016f a poskytnout \u00favodn\u00ed p\u0159edstavu o komponentech Eclipse, kter\u00e9 tvo\u0159\u00ed z\u00e1klad technologick\u00e9 platformy pro \u201enov\u00e9ho Konfigur\u00e1tora\u201c 1C: Podnik\u00e1n\u00ed, <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/release_IDE\/\">1C:Enterprise Development Tools<\/a><\/noindex>. Samoz\u0159ejm\u011b, takov\u00e9 p\u0159ezkoum\u00e1n\u00ed bude nevyhnuteln\u011b z\u010d\u00e1sti povrchn\u00ed a pom\u011brn\u011b omezen\u00e9, v\u010detn\u011b toho, \u017ee se orientujeme nejen na v\u00fdvoj\u00e1\u0159e Eclipse jako c\u00edlovou skupinu. Douf\u00e1me v\u0161ak, \u017ee i zku\u0161en\u00ed v\u00fdvoj\u00e1\u0159i Eclipse najdou v \u010dl\u00e1nku zaj\u00edmav\u00e9 informace. Nap\u0159\u00edklad se pod\u011bl\u00edme o jedno z \u201etajemstv\u00ed Eclipse\u201c, o relativn\u011b nov\u00e9m a m\u00e1lo zn\u00e1m\u00e9m projektu <noindex><a rel=\"nofollow\" href=\"http:\/\/eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex>, kter\u00fd byl zalo\u017een a podporov\u00e1n spole\u010dnost\u00ed 1C.<br \/>\n<img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" 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>\u00davod do architektury Eclipse<\/h2>\n<p>\nNejprve prozkoum\u00e1me n\u011bkter\u00e9 obecn\u00e9 aspekty architektury Eclipse na p\u0159\u00edkladu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/jdt\/overview.php\">Eclipse Java development tools<\/a><\/noindex> (JDT). V\u00fdb\u011br pr\u00e1v\u011b JDT jako p\u0159\u00edkladu nen\u00ed n\u00e1hodn\u00fd. To je prvn\u00ed integrovan\u00e9 v\u00fdvojov\u00e9 prost\u0159ed\u00ed, kter\u00e9 se objevilo v Eclipse. Ostatn\u00ed *DT projekty Eclipse, jako Eclipse C\/C++ Development Tooling (CDT), byly vytvo\u0159eny pozd\u011bji a p\u0159evzaly jak z\u00e1kladn\u00ed architektonick\u00e9 principy, tak jednotliv\u00e9 fragmenty zdrojov\u00e9ho k\u00f3du z JDT. Z\u00e1klady architektury, polo\u017een\u00e9 v JDT, jsou aktu\u00e1ln\u00ed dodnes pro prakticky jakoukoli IDE, postavenou na Eclipse Platform, v\u010detn\u011b 1C:Enterprise Development Tools.<\/p>\n<p>Na prvn\u00edm m\u00edst\u011b je t\u0159eba zd\u016fraznit, \u017ee Eclipse se vyzna\u010duje dostate\u010dn\u011b jasnou architektonickou strukturou, kter\u00e1 odd\u011bluje jazykov\u011b nez\u00e1vislou funk\u010dnost od funk\u010dnosti ur\u010den\u00e9 pro podporu konkr\u00e9tn\u00edch programovac\u00edch jazyk\u016f, a odd\u011bluje UI-nez\u00e1visl\u00e9 \u201ej\u00e1drov\u00e9\u201c komponenty od komponent spojen\u00fdch s podporou u\u017eivatelsk\u00e9ho rozhran\u00ed.<\/p>\n<p>Eclipse Platform tak definuje obecnou, jazykov\u011b nez\u00e1vislou infrastrukturu, zat\u00edmco n\u00e1stroje pro v\u00fdvoj v Jav\u011b p\u0159id\u00e1vaj\u00ed k Eclipse pln\u011b funk\u010dn\u00ed Java IDE. Jak Eclipse Platform, tak JDT se skl\u00e1daj\u00ed z n\u011bkolika komponent, z nich\u017e ka\u017ed\u00e1 pat\u0159\u00ed bu\u010f do UI-nez\u00e1visl\u00e9ho \u201ej\u00e1dra\u201c, nebo do vrstvy UI (obr. 1).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/230825124962e721ecca7dfb7dee9a0c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 1. Eclipse Platform a JDT<\/b><\/p>\n<p>Uve\u010fme hlavn\u00ed komponenty Eclipse Platform:<\/p>\n<ul>\n<li><b>Runtime<\/b> \u2014 Ur\u010duje infrastrukturu plugin\u016f. Eclipse se vyzna\u010duje modul\u00e1rn\u00ed architekturou. V podstat\u011b je Eclipse sb\u00edrkou \u201ebod\u016f roz\u0161\u00ed\u0159en\u00ed\u201c a \u201eroz\u0161\u00ed\u0159en\u00ed\u201c.<\/li>\n<li><b>Workspace<\/b> \u2014 Spravuje jeden nebo v\u00edce projekt\u016f. Projekt se skl\u00e1d\u00e1 z slo\u017eek a soubor\u016f, kter\u00e9 se p\u0159\u00edmo zobrazuje na souborov\u00e9m syst\u00e9mu.<\/li>\n<li><b>Standard Widget Toolkit (SWT)<\/b> \u2014 Poskytuje z\u00e1kladn\u00ed prvky u\u017eivatelsk\u00e9ho rozhran\u00ed, kter\u00e9 jsou integrov\u00e1ny s opera\u010dn\u00edm syst\u00e9mem.<\/li>\n<li><b>JFace<\/b> \u2014 Nab\u00edz\u00ed \u0159adu UI framework\u016f postaven\u00fdch na SWT.<\/li>\n<li><b>Workbench<\/b> \u2014 Ur\u010duje UI-paradigma Eclipse: editory, pohledy, perspektivy.<\/li>\n<\/ul>\n<p>\nJe t\u0159eba \u0159\u00edci, \u017ee Eclipse Platform poskytuje i mnoho dal\u0161\u00edch u\u017eite\u010dn\u00fdch komponent pro vytv\u00e1\u0159en\u00ed integrovan\u00fdch v\u00fdvojov\u00fdch n\u00e1stroj\u016f, mezi kter\u00fdmi lze zm\u00ednit Debug, Compare, Search a Team. Zvl\u00e1\u0161\u0165 je t\u0159eba zm\u00ednit JFace Text \u2013 z\u00e1klad pro tvorbu \u201einteligentn\u00edch editor\u016f\u201c zdrojov\u00e9ho k\u00f3du. Bohu\u017eel, i povrchn\u00ed prozkoum\u00e1n\u00ed t\u011bchto komponent, stejn\u011b jako komponent vrstvy UI, nen\u00ed mo\u017en\u00e9 v r\u00e1mci tohoto \u010dl\u00e1nku, proto se v zbytku t\u00e9to \u010d\u00e1sti omez\u00edme na p\u0159ehled hlavn\u00edch \u201ej\u00e1drov\u00fdch\u201c komponent Eclipse Platform a JDT.<\/p>\n<h4>Core Runtime<\/h4>\n<p>\nInfrastruktura plugin\u016f Eclipse je zalo\u017eena na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.osgi.org\/developer\/specifications\/\">OSGi<\/a><\/noindex> a je poskytov\u00e1na projektem <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/equinox\/\">Eclipse Equinox<\/a><\/noindex>. Ka\u017ed\u00fd plugin Eclipse je OSGi-bundle. Specifikace OSGi ur\u010duje mimo jin\u00e9 mechanismy verzov\u00e1n\u00ed a \u0159e\u0161en\u00ed z\u00e1vislost\u00ed. Krom\u011b t\u011bchto standardn\u00edch mechanism\u016f zav\u00e1d\u00ed Equinox pojem <i>bod roz\u0161\u00ed\u0159en\u00ed<\/i>. Ka\u017ed\u00fd plugin m\u016f\u017ee definovat sv\u00e9 body roz\u0161\u00ed\u0159en\u00ed a p\u0159in\u00e1\u0161et do syst\u00e9mu dodate\u010dnou funk\u010dnost (\u201eroz\u0161\u00ed\u0159en\u00ed\u201c) pomoc\u00ed bod\u016f roz\u0161\u00ed\u0159en\u00ed definovan\u00fdch t\u00edmto nebo jin\u00fdmi pluginy. Podrobn\u00e9 popisy mechanism\u016f OSGi a Equinox vych\u00e1zej\u00ed mimo r\u00e1mec tohoto \u010dl\u00e1nku. Je v\u0161ak d\u016fle\u017eit\u00e9 poznamenat, \u017ee modularizace v Eclipse je naprosto z\u00e1sadn\u00ed (jak\u00fdkoli subsyst\u00e9m, v\u010detn\u011b Runtime, se skl\u00e1d\u00e1 z jednoho nebo n\u011bkolika plugin\u016f) a prakticky v\u0161e v Eclipse je roz\u0161\u00ed\u0159en\u00ed. Tyto principy byly zakotveny v architektu\u0159e Eclipse u\u017e dlouho p\u0159ed zaveden\u00edm OSGi (v t\u00e9 dob\u011b byla pou\u017e\u00edv\u00e1na vlastn\u00ed technologie, kter\u00e1 byla do zna\u010dn\u00e9 m\u00edry podobn\u00e1 OSGi).<\/p>\n<h4>Hlavn\u00ed pracovn\u00ed prost\u0159ed\u00ed<\/h4>\n<p>\nPrakticky ka\u017ed\u00e9 integrovan\u00e9 v\u00fdvojov\u00e9 prost\u0159ed\u00ed postaven\u00e9 na z\u00e1klad\u011b Eclipse Platform pracuje s pracovn\u00edm prost\u0159ed\u00edm Eclipse. Pr\u00e1v\u011b pracovn\u00ed prost\u0159ed\u00ed obvykle obsahuje zdrojov\u00fd k\u00f3d vyv\u00edjen\u00e9 aplikace v IDE. Pracovn\u00ed prost\u0159ed\u00ed se p\u0159\u00edmo zobrazuje na souborov\u00fd syst\u00e9m a skl\u00e1d\u00e1 se z projekt\u016f, kter\u00e9 obsahuj\u00ed slo\u017eky a soubory. Tyto projekty, slo\u017eky a soubory se naz\u00fdvaj\u00ed <i>zdroji<\/i> pracovn\u00ed prost\u0159ed\u00ed. Realizace pracovn\u00edho prost\u0159ed\u00ed v Eclipse slou\u017e\u00ed jako ur\u010dit\u00fd mezipam\u011b\u0165 k souborov\u00e9mu syst\u00e9mu, co\u017e v\u00fdrazn\u011b urychluje proch\u00e1zen\u00ed stromu zdroj\u016f. Krom\u011b toho pracovn\u00ed prost\u0159ed\u00ed poskytuje \u0159adu dal\u0161\u00edch slu\u017eeb, v\u010detn\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Resource-deltas\/resource-deltas.html\">mechanismu notifikac\u00ed o zm\u011bn\u00e1ch zdroj\u016f<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Builders\/builders.html\">infrastruktury inkrement\u00e1ln\u00edch builder\u016f<\/a><\/noindex>.<\/p>\n<p>Za podporu pracovn\u00edho prost\u0159ed\u00ed a jeho zdroj\u016f odpov\u00edd\u00e1 komponenta Core Resources (plugin org.eclipse.core.resources). Konkr\u00e9tn\u011b tato komponenta poskytuje programov\u00fd p\u0159\u00edstup k pracovn\u00edmu prost\u0159ed\u00ed ve form\u011b <i>modelu zdroj\u016f<\/i>. Pro efektivn\u00ed pr\u00e1ci s t\u00edmto modelem pot\u0159ebuj\u00ed klienti jednoduch\u00fd zp\u016fsob, jak reprezentovat odkaz na zdroj. Sou\u010dasn\u011b by bylo \u017e\u00e1douc\u00ed skr\u00fdt objekt, kter\u00fd p\u0159\u00edmo uchov\u00e1v\u00e1 stav zdroje v modelu, p\u0159ed klientsk\u00fdm p\u0159\u00edstupem. Jinak by nap\u0159\u00edklad v p\u0159\u00edpad\u011b smaz\u00e1n\u00ed souboru klient mohl nad\u00e1le udr\u017eovat objekt, kter\u00fd ji\u017e v modelu nen\u00ed, co\u017e by vedlo k probl\u00e9m\u016fm. Eclipse tuto \u00falohu \u0159e\u0161\u00ed pou\u017eit\u00edm tzv. <i>handle<\/i> zdroje. Handle slou\u017e\u00ed jako kl\u00ed\u010d (zn\u00e1 pouze cestu k zdroji v pracovn\u00edm prost\u0159ed\u00ed) a pln\u011b kontroluje p\u0159\u00edstup k intern\u00edmu objektu modelu, kter\u00fd p\u0159\u00edmo uchov\u00e1v\u00e1 informace o stavu zdroje. Tento design je variantou vzoru <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.c2.com\/?HandleBodyPattern\">Handle\/Body<\/a><\/noindex>.<\/p>\n<p>Obr\u00e1zek 2 ilustruje idiom Handle\/Body v kontextu modelu zdroj\u016f. Rozhran\u00ed IResource p\u0159edstavuje handle zdroje a je API, na rozd\u00edl od t\u0159\u00eddy Resource, kter\u00e1 toto rozhran\u00ed implementuje, a t\u0159\u00eddy ResourceInfo, kter\u00e1 p\u0159edstavuje body a API se nest\u00e1v\u00e1. Zd\u016fraz\u0148ujeme, \u017ee handle zn\u00e1 pouze cestu k zdroji v r\u00e1mci ko\u0159ene workspace a neobsahuje odkaz na resource info. Objekty resource info tvo\u0159\u00ed tzv. \"strom element\u016f\" (element tree). Tato datov\u00e1 struktura je zcela materializov\u00e1na v pam\u011bti. K nalezen\u00ed instance resource info odpov\u00eddaj\u00edc\u00ed ur\u010dit\u00e9mu handle se traversuje element tree podle cesty, kter\u00e1 je ulo\u017eena v tomto handle.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/9d17cd95be3730ab6b5b9e6e3ed71ace.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr\u00e1zek 2. IResource a ResourceInfo<\/b><\/p>\n<p>Jak uvid\u00edme d\u00e1le, z\u00e1kladn\u00ed design modelu zdroj\u016f (m\u016f\u017eeme ho nazvat handle-based) je vyu\u017e\u00edv\u00e1n v Eclipse i pro jin\u00e9 modely. Zat\u00edm uvedeme n\u011bkter\u00e9 charakteristick\u00e9 vlastnosti tohoto designu:<\/p>\n<ul>\n<li>Handle je objekt-atribut (value object). Objekty-atributy jsou nem\u011bnn\u00e9 (immutable) objekty, jejich\u017e rovnost se nezakl\u00e1d\u00e1 na identit\u011b. Takov\u00e9 objekty lze bezpe\u010dn\u011b pou\u017e\u00edvat jako kl\u00ed\u010d v hashovan\u00fdch kontejnerech. N\u011bkolik instanc\u00ed handle m\u016f\u017ee odkazovat na stejn\u00fd zdroj. Pro jejich porovn\u00e1n\u00ed je t\u0159eba pou\u017e\u00edt metodu equals(Object).<\/li>\n<li>Handle ur\u010duje chov\u00e1n\u00ed zdroje, ale neobsahuje informace o stavu zdroje (jedin\u00e9 \u00fadaje, kter\u00e9 uchov\u00e1v\u00e1, jsou \"kl\u00ed\u010d\", cesta k zdroji).<\/li>\n<li>Handle m\u016f\u017ee odkazovat na neexistuj\u00edc\u00ed zdroj (bu\u010f zdroj, kter\u00fd je\u0161t\u011b nebyl vytvo\u0159en, nebo zdroj, kter\u00fd ji\u017e byl odstran\u011bn). Existenci zdroje lze ov\u011b\u0159it pomoc\u00ed metody IResource.exists().<\/li>\n<li>N\u011bkter\u00e9 operace mohou b\u00fdt implementov\u00e1ny \u010dist\u011b na z\u00e1klad\u011b informac\u00ed ulo\u017een\u00fdch v samotn\u00e9m handle (takzvan\u00e9 handle-only operace). P\u0159\u00edklady zahrnuj\u00ed IResource.getParent(), getFullPath(), atd. Zdroje nemus\u00ed nutn\u011b existovat pro \u00fasp\u011b\u0161n\u00e9 proveden\u00ed takov\u00e9 operace. Operace, pro jejich\u017e \u00fasp\u011b\u0161n\u00e9 proveden\u00ed je po\u017eadov\u00e1no, aby zdroj existoval, vyhazuj\u00ed v\u00fdjimku (CoreException), pokud zdroj neexistuje.<\/li>\n<\/ul>\n<p>\nEclipse poskytuje efektivn\u00ed mechanismus oznamov\u00e1n\u00ed zm\u011bn zdroj\u016f pracovn\u00edho prostoru (obr. 3). Zdroje se mohou m\u011bnit jak v d\u016fsledku akc\u00ed prov\u00e1d\u011bn\u00fdch p\u0159\u00edmo v Eclipse IDE, tak v d\u016fsledku synchronizace se souborov\u00fdm syst\u00e9mem. V obou p\u0159\u00edpadech je klient\u016fm p\u0159ihl\u00e1\u0161en\u00fdm k odb\u011bru ozn\u00e1men\u00ed poskytov\u00e1na podrobn\u00e1 informace o zm\u011bn\u00e1ch ve form\u011b \u201edelta zdroje\u201c (resource delta). Delta popisuje zm\u011bny mezi dv\u011bma stavy (pod-)stromu zdroj\u016f pracovn\u00edho prostoru a sama je stromem, jeho\u017e ka\u017ed\u00fd uzel popisuje zm\u011bnu ur\u010dit\u00e9ho zdroje a obsahuje seznam delta na dal\u0161\u00ed \u00farovni, kter\u00e9 popisuj\u00ed zm\u011bny pod\u0159\u00edzen\u00fdch zdroj\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/8af412412ee97d205137ab70c8444a50.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 3. IResourceChangeEvent a IResourceDelta<\/b><\/p>\n<p>Na z\u00e1klad\u011b delta zdroj\u016f m\u00e1 mechanismus oznamov\u00e1n\u00ed n\u00e1sleduj\u00edc\u00ed vlastnosti:<\/p>\n<ul>\n<li>Jednotliv\u00e1 zm\u011bna a v\u00edce zm\u011bn jsou pops\u00e1ny pomoc\u00ed stejn\u00e9 struktury, proto\u017ee delta je konstruov\u00e1na na principu rekurzivn\u00ed kompozice. Klienti-p\u0159edplatitel\u00e9 mohou zpracov\u00e1vat ozn\u00e1men\u00ed o zm\u011bn\u00e1ch zdroj\u016f pomoc\u00ed rekurzivn\u00edho pr\u016fchodu stromem delta.<\/li>\n<li>Delta obsahuje \u00fapln\u00e9 informace o zm\u011bn\u011b zdroje, v\u010detn\u011b jeho p\u0159esunu a\/nebo zm\u011bny asociovan\u00fdch \u201emarker\u016f\u201c (nap\u0159\u00edklad chyby kompilace jsou p\u0159edstavov\u00e1ny jako markery).<\/li>\n<li>Jeliko\u017e odkazy na zdroj jsou realizov\u00e1ny prost\u0159ednictv\u00edm handle, m\u016f\u017ee delta p\u0159irozen\u011b odkazovat na odstran\u011bn\u00fd zdroj.<\/li>\n<\/ul>\n<p>\nJak brzy uvid\u00edme, hlavn\u00ed komponenty n\u00e1vrhu mechanismu oznamov\u00e1n\u00ed zm\u011bn modelu zdroj\u016f jsou relevantn\u00ed i pro dal\u0161\u00ed modely zalo\u017een\u00e9 na handle.<\/p>\n<h4>JDT Core<\/h4>\n<p>\nModel zdroj\u016f pracovn\u00edho prostoru Eclipse je z\u00e1kladn\u00edm jazykov\u011b nez\u00e1visl\u00fdm modelem. Komponenta JDT Core (plugin org.eclipse.jdt.core) poskytuje API pro navigaci a anal\u00fdzu struktury pracovn\u00edho prostoru z pohledu Java, takzvan\u00fd \u201eJava model\u201c (<i>Java model<\/i>). Toto API je definov\u00e1no v term\u00ednech Java prvk\u016f, na rozd\u00edl od ni\u017e\u0161\u00edho API modelu zdroj\u016f, kter\u00e9 je definov\u00e1no v term\u00ednech slo\u017eek a soubor\u016f. Hlavn\u00ed rozhran\u00ed stromu prvk\u016f Java jsou zobrazeny na obr. 4.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/67bfd31e93eaa66aa94b30281693a318.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 4. Prvky modelu Java<\/b><\/p>\n<p>Model Java pou\u017e\u00edv\u00e1 stejnou idiom handle\/body jako model zdroj\u016f (obr. 5). IJavaElement je handle, zat\u00edmco JavaElementInfo hraje roli body. Rozhran\u00ed IJavaElement definuje protokol, kter\u00fd je spole\u010dn\u00fd pro v\u0161echny prvky Java. N\u011bkter\u00e9 z jeho metod jsou pouze handle: getElementName(), getParent() atd. Objekt JavaElementInfo uchov\u00e1v\u00e1 stav odpov\u00eddaj\u00edc\u00edho prvku: jeho strukturu a atributy.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/5b473cccfc8f258d563033ce334cb94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 5. IJavaElement a JavaElementInfo<\/b><\/p>\n<p>Model Java m\u00e1 n\u011bkter\u00e9 odli\u0161nosti v realizaci z\u00e1kladn\u00edho designu handle\/body ve srovn\u00e1n\u00ed s modelem zdroj\u016f. Jak bylo zm\u00edn\u011bno v\u00fd\u0161e, v modelu zdroj\u016f je element tree, jeho\u017e uzly jsou objekty resource info, zcela ulo\u017een v pam\u011bti. Ale v modelu Java m\u016f\u017ee b\u00fdt v\u00fdrazn\u011b v\u00edce prvk\u016f ne\u017e v stromu zdroj\u016f, proto\u017ee representuje tak\u00e9 vnit\u0159n\u00ed strukturu .java a .class soubor\u016f: typy, pole a metody.<\/p>\n<p>Aby se p\u0159ede\u0161lo \u00fapln\u00e9 materializaci cel\u00e9ho stromu prvk\u016f v pam\u011bti, realizace modelu Java pou\u017e\u00edv\u00e1 omezenou velikost\u00ed LRU-cache element info, kde kl\u00ed\u010dem je handle IJavaElement. Objekty element info jsou vytv\u00e1\u0159eny na po\u017e\u00e1d\u00e1n\u00ed, jakmile prob\u00edh\u00e1 navigace stromem prvk\u016f. P\u0159itom jsou nejm\u00e9n\u011b pou\u017e\u00edvan\u00e9 prvky vytla\u010dov\u00e1ny z cache a spot\u0159eba pam\u011bti modelem z\u016fst\u00e1v\u00e1 omezena zadanou velikost\u00ed cache. To je dal\u0161\u00ed v\u00fdhoda designu na b\u00e1zi handle, kter\u00fd zcela skr\u00fdv\u00e1 takov\u00e9 detaily implementace p\u0159ed klientsk\u00fdm k\u00f3dem.<\/p>\n<p>Mechanismus notifikace o zm\u011bn\u00e1ch prvk\u016f Java je v obecn\u00fdch rysech analogick\u00fd v\u00fd\u0161e uveden\u00e9mu mechanismu sledov\u00e1n\u00ed zm\u011bn zdroj\u016f workspace. Klient, kter\u00fd chce sledovat zm\u011bny v modelu Java, se p\u0159ihla\u0161uje k notifikac\u00edm, kter\u00e9 jsou prezentov\u00e1ny ve form\u011b objektu ElementChangedEvent, kter\u00fd obsahuje IJavaElementDelta (obr. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/0402ec362078eaf50f47756e7f24de01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 6. ElementChangedEvent a IJavaElementDelta<\/b><\/p>\n<p>Model Java neobsahuje informace o t\u011ble metod nebo o n\u00e1zvy, proto pro podrobn\u00e9 anal\u00fdzy k\u00f3du napsan\u00e9ho v Java poskytuje JDT Core dal\u0161\u00ed (ne handle-based) model: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/articles\/Article-JavaCodeManipulation_AST\/index.html\">abstraktn\u00ed syntaktick\u00fd strom<\/a><\/noindex> (abstraktn\u00ed syntaktick\u00fd strom, AST). AST p\u0159edstavuje v\u00fdsledek syntaktick\u00e9 anal\u00fdzy zdrojov\u00e9ho textu. Uzly AST odpov\u00eddaj\u00ed prvk\u016fm struktury dan\u00e9ho modulu (prohl\u00e1\u0161en\u00ed, oper\u00e1tory, v\u00fdrazy atd.) a obsahuj\u00ed informace o sou\u0159adnic\u00edch odpov\u00eddaj\u00edc\u00edho prvku ve zdrojov\u00e9m textu, a tak\u00e9 (voliteln\u011b) informace o rozli\u0161en\u00ed n\u00e1zv\u016f ve form\u011b odkaz\u016f na tzv. <i>bindings<\/i>. Baindingy jsou objekty p\u0159edstavuj\u00edc\u00ed pojmenovan\u00e9 entity, jako jsou typy, metody a prom\u011bnn\u00e9, kter\u00e9 jsou zn\u00e1m\u00e9 p\u0159eklada\u010di. Na rozd\u00edl od uzl\u016f AST, kter\u00e9 tvo\u0159\u00ed strom, bindingy podporuj\u00ed k\u0159\u00ed\u017eov\u00e9 odkazy a obvykle vytv\u00e1\u0159ej\u00ed graf. Abstraktn\u00ed t\u0159\u00edda ASTNode je spole\u010dnou z\u00e1kladn\u00ed t\u0159\u00eddou pro v\u0161echny uzly AST. Podt\u0159\u00eddy ASTNode odpov\u00eddaj\u00ed konkr\u00e9tn\u00edm syntaktick\u00fdm konstrukc\u00edm jazyka Java.<\/p>\n<p>Jeliko\u017e syntaktick\u00e9 stromy mohou spot\u0159ebov\u00e1vat zna\u010dn\u00e9 mno\u017estv\u00ed pam\u011bti, JDT ukl\u00e1d\u00e1 do mezipam\u011bti pouze jeden AST pro aktivn\u00ed editor. Na rozd\u00edl od modelu Java se AST obvykle pova\u017euje za \"mezi\u010dl\u00e1nek\", \"do\u010dasn\u00fd\" model, jeho\u017e prvky by si klienti nem\u011bli uchov\u00e1vat odkazy mimo kontext akce, kter\u00e1 vedla k jeho vytvo\u0159en\u00ed.<\/p>\n<p>Uveden\u00e9 t\u0159i modely (Java model, AST, bindings) spole\u010dn\u011b tvo\u0159\u00ed z\u00e1klad pro v\u00fdvoj \"inteligentn\u00edch v\u00fdvojov\u00fdch n\u00e1stroj\u016f\" v JDT, mezi kter\u00fdmi je mocn\u00fd editor Java s r\u016fzn\u00fdmi \"asistenty\", r\u016fzn\u00e9 akce pro zpracov\u00e1n\u00ed zdrojov\u00e9ho k\u00f3du (mezi nimi organizace seznamu importu n\u00e1zv\u016f a form\u00e1tov\u00e1n\u00ed podle nastaven\u00e9ho stylu), n\u00e1stroje pro vyhled\u00e1v\u00e1n\u00ed a refaktoring. P\u0159i\u010dem\u017e model Java hraje zvl\u00e1\u0161tn\u00ed roli, proto\u017ee je pou\u017eit jako z\u00e1klad pro vizu\u00e1ln\u00ed zobrazen\u00ed struktury vyv\u00edjen\u00e9 aplikace (nap\u0159\u00edklad v Package Explorer, Outline, Search, Call Hierarchy a Type Hierarchy).<\/p>\n<h2>Komponenty Eclipse pou\u017e\u00edvan\u00e9 v 1C:Enterprise Development Tools<\/h2>\n<p>\nNa obr. 7 jsou zn\u00e1zorn\u011bny komponenty Eclipse, kter\u00e9 tvo\u0159\u00ed z\u00e1klad technologick\u00e9 platformy pro 1C:Enterprise Development Tools.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/248cceea47ee507b9ad22d6964738ee7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 7. Eclipse jako platforma pro 1C:Enterprise Development Tools<\/b><\/p>\n<p><b>Eclipse Platform<\/b> poskytuje z\u00e1kladn\u00ed infrastrukturu. N\u011bkter\u00e9 aspekty t\u00e9to infrastruktury jsme probrali v p\u0159edchoz\u00ed \u010d\u00e1sti.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/modeling\/emf\/\">Eclipse Modeling Framework<\/a><\/noindex><\/b> (<b>EMF<\/b>) poskytuje obecn\u00e9 n\u00e1stroje pro modelov\u00e1n\u00ed strukturovan\u00fdch dat. EMF je integrov\u00e1n s platformou Eclipse, ale m\u016f\u017ee b\u00fdt tak\u00e9 pou\u017e\u00edv\u00e1n samostatn\u011b, v b\u011b\u017en\u00fdch aplikac\u00edch Java. Pom\u011brn\u011b \u010dasto jsou za\u010d\u00ednaj\u00edc\u00ed v\u00fdvoj\u00e1\u0159i Eclipse ji\u017e dob\u0159e obezn\u00e1meni s EMF, i kdy\u017e je\u0161t\u011b \u00fapln\u011b nerozum\u00ed nuanc\u00edm platformy Eclipse. Jedn\u00edm z d\u016fvod\u016f t\u00e9to zaslou\u017een\u00e9 popularity je univerz\u00e1ln\u00ed design, kter\u00fd zahrnuje mimo jin\u00e9 tak\u00e9 sjednocen\u00e9 API meta\u00farovn\u011b, kter\u00e9 umo\u017e\u0148uje generalizovanou pr\u00e1ci s jak\u00fdmkoli modelem EMF. Poskytovan\u00e9 z\u00e1kladn\u00ed implementace EMF pro objekty modelu a subsyst\u00e9m generov\u00e1n\u00ed k\u00f3du modelu podle meta-modelu podstatn\u011b zvy\u0161uj\u00ed rychlost v\u00fdvoje a sni\u017euj\u00ed po\u010det chyb. EMF tak\u00e9 obsahuje mechanismy serializace model\u016f, sledov\u00e1n\u00ed zm\u011bn v modelu a mnoho dal\u0161\u00edho. <\/p>\n<p>Stejn\u011b jako ka\u017ed\u00fd skute\u010dn\u011b univerz\u00e1ln\u00ed n\u00e1stroj, EMF je vhodn\u00fd pro \u0159e\u0161en\u00ed \u0161irok\u00e9 \u0161k\u00e1ly \u00fakol\u016f spojen\u00fdch s modelov\u00e1n\u00edm, ale n\u011bkter\u00e9 t\u0159\u00eddy model\u016f (nap\u0159\u00edklad v\u00fd\u0161e zm\u00edn\u011bn\u00e9 modely zalo\u017een\u00e9 na handle) mohou pot\u0159ebovat specializovan\u011bj\u0161\u00ed modelovac\u00ed n\u00e1stroje. Mluvit o EMF je dosti vd\u011b\u010dn\u00fd \u00fakol, zejm\u00e9na v omezen\u00fdch r\u00e1mci jednoho \u010dl\u00e1nku, proto\u017ee to je t\u00e9ma samostatn\u00e9 knihy, a to docela objemn\u00e9. Upozorn\u00edme pouze na to, \u017ee kvalitn\u00ed syst\u00e9m generalizac\u00ed, kter\u00fd stoj\u00ed za EMF, umo\u017enil vznik cel\u00e9ho spektra projekt\u016f zam\u011b\u0159en\u00fdch na modelov\u00e1n\u00ed, kter\u00e9 pat\u0159\u00ed do projektu vy\u0161\u0161\u00ed \u00farovn\u011b. <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/modeling\/\">Eclipse Modeling<\/a><\/noindex> spolu s EMF samotn\u00fdm. Jedn\u00edm z takov\u00fdch projekt\u016f je Eclipse Xtext.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/Xtext\/\">Eclipse Xtext<\/a><\/noindex><\/b> poskytuje infrastrukturu pro 'textov\u00e9 modelov\u00e1n\u00ed'. Xtext vyu\u017e\u00edv\u00e1 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.antlr.org\/\">ANTLR<\/a><\/noindex> pro syntaktickou anal\u00fdzu zdrojov\u00e9ho textu a EMF pro reprezentaci v\u00fdsledn\u00e9ho ASG (abstraktn\u00edho s\u00e9mantick\u00e9ho grafu, kter\u00fd je v podstat\u011b kombinac\u00ed AST a bindings), naz\u00fdvan\u00e9ho tak\u00e9 \"s\u00e9mantick\u00fdm modelem\". Gramatika modelovan\u00e9ho jazyka pomoc\u00ed Xtext je pops\u00e1na vlastn\u00edm jazykem Xtext. To umo\u017e\u0148uje nejen generovat popis gramatiky pro ANTLR, ale tak\u00e9 z\u00edskat mechanismus serializace AST (tj. Xtext poskytuje jak parser, tak unparser), kontextov\u00e9 n\u00e1pov\u011bdy a \u0159adu dal\u0161\u00edch jazykov\u00fdch komponent. Na druh\u00e9 stran\u011b, jazyk popisu gramatiky pou\u017e\u00edvan\u00fd v Xtext je m\u00e9n\u011b flexibiln\u00ed ve srovn\u00e1n\u00ed s jazykem popisu gramatiky v ANTLR. Proto je n\u011bkdy nutn\u00e9 \"p\u0159izp\u016fsobit\" implementovan\u00fd jazyk Xtext, co\u017e obvykle nen\u00ed probl\u00e9m, pokud se jedn\u00e1 o jazyk vyv\u00edjen\u00fd od nuly, ale m\u016f\u017ee b\u00fdt nep\u0159ijateln\u00e9 pro jazyky s ji\u017e zavedenou syntax\u00ed. Navzdory tomu je Xtext v sou\u010dasnosti nejzralej\u0161\u00ed, funk\u010dn\u011b nejkompletn\u011bj\u0161\u00ed a nejuniverz\u00e1ln\u011bj\u0161\u00ed n\u00e1stroj v Eclipse pro vytv\u00e1\u0159en\u00ed programovac\u00edch jazyk\u016f a n\u00e1stroj\u016f pro n\u011b. Je to zejm\u00e9na ide\u00e1ln\u00ed n\u00e1stroj pro rychl\u00e9 prototypov\u00e1n\u00ed. <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\">p\u0159edm\u011btov\u011b orientovan\u00fdch jazyk\u016f<\/a><\/noindex> (domain-specific language, DSL). Krom\u011b zm\u00edn\u011bn\u00e9ho \"jazykov\u00e9ho j\u00e1dra\" na z\u00e1klad\u011b ANTLR a EMF, Xtext poskytuje \u0159adu u\u017eite\u010dn\u00fdch komponent na vy\u0161\u0161\u00ed \u00farovni, v\u010detn\u011b mechanism\u016f indexov\u00e1n\u00ed, inkrement\u00e1ln\u00edho budov\u00e1n\u00ed, \"inteligentn\u00edho editoru\" a mnoha dal\u0161\u00edch, ale vynech\u00e1v\u00e1 jazykov\u00e9 modely zalo\u017een\u00e9 na handle. Stejn\u011b jako EMF je Xtext p\u0159edm\u011btem hodn\u00fdm cel\u00e9 knihy a t\u011b\u017eko bychom mohli i jen letmo p\u0159ehledn\u011bji p\u0159ibl\u00ed\u017eit v\u0161echny jeho mo\u017enosti.<\/p>\n<p>1C:Enterprise Development Tools aktivn\u011b vyu\u017e\u00edvaj\u00ed jak EMF samotn\u00e9, tak i \u0159adu dal\u0161\u00edch projekt\u016f Eclipse Modeling. Konkr\u00e9tn\u011b, Xtext je jedn\u00edm ze z\u00e1klad\u016f n\u00e1stroj\u016f pro v\u00fdvoj pro jazyky 1C:Enterprise, jako je integrovan\u00fd programovac\u00ed jazyk a jazyk dotaz\u016f. Dal\u0161\u00edm z\u00e1kladem t\u011bchto n\u00e1stroj\u016f je projekt Eclipse Handly, na kter\u00e9m se podrobn\u011bji zastav\u00edme (z uveden\u00fdch komponent Eclipse je zat\u00edm nejslab\u011bji zn\u00e1m\u00fd).<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex><\/b>, podprojekt nad\u0159azen\u00e9ho projektu Eclipse Technology vznikl d\u00edky po\u010d\u00e1te\u010dn\u00edmu p\u0159isp\u011bn\u00ed k\u00f3du do Eclipse Foundation, kter\u00e9 provedla spole\u010dnost 1C v roce 2014. Od t\u00e9 doby spole\u010dnost 1C pokra\u010duje v podpo\u0159e v\u00fdvoje projektu: komit\u00e1to\u0159i Handly jsou zam\u011bstnanci spole\u010dnosti. Projekt je mal\u00fd, ale zauj\u00edm\u00e1 dostate\u010dn\u011b unik\u00e1tn\u00ed m\u00edsto v Eclipse: jeho hlavn\u00edm c\u00edlem je podpora v\u00fdvoje model\u016f zalo\u017een\u00fdch na handlech.<\/p>\n<p>Hlavn\u00ed architektonick\u00e9 principy model\u016f zalo\u017een\u00fdch na handlech, jako je idiom handle\/body, byly uvedeny v\u00fd\u0161e na p\u0159\u00edkladu modelu zdroj\u016f a modelu Java. Tak\u00e9 bylo zm\u00edn\u011bno, \u017ee jak model zdroj\u016f, tak i model Java jsou v\u00fdznamn\u00e9 z\u00e1klady pro Eclipse Java Development Tools (JDT). A proto\u017ee v\u011bt\u0161ina projekt\u016f *DT v Eclipse m\u00e1 podobnou architekturu jako JDT, nebude velk\u00fdm p\u0159eh\u00e1n\u011bn\u00edm \u0159\u00edci, \u017ee modely zalo\u017een\u00e9 na handlech le\u017e\u00ed v z\u00e1kladech mnoha, ne-li v\u0161ech IDE, postaven\u00fdch na platform\u011b Eclipse. Nap\u0159\u00edklad v Eclipse C\/C++ Development Tooling (CDT) existuje model C\/C++ zalo\u017een\u00fd na handlech, kter\u00fd v architektu\u0159e CDT pln\u00ed stejnou roli jako model Java v JDT.<\/p>\n<p>P\u0159ed p\u0159\u00edchodem Handly Eclipse nenab\u00edzel specializovan\u00e9 knihovny pro v\u00fdstavbu jazykov\u00fdch model\u016f zalo\u017een\u00fdch na handlech. Existuj\u00edc\u00ed modely byly vytv\u00e1\u0159eny p\u0159ev\u00e1\u017en\u011b p\u0159\u00edmo adaptac\u00ed k\u00f3du modelu Java (zn\u00e1m\u00e9 jako copy\/paste), <i>v t\u011bch p\u0159\u00edpadech, kdy to umo\u017e\u0148uje<\/i> Eclipse Public License (EPL). (Je jasn\u00e9, \u017ee pro projekty samotn\u00e9ho Eclipse to obvykle nep\u0159edstavuje pr\u00e1vn\u00ed probl\u00e9m, co\u017e se ned\u00e1 \u0159\u00edci o produktech s uzav\u0159en\u00fdm zdrojov\u00fdm k\u00f3dem.) Krom\u011b typick\u00e9 bezsyst\u00e9movosti tato metoda vede k dob\u0159e zn\u00e1m\u00fdm probl\u00e9m\u016fm: duplicita k\u00f3du, chyby p\u0159enesen\u00e9 p\u0159i adaptaci atd. Co je je\u0161t\u011b hor\u0161\u00ed, v\u00fdsledn\u00e9 modely z\u016fst\u00e1vaj\u00ed \"v\u011bc\u00ed v sob\u011b\" a nevyu\u017e\u00edvaj\u00ed existuj\u00edc\u00ed potenci\u00e1l pro unifikaci. A p\u0159itom by vymezen\u00ed spole\u010dn\u00fdch koncept\u016f a protokol\u016f pro jazykov\u00e9 modely zalo\u017een\u00e9 na handlech mohlo v\u00e9st k vytvo\u0159en\u00ed opakovan\u011b pou\u017eiteln\u00fdch komponent pro pr\u00e1ci s nimi, podobn\u011b jako tomu bylo v p\u0159\u00edpad\u011b EMF.<\/p>\n<p>Nelze \u0159\u00edci, \u017ee v Eclipse nebylo pochopen\u00ed t\u011bchto probl\u00e9m\u016f. Ji\u017e v roce 2005 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.xing.com\/profile\/Martin_Aeschlimann\">Martin Aeschlimann<\/a><\/noindex>, shrnuj\u00edc\u00ed zku\u0161enosti s v\u00fdvojem prototypu CDT, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/org\/langsymp\/position_paper_martin_aeschlimann.html\">argumentoval<\/a><\/noindex> pot\u0159eba vytvo\u0159en\u00ed spole\u010dn\u00e9 infrastruktury pro jazykov\u00e9 modely, v\u010detn\u011b model\u016f zalo\u017een\u00fdch na handlech. Jak to v\u0161ak \u010dasto b\u00fdv\u00e1, kv\u016fli prioritn\u011bj\u0161\u00edm \u00fakol\u016fm se realizace t\u011bchto my\u0161lenek tehdy nedo\u010dkala. Mezit\u00edm faktorov\u00e1n\u00ed k\u00f3du *DT projekt\u016f st\u00e1le z\u016fst\u00e1v\u00e1 jedn\u00edm z nedostate\u010dn\u011b prozkouman\u00fdch t\u00e9mat v Eclipse.<\/p>\n<p>V jist\u00e9m smyslu je projekt Handly navr\u017een tak, aby \u0159e\u0161il p\u0159ibli\u017en\u011b stejn\u00e9 \u00fakoly jako EMF, ale pro modely zalo\u017een\u00e9 na handlech, p\u0159i\u010dem\u017e se zam\u011b\u0159uje p\u0159edev\u0161\u00edm na jazykov\u00e9 modely (tj. reprezentuj\u00edc\u00ed prvky struktury ur\u010dit\u00e9ho programovac\u00edho jazyka). N\u00ed\u017ee jsou uvedeny hlavn\u00ed c\u00edle, kter\u00e9 byly stanoveny p\u0159i n\u00e1vrhu Handly:<\/p>\n<ul>\n<li>Vymezen\u00ed hlavn\u00edch abstrakc\u00ed dom\u00e9ny.<\/li>\n<li>Sn\u00ed\u017een\u00ed \u00fasil\u00ed a zv\u00fd\u0161en\u00ed kvality implementace jazykov\u00fdch model\u016f zalo\u017een\u00fdch na handlech d\u00edky op\u011btovn\u00e9mu pou\u017e\u00edv\u00e1n\u00ed k\u00f3du.<\/li>\n<li>Poskytnut\u00ed jednotn\u00e9ho API meta\u00farovn\u011b k v\u00fdsledn\u00fdm model\u016fm, co\u017e umo\u017e\u0148uje vytv\u00e1\u0159en\u00ed spole\u010dn\u00fdch komponent IDE, kter\u00e9 pracuj\u00ed s jazykov\u00fdmi modely zalo\u017een\u00fdmi na handlech.<\/li>\n<li>Flexibilita a \u0161k\u00e1lovatelnost.<\/li>\n<li>Integrace s Xtext (v samostatn\u00e9 vrstv\u011b).<\/li>\n<\/ul>\n<p>\nPro vymezen\u00ed spole\u010dn\u00fdch pojm\u016f a protokol\u016f byly analyzov\u00e1ny existuj\u00edc\u00ed implementace jazykov\u00fdch model\u016f zalo\u017een\u00fdch na handlech. Hlavn\u00ed rozhran\u00ed a z\u00e1kladn\u00ed implementace poskytovan\u00e9 Handly jsou zn\u00e1zorn\u011bny na obr. 8.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/47f4bf74093245334b8d67b149734dfc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 8. Spole\u010dn\u00e1 rozhran\u00ed a z\u00e1kladn\u00ed implementace prvk\u016f Handly<\/b><\/p>\n<p>Rozhran\u00ed IElement p\u0159edstavuje handle prvku a je spole\u010dn\u00e9 pro prvky v\u0161ech model\u016f zalo\u017een\u00fdch na Handly. Abstraktn\u00ed t\u0159\u00edda Element implementuje obecn\u00fd mechanismus handle\/body (obr. 9).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/0651c1f284b7edfa36313d4b51d72f08.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 9. IElement a obecn\u00e1 implementace handle\/body<\/b><\/p>\n<p>Krom\u011b toho Handly poskytuje obecn\u00fd mechanismus notifikace o zm\u011bn\u011b prvk\u016f modelu (obr. 10). Jak lze vid\u011bt, v obecn\u00fdch rysech je podobn\u00fd mechanizm\u016fm notifikace implementovan\u00fdm v modelu prost\u0159edk\u016f a Java modelu, a pou\u017e\u00edv\u00e1 IElementDelta pro jednotn\u00e9 zobrazen\u00ed informac\u00ed o zm\u011bn\u011b prvku.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse jako technologick\u00e1 platforma pro 1C:Enterprise Development Tools\" src=\"\/wp-content\/uploads\/2019\/04\/cbdec8cf874308e0fa9dd96d04f62703.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Obr. 10. Spole\u010dn\u00e1 rozhran\u00ed a z\u00e1kladn\u00ed implementace notifika\u010dn\u00edho mechanismu Handly<\/b><\/p>\n<p>V\u00fd\u0161e uveden\u00e1 \u010d\u00e1st Handly (obr. 9 a 10) m\u016f\u017ee b\u00fdt pou\u017eita pro reprezentaci prakticky jak\u00fdchkoliv model\u016f zalo\u017een\u00fdch na handlech. Pro vytv\u00e1\u0159en\u00ed <i>jazykov\u00fdch<\/i> model\u016f projekt nab\u00edz\u00ed dal\u0161\u00ed funk\u010dnost \u2013 konkr\u00e9tn\u011b spole\u010dn\u00e1 rozhran\u00ed a z\u00e1kladn\u00ed implementace pro prvky struktury zdrojov\u00e9ho textu, takzvan\u00e9 <i>source elements<\/i> (obr. 8). Rozhran\u00ed ISourceFile p\u0159edstavuje zdrojov\u00fd soubor, zat\u00edmco ISourceConstruct \u2013 prvek ve zdrojov\u00e9m souboru. Abstraktn\u00ed t\u0159\u00eddy SourceFile a SourceConstruct implementuj\u00ed generick\u00e9 mechanismy pro podporu pr\u00e1ce se zdrojov\u00fdmi soubory a jejich prvky, nap\u0159\u00edklad pr\u00e1ci s textov\u00fdmi buffery, vazbu na sou\u0159adnice prvku v p\u016fvodn\u00edm textu, usmi\u0159ov\u00e1n\u00ed modelu s aktu\u00e1ln\u00edm obsahem pracovn\u00edho buffera atd. Implementace t\u011bchto mechanism\u016f b\u00fdv\u00e1 obvykle dost slo\u017eit\u00fdm \u00fakolem a Handly m\u016f\u017ee v\u00fdznamn\u011b zkr\u00e1tit \u00fasil\u00ed o v\u00fdvoj jazykov\u00fdch model\u016f zalo\u017een\u00fdch na handlech d\u00edky poskytov\u00e1n\u00ed kvalitn\u00edch z\u00e1kladn\u00edch implementac\u00ed.<\/p>\n<p>Krom\u011b uveden\u00fdch z\u00e1kladn\u00edch mechanism\u016f Handly poskytuje infrastrukturu pro textov\u00e9 buffery a \u201esn\u00edmky\u201c (snapshots), podporu integrace s editory zdrojov\u00e9ho k\u00f3du (v\u010detn\u011b p\u0159edem implementovan\u00e9 integrace s editorem Xtext) a tak\u00e9 n\u011bkter\u00e9 obecn\u00e9 komponenty UI, kter\u00e9 pracuj\u00ed s modely zalo\u017een\u00fdmi na Handly, jako je framework outline. Pro ilustraci sv\u00fdch schopnost\u00ed projekt poskytuje n\u011bkolik p\u0159\u00edklad\u016f, v\u010detn\u011b implementace modelu Java na Handly. (Ve srovn\u00e1n\u00ed s \u00faplnou implementac\u00ed Java-modelu v JDT je tento model z\u00e1m\u011brn\u011b pon\u011bkud zjednodu\u0161en pro v\u011bt\u0161\u00ed p\u0159ehlednost.)<\/p>\n<p>Jak bylo zm\u00edn\u011bno d\u0159\u00edve, v\u00e1\u017en\u00e1 pozornost p\u0159i po\u010d\u00e1te\u010dn\u00edm projektov\u00e1n\u00ed Handly a jeho dal\u0161\u00edm rozvoji byla a nad\u00e1le je v\u011bnov\u00e1na \u0161k\u00e1lovatelnosti a flexibilit\u011b. <\/p>\n<p>V principu jsou modely zalo\u017een\u00e9 na handlech pom\u011brn\u011b dob\u0159e \u0161k\u00e1lovateln\u00e9 \u201ez v\u00fdroby\u201c. Nap\u0159\u00edklad idiom handle\/body umo\u017e\u0148uje omezit mno\u017estv\u00ed pam\u011bti spot\u0159ebovan\u00e9 modelem. Existuj\u00ed v\u0161ak i nuance. B\u011bhem testov\u00e1n\u00ed Handly na \u0161k\u00e1lovatelnost se objevila v realizaci mechanismu notifikace probl\u00e9m \u2013 p\u0159i zm\u011bn\u011b velk\u00e9ho po\u010dtu prvk\u016f zab\u00edralo sestaven\u00ed delta p\u0159\u00edli\u0161 mnoho \u010dasu. Uk\u00e1zalo se, \u017ee stejn\u00fd probl\u00e9m se nach\u00e1z\u00ed tak\u00e9 v Java-modelu JDT, ze kter\u00e9ho byl v minulosti adaptov\u00e1n odpov\u00eddaj\u00edc\u00ed k\u00f3d. Opravy chyby v Handly byly provedeny a p\u0159ipravil se podobn\u00fd patch pro JDT, kter\u00fd byl s vd\u011b\u010dnost\u00ed p\u0159ijat. To je pouze jeden z p\u0159\u00edklad\u016f, kdy by implementace Handly do st\u00e1vaj\u00edc\u00edch realizac\u00ed model\u016f mohla b\u00fdt potenci\u00e1ln\u011b u\u017eite\u010dn\u00e1, proto\u017ee v tomto p\u0159\u00edpad\u011b by bylo mo\u017en\u00e9 takovou chybu opravit pouze na jednom m\u00edst\u011b.<\/p>\n<p>Aby bylo mo\u017en\u00e9 technicky integrovat Handly do st\u00e1vaj\u00edc\u00edch implementac\u00ed model\u016f, mus\u00ed m\u00edt knihovna zna\u010dnou flexibilitu. Hlavn\u00edm probl\u00e9mem je zachov\u00e1n\u00ed zp\u011btn\u00e9 kompatibility API modelu. Tento \u00fakol byl vy\u0159e\u0161en <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/NewIn05\">Handly 0.5<\/a><\/noindex> \u010dist\u00fdm odd\u011blen\u00edm specifick\u00e9ho pro model API, kter\u00e9 je definov\u00e1no a pln\u011b kontrolov\u00e1no vyv\u00edjej\u00edc\u00edm, od unifikovan\u00e9ho API meta\u00farovn\u011b, kter\u00e9 poskytuje knihovna. To nejen usnad\u0148uje technickou integraci Handly do st\u00e1vaj\u00edc\u00edch implementac\u00ed, ale tak\u00e9 d\u00e1v\u00e1 v\u00fdvoj\u00e1\u0159i nov\u00e9ho modelu zna\u010dnou svobodu p\u0159i navrhov\u00e1n\u00ed API.<\/p>\n<p>Flexibilita m\u00e1 i dal\u0161\u00ed aspekty. Nap\u0159\u00edklad Handly t\u00e9m\u011b\u0159 neomezuje strukturu modelu a m\u016f\u017ee b\u00fdt pou\u017eit jak pro modelov\u00e1n\u00ed jazyk\u016f obecn\u00e9ho ur\u010den\u00ed, tak i pro jazyky zam\u011b\u0159en\u00e9 na konkr\u00e9tn\u00ed p\u0159edm\u011bty. P\u0159i sestavov\u00e1n\u00ed struktury zdrojov\u00e9ho souboru Handly nep\u0159edepisuje \u017e\u00e1dnou konkr\u00e9tn\u00ed formu reprezentace AST a vlastn\u011b ani nevy\u017eaduje samotnou existenci AST, t\u00edm p\u00e1dem zaji\u0161\u0165uje kompatibilitu s prakticky jak\u00fdmikoliv mechanismy syntaktick\u00e9 anal\u00fdzy. Nakonec Handly podporuje plnou integraci s pracovn\u00edm prostorem Eclipse, ale tak\u00e9 m\u016f\u017ee pracovat p\u0159\u00edmo s souborov\u00fdmi syst\u00e9my, d\u00edky integraci s <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/EFS\">Eclipse File System<\/a><\/noindex> (EFS).<\/p>\n<p>Aktu\u00e1ln\u00ed verze <noindex><a rel=\"nofollow\" href=\"https:\/\/projects.eclipse.org\/projects\/technology.handly\/releases\/0.6\">Handly 0.6<\/a><\/noindex> byla vyd\u00e1na v prosinci 2016. P\u0159esto\u017ee projekt je nyn\u00ed ve st\u00e1diu inkubace a API je\u0161t\u011b nen\u00ed definitivn\u011b stanoveno, Handly se ji\u017e pou\u017e\u00edv\u00e1 ve dvou velk\u00fdch komer\u010dn\u00edch produktech, kter\u00e9 se odv\u00e1\u017eily st\u00e1t se \u201ebrzk\u00fdmi adoptery\u201c a zat\u00edm nelituj\u00ed.<\/p>\n<p>Jak ji\u017e bylo zm\u00edn\u011bno, jedn\u00edm z t\u011bchto produkt\u016f jsou 1C:Enterprise Development Tools, kde se Handly od sam\u00e9ho za\u010d\u00e1tku pou\u017e\u00edv\u00e1 k modelov\u00e1n\u00ed prvk\u016f vysoce \u00farov\u0148ov\u00e9 struktury jazyk\u016f 1C:Enterprise, jako je vestav\u011bn\u00fd programovac\u00ed jazyk a jazyk dotaz\u016f. Druh\u00fd produkt je m\u00e9n\u011b zn\u00e1m \u0161irok\u00e9 ve\u0159ejnosti. Je to <noindex><a rel=\"nofollow\" href=\"https:\/\/www.codasip.com\/custom-processor\/\">Codasip Studio<\/a><\/noindex>, integrovan\u00e9 prost\u0159ed\u00ed pro n\u00e1vrh procesor\u016f c\u00edlen\u00e9ho zam\u011b\u0159en\u00ed (application-specific instruction-set processor, ASIP), pou\u017e\u00edvan\u00e9 jak uvnit\u0159 samotn\u00e9 \u010desk\u00e9 spole\u010dnosti Codasip, tak jej\u00edmi klienty, mezi kter\u00fdmi jsou <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 pou\u017e\u00edv\u00e1 Handly v produkci od roku 2015, po\u010d\u00ednaje verz\u00ed Handly 0.2. Posledn\u00ed verze Codasip Studio aktu\u00e1ln\u011b vyu\u017e\u00edv\u00e1 verzi 0.5, kter\u00e1 byla uvedena na trh v \u010dervnu 2016. Ond\u0159ej Il\u010d\u00edk, vedouc\u00ed v\u00fdvoje IDE v Codasip, je v kontaktu s projektem a poskytuje velmi d\u016fle\u017eitou zp\u011btnou vazbu jako \"extern\u00ed adapt\u00e9r\". Dokonce se mu poda\u0159ilo naj\u00edt trochu voln\u00e9ho \u010dasu, aby se p\u0159\u00edmo pod\u00edlel na v\u00fdvoji projektu, a to implementac\u00ed vrstvy UI (~ 4000 \u0159\u00e1dk\u016f k\u00f3du) pro jeden z p\u0159\u00edklad\u016f Handly, model Java. Podrobn\u011bj\u0161\u00ed informace \"z prvn\u00ed ruky\" o pou\u017e\u00edv\u00e1n\u00ed Handly adapt\u00e9r\u016fm lze z\u00edskat na str\u00e1nce <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/Adopters\">\u00dasp\u011b\u0161n\u00e9 p\u0159\u00edb\u011bhy<\/a><\/noindex> projektu.<\/p>\n<p>Douf\u00e1me, \u017ee po vyd\u00e1n\u00ed verze 1.0 s garanc\u00ed stability API a po ukon\u010den\u00ed inkuba\u010dn\u00ed f\u00e1ze se Handly do\u010dk\u00e1 nov\u00fdch adapt\u00e9r\u016f. Zat\u00edm projekt pokra\u010duje ve stabilizaci a dal\u0161\u00edm vylep\u0161ov\u00e1n\u00ed API, vyd\u00e1vaj\u00edc\u00ed dva \"velk\u00e9\" releasy ro\u010dn\u011b \u2013 v \u010dervnu (ve stejn\u00fd den jako sou\u010dasn\u00fd release Eclipse) a v prosinci, \u010d\u00edm\u017e zaji\u0161\u0165uje p\u0159edv\u00eddateln\u00fd harmonogram, na kter\u00fd se mohou adapteri spolehnout. D\u00e1le lze zm\u00ednit, \u017ee m\u00edra \"chybn\u00fdch hl\u00e1\u0161en\u00ed\" projektu z\u016fst\u00e1v\u00e1 na stabiln\u011b n\u00edzk\u00e9 \u00farovni a Handly od prvn\u00edch verz\u00ed spolehliv\u011b funguje v produktech ran\u00fdch adapter\u016f. Pro dal\u0161\u00ed sezn\u00e1men\u00ed s Eclipse Handly lze vyu\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pisv\/gethandly\/wiki\">\u00davodn\u00ed tutori\u00e1l<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/downloads\/download.php?file=\/handly\/docs\/handly-overview.pdf&amp;r=1\">Architektonick\u00fd p\u0159ehled<\/a><\/noindex>.<br \/>\n<br \/>Zdroj: <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.3 - 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\/cs\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 jako technologick\u00e1 platforma pro v\u00fdvojov\u00e9 n\u00e1stroje 1C:Enterprise | ProHoster","description":"Eclipse u\u017e pravd\u011bpodobn\u011b nepot\u0159ebuje zvl\u00e1\u0161tn\u00ed p\u0159edstaven\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/32464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=32464"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/24268"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=32464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=32464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=32464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}