{"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\/hu\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","title":{"rendered":"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Val\u00f3sz\u00edn\u0171leg, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/\">Eclipse<\/a><\/noindex> m\u00e1r r\u00e9g\u00f3ta nem szorul k\u00fcl\u00f6n\u00f6sebb bemutat\u00e1sra. Sokan ismerik az Eclipse-t az Eclipse Java fejleszt\u0151i eszk\u00f6zein kereszt\u00fcl (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/jdt\/\">JDT<\/a><\/noindex>). Ez a n\u00e9pszer\u0171, ny\u00edlt forr\u00e1sk\u00f3d\u00fa Java IDE a legt\u00f6bb fejleszt\u0151 sz\u00e1m\u00e1ra az \"Eclipse\" sz\u00f3val t\u00e1rsul. Az Eclipse azonban egy b\u0151v\u00edthet\u0151 platform is a fejleszt\u0151i eszk\u00f6z\u00f6k integr\u00e1l\u00e1s\u00e1ra (Eclipse Platform), valamint sz\u00e1mos IDE, amely erre alapozva k\u00e9sz\u00fclt, k\u00f6zt\u00fck a JDT. Az Eclipse egy Eclipse Project is, amely a legfels\u0151 szint\u0171 projekt, amely koordin\u00e1lja az Eclipse Platform \u00e9s a JDT fejleszt\u00e9s\u00e9t, \u00e9s az Eclipse SDK \u2013 amely ennek a fejleszt\u00e9snek a kimenete. V\u00e9g\u00fcl az Eclipse egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa alap\u00edtv\u00e1ny hatalmas k\u00f6z\u00f6ss\u00e9ggel, amelynek nem minden projektje \u00edr\u00f3dott Java nyelven vagy kapcsol\u00f3dik a fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z (p\u00e9ld\u00e1ul projektek <noindex><a rel=\"nofollow\" href=\"https:\/\/iot.eclipse.org\/\">Eclipse IoT<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/science.eclipse.org\/\">Eclipse Science<\/a><\/noindex>). Az Eclipse vil\u00e1ga nagyon soksz\u00edn\u0171.<\/p>\n<p>Ebben a cikkben, amely \u00f6sszefoglal\u00f3 jelleg\u0171, megpr\u00f3b\u00e1ljuk \u00e1ttekinteni az Eclipse architekt\u00far\u00e1j\u00e1nak n\u00e9h\u00e1ny alapelv\u00e9t mint platformnak az integr\u00e1lt fejleszt\u0151i eszk\u00f6z\u00f6k l\u00e9trehoz\u00e1s\u00e1hoz, \u00e9s alapvet\u0151 k\u00e9pet adni az Eclipse komponenseir\u0151l, amelyek a 1C: V\u00e1llalat \u00faj konfigur\u00e1tor\u00e1hoz sz\u00fcks\u00e9ges technol\u00f3giai platform alapj\u00e1t k\u00e9pezik, <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/release_IDE\/\">1C:Enterprise Fejleszt\u0151i Eszk\u00f6z\u00f6k<\/a><\/noindex>. Term\u00e9szetesen ez a megfontol\u00e1s elker\u00fclhetetlen\u00fcl fel\u00fcletes \u00e9s meglehet\u0151sen korl\u00e1tozott lesz, r\u00e9szben az\u00e9rt is, mert a c\u00e9lk\u00f6z\u00f6ns\u00e9g\u00fcnk nemcsak Eclipse-fejleszt\u0151k. Rem\u00e9lj\u00fck azonban, hogy m\u00e9g a tapasztalt Eclipse-fejleszt\u0151k is tal\u00e1lhatnak az \u00edr\u00e1sban \u00e9rdekes inform\u00e1ci\u00f3kat. P\u00e9ld\u00e1ul mes\u00e9lni fogunk az Eclipse egyik \"titk\u00e1r\u00f3l\", egy viszonylag \u00faj \u00e9s m\u00e9g kev\u00e9sb\u00e9 ismert projektr\u0151l, <noindex><a rel=\"nofollow\" href=\"http:\/\/eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex>, amelyet a 1C c\u00e9g alap\u00edtott \u00e9s t\u00e1mogat.<br \/>\n<img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" 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>Bevezet\u00e9s az Eclipse architekt\u00far\u00e1j\u00e1ba<\/h2>\n<p>\nEl\u0151sz\u00f6r n\u00e9zz\u00fck meg az Eclipse architekt\u00far\u00e1j\u00e1nak n\u00e9h\u00e1ny \u00e1ltal\u00e1nos aspektus\u00e1t a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/jdt\/overview.php\">Eclipse Java fejleszt\u0151i eszk\u00f6z\u00f6k<\/a><\/noindex> (JDT) p\u00e9ld\u00e1j\u00e1n kereszt\u00fcl. A JDT kiv\u00e1laszt\u00e1sa mint p\u00e9lda nem v\u00e9letlen. Ez volt az els\u0151 integr\u00e1lt fejleszt\u0151i k\u00f6rnyezet, amely megjelent az Eclipse-ben. A t\u00f6bbi Eclipse *DT projekt, mint p\u00e9ld\u00e1ul az Eclipse C\/C++ Development Tooling (CDT), k\u00e9s\u0151bb k\u00e9sz\u00fclt, \u00e9s \u00e1tvett\u00e9k a f\u0151 architektur\u00e1lis elveket, valamint egyes forr\u00e1sk\u00f3d-fragmentumokat a JDT-b\u0151l. A JDT-ben lefektetett architektur\u00e1lis alapelvek ma is \u00e9rv\u00e9nyesek szinte minden, az Eclipse Platformra \u00e9p\u00fcl\u0151 IDE-re, bele\u00e9rtve az 1C: V\u00e1llalat Fejleszt\u0151i Eszk\u00f6zeit is.<\/p>\n<p>El\u0151sz\u00f6r is meg kell eml\u00edten\u00fcnk, hogy az Eclipse-re a viszonylag tiszta architektur\u00e1lis r\u00e9tegz\u0151d\u00e9s jellemz\u0151, amely elv\u00e1lasztja a nyelvf\u00fcggetlen funkci\u00f3kat a konkr\u00e9t programoz\u00e1si nyelvek t\u00e1mogat\u00e1s\u00e1ra szolg\u00e1l\u00f3 funkci\u00f3kt\u00f3l, valamint a UI-f\u00fcggetlen \"mag\" (core) komponenseket a felhaszn\u00e1l\u00f3i fel\u00fclet t\u00e1mogat\u00e1s\u00e1val kapcsolatos komponensekt\u0151l.<\/p>\n<p>\u00cdgy az Eclipse Platform meghat\u00e1rozza az \u00e1ltal\u00e1nos, nyelvf\u00fcggetlen infrastrukt\u00far\u00e1t, m\u00edg a Java fejleszt\u0151i eszk\u00f6z\u00f6k teljes funkcionalit\u00e1s\u00fa Java IDE-t adnak az Eclipse-hez. Mind az Eclipse Platform, mind a JDT t\u00f6bb komponensb\u0151l \u00e1ll, amelyek mindegyike vagy az UI-f\u00fcggetlen \"maghoz\", vagy az UI r\u00e9teghez tartozik (1. \u00e1bra).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/230825124962e721ecca7dfb7dee9a0c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>1. \u00e1bra. Eclipse Platform \u00e9s JDT<\/b><\/p>\n<p>Soroljunk fel n\u00e9h\u00e1ny alapvet\u0151 komponenst az Eclipse Platformb\u00f3l:<\/p>\n<ul>\n<li><b>Runtime<\/b> \u2014 Meghat\u00e1rozza a plugin-infrastrukt\u00far\u00e1t. Az Eclipse jellemz\u0151je a modul\u00e1ris architekt\u00fara. Tulajdonk\u00e9ppen az Eclipse egy \"kiterjeszt\u00e9si pontok\" \u00e9s \"kiterjeszt\u00e9sek\" gy\u0171jtem\u00e9nye.<\/li>\n<li><b>Workspace<\/b> \u2014 Kezel egy vagy t\u00f6bb projektet. A projekt mapp\u00e1kb\u00f3l \u00e9s f\u00e1jlokb\u00f3l \u00e1ll, amelyek k\u00f6zvetlen\u00fcl a f\u00e1jlrendszeren jelennek meg.<\/li>\n<li><b>Standard Widget Toolkit (SWT)<\/b> \u2014 Alapvet\u0151 felhaszn\u00e1l\u00f3i fel\u00fclet elemeket biztos\u00edt, amelyek integr\u00e1lva vannak az oper\u00e1ci\u00f3s rendszerrel.<\/li>\n<li><b>JFace<\/b> \u2014 Sz\u00e1mos UI keretrendszert k\u00edn\u00e1l, amelyek az SWT-re \u00e9p\u00fclnek.<\/li>\n<li><b>Workbench<\/b> \u2014 Meghat\u00e1rozza az Eclipse UI-paradigmat: szerkeszt\u0151k, n\u00e9zetek, perspekt\u00edv\u00e1k.<\/li>\n<\/ul>\n<p>\nMeg kell eml\u00edteni, hogy az Eclipse Platform sz\u00e1mos m\u00e1s hasznos komponenst is biztos\u00edt az integr\u00e1lt fejleszt\u0151i eszk\u00f6z\u00f6k fel\u00e9p\u00edt\u00e9s\u00e9hez, k\u00f6zt\u00fck a Debug, Compare, Search \u00e9s Team megold\u00e1sokat. K\u00fcl\u00f6n eml\u00edt\u00e9st \u00e9rdemel a JFace Text \u2013 az \"intelligens forr\u00e1sk\u00f3d-szerkeszt\u0151k\" alapja. Sajnos, m\u00e9g a komponensek \u00e1ttanulm\u00e1nyoz\u00e1sa, ak\u00e1rcsak a UI r\u00e9teg komponensei\u00e9, nem lehets\u00e9ges ebben a cikk keret\u00e9ben, ez\u00e9rt a fejezet h\u00e1tral\u00e9v\u0151 r\u00e9sz\u00e9ben az Eclipse Platform \u00e9s a JDT alapvet\u0151 \"mag\" komponenseinek \u00e1ttekint\u00e9s\u00e9re korl\u00e1toz\u00f3dunk.<\/p>\n<h4>Core Runtime<\/h4>\n<p>\nAz Eclipse plugin infrastrukt\u00far\u00e1ja az <noindex><a rel=\"nofollow\" href=\"https:\/\/www.osgi.org\/developer\/specifications\/\">OSGi<\/a><\/noindex> -n alapul, \u00e9s az <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/equinox\/\">Eclipse Equinox<\/a><\/noindex>projekten kereszt\u00fcl biztos\u00edtott. Minden Eclipse plugin OSGi-bundle. Az OSGi specifik\u00e1ci\u00f3 k\u00fcl\u00f6n\u00f6sen a verzi\u00f3kezel\u00e9si \u00e9s f\u00fcgg\u0151s\u00e9gi megold\u00e1si mechanizmusokat hat\u00e1rozza meg. E standard mechanizmusok mellett az Equinox bevezeti a <i>kiterjeszt\u00e9si pontok<\/i>. Minden plugin meghat\u00e1rozhatja a saj\u00e1t kiterjeszt\u00e9si pontjait, \u00e9s tov\u00e1bbi funkcionalit\u00e1st hozhat a rendszerbe (\u201ekiterjeszt\u00e9sek\u201d), a saj\u00e1t vagy m\u00e1s pluginok \u00e1ltal meghat\u00e1rozott kiterjeszt\u00e9si pontok felhaszn\u00e1l\u00e1s\u00e1val. Az OSGi \u00e9s az Equinox mechanizmusainak r\u00e9szletesebb le\u00edr\u00e1sa m\u00e1r t\u00falmutat ezen a cikken. \u00c9rdemes megjegyezni, hogy az Eclipse modulariz\u00e1ci\u00f3ja tot\u00e1lis jelleget \u00f6lt (b\u00e1rmely alrendszer, bele\u00e9rtve a Runtime-ot is, egy vagy t\u00f6bb plugint tartalmaz), \u00e9s szinte minden az Eclipse-ben kiterjeszt\u00e9s. Ezen elveket m\u00e1r j\u00f3val az OSGi bevezet\u00e9se el\u0151tt be\u00e9p\u00edtett\u00e9k az Eclipse architekt\u00far\u00e1j\u00e1ba (akkoriban egy saj\u00e1t technol\u00f3gi\u00e1t haszn\u00e1ltak, amely nagym\u00e9rt\u00e9kben hasonl\u00edtott az OSGi-hez).<\/p>\n<h4>Alap Workspace<\/h4>\n<p>\nSzinte b\u00e1rmely integr\u00e1lt fejleszt\u00e9si k\u00f6rnyezet, amely az Eclipse Platformra \u00e9p\u00fcl, az Eclipse workspace-szel m\u0171k\u00f6dik. A workspace \u00e1ltal\u00e1ban tartalmazza az IDE-ben fejlesztett alkalmaz\u00e1s forr\u00e1sk\u00f3dj\u00e1t. A workspace k\u00f6zvetlen\u00fcl a f\u00e1jlrendszerre t\u00e9r vissza, \u00e9s projekteket tartalmaz, amelyek mapp\u00e1kb\u00f3l \u00e9s f\u00e1jlokb\u00f3l \u00e1llnak. Ezeket a projekteket, mapp\u00e1kat \u00e9s f\u00e1jlokat <i>er\u0151forr\u00e1soknak<\/i> h\u00edvj\u00e1k. Az Eclipse workspace megval\u00f3s\u00edt\u00e1sa tulajdonk\u00e9ppen egy gyors\u00edt\u00f3t\u00e1rk\u00e9nt m\u0171k\u00f6dik a f\u00e1jlrendszerrel szemben, ami jelent\u0151sen felgyors\u00edtja az er\u0151forr\u00e1sok f\u00e1j\u00e1t. Ezen k\u00edv\u00fcl a workspace sz\u00e1mos tov\u00e1bbi szolg\u00e1ltat\u00e1st is ny\u00fajt, bele\u00e9rtve <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Resource-deltas\/resource-deltas.html\">az er\u0151forr\u00e1sok m\u00f3dos\u00edt\u00e1sair\u00f3l sz\u00f3l\u00f3 \u00e9rtes\u00edt\u00e9si mechanizmust<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/articles\/Article-Builders\/builders.html\">a inkrement\u00e1lis \u00e9p\u00edt\u0151k infrastrukt\u00far\u00e1j\u00e1t<\/a><\/noindex>.<\/p>\n<p>A workspace \u00e9s er\u0151forr\u00e1sainak t\u00e1mogat\u00e1s\u00e1\u00e9rt a Core Resources komponens (org.eclipse.core.resources plugin) felel\u0151s. K\u00fcl\u00f6n\u00f6sen ez a komponens programoz\u00e1si hozz\u00e1f\u00e9r\u00e9st biztos\u00edt a workspacehez a k\u00f6vetkez\u0151 form\u00e1ban <i>az er\u0151forr\u00e1sok modellj\u00e9nek<\/i>. E modell hat\u00e9kony haszn\u00e1lat\u00e1hoz az \u00fcgyfeleknek egyszer\u0171 m\u00f3dra van sz\u00fcks\u00e9g\u00fck az er\u0151forr\u00e1sra val\u00f3 hivatkoz\u00e1s reprezent\u00e1l\u00e1s\u00e1hoz. Fontos lenne, hogy az, a modellben k\u00f6zvetlen\u00fcl t\u00e1rolt er\u0151forr\u00e1s \u00e1llapot\u00e1t, elrejts\u00fck az \u00fcgyf\u00e9lt\u0151l. Ellenkez\u0151 esetben p\u00e9ld\u00e1ul, ha egy f\u00e1jlt t\u00f6r\u00f6lnek, az \u00fcgyf\u00e9l tov\u00e1bbra is megtarthat egy objektumot, amely m\u00e1r nem l\u00e9tezik a modellben, ami probl\u00e9m\u00e1kat okozhat. Az Eclipse ezt a feladatot a \u00fagynevezett <i>handle<\/i> er\u0151forr\u00e1saival oldja meg. A handle kulcsk\u00e9nt m\u0171k\u00f6dik (csak az er\u0151forr\u00e1s munkak\u00f6rben elfoglalt \u00fatvonal\u00e1t ismeri) \u00e9s teljes m\u00e9rt\u00e9kben ellen\u0151rzi a hozz\u00e1f\u00e9r\u00e9st a modell bels\u0151 objektum\u00e1hoz, amely k\u00f6zvetlen\u00fcl t\u00e1rolja az er\u0151forr\u00e1s \u00e1llapot\u00e1nak inform\u00e1ci\u00f3it. Ez a diz\u00e1jn a <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.c2.com\/?HandleBodyPattern\">Handle\/Body minta v\u00e1ltozata.<\/a><\/noindex>.<\/p>\n<p>A 2. \u00e1bra a Handle\/Body idiom\u00e1t illusztr\u00e1lja az er\u0151forr\u00e1sok modellj\u00e9vel kapcsolatban. Az IResource interf\u00e9sz a forr\u00e1shoz tartoz\u00f3 handle-t k\u00e9pviseli, \u00e9s API-nak sz\u00e1m\u00edt, ellent\u00e9tben a Resource oszt\u00e1llyal, amely megval\u00f3s\u00edtja ezt az interf\u00e9szt, valamint a ResourceInfo oszt\u00e1llyal, amely a body-t reprezent\u00e1lja \u00e9s nem sz\u00e1m\u00edt API-nak. Hangs\u00falyozni kell, hogy a handle csak az er\u0151forr\u00e1shoz vezet\u0151 utat ismeri a workspace gy\u00f6kere szempontj\u00e1b\u00f3l, \u00e9s nem tartalmaz hivatkoz\u00e1st a resource info-ra. A resource info objektumok alkotj\u00e1k a \u201et\u00e9nyez\u0151k f\u00e1j\u00e1t\u201d (element tree). Ez az adatstrukt\u00fara teljes m\u00e9rt\u00e9kben materializ\u00e1lva van a mem\u00f3ri\u00e1ban. Ahhoz, hogy megtal\u00e1ljuk a resource info egy p\u00e9ld\u00e1ny\u00e1t, amely megfelel egy adott handle-nek, az element tree-t a handle-ben t\u00e1rolt \u00fatvonal szerint j\u00e1rjuk be.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/9d17cd95be3730ab6b5b9e6e3ed71ace.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>A 2. \u00e1bra. IResource \u00e9s ResourceInfo<\/b><\/p>\n<p>Ahogy azt k\u00e9s\u0151bb l\u00e1tni fogjuk, az er\u0151forr\u00e1smodell alapvet\u0151 tervez\u00e9se (amit handle-alap\u00fanak nevezhet\u00fcnk) az Eclipse-ben \u00e9s m\u00e1s modellekben is haszn\u00e1lt. Most felsorolunk n\u00e9h\u00e1ny megk\u00fcl\u00f6nb\u00f6ztet\u0151 jellemz\u0151t ennek a tervez\u00e9snek:<\/p>\n<ul>\n<li>A handle \u00e9rt\u00e9kt\u00edpus\u00fa objektum (value object). Az \u00e9rt\u00e9kt\u00edpus\u00fa objektumok immutable (nem m\u00f3dos\u00edthat\u00f3) objektumok, amelyek egyenl\u0151s\u00e9ge nem az identit\u00e1son alapul. Ezeket az objektumokat biztons\u00e1gosan lehet haszn\u00e1lni hashelt kont\u00e9nerek kulcsak\u00e9nt. T\u00f6bb handle p\u00e9ld\u00e1ny is hivatkozhat ugyanarra az er\u0151forr\u00e1sra. \u00d6sszehasonl\u00edt\u00e1sukhoz az equals(Object) met\u00f3dust kell haszn\u00e1lni.<\/li>\n<li>A handle meghat\u00e1rozza az er\u0151forr\u00e1s viselked\u00e9s\u00e9t, de nem tartalmaz inform\u00e1ci\u00f3t az er\u0151forr\u00e1s \u00e1llapot\u00e1r\u00f3l (az egyetlen adat, amelyet t\u00e1rol, az a \u201ekulcs\u201d, az er\u0151forr\u00e1shoz vezet\u0151 \u00fat).<\/li>\n<li>A handle hivatkozhat neml\u00e9tez\u0151 er\u0151forr\u00e1sra (vagy olyan er\u0151forr\u00e1sra, amely m\u00e9g nem k\u00e9sz\u00fclt el, vagy m\u00e1r t\u00f6r\u00f6lt\u00e9k). Az er\u0151forr\u00e1s l\u00e9tez\u00e9s\u00e9t az IResource.exists() met\u00f3dussal lehet ellen\u0151rizni.<\/li>\n<li>N\u00e9h\u00e1ny m\u0171velet kiz\u00e1r\u00f3lag a handle-ben t\u00e1rolt inform\u00e1ci\u00f3k alapj\u00e1n val\u00f3s\u00edthat\u00f3 meg (\u00fagynevezett handle-only m\u0171veletek). Ilyenek p\u00e9ld\u00e1ul az IResource.getParent(), getFullPath(), stb. Az er\u0151forr\u00e1snak nem sz\u00fcks\u00e9ges l\u00e9teznie a m\u0171velet sikeres v\u00e9grehajt\u00e1s\u00e1hoz. Azok a m\u0171veletek, amelyek sikeres v\u00e9grehajt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges, hogy az er\u0151forr\u00e1s l\u00e9tezzen, CoreException kiv\u00e9telt dob, ha az er\u0151forr\u00e1s nem l\u00e9tezik.<\/li>\n<\/ul>\n<p>\nAz Eclipse hat\u00e9kony mechanizmust ny\u00fajt a munkater\u00fclet er\u0151forr\u00e1sainak v\u00e1ltoz\u00e1sair\u00f3l val\u00f3 \u00e9rtes\u00edt\u00e9shez (3. \u00e1bra). Az er\u0151forr\u00e1sok v\u00e1ltozhatnak \u00fagy, hogy a folyamatban l\u00e9v\u0151 m\u0171veletek a saj\u00e1t Eclipse IDE-j\u00e9n bel\u00fcl t\u00f6rt\u00e9nnek, vagy az f\u00e1jlrendszerrel val\u00f3 szinkroniz\u00e1l\u00e1s eredm\u00e9nyek\u00e9nt. Mindk\u00e9t esetben az \u00e9rtes\u00edt\u00e9sekre feliratkozott \u00fcgyfelek r\u00e9szletes inform\u00e1ci\u00f3kat kapnak a v\u00e1ltoz\u00e1sokr\u00f3l, amelyek \u00aber\u0151forr\u00e1s-delt\u00e1k\u00bb (resource delta) form\u00e1j\u00e1ban jelennek meg. A delta a k\u00e9t \u00e1llapot k\u00f6z\u00f6tti v\u00e1ltoz\u00e1sokat \u00edrja le (al-)f\u00e1nak, \u00e9s \u00f6nmaga is fa szerkezet, amelynek minden csom\u00f3pontja egy bizonyos er\u0151forr\u00e1s v\u00e1ltoz\u00e1s\u00e1t \u00edrja le, \u00e9s egy list\u00e1t tartalmaz a k\u00f6vetkez\u0151 szint\u0171 delt\u00e1kr\u00f3l, amelyek a gyermek er\u0151forr\u00e1sok v\u00e1ltoz\u00e1sait \u00edrj\u00e1k le.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/8af412412ee97d205137ab70c8444a50.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>3. \u00e1bra. IResourceChangeEvent \u00e9s IResourceDelta<\/b><\/p>\n<p>A deltaalap\u00fa \u00e9rtes\u00edt\u00e9si mechanizmus a k\u00f6vetkez\u0151 jellemz\u0151kkel rendelkezik:<\/p>\n<ul>\n<li>Az egyetlen v\u00e1ltoz\u00e1st \u00e9s a t\u00f6bb v\u00e1ltoz\u00e1st ugyanazzal a strukt\u00far\u00e1val \u00edrj\u00e1k le, mivel a delta rekurz\u00edv kompoz\u00edci\u00f3 elve alapj\u00e1n \u00e9p\u00fcl fel. Az el\u0151fizet\u0151 \u00fcgyfelek rekurz\u00edv m\u00e9lys\u00e9gben kezelhetik az er\u0151forr\u00e1sok v\u00e1ltoz\u00e1s\u00e1r\u00f3l sz\u00f3l\u00f3 \u00e9rtes\u00edt\u00e9seket a deltaf\u00e1n.<\/li>\n<li>A delta teljes inform\u00e1ci\u00f3t tartalmaz az er\u0151forr\u00e1s v\u00e1ltoz\u00e1s\u00e1r\u00f3l, bele\u00e9rtve a hely\u00e9nek megv\u00e1ltoztat\u00e1s\u00e1t \u00e9s\/vagy a hozz\u00e1 kapcsol\u00f3d\u00f3 \u00abjel\u00f6l\u0151k\u00bb (p\u00e9ld\u00e1ul a ford\u00edt\u00e1si hib\u00e1k) m\u00f3dos\u00edt\u00e1s\u00e1t.<\/li>\n<li>Mivel az er\u0151forr\u00e1sokra hivatkoz\u00e1sok a handle-en kereszt\u00fcl t\u00f6rt\u00e9nnek, a delta term\u00e9szetesen utalhat t\u00e1voli er\u0151forr\u00e1sokra is.<\/li>\n<\/ul>\n<p>\nAhogy hamarosan l\u00e1tni fogjuk, a v\u00e1ltoz\u00e1sok \u00e9rtes\u00edt\u00e9si mechanizmus\u00e1nak f\u0151 diz\u00e1jnelemei relev\u00e1nsak m\u00e1s handle-alap\u00fa modellekre is.<\/p>\n<h4>JDT Core<\/h4>\n<p>\nAz Eclipse munkater\u00fclet er\u0151forr\u00e1smodellje egy alapvet\u0151 nyelvt\u0151l f\u00fcggetlen modell. A JDT Core \u00f6sszetev\u0151 (org.eclipse.jdt.core plugin) API-t biztos\u00edt a munkater\u00fclet strukt\u00far\u00e1j\u00e1nak navig\u00e1l\u00e1s\u00e1hoz \u00e9s elemz\u00e9s\u00e9hez Java szempontb\u00f3l, az \u00fagynevezett \u00abJava modell\u00bb (<i>Java model<\/i>). Ez az API a Java elemek terminol\u00f3gi\u00e1j\u00e1ban van defini\u00e1lva, ellent\u00e9tben az er\u0151forr\u00e1smodell als\u00f3 szint\u0171 API-j\u00e1val, amely mapp\u00e1k \u00e9s f\u00e1jlok terminol\u00f3gi\u00e1j\u00e1ban van defini\u00e1lva. A Java elemek fastrukt\u00far\u00e1j\u00e1nak f\u0151 interf\u00e9szei a 4. \u00e1br\u00e1n l\u00e1that\u00f3k.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/67bfd31e93eaa66aa94b30281693a318.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>4. \u00e1bra. A Java modell elemei<\/b><\/p>\n<p>A Java model uses the same handle\/body idiom as the resource model (see Fig. 5). IJavaElement is the handle, while JavaElementInfo serves as the body. The IJavaElement interface defines a protocol common to all Java elements. Some of its methods are handle-only: getElementName(), getParent(), etc. The JavaElementInfo object stores the state of the corresponding element: its structure and attributes.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/5b473cccfc8f258d563033ce334cb94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Fig. 5. IJavaElement and JavaElementInfo<\/b><\/p>\n<p>The Java model has some differences in implementing the basic handle\/body design compared to the resource model. As noted above, the element tree in the resource model, whose nodes are resource info objects, is fully stored in memory. However, the Java model can have a significantly larger number of elements than the resource tree, as it also represents the internal structure of .java and .class files: types, fields, and methods.<\/p>\n<p>To avoid fully materializing the entire element tree in memory, the Java model implementation uses a limited-size LRU cache for element info, where the key is the IJavaElement handle. Element info objects are created on demand as navigation through the element tree occurs. The least frequently used elements are evicted from the cache, keeping the memory consumption of the model constrained to the specified cache size. This is another advantage of the handle-based design, which completely hides such implementation details from client code.<\/p>\n<p>The notification mechanism for changes in Java elements is generally similar to the previously discussed mechanism for tracking changes in the workspace resources. A client wishing to track changes in the Java model subscribes to notifications, which are represented as an ElementChangedEvent object that contains an IJavaElementDelta (see Fig. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/0402ec362078eaf50f47756e7f24de01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Fig. 6. ElementChangedEvent and IJavaElementDelta<\/b><\/p>\n<p>The Java model does not contain information about method bodies or name resolution, so for detailed code analysis of Java-written code, JDT Core provides an additional (non-handle-based) model: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/articles\/Article-JavaCodeManipulation_AST\/index.html\">abstract syntax tree<\/a><\/noindex> (absztrakt szintaxisfa, AST). Az AST a forr\u00e1sk\u00f3d szintaktikai elemz\u00e9s\u00e9nek eredm\u00e9ny\u00e9t k\u00e9pviseli. Az AST csom\u00f3pontjai megfelelnek a forr\u00e1smodul strukt\u00far\u00e1j\u00e1nak elemeinek (dekl\u00e1r\u00e1ci\u00f3k, oper\u00e1torok, kifejez\u00e9sek stb.), \u00e9s tartalmazz\u00e1k az adott elem forr\u00e1sk\u00f3dban l\u00e9v\u0151 koordin\u00e1t\u00e1it, valamint (opcion\u00e1lisan) a n\u00e9vad\u00e1s felold\u00e1s\u00e1ra vonatkoz\u00f3 inform\u00e1ci\u00f3kat, hivatkoz\u00e1sok form\u00e1j\u00e1ban. <i>k\u00f6t\u00e9sek<\/i>. A Bindings olyan objektumok, melyek n\u00e9vvel ell\u00e1tott entit\u00e1sokat k\u00e9pviselnek, p\u00e9ld\u00e1ul t\u00edpusokat, met\u00f3dusokat \u00e9s v\u00e1ltoz\u00f3kat, amelyeket a ford\u00edt\u00f3 ismer. Az AST csom\u00f3pontjait\u00f3l elt\u00e9r\u0151en, amelyek f\u00e1t alkotnak, a bindings keresztreferenci\u00e1kat t\u00e1mogatnak, \u00e9s \u00e1ltal\u00e1ban gr\u00e1fot alkotnak. Az absztrakt ASTNode oszt\u00e1ly k\u00f6z\u00f6s alap oszt\u00e1lya minden AST csom\u00f3pontnak. Az ASTNode aloszt\u00e1lyai megfelelnek a Java nyelv bizonyos szintaktikai konstrukci\u00f3inak.<\/p>\n<p>Mivel a szintaktikai f\u00e1k jelent\u0151s mennyis\u00e9g\u0171 mem\u00f3ri\u00e1t fogyaszthatnak, a JDT csak egy AST-t t\u00e1rol a akt\u00edv szerkeszt\u0151 sz\u00e1m\u00e1ra. A Java modellhez k\u00e9pest az AST-t \u00e1ltal\u00e1ban \u201ek\u00f6ztes\u201d, \u201eideiglenes\u201d modellk\u00e9nt kezelik, amelyre az \u00fcgyfeleknek nem szabad hivatkozniuk az AST l\u00e9trehoz\u00e1s\u00e1hoz vezet\u0151 m\u0171veleten k\u00edv\u00fcl.<\/p>\n<p>A h\u00e1rom felsorolt modell (Java modell, AST, bindings) egy\u00fcttesen alkotja az JDT-ben tal\u00e1lhat\u00f3 \u201eintelligens fejleszt\u0151eszk\u00f6z\u00f6k\u201d alapj\u00e1t, k\u00f6zt\u00fck a Java er\u0151teljes szerkeszt\u0151j\u00e9t k\u00fcl\u00f6nf\u00e9le \u201eseg\u00e9dprogramokkal\u201d, sz\u00e1mos forr\u00e1sk\u00f3d feldolgoz\u00e1si m\u0171veletet (p\u00e9ld\u00e1ul a n\u00e9vimport lista rendez\u00e9se \u00e9s a be\u00e1ll\u00edtott st\u00edlusnak megfelel\u0151 form\u00e1z\u00e1s), keres\u00e9si \u00e9s refaktor\u00e1l\u00f3 eszk\u00f6z\u00f6ket. A Java modell k\u00fcl\u00f6nleges szerepet j\u00e1tszik, mivel ez szolg\u00e1l alapk\u00e9nt a fejleszt\u00e9s alatt \u00e1ll\u00f3 alkalmaz\u00e1s strukt\u00far\u00e1j\u00e1nak vizu\u00e1lis \u00e1br\u00e1zol\u00e1s\u00e1hoz (p\u00e9ld\u00e1ul a Package Explorer, Outline, Search, Call Hierarchy \u00e9s Type Hierarchy eset\u00e9ben).<\/p>\n<h2>Az Eclipse komponensei, amelyek a 1C:Enterprise Development Tools-hoz haszn\u00e1latosak<\/h2>\n<p>\nA 7. \u00e1br\u00e1n az Eclipse komponensei l\u00e1that\u00f3k, amelyek a technol\u00f3giai platform alapj\u00e1t k\u00e9pezik a 1C:Enterprise Development Tools sz\u00e1m\u00e1ra.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/248cceea47ee507b9ad22d6964738ee7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>7. \u00e1bra. Az Eclipse mint platform a 1C:Enterprise Development Toolshoz<\/b><\/p>\n<p><b>Eclipse Platform<\/b> az alapinfrastrukt\u00far\u00e1t biztos\u00edtja. N\u00e9h\u00e1ny aspektus\u00e1t ez az infrastrukt\u00far\u00e1nak a kor\u00e1bbi szakaszban m\u00e1r megvizsg\u00e1ltuk.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/modeling\/emf\/\">Eclipse Modeling Framework<\/a><\/noindex><\/b> (<b>EMF<\/b>) \u00e1ltal\u00e1nos eszk\u00f6z\u00f6ket biztos\u00edt struktur\u00e1lt adatok modellez\u00e9s\u00e9re. Az EMF integr\u00e1lva van az Eclipse Platformmal, de \u00f6n\u00e1ll\u00f3 Java alkalmaz\u00e1sokban is haszn\u00e1lhat\u00f3. Gyakran el\u0151fordul, hogy a kezd\u0151 Eclipse-fejleszt\u0151k j\u00f3l ismerik az EMF-et, b\u00e1r m\u00e9g nem \u00e9rtik teljesen az Eclipse Platform finoms\u00e1gait. Az egyik oka a meg\u00e9rdemelt n\u00e9pszer\u0171s\u00e9gnek az egyetemes diz\u00e1jn, amely t\u00f6bbek k\u00f6z\u00f6tt egy egys\u00e9ges meta-szint\u0171 API-t is mag\u00e1ban foglal, lehet\u0151v\u00e9 t\u00e9ve b\u00e1rmely EMF modell \u00e1ltal\u00e1nos kezel\u00e9s\u00e9t. Az EMF \u00e1ltal biztos\u00edtott alapvet\u0151 megval\u00f3s\u00edt\u00e1sok a modellen l\u00e9v\u0151 objektumokhoz \u00e9s a meta-model sz\u00e1m\u00e1ra t\u00f6rt\u00e9n\u0151 k\u00f3dgener\u00e1l\u00e1si alrendszer jelent\u0151sen n\u00f6veli a fejleszt\u00e9si sebess\u00e9get \u00e9s cs\u00f6kkenti a hib\u00e1k sz\u00e1m\u00e1t. Emellett az EMF tartalmaz modellek soros\u00edt\u00e1s\u00e1ra, modellv\u00e1ltoz\u00e1sok nyomon k\u00f6vet\u00e9s\u00e9re \u00e9s m\u00e9g sok m\u00e1sra vonatkoz\u00f3 mechanizmusokat. <\/p>\n<p>Mint b\u00e1rmely igazi univerz\u00e1lis eszk\u00f6z, az EMF sz\u00e9les spektrum\u00fa modellez\u00e9si feladatok megold\u00e1s\u00e1ra alkalmas, de egyes modellek oszt\u00e1lya (p\u00e9ld\u00e1ul a fent t\u00e1rgyalt handle-alap\u00fa modellek) speci\u00e1lisabb modellez\u0151 eszk\u00f6z\u00f6ket ig\u00e9nyelhet. Az EMF-r\u0151l sz\u00f3lni h\u00e1l\u00e1tlan feladat, k\u00fcl\u00f6n\u00f6sen egyetlen cikk keretein bel\u00fcl, mivel ez k\u00fcl\u00f6n k\u00f6nyvet \u00e9rdemelne, m\u00e9ghozz\u00e1 egy el\u00e9g vastagot. Megjegyezz\u00fck, hogy az EMF alapj\u00e1ul szolg\u00e1l\u00f3 min\u0151s\u00e9gi \u00e1ltal\u00e1nos\u00edt\u00e1si rendszer lehet\u0151v\u00e9 tette egy sor projektek l\u00e9trej\u00f6tt\u00e9t, amelyek a modellez\u00e9sre \u00f6sszpontos\u00edtanak, \u00e9s ezek a fels\u0151 szint\u0171 projekt r\u00e9szei. <noindex><a rel=\"nofollow\" href=\"https:\/\/eclipse.org\/modeling\/\">Eclipse Modellez\u00e9s<\/a><\/noindex> az EMF mellett. Az egyik ilyen projekt az Eclipse Xtext.<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/Xtext\/\">Eclipse Xtext<\/a><\/noindex><\/b> infrastrukt\u00far\u00e1t biztos\u00edt a 'sz\u00f6veges modellez\u00e9shez'. Az Xtext az <noindex><a rel=\"nofollow\" href=\"http:\/\/www.antlr.org\/\">ANTLR<\/a><\/noindex> a forr\u00e1s sz\u00f6veg szintaktikai elemz\u00e9s\u00e9re \u00e9s az EMF-re, hogy el\u0151\u00e1ll\u00edtsa az eredm\u00e9ny\u00fcl kapott ASG-t (absztrakt szemantikai gr\u00e1f, amely l\u00e9nyeg\u00e9ben az AST \u00e9s a k\u00f6t\u0151d\u00e9sek kombin\u00e1ci\u00f3ja), amelyet \"szemantikai modelnek\" is neveznek. Az Xtext \u00e1ltal modellezett nyelv grammatika le\u00edr\u00e1sa az Xtext saj\u00e1t nyelv\u00e9n t\u00f6rt\u00e9nik. Ez lehet\u0151v\u00e9 teszi nemcsak a grammatikai le\u00edr\u00e1s gener\u00e1l\u00e1s\u00e1t az ANTLR sz\u00e1m\u00e1ra, hanem az AST soros\u00edt\u00e1si mechanizmus\u00e1nak megszerz\u00e9s\u00e9t is (azaz az Xtext biztos\u00edtja mind a parser-t, mind az unparser-t), a kontextus-alap\u00fa sugallatot \u00e9s sz\u00e1mos m\u00e1s nyelvi komponenst. M\u00e1sr\u00e9szt az Xtext-ben haszn\u00e1lt grammatika le\u00edr\u00e1si nyelv kev\u00e9sb\u00e9 rugalmas az ANTLR grammatika le\u00edr\u00e1si nyelv\u00e9hez k\u00e9pest. Ez\u00e9rt n\u00e9ha \"meg kell hajl\u00edtani\" a Xtext \u00e1ltal megval\u00f3s\u00edtott nyelvet, ami \u00e1ltal\u00e1ban nem probl\u00e9ma, ha egy teljesen \u00faj nyelvr\u0151l van sz\u00f3, de elfogadhatatlan lehet egy m\u00e1r l\u00e9tez\u0151 szintaxis\u00fa nyelvn\u00e9l. Ennek ellen\u00e9re az Xtext a jelenleg leg\u00e9rettebb, funkcion\u00e1lisan teljes \u00e9s univerz\u00e1lis eszk\u00f6z az Eclipse-ben programoz\u00e1si nyelvek \u00e9s fejleszt\u00e9si eszk\u00f6z\u00f6k l\u00e9trehoz\u00e1s\u00e1hoz. K\u00fcl\u00f6n\u00f6sen ide\u00e1lis eszk\u00f6z a gyors protot\u00edpus k\u00e9sz\u00edt\u00e9shez. <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\">t\u00e1rgyorient\u00e1lt nyelvek<\/a><\/noindex> (domain-specific language, DSL). Az ANTLR \u00e9s az EMF alap\u00fa \u201enyelvi mag\u201d mellett az Xtext sz\u00e1mos hasznos, magasabb szint\u0171 komponenst biztos\u00edt, bele\u00e9rtve az index\u00e1l\u00e1si mechanizmusokat, az inkrement\u00e1lis \u00e9p\u00edt\u00e9st, az \u201eintelligens szerkeszt\u0151t\u201d \u00e9s m\u00e9g sok m\u00e1st, de figyelmen k\u00edv\u00fcl hagyja a nyelvi handle-alap\u00fa modelleket. Az EMF-hez hasonl\u00f3an az Xtext is olyan t\u00e9ma, amely egy k\u00fcl\u00f6n k\u00f6nyvet \u00e9rdemel, \u00e9s val\u00f3sz\u00edn\u0171leg most m\u00e9g csak fel\u00fcletesen tudunk besz\u00e9lni minden lehet\u0151s\u00e9g\u00e9r\u0151l.<\/p>\n<p>1C:Enterprise Development Tools akt\u00edvan haszn\u00e1lja mind az EMF-et mint \u00f6n\u00e1ll\u00f3 projektet, mind sz\u00e1mos m\u00e1s Eclipse Modeling projektet. K\u00fcl\u00f6n\u00f6sen az Xtext az alapja azoknak az eszk\u00f6z\u00f6knek, amelyek olyan nyelvekhez k\u00e9sz\u00fclt 1C:Enterprise, mint a be\u00e9p\u00edtett programoz\u00e1si nyelv \u00e9s a lek\u00e9rdez\u0151 nyelv. Ezeknek a fejleszt\u00e9si eszk\u00f6z\u00f6knek egy m\u00e1sik alapja az Eclipse Handly projekt, amelyre r\u00e9szletesebben is kit\u00e9r\u00fcnk (a felsorolt Eclipse komponensek k\u00f6z\u00fcl ez eddig a legkev\u00e9sb\u00e9 ismert).<\/p>\n<p><b><noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/handly\/\">Eclipse Handly<\/a><\/noindex><\/b>, az Eclipse Technology fels\u0151 szint\u0171 projektj\u00e9nek alprojektje, amely 2014-ben a 1C c\u00e9g kezdeti k\u00f3dhozz\u00e1j\u00e1rul\u00e1s\u00e1val j\u00f6tt l\u00e9tre az Eclipse Foundation-n\u00e9l. Az\u00f3ta a 1C c\u00e9g folyamatosan t\u00e1mogatja a projekt fejleszt\u00e9s\u00e9t: a Handly committerei a c\u00e9g munkav\u00e1llal\u00f3i. A projekt kicsi, de el\u00e9g egyedi r\u00e9st foglal el az Eclipse-ben: f\u0151 c\u00e9lja a handle-alap\u00fa modellek fejleszt\u00e9s\u00e9nek t\u00e1mogat\u00e1sa.<\/p>\n<p>A handle-alap\u00fa modellek f\u0151 architekt\u00far\u00e1j\u00e1nak elveit, mint p\u00e9ld\u00e1ul a handle\/body idiom\u00e1t, fentebb a forr\u00e1smodellek \u00e9s a Java modell p\u00e9ld\u00e1j\u00e1n kereszt\u00fcl t\u00e1rgyaltuk. Ott eml\u00edtett\u00fck, hogy mind a forr\u00e1smodellek, mind a Java modell fontos alapot k\u00e9pez a Eclipse Java fejleszt\u0151i eszk\u00f6z\u00f6k (JDT) sz\u00e1m\u00e1ra. Mivel gyakorlatilag minden Eclipse *DT projekt hasonl\u00f3 architekt\u00far\u00e1val rendelkezik, mint a JDT, nem t\u00falz\u00e1s azt mondani, hogy a handle-alap\u00fa modellek sok, ha nem minden IDE alapj\u00e1t k\u00e9pezik, amelyeket az Eclipse Platformra \u00e9p\u00edtettek. P\u00e9ld\u00e1ul az Eclipse C\/C++ Fejleszt\u0151i Eszk\u00f6zk\u00e9szlete (CDT) rendelkezik egy handle-alap\u00fa C\/C++ modellel, amely a CDT architekt\u00far\u00e1j\u00e1ban ugyanezt a szerepet t\u00f6lti be, mint a Java modell a JDT-ben.<\/p>\n<p>A Handly megjelen\u00e9se el\u0151tt az Eclipse nem k\u00edn\u00e1lt speci\u00e1lis k\u00f6nyvt\u00e1rakat a nyelvi handle-alap\u00fa modellek l\u00e9trehoz\u00e1s\u00e1hoz. A jelenlegi modellek t\u00f6bbs\u00e9ge f\u0151k\u00e9nt a Java modell k\u00f3dj\u00e1nak k\u00f6zvetlen adapt\u00e1l\u00e1s\u00e1val k\u00e9sz\u00fclt (m\u00e1s n\u00e9ven m\u00e1sol\u00e1s\/beilleszt\u00e9s). <i>azokban az esetekben, amikor ez lehet\u0151v\u00e9 teszi<\/i> az Eclipse Public License (EPL). (Egy\u00e9rtelm\u0171, hogy mondjuk az Eclipse saj\u00e1t projektjei sz\u00e1m\u00e1ra ez \u00e1ltal\u00e1ban nem jogi probl\u00e9m\u00e1t jelent, amit nem mondhatunk el a z\u00e1rt forr\u00e1sk\u00f3d\u00fa term\u00e9kekr\u0151l.) A m\u00f3dszer jellegzetes rendszertelens\u00e9ge mellett j\u00f3l ismert probl\u00e9m\u00e1khoz vezet: a k\u00f3d duplik\u00e1l\u00e1s\u00e1hoz, a hib\u00e1khoz, amelyek az adapt\u00e1ci\u00f3 sor\u00e1n keletkeznek, stb. Ami m\u00e9g rosszabb, hogy az \u00edgy l\u00e9trehozott modellek \u201edolog marad \u00f6nmag\u00e1ban\u201d, \u00e9s nem haszn\u00e1lj\u00e1k ki a m\u00e1r megl\u00e9v\u0151 potenci\u00e1lt az egys\u00e9ges\u00edt\u00e9sre. Pedig a k\u00f6z\u00f6s fogalmak \u00e9s protokollok kiemel\u00e9se a nyelvi handle-alap\u00fa modellekhez \u00fajrahaszn\u00e1lhat\u00f3 komponensek l\u00e9trehoz\u00e1s\u00e1hoz vezethetett volna, hasonl\u00f3an ahhoz, ahogyan az EMF eset\u00e9ben t\u00f6rt\u00e9nt.<\/p>\n<p>Nem mondhatjuk, hogy az Eclipse nem \u00e9rtette ezeket a probl\u00e9m\u00e1kat. M\u00e9g 2005-ben <noindex><a rel=\"nofollow\" href=\"https:\/\/www.xing.com\/profile\/Martin_Aeschlimann\">Martin Aeschlimann<\/a><\/noindex>, a CDT protot\u00edpus\u00e1nak fejleszt\u00e9si tapasztalat\u00e1t \u00e1ltal\u00e1nos\u00edtva, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.eclipse.org\/org\/langsymp\/position_paper_martin_aeschlimann.html\">\u00e9rvelt<\/a><\/noindex> A k\u00f6z\u00f6s infrastrukt\u00fara megteremt\u00e9s\u00e9nek sz\u00fcks\u00e9gess\u00e9ge a nyelvi modellek, bele\u00e9rtve a handle-alap\u00fa modelleket is. De, mint gyakran el\u0151fordul, a priorit\u00e1st \u00e9lvez\u0151 feladatok miatt v\u00e9g\u00fcl nem ker\u00fclt sor ezen \u00f6tletek megval\u00f3s\u00edt\u00e1s\u00e1ra. Ek\u00f6zben a DT-projektek k\u00f3dj\u00e1nak faktor\u00e1l\u00e1sa tov\u00e1bbra is az Eclipse egyik alulfejlesztett t\u00e9m\u00e1ja marad.<\/p>\n<p>Bizonyos \u00e9rtelemben a Handly projekt k\u00f6r\u00fclbel\u00fcl ugyanazokat a feladatokat hivatott megoldani, mint az EMF, de a handle-alap\u00fa modellek sz\u00e1m\u00e1ra, els\u0151sorban a nyelvi modellekre (azaz a programoz\u00e1si nyelv bizonyos strukt\u00far\u00e1inak elemeit k\u00e9pvisel\u0151 modellekre). Az al\u00e1bbiakban felsoroljuk a Handly tervez\u00e9s\u00e9n\u00e9l kit\u0171z\u00f6tt f\u0151 c\u00e9lokat:<\/p>\n<ul>\n<li>A t\u00e1rgyter\u00fclet alapvet\u0151 absztrakci\u00f3inak kiemel\u00e9se.<\/li>\n<li>A nyelvi handle-alap\u00fa modellek megval\u00f3s\u00edt\u00e1s\u00e1nak er\u0151fesz\u00edt\u00e9seinek cs\u00f6kkent\u00e9se \u00e9s a min\u0151s\u00e9g jav\u00edt\u00e1sa a k\u00f3d \u00fajrahaszn\u00e1lat\u00e1val.<\/li>\n<li>Egy egys\u00e9ges\u00edtett metaszint\u0171 API biztos\u00edt\u00e1sa az \u00edgy l\u00e9trej\u00f6v\u0151 modellekhez, amely lehet\u0151v\u00e9 teszi a nyelvi handle-alap\u00fa modellekkel dolgoz\u00f3 k\u00f6z\u00f6s IDE komponensek k\u00e9sz\u00edt\u00e9s\u00e9t.<\/li>\n<li>Rugalmass\u00e1g \u00e9s sk\u00e1l\u00e1zhat\u00f3s\u00e1g.<\/li>\n<li>Integr\u00e1ci\u00f3 az Xtext-tel (k\u00fcl\u00f6n r\u00e9tegen).<\/li>\n<\/ul>\n<p>\nA k\u00f6z\u00f6s fogalmak \u00e9s protokollok kiemel\u00e9s\u00e9hez a megl\u00e9v\u0151 handle-alap\u00fa nyelvi modellek megval\u00f3s\u00edt\u00e1sait elemezt\u00e9k. A Handly \u00e1ltal biztos\u00edtott f\u0151 interf\u00e9szek \u00e9s alap megval\u00f3s\u00edt\u00e1sok a 8. \u00e1br\u00e1n l\u00e1that\u00f3k.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/47f4bf74093245334b8d67b149734dfc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>8. \u00e1bra. Handly k\u00f6z\u00f6s interf\u00e9szei \u00e9s alap megval\u00f3s\u00edt\u00e1sai<\/b><\/p>\n<p>Az IElement interf\u00e9sz reprezent\u00e1lja az elem handle-j\u00e9t \u00e9s k\u00f6z\u00f6s a Handly alap\u00fa modellek \u00f6sszes elem\u00e9vel. Az Element absztrakt oszt\u00e1ly a handle\/body \u00e1ltal\u00e1nos mechanizmus\u00e1t val\u00f3s\u00edtja meg (9. \u00e1bra).<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/0651c1f284b7edfa36313d4b51d72f08.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>9. \u00e1bra. IElement \u00e9s a handle\/body \u00e1ltal\u00e1nos megval\u00f3s\u00edt\u00e1sa<\/b><\/p>\n<p>Ezenk\u00edv\u00fcl a Handly egy \u00e1ltal\u00e1nos\u00edtott \u00e9rtes\u00edt\u00e9si mechanizmust biztos\u00edt a modell elemeinek v\u00e1ltoz\u00e1sair\u00f3l (10. \u00e1bra). Ahogy l\u00e1that\u00f3, alapvet\u0151en anal\u00f3g a forr\u00e1smodellek \u00e9s a Java-modellek \u00e1ltal megval\u00f3s\u00edtott \u00e9rtes\u00edt\u00e9si mechanizmusokkal, \u00e9s az IElementDelta-t haszn\u00e1lja az elem v\u00e1ltoz\u00e1sair\u00f3l sz\u00f3l\u00f3 inform\u00e1ci\u00f3 egys\u00e9ges\u00edtett megjelen\u00edt\u00e9s\u00e9re.<\/p>\n<p><img decoding=\"async\" alt=\"Eclipse mint technol\u00f3giai platform az 1C:Enterprise fejleszt\u0151i eszk\u00f6z\u00f6kh\u00f6z\" src=\"\/wp-content\/uploads\/2019\/04\/cbdec8cf874308e0fa9dd96d04f62703.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>10. \u00e1bra. Handly \u00e9rtes\u00edt\u00e9si mechanizmus\u00e1nak k\u00f6z\u00f6s interf\u00e9szei \u00e9s alap megval\u00f3s\u00edt\u00e1sai<\/b><\/p>\n<p>A fent t\u00e1rgyalt Handly r\u00e9sz (9. \u00e9s 10. \u00e1bra) gyakorlatilag b\u00e1rmilyen handle-alap\u00fa modellek reprezent\u00e1l\u00e1s\u00e1ra haszn\u00e1lhat\u00f3. Nyelvi modellek l\u00e9trehoz\u00e1s\u00e1hoz <i>a projekt tov\u00e1bbi funkci\u00f3kat k\u00edn\u00e1l \u2013 k\u00fcl\u00f6n\u00f6sen a forr\u00e1s sz\u00f6veg strukt\u00far\u00e1j\u00e1nak elemeihez, \u00fagynevezett<\/i> a nyelvi modellekhez k\u00f6z\u00f6s interf\u00e9szeket \u00e9s alap megval\u00f3s\u00edt\u00e1sokat. <i>source elements<\/i> (\u00e1bra 8). Az ISourceFile interf\u00e9sz a forr\u00e1sf\u00e1jlt, m\u00edg az ISourceConstruct a forr\u00e1sf\u00e1jl egy elem\u00e9t k\u00e9pviseli. A SourceFile \u00e9s SourceConstruct absztrakt oszt\u00e1lyok \u00e1ltal\u00e1nos mechanizmusokat val\u00f3s\u00edtanak meg a forr\u00e1sf\u00e1jlokkal \u00e9s elemeikkel val\u00f3 munka t\u00e1mogat\u00e1s\u00e1ra, p\u00e9ld\u00e1ul sz\u00f6vegbufferek kezel\u00e9se, az elem koordin\u00e1t\u00e1inak k\u00f6t\u00e9se a forr\u00e1s sz\u00f6vegben, a modell egyeztet\u00e9se a munkam\u00e1solat aktu\u00e1lis tartalm\u00e1val stb. E mechanizmusok megval\u00f3s\u00edt\u00e1sa \u00e1ltal\u00e1ban meglehet\u0151sen bonyolult feladat, \u00e9s a Handly jelent\u0151sen cs\u00f6kkentheti a nyelvi handle-alap\u00fa modellek fejleszt\u00e9s\u00e9hez sz\u00fcks\u00e9ges munk\u00e1t a min\u0151s\u00e9gi alapmegval\u00f3s\u00edt\u00e1sok biztos\u00edt\u00e1s\u00e1val.<\/p>\n<p>A fent eml\u00edtett alapmechanizmusokon k\u00edv\u00fcl a Handly sz\u00f6vegbufferek \u00e9s \"pillanatk\u00e9pek\" (snapshots) infrastrukt\u00far\u00e1j\u00e1t, a forr\u00e1sk\u00f3d szerkeszt\u0151kkel val\u00f3 integr\u00e1ci\u00f3 t\u00e1mogat\u00e1s\u00e1t (bele\u00e9rtve a \"do-it-yourself\" integr\u00e1ci\u00f3t az Xtext szerkeszt\u0151h\u00f6z) \u00e9s n\u00e9h\u00e1ny \u00e1ltal\u00e1nos UI-komponenst is k\u00edn\u00e1l, amelyek Handly-alap\u00fa modellekkel m\u0171k\u00f6dnek, p\u00e9ld\u00e1ul a v\u00e1zlatkeretet (outline framework). Lehet\u0151s\u00e9geik illusztr\u00e1l\u00e1s\u00e1ra a projekt t\u00f6bb p\u00e9ld\u00e1t is bemutat, k\u00f6zt\u00fck a Handly-ra \u00e9p\u00fcl\u0151 Java modell megval\u00f3s\u00edt\u00e1s\u00e1t. (Az JDT teljes Java modell megval\u00f3s\u00edt\u00e1ssal \u00f6sszehasonl\u00edtva, ez a modell sz\u00e1nd\u00e9kosan valamivel leegyszer\u0171s\u00edtett a jobb \u00e1ttekinthet\u0151s\u00e9g \u00e9rdek\u00e9ben.)<\/p>\n<p>Ahogy kor\u00e1bban eml\u00edtett\u00fck, a Handly kezdeti tervez\u00e9s\u00e9n\u00e9l \u00e9s tov\u00e1bbi fejleszt\u00e9s\u00e9n\u00e9l komoly figyelmet ford\u00edtottunk a sk\u00e1l\u00e1zhat\u00f3s\u00e1gra \u00e9s a rugalmass\u00e1gra. <\/p>\n<p>Elvileg a handle-alap\u00fa modellek \"tervez\u00e9s\u00fckn\u00e9l fogva\" j\u00f3l sk\u00e1l\u00e1zhat\u00f3ak. P\u00e9ld\u00e1ul a handle\/body kifejez\u00e9s lehet\u0151v\u00e9 teszi a modell \u00e1ltal haszn\u00e1lt mem\u00f3ria mennyis\u00e9g\u00e9nek korl\u00e1toz\u00e1s\u00e1t. De vannak finoms\u00e1gok is. A Handly sk\u00e1l\u00e1zhat\u00f3s\u00e1gi tesztel\u00e9s\u00e9n\u00e9l egy probl\u00e9ma mer\u00fclt fel a \u00e9rtes\u00edt\u00e9si mechanizmus megval\u00f3s\u00edt\u00e1s\u00e1val kapcsolatban \u2013 a nagy sz\u00e1m\u00fa elem megv\u00e1ltoztat\u00e1sakor a delta l\u00e9trehoz\u00e1sa t\u00fal sok id\u0151t vett ig\u00e9nybe. Kider\u00fclt, hogy ugyanaz a probl\u00e9ma a JDT Java modellj\u00e9ben is fenn\u00e1llt, amelyb\u0151l az \u00e9rintett k\u00f3dot egykor adapt\u00e1lt\u00e1k. Jav\u00edtottuk a Handly hib\u00e1j\u00e1t, \u00e9s elk\u00e9sz\u00edtett\u00fck a hasonl\u00f3 jav\u00edt\u00e1st a JDT sz\u00e1m\u00e1ra, amelyet k\u00f6sz\u00f6nettel fogadtak. Ez csup\u00e1n egy p\u00e9lda arra, hogy a Handly megl\u00e9v\u0151 modellmegval\u00f3s\u00edt\u00e1sokba val\u00f3 bekapcsol\u00e1sa potenci\u00e1lisan el\u0151ny\u00f6s lehet, hiszen ebben az esetben egy hib\u00e1t csak egy helyen lehetne orvosolni.<\/p>\n<p>A Handly integr\u00e1ci\u00f3j\u00e1nak m\u0171szaki lehet\u0151s\u00e9geihez a k\u00f6nyvt\u00e1rnak jelent\u0151s rugalmass\u00e1ggal kell rendelkeznie. A f\u0151 probl\u00e9ma az, hogy meg\u0151rizz\u00fck a modell API visszafel\u00e9 kompatibilit\u00e1s\u00e1t. Ezt a feladatot <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/NewIn05\">Handly 0.5<\/a><\/noindex> a fejleszt\u0151 \u00e1ltal meghat\u00e1rozott \u00e9s teljesen kontroll\u00e1lt, modell-specifikus API \u00e9s a k\u00f6nyvt\u00e1r \u00e1ltal biztos\u00edtott egys\u00e9ges meta-szint\u0171 API vil\u00e1gos elk\u00fcl\u00f6n\u00edt\u00e9s\u00e9vel oldott\u00e1k meg. Ez nem csak lehet\u0151v\u00e9 teszi a Handly integr\u00e1ci\u00f3j\u00e1t a megl\u00e9v\u0151 implement\u00e1ci\u00f3kba, hanem jelent\u0151s szabads\u00e1got is ad az \u00faj modell fejleszt\u0151j\u00e9nek az API tervez\u00e9s\u00e9ben.<\/p>\n<p>A rugalmass\u00e1gnak m\u00e1s aspektusai is vannak. P\u00e9ld\u00e1ul a Handly szinte egy\u00e1ltal\u00e1n nem korl\u00e1tozza a modell strukt\u00far\u00e1j\u00e1t, \u00e9s haszn\u00e1lhat\u00f3 \u00e1ltal\u00e1nos c\u00e9l\u00fa nyelvek, valamint ter\u00fclet-specifikus nyelvek modellez\u00e9s\u00e9re is. A forr\u00e1sf\u00e1jl strukt\u00far\u00e1j\u00e1nak megalkot\u00e1sakor a Handly nem \u00edr el\u0151 semmilyen konkr\u00e9t AST-megjelen\u00edt\u00e9si form\u00e1t, \u00e9s elvileg nem is k\u00f6veteli meg az AST l\u00e9tez\u00e9s\u00e9t, \u00edgy biztos\u00edtva a kompatibilit\u00e1st szinte b\u00e1rmilyen szintaktikai elemz\u0151 mechanizmussal. V\u00e9g\u00fcl, a Handly teljes k\u00f6r\u0171 integr\u00e1ci\u00f3t t\u00e1mogat az Eclipse munkater\u00fclettel, de k\u00f6zvetlen\u00fcl a f\u00e1jlrendszerekkel is k\u00e9pes m\u0171k\u00f6dni, az integr\u00e1ci\u00f3nak k\u00f6sz\u00f6nhet\u0151en <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/EFS\">Eclipse File System<\/a><\/noindex> (EFS).<\/p>\n<p>A jelenlegi verzi\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/projects.eclipse.org\/projects\/technology.handly\/releases\/0.6\">Handly 0.6<\/a><\/noindex> 2016 december\u00e9ben jelent meg. Annak ellen\u00e9re, hogy a projekt jelenleg inkub\u00e1ci\u00f3s szakaszban van \u00e9s az API v\u00e9gleg m\u00e9g nem r\u00f6gz\u00edtett, a Handly-t m\u00e1r haszn\u00e1lj\u00e1k k\u00e9t nagyobb kereskedelmi term\u00e9kben, amelyek kock\u00e1ztatt\u00e1k, hogy \"korai elfogad\u00f3kk\u00e9nt\" l\u00e9pjenek fel, \u00e9s azt kell mondanom, eddig nem b\u00e1nj\u00e1k.<\/p>\n<p>Mint fentebb eml\u00edtettem, az egyik ilyen term\u00e9k a 1C:Enterprise Development Tools, ahol a Handly-t m\u00e1r a kezdetekt\u0151l fogva a 1C v\u00e1llalati nyelvek, p\u00e9ld\u00e1ul a be\u00e9p\u00edtett programoz\u00e1si nyelv \u00e9s a lek\u00e9rdez\u00e9si nyelv magas szint\u0171 strukt\u00far\u00e1inak modellez\u00e9s\u00e9re haszn\u00e1lj\u00e1k. A m\u00e1sik term\u00e9k sz\u00e9lesebb k\u00f6z\u00f6ns\u00e9g sz\u00e1m\u00e1ra kev\u00e9sb\u00e9 ismert. Ez a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.codasip.com\/custom-processor\/\">Codasip Studio<\/a><\/noindex>, a probl\u00e9makis\u00e9r\u00e9sekhez tervezett processzorok (application-specific instruction-set processor, ASIP) integr\u00e1lt tervez\u0151i k\u00f6rnyezete, amelyet nemcsak a cseh Codasip c\u00e9g, hanem annak \u00fcgyfelei is haszn\u00e1lnak, k\u00f6zt\u00fck <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>. A Codasip 2015 \u00f3ta haszn\u00e1lja a Handlyt a gy\u00e1rt\u00e1sban, kezdve a Handly 0.2 verzi\u00f3j\u00e1val. A jelenlegi legfrissebb kiad\u00e1s, a Codasip Studio, a 0.5 verzi\u00f3t haszn\u00e1lja, amely 2016 j\u00fanius\u00e1ban jelent meg. Ond\u0159ej Il\u010d\u00edk, aki a Codasip IDE fejleszt\u00e9s\u00e9t ir\u00e1ny\u00edtja, kapcsolatban \u00e1ll a projekttel, biztos\u00edtva a \u201ek\u00fcls\u0151 adapter\u201d szempontj\u00e1b\u00f3l kritikus fontoss\u00e1g\u00fa visszajelz\u00e9st. S\u0151t, siker\u00fclt egy kis szabadid\u0151t tal\u00e1lnia, hogy k\u00f6zvetlen\u00fcl r\u00e9szt vegyen a projekt fejleszt\u00e9s\u00e9ben, \u00e9s megval\u00f3s\u00edtotta a felhaszn\u00e1l\u00f3i fel\u00fclet r\u00e9teg\u00e9t (~ 4000 sor k\u00f3d) az egyik Handly p\u00e9ld\u00e1hoz, egy Java modellt. R\u00e9szletesebb inform\u00e1ci\u00f3t \u201eels\u0151 k\u00e9zb\u0151l\u201d a Handly haszn\u00e1lat\u00e1r\u00f3l az adapterek \u00e1ltal a <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.eclipse.org\/Handly\/Adopters\">Siker T\u00f6rt\u00e9netek<\/a><\/noindex> projekt.<\/p>\n<p>Rem\u00e9lj\u00fck, hogy az 1.0 verzi\u00f3 kiad\u00e1s\u00e1val, amely garant\u00e1lja az API stabilit\u00e1s\u00e1t, \u00e9s a projekt inkub\u00e1ci\u00f3s \u00e1llapot\u00e1b\u00f3l val\u00f3 kil\u00e9p\u00e9s\u00e9vel, \u00faj adapterek csatlakoznak a Handlyhoz. Jelenleg a projekt folyamatosan tesztel\u00e9s alatt \u00e1ll \u00e9s az API tov\u00e1bbfejleszt\u00e9s\u00e9n dolgozik, \u00e9vente k\u00e9t \u201enagy\u201d kiad\u00e1st adva ki \u2013 j\u00faniusban (ugyanazon a napon, mint az Eclipse egyidej\u0171 kiad\u00e1sa) \u00e9s decemberben, biztos\u00edtva egy kisz\u00e1m\u00edthat\u00f3 \u00fctemtervet, amelyre az adapterek t\u00e1maszkodhatnak. Tov\u00e1bb\u00e1, a projekt \u201ehiba ar\u00e1nya\u201d folyamatosan alacsony szinten van, \u00e9s a Handly a legels\u0151 verzi\u00f3kt\u00f3l kezdve megb\u00edzhat\u00f3an m\u0171k\u00f6dik a korai adapterek term\u00e9keiben. A tov\u00e1bbi ismerked\u00e9shez az Eclipse Handlyval haszn\u00e1lhat\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pisv\/gethandly\/wiki\">Kezd\u0151 \u00datmutat\u00f3<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"http:\/\/www.eclipse.org\/downloads\/download.php?file=\/handly\/docs\/handly-overview.pdf&amp;r=1\">Architektur\u00e1lis \u00c1ttekint\u00e9s<\/a><\/noindex>.<br \/>\n<br \/>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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 mint technol\u00f3giai platform a 1C:Enterprise Fejleszt\u0151i Eszk\u00f6z\u00f6kh\u00f6z | ProHoster","description":"Val\u00f3sz\u00edn\u0171leg az Eclipse-nek m\u00e1r r\u00e9gen nincs sz\u00fcks\u00e9ge k\u00fcl\u00f6n\u00f6sebb bemutat\u00e1sra.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/eclipse-kak-tehnologicheskaya-platforma-dlya-1c-enterprise-development-tools","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/32464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=32464"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/32464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/24268"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=32464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=32464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=32464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}