ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana

Malia paha, Pu ʻaʻole pono i ka hoʻolauna kūikawā. Nui nā poʻe i kamaʻāina iā Eclipse mahalo i nā mea hoʻomohala Eclipse Java (JDT). ʻO kēia ka mea kaulana kaulana Java IDE ka hapa nui o nā mea hoʻomohala i hui pū me ka huaʻōlelo "Eclipse". Eia nō naʻe, ʻo Eclipse kahi kahua hoʻonui no ka hoʻohui ʻana i nā mea hana hoʻomohala (Eclipse Platform), a me kekahi mau IDE i kūkulu ʻia ma kona kumu, me JDT. ʻO Eclipse ka Eclipse Project, ka papahana kiʻekiʻe e hoʻonohonoho i ka hoʻomohala ʻana o ka Eclipse Platform a me ka JDT, a me ka Eclipse SDK, ka hopena i hāʻawi ʻia o ia hoʻomohala. ʻO ka mea hope loa, ʻo Eclipse kahi Foundation open-source me kahi kaiāulu nui o nā papahana, ʻaʻole i kākau ʻia nā mea āpau ma Java a i ʻole e pili ana i nā mea hana hoʻomohala (no ka laʻana, nā papahana. Eclipse IoT и Eclipse Science). He ʻokoʻa loa ka honua o Eclipse.

Ma kēia ʻatikala, ʻo ia ka nānā ʻana i ke ʻano, e hoʻāʻo mākou e nānā i kekahi o nā kumu o ka hoʻolālā Eclipse ma ke ʻano he kahua no ke kūkulu ʻana i nā mea hana hoʻomohala hoʻohui a hāʻawi i kahi manaʻo mua o nā ʻāpana Eclipse i hoʻokumu i ke kumu o ka ʻenehana. kahua no ka "Configurator hou" 1C: Enterprise. 1C: Nā mea hana hoʻomohala ʻoihana. ʻO kaʻoiaʻiʻo, ʻo ia ʻano loiloi e ʻike ʻole ʻia i ka hapa nui a i kaupalena ʻia, no ka mea ke kālele nei mākou ʻaʻole wale i nā mea hoʻomohala ʻo Eclipse e like me ka poʻe i manaʻo ʻia. Eia nō naʻe, ke manaʻolana nei mākou e hiki i nā mea hoʻomohala ʻike ʻo Eclipse ke ʻike i ka ʻike hoihoi i ka ʻatikala. No ka laʻana, e kamaʻilio mākou e pili ana i kekahi o nā "mea huna o Eclipse", kahi papahana hou a ʻike liʻiliʻi. Eclipse Handly, i hoʻokumu ʻia a kākoʻo ʻia e 1C.
ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana

Introduction to Eclipse Architecture

E nānā mua kākou i kekahi mau hiʻohiʻona maʻamau o ka hoʻolālā Eclipse me ka hoʻohana ʻana i ka laʻana Nā mea hana hoʻomohala Eclipse Java (JDT). ʻO ke koho ʻana o JDT ma ke ʻano he laʻana ʻaʻole ia he pōʻino. ʻO kēia ka ʻenehana hoʻomohala hoʻohui mua e ʻike ʻia ma Eclipse. ʻO nā papahana *DT Eclipse ʻē aʻe, e like me Eclipse C/C++ Development Tooling (CDT), ua hana ʻia ma hope a ʻaiʻē i nā kumu kumu hoʻolālā kumu a me nā ʻāpana helu kumu hoʻokahi mai JDT. ʻO nā kumu kumu o ka hoʻolālā i waiho ʻia ma JDT e pili ana i kēia lā no kahi kokoke i kēlā me kēia IDE i kūkulu ʻia ma luna o ka Eclipse Platform, me 1C: Enterprise Development Tools.

ʻO ka mea mua, pono e hoʻomaopopo ʻia ʻo Eclipse e hōʻike ʻia e kahi papa hana hoʻolālā maikaʻi loa, me ka hoʻokaʻawale ʻana o ka hana kūʻokoʻa ʻōlelo mai ka hana i hoʻolālā ʻia e kākoʻo i nā ʻōlelo hoʻonohonoho kikoʻī, a me ka hoʻokaʻawale ʻana o nā ʻāpana "core" kūʻokoʻa UI mai nā ʻāpana pili. me ke kākoʻo mea hoʻohana.

No laila, wehewehe ʻo Eclipse Platform i kahi ʻōnaehana maʻamau, kūʻokoʻa ʻōlelo, a ua hoʻohui nā mea hana hoʻomohala Java i kahi Java IDE piha piha iā Eclipse. Loaʻa i ka Eclipse Platform a me ka JDT kekahi mau ʻāpana, nona kēlā me kēia mea i kahi "core" kūʻokoʻa UI a i ʻole kahi papa UI (Figure 1).

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 1. Eclipse Platform a me JDT

E papa inoa i nā mea nui o ka Eclipse Platform:

  • ʻĀpana Kau - E wehewehe i ka ʻōnaehana plugin. Hōʻike ʻia ʻo Eclipse e kahi hoʻolālā modular. ʻO ka mea nui, ʻo Eclipse kahi hōʻiliʻili o "nā kiko hoʻonui" a me nā "hoʻonui".
  • Kahua Hana — Mālama i hoʻokahi papahana a ʻoi aku paha. Aia kekahi papahana i nā waihona a me nā faila i palapala ʻia i ka ʻōnaehana waihona.
  • Mea Hana Widget maʻamau (SWT) - Hāʻawi i nā mea hoʻohana maʻamau i hoʻohui ʻia me ka ʻōnaehana hana.
  • JFace - Hāʻawi i kahi helu o nā papa hana UI i kūkulu ʻia ma luna o SWT.
  • Wahi hana - Wehewehe i ka Eclipse UI paradigm: hoʻoponopono, manaʻo, manaʻo.

Pono e ʻōlelo ʻia ua hāʻawi pū ka Eclipse Platform i nā mea pono ʻē aʻe no ke kūkulu ʻana i nā mea hoʻomohala hoʻohui ʻia, me ka Debug, Compare, Search, a me Team. Pono e ʻōlelo kūikawā ʻia i ka JFace Text - ke kumu no ke kūkulu ʻana i nā "hoʻoponopono akamai" o ke code kumu. ʻO ka mea pōʻino, ʻaʻole hiki ke nānā ʻia i kēia mau ʻāpana, a me nā ʻāpana ʻāpana UI, i loko o ke ʻano o kēia ʻatikala, no laila, ma ke koena o kēia ʻāpana, e kaupalena mākou iā mākou iho i kahi ʻike o nā ʻāpana "core" nui o kēia ʻatikala. ka Eclipse Platform a me JDT.

Ka manawa holo kumu

Hoʻokumu ʻia ka ʻōnaehana Eclipse plugin ma OSGi a hāʻawi ʻia e ka papahana Eclipse Equinox. ʻO kēlā me kēia plugin Eclipse he pūʻulu OSGi. ʻO ka kikoʻī o ka OSGi ka wehewehe ʻana i nā ʻano hana no ka hoʻololi ʻana a me ka hoʻoholo hilinaʻi. Ma kahi o kēia mau mīkini maʻamau, hoʻolauna ʻo Equinox i ka manaʻo nā kiko hoʻonui. Hiki i kēlā me kēia plugin ke wehewehe i kāna mau kiko kikoʻī, a hoʻokomo pū i nā hana hou ("extensions") i ka ʻōnaehana me ka hoʻohana ʻana i nā kiko hoʻonui i wehewehe ʻia e nā plugins like a i ʻole. ʻO kēlā me kēia wehewehe kikoʻī o ka OSGi a me Equinox mechanicals ma waho o ke kiko o kēia ʻatikala. E hoʻomaopopo wale mākou he nui ka modularization ma Eclipse (ʻo kēlā me kēia subsystem, me ka Runtime, he hoʻokahi a ʻoi aku paha nā plugins), a kokoke i nā mea āpau i Eclipse he hoʻonui. Eia kekahi, ua hoʻokomo ʻia kēia mau loina i ka hoʻolālā Eclipse ma mua o ka hoʻomaka ʻana o OSGi (i kēlā manawa ua hoʻohana lākou i kā lākou ʻenehana ponoʻī, e like me OSGi).

Wahi Hana Koko

Aneane e hana pū kekahi ʻenehana hoʻomohala hoʻohui i kūkulu ʻia ma luna o ka Eclipse Platform me ka lumi hana Eclipse. ʻO ia ka papa hana i loaʻa i ke kumu kumu o ka noi i kūkulu ʻia ma ka IDE. Hoʻopili pololei ʻia ka papa hana i ka ʻōnaehana faila a loaʻa nā papahana i loaʻa nā waihona a me nā faila. Kapa ʻia kēia mau papahana, nā waihona, a me nā faila waiwai wahi hana. ʻO ka hoʻokō ʻana i ka papa hana ma Eclipse he huna huna e pili ana i ka ʻōnaehana faila, kahi e hiki ai ke wikiwiki i ka hele ʻana o ka kumu kumu. Eia kekahi, hāʻawi ka workspace i nā lawelawe ʻē aʻe, me ʻano hoʻolaha no nā hoʻololi waiwai и mea kūkulu hale hoʻonui.

ʻO ke kumu waiwai kumu (org.eclipse.core.resources plugin) ke kuleana no ke kākoʻo ʻana i ka lumi hana a me kāna mau kumuwaiwai. ʻO ka mea kūikawā, hāʻawi kēia ʻāpana i ke komo polokalamu i ka papa hana ma ke ʻano kumu hoʻohālike. No ka hana maikaʻi ʻana me kēia kumu hoʻohālike, pono nā mea kūʻai aku i kahi ala maʻalahi e hōʻike i kahi loulou i kahi kumuwaiwai. I kēia hihia, makemake ʻia e hūnā i ka mea nāna e mālama pono i ke kūlana o ka waiwai i loko o ke kumu hoʻohālike mai ke komo ʻana o ka mea kūʻai aku. A i ʻole, i ka hihia o, no ka laʻana, ka holoi ʻana i kahi faila, hiki i ka mea kūʻai ke hoʻomau i ka paʻa ʻana i kahi mea ʻaʻole i loko o ke kumu hoʻohālike, me nā pilikia e hiki mai ana. Hoʻoponopono ʻo Eclipse i kēia pilikia me ka hoʻohana ʻana i kahi mea i kapa ʻia lawelawe punawai. Hana ʻia ʻo Handle ma ke ʻano he kī (ʻo ia wale nō ka ʻike i ke ala i ka punawai ma ka papa hana) a hoʻomalu piha i ke komo ʻana i ka mea hoʻohālike i loko, kahi e mālama pono ai i ka ʻike e pili ana i ke kūlana o ka waiwai. ʻO kēia hoʻolālā he ʻano like ʻole o ke ʻano Kakau/Kino.

Laiki. Hōʻike ka Figure 2 i ka ʻōlelo ʻōlelo Handle/Body e like me ka hoʻohana ʻana i ke kumu hoʻohālike. Hōʻike ka IResource interface i ke kiko o kahi kumuwaiwai a he API ia, ʻaʻole like me ka papa Resource, nāna e hoʻokō i kēia interface, a me ka papa ResourceInfo, e hōʻike ana i ke kino, ʻaʻole ia he API. Manaʻo mākou e ʻike wale ka mea lima i ke ala i ke kumu waiwai e pili ana i ke aʻa kahua hana a ʻaʻohe loulou i ka ʻike kumu waiwai. Hoʻokumu nā mea ʻike kumu waiwai i kahi i kapa ʻia ʻo "lāʻau kumu". Hoʻohana piha ʻia kēia ʻikepili i ka hoʻomanaʻo. No ka loaʻa ʻana o ka ʻike kumu waiwai e pili ana i kahi paʻa, hele ʻia ka lāʻau element e like me ke ala i mālama ʻia i loko o kēlā lima.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 2. IResource a me ResourceInfo

E like me kā mākou e ʻike ai ma hope, ua hoʻohana ʻia ka hoʻolālā kumu o ke kumu kumu waiwai (hiki iā mākou ke kapa ʻia ʻo ia ma luna o ka lima) i hoʻohana ʻia ma Eclipse no nā hiʻohiʻona ʻē aʻe. I kēia manawa, e hoʻopaʻa inoa i kekahi o nā waiwai kūʻokoʻa o kēia hoʻolālā:

  • He mea waiwai ka lima. ʻO nā mea waiwai he mau mea hiki ʻole ke hoʻohālikelike ʻia i ka ʻike. Hiki ke hoʻohana pono ʻia ia mau mea ma ke ʻano he kī i loko o nā ipu hashed. Hiki ke kuhikuhi ʻia nā ʻano hana he nui i ka punawai hoʻokahi. No ka hoʻohālikelike ʻana iā lākou, pono ʻoe e hoʻohana i ke ʻano like (Object).
  • Hōʻike ka Handle i ke ʻano o kahi kumuwaiwai, akā ʻaʻole i loaʻa ka ʻike e pili ana i ke kūlana o ka punawai (ʻo ka ʻikepili wale nō i mālama ʻia ʻo ia ke "kī", ke ala i ke kumu waiwai).
  • Hiki ke kuhikuhi ʻia ʻo Handle i kahi kumuwaiwai ʻaʻole i loaʻa (a i ʻole he kumuwaiwai i hana ʻole ʻia, a i ʻole kahi kumuwaiwai i holoi ʻia). Hiki ke nānā ʻia ke ola ʻana o kahi kumuwaiwai me ke ʻano IResource.exists().
  • Hiki ke hoʻokō ʻia kekahi mau hana ma muli o ka ʻike i mālama ʻia i loko o ka lima ponoʻī (ka mea i kapa ʻia he hana lima wale nō). ʻO nā laʻana ʻo IResource.getParent(), getFullPath(), etc. ʻAʻole pono ka waiwai no ka holomua o ia hana. ʻO nā hana e koi ana i kahi kumuwaiwai e kūleʻa e hoʻolei i kahi CoreException inā ʻaʻole i loaʻa ke kumu.

Hāʻawi ʻo Eclipse i kahi ʻano hana kūpono no ka hoʻolaha ʻana i nā hoʻololi waiwai o ka lumi hana (Figure 3). Hiki ke loli nā kumuwaiwai ma muli o nā hana i hana ʻia i loko o ka Eclipse IDE ponoʻī a i ʻole ma muli o ka hoʻonohonoho ʻana me ka ʻōnaehana faila. Ma nā hihia ʻelua, hāʻawi ʻia nā mea kūʻai aku i nā leka hoʻomaopopo me ka ʻike kikoʻī e pili ana i nā loli i ke ʻano o "deltas waiwai". Hōʻike ka delta i nā hoʻololi ma waena o ʻelua mokuʻāina o kahi kumu waiwai wahi hana (sub-) a he kumu lāʻau ponoʻī, kēlā me kēia node e wehewehe i ka hoʻololi ʻana i kahi kumuwaiwai a loaʻa kahi papa inoa o nā delta ma ka pae aʻe e wehewehe ana i nā loli i nā kumuwaiwai keiki.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 3. IResourceChangeEvent a me IResourceDelta

ʻO ka mīkini hoʻolaha e pili ana i nā deltas waiwai aia nā ʻano penei:

  • Hōʻike ʻia kahi hoʻololi hoʻokahi a me nā loli he nui me ka hoʻohana ʻana i ke ʻano like, no ka mea, ua kūkulu ʻia ka delta me ka hoʻohana ʻana i ke kumu o ka haku mele ʻana. Hiki i nā mea kūʻai aku ke hana i nā leka hoʻololi waiwai me ka hoʻohana ʻana i ka iho recursive ma o kahi kumulāʻau deltas.
  • Loaʻa i ka delta ka ʻike piha e pili ana i nā hoʻololi i ka punawai, me kona neʻe ʻana a/a i ʻole nā ​​hoʻololi ʻana i nā "markers" e pili ana me ia (e laʻa, hōʻike ʻia nā hewa hōʻuluʻulu ʻana ma ke ʻano he māka).
  • Ma muli o ka hana ʻana o nā kumuwaiwai ma o ka lima, hiki i ka delta ke kuhikuhi maoli i kahi kumuwaiwai mamao.

E like me kā mākou e ʻike koke ai, pili pū nā mea nui o ka hoʻolālā ʻana i ka mīkini hoʻolaha hoʻololi kumu waiwai no nā kumu hoʻohālike ʻē aʻe.

JDT Core

He kumu hoʻohālike ʻōlelo-agnostic kumu ka hoʻohālike kumu waiwai ʻo Eclipse workspace. Hāʻawi ka ʻāpana JDT Core (plugin org.eclipse.jdt.core) i API no ka hoʻokele ʻana a me ka nānā ʻana i ka hoʻolālā papa hana mai kahi hiʻohiʻona Java, ka mea i kapa ʻia ʻo "Java model" (kŘkohu Java). Ua wehewehe ʻia kēia API ma nā huaʻōlelo o nā mea Java, e kū'ē ana i ka API kumu hoʻohālike kumu, i wehewehe ʻia ma nā ʻōlelo o nā waihona a me nā faila. Hōʻike ʻia nā kikowaena nui o ka lāʻau element Java ma Fig. 4.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 4. Nā Mea Hoʻohālike Java

Ke hoʻohana nei ke kumu hoʻohālike Java i ka ʻōlelo hoʻohālike like me ke ʻano kumu waiwai (Figure 5). ʻO IJavaElement ka lima, a ʻo JavaElementInfo ke kuleana o ke kino. Ho'ākāka ka IJavaElement interface i kahi protocol maʻamau i nā mea Java āpau. ʻO kekahi o kāna mau ʻano hana wale nō: getElementName (), getParent (), etc. Mālama ka JavaElementInfo mea i ke kūlana o ka mea pili: kona ʻano a me kona ʻano.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 5. IJavaElement a me JavaElementInfo

Aia kekahi mau ʻokoʻa o ka hoʻohālike Java i ka hoʻokō ʻana i ka hoʻolālā kumu kumu / kino i hoʻohālikelike ʻia i ke kumu kumu. E like me ka mea i hōʻike ʻia ma luna nei, i loko o ke kumu hoʻohālike, ʻo ka kumulāʻau element, nona nā node he mau mea ʻike kumu waiwai, ua paʻa i loko o ka hoʻomanaʻo. Akā, hiki i ke kŘkohu Java ke loa'a i ka heluna o nā mea i 'oi aku ka nui ma mua o ka kumu kumu kumu, no ka mea, 'o ia ho'i ke 'ano o loko o ka waihona .java a me .class: 'ano, kahua, a me nā 'ano.

I mea e pale aku ai i ka hoʻohana ʻana i ka lāʻau a pau o nā mea i loko o ka hoʻomanaʻo, hoʻohana ka hoʻokō hoʻohālike Java i kahi palena palena LRU cache o ka ʻike element, kahi e paʻa ai ke kī iā IJavaElement. Hoʻokumu ʻia nā mea ʻike element ma ke koi ʻana i ka hoʻokele ʻana o ka lāʻau element. I kēia hihia, hoʻokuʻu ʻia nā mea liʻiliʻi i hoʻohana pinepine ʻia mai ka huna huna, a ua kaupalena ʻia ka hoʻohana ʻana i ka hoʻomanaʻo o ke kumu hoʻomanaʻo i ka nui huna huna. ʻO kēia kahi mea maikaʻi ʻē aʻe o ka hoʻolālā e pili ana i ka lima, e hūnā loa i nā kikoʻī hoʻokō mai ka code client.

ʻO ke ʻano no ka hoʻomaopopo ʻana i nā loli i nā mea Java ma ke ʻano like me ka mīkini no ka nānā ʻana i nā loli i nā kumuwaiwai hana i kūkākūkā ʻia ma luna. ʻO ka mea kūʻai aku e makemake ana e nānā i nā loli i ka hoʻohālike Java e kau inoa i nā leka hoʻomaopopo, i hōʻike ʻia ma ke ʻano he ElementChangedEvent mea i loaʻa kahi IJavaElementDelta (Figure 6).

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 6. ElementChangedEvent a me IJavaElementDelta

ʻAʻole loaʻa ka ʻike i loko o ka hoʻohālike Java e pili ana i nā kino hana a i ʻole ka hoʻonā inoa, no laila, no ka nānā kikoʻī ʻana i nā code i kākau ʻia ma Java, hāʻawi ʻo JDT Core i kahi kumu hoʻohālike hou (ʻaʻole-lima-lima): lāʻau syntax abstract (lāʻau kumu hoʻohālikelike, AST). Hōʻike ʻo AST i ka hopena o ka hoʻokaʻawale ʻana i ka kikokikona kumu. ʻO nā nodes AST e pili ana i nā mea o ke ʻano o ka module kumu (nā ʻōlelo, nā mea hoʻohana, nā ʻōlelo, a me nā mea ʻē aʻe) a loaʻa i ka ʻike e pili ana i nā hoʻonohonoho o ka mea pili i ka kikokikona kumu, a me (ma ke ʻano he koho) ʻike e pili ana i ka hoʻonā inoa ma ke ano o na loulou i ka mea i kapaia mea paʻa. ʻO nā paʻa nā mea e hōʻike ana i nā mea i kapa ʻia, e like me nā ʻano, nā ʻano, a me nā ʻano like ʻole, i ʻike ʻia e ka mea hoʻopili. ʻAʻole e like me nā nodes AST, kahi kumu lāʻau, kākoʻo nā mea paʻa i ka hoʻopaʻa ʻana i ke ʻano a hana maʻamau i ka pakuhi. ʻO ka papa abstract ASTNode ka papa kumu maʻamau no nā node AST āpau. ʻO nā subclasses ASTNode e pili ana i nā hana syntactic kikoʻī o ka ʻōlelo Java.

No ka mea hiki i nā lāʻau syntax ke hoʻopau i ka nui o ka hoʻomanaʻo, mālama ʻo JDT i hoʻokahi AST no ka mea hoʻoponopono ikaika. 'A'ole like me ka Java model, 'ike 'ia ka AST ma ke 'ano he "intermediate," "temporary" model 'a'ole pono e ho'opa'a 'ia nā lālā e nā mea kū'ai ma waho o ka pō'aiapili o ka hana i alaka'i ai i ka hana 'ana o ka AST.

ʻO nā hiʻohiʻona ʻekolu i helu ʻia (Java model, AST, bindings) i kumu no ke kūkulu ʻana i nā "mea hana hoʻomohala akamai" ma JDT, me kahi mea hoʻoponopono Java ikaika me nā "kōkua" like ʻole, nā hana like ʻole no ka hoʻoponopono ʻana i nā code kumu (me ka hoʻonohonoho ʻana i kahi papa inoa o ka lawe ʻana mai. nā inoa a me ka hoʻopili ʻana e like me ke ʻano hana maʻamau), ʻimi a me nā mea hana refactoring. I kēia hihia, he kuleana koʻikoʻi ka hiʻohiʻona Java, ʻoiai ʻo ia ka mea i hoʻohana ʻia i kumu no ka hōʻike ʻana i ke ʻano o ke ʻano o ka noi i kūkulu ʻia (no ka laʻana, ma Package Explorer, Outline, Search, Call Hierarchy, a Type Hierarchy).

Hoʻohana ʻia nā ʻāpana Eclipse ma 1C: Nā Mea Hana Hana Hana Hana

Ma Fig. Hōʻike ka Figure 7 i nā ʻāpana Eclipse i hoʻokumu i ke kahua o ka paepae ʻenehana no 1C: Nā Mea Hana Hoʻomohala ʻoihana.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 7. ʻO Eclipse ma ke ʻano he kahua no ka 1C: Nā Mea Hana Hana Hana

Papahana Eclipse hāʻawi i nā ʻōnaehana kumu. Ua nānā mākou i kekahi mau hiʻohiʻona o kēia ʻōnaehana ma ka pauku mua.

Eclipse Modelling Framework (EMF) hāʻawi i kahi ala maʻamau e hoʻohālike i ka ʻikepili i kūkulu ʻia. Hoʻohui ʻia ʻo EMF me ka Eclipse Platform, akā hiki ke hoʻohana ʻokoʻa ʻia i nā noi Java maʻamau. ʻO ka manawa pinepine, ua kamaʻāina mua nā mea hoʻomohala Eclipse hou me EMF, ʻoiai ʻaʻole lākou i hoʻomaopopo piha i ka paʻakikī o ka Eclipse Platform. ʻO kekahi o nā kumu o ia kaulana kaulana ʻo ia ka hoʻolālā honua, e komo pū ana, i waena o nā mea ʻē aʻe, kahi API meta-level i hui ʻia, e hiki ai iā ʻoe ke hana me kekahi ʻano hoʻohālike EMF ma ke ʻano maʻamau. ʻO nā hoʻokō kumu no nā mea hoʻohālike i hāʻawi ʻia e EMF a me ka subsystem no ka hana ʻana i ke code model ma muli o ka meta-model e hoʻonui nui i ka wikiwiki o ka hoʻomohala ʻana a hoʻemi i ka nui o nā hewa. Loaʻa i ka EMF nā mīkini no ka hoʻohālikelike ʻana i nā hiʻohiʻona, ka nānā ʻana i nā loli i ke kumu hoʻohālike, a me nā mea hou aku.

E like me nā mea hana maʻamau maoli, ua kūpono ʻo EMF no ka hoʻoponopono ʻana i nā pilikia hoʻohālike ākea, akā pono paha kekahi mau papa o nā hiʻohiʻona (e like me nā hiʻohiʻona i hoʻopaʻa ʻia ma luna) e koi i nā mea hana hoʻohālike kūikawā. ʻO ke kamaʻilio ʻana e pili ana i ka EMF he hana hoʻomaikaʻi ʻole ia, ʻoi aku ma loko o nā palena palena o hoʻokahi ʻatikala, ʻoiai ʻo ia ke kumuhana o kahi puke ʻokoʻa, a me kahi puke mānoanoa. E hoʻomaopopo wale mākou ʻo ka ʻōnaehana kiʻekiʻe o nā generalizations i lalo o ka EMF i ʻae i ka hānau ʻana o nā papahana holoʻokoʻa i hoʻolaʻa ʻia i ka hoʻohālike, i hoʻokomo ʻia i ka papahana kiʻekiʻe. Hoʻohālike Eclipse me ka EMF pono'ī. ʻO kekahi o ia papahana ʻo Eclipse Xtext.

Eclipse Xtext hāʻawi i kahi ʻōnaehana "hoʻohālike kikokikona". Hoʻohana Xtext ANTLR no ka hoʻokaʻawale ʻana i ke kikokikona kumu a me ka EMF no ka hōʻike ʻana i ka ASG i loaʻa mai (ka pakuhi semantic abstract, ʻo ia hoʻi ka hui pū ʻana o AST a me nā hoʻopaʻa ʻana), i kapa ʻia ʻo "semantic model". Ua wehewehe ʻia ka grammar o ka ʻōlelo i hoʻohālike ʻia e Xtext ma ka ʻōlelo ponoʻī a Xtext. ʻAʻole ʻae kēia iā ʻoe e hoʻopuka i kahi wehewehe grammar no ANTLR, akā e kiʻi pū i kahi mīkini serialization AST (ʻo ia hoʻi. Ma ka ʻaoʻao ʻē aʻe, ʻoi aku ka maʻalahi o ka ʻōlelo grammar i hoʻohana ʻia ma Xtext ma mua o ka ʻōlelo, ka ʻōlelo grammar i hoʻohana ʻia ma ANTLR. No laila, i kekahi manawa he mea pono ke "hoʻolulu" i ka ʻōlelo i hoʻokō ʻia iā Xtext, ʻaʻole ia he pilikia inā mākou e kamaʻilio e pili ana i kahi ʻōlelo i kūkulu ʻia mai ka wā ʻōpala, akā ʻaʻole hiki ke ʻae ʻia no nā ʻōlelo me kahi syntax i hoʻokumu ʻia. ʻOiai ʻo kēia, ʻo Xtext ka mea ʻoi loa, waiwai nui, a me nā mea hana maʻalahi i Eclipse no ke kūkulu ʻana i nā ʻōlelo papahana a me nā mea hana hoʻomohala no lākou. ʻO ka mea kūikawā, he mea hana kūpono no ka prototyping wikiwiki nā ʻōlelo kikoʻī domain ('ōlelo kiko'ī domain, DSL). Ma waho aʻe o ka "'ōlelo kumu" i haʻi ʻia ma luna o ANTLR a me EMF, hāʻawi ʻo Xtext i nā ʻāpana kiʻekiʻe kiʻekiʻe e pono ai, e komo pū ana me nā hana kuhikuhi, ka hoʻonui ʻana, kahi "hoʻoponopono akamai", a me nā mea hou aku, akā haʻalele i ka lima. kumu hoʻohālike ʻōlelo. E like me EMF, he kumuhana kūpono ʻo Xtext no kahi puke ʻokoʻa, a ʻaʻole hiki iā mākou ke kamaʻilio pōkole e pili ana i kāna mau mea hiki i kēia manawa.

1C: Hoʻohana ikaika nā mea hana hoʻomohala ʻoihana iā EMF ponoʻī a me kekahi mau papahana Eclipse Modeling. ʻO ka mea kūikawā, ʻo Xtext kekahi o nā kumu o nā mea hana hoʻomohala no nā ʻōlelo 1C: Enterprise e like me ka ʻōlelo papahana i kūkulu ʻia a me ka ʻōlelo nīnau. ʻO kahi kumu ʻē aʻe no kēia mau mea hana hoʻomohala ʻo ia ka papahana Eclipse Handly, a mākou e kūkākūkā nui ai (ʻo nā ʻāpana Eclipse i helu ʻia, ʻo ia ka mea liʻiliʻi loa i ʻike ʻia).

Eclipse Handly, he papahana haʻahaʻa o ka papahana kiʻekiʻe ʻo Eclipse Technology, i puka mai ma muli o kahi haʻawina helu mua i ka Eclipse Foundation i hana ʻia e 1C ma 2014. Mai ia manawa, ua hoʻomau ʻo 1C i ke kākoʻo ʻana i ka hoʻomohala ʻana o ka papahana: ʻO nā limahana lima lima nā limahana o ka hui. He liʻiliʻi ka pāhana, akā noho ʻo ia i kahi niche kūʻokoʻa ma Eclipse: ʻo kāna pahuhopu nui ke kākoʻo i ka hoʻomohala ʻana i nā kumu hoʻohālike.

Ua kūkākūkā ʻia nā loina hoʻolālā kumu o nā hiʻohiʻona e pili ana i ka lima, e like me ka ʻōlelo aʻoaʻo / kino, me ka hoʻohana ʻana i ke kumu kumu a me ke kumu hoʻohālike Java ma ke ʻano he laʻana. Ua ʻike pū ʻia ʻo ke kumu kumu waiwai a me ka hiʻohiʻona Java he mau kumu koʻikoʻi no ka Eclipse Java development tools (JDT). A no ka mea, ʻaneʻane loa nā papahana *DT Eclipse i ka hale hana e like me JDT, ʻaʻole ia he mea hoʻonui nui i ka ʻōlelo ʻana he nui nā kumu hoʻohālike i hoʻokumu ʻia, inā ʻaʻole nā ​​IDE āpau i kūkulu ʻia ma luna o ka Eclipse Platform. No ka laʻana, loaʻa i ka Eclipse C/C++ Development Tooling (CDT) kahi hiʻohiʻona C/C++ i hoʻokumu ʻia i ka lima e pāʻani ana i ka hana like i ka hoʻolālā CDT e like me ke kumu hoʻohālike Java i ka JDT.

Ma mua o Handly, ʻaʻole hāʻawi ʻo Eclipse i nā hale waihona puke kūikawā no ke kūkulu ʻana i nā ʻōlelo hoʻohālike e pili ana i ka lima. ʻO nā hiʻohiʻona e noho nei i kēia manawa ua hana nui ʻia ma o ka hoʻololi pololei ʻana i ke code model Java (aka kope/paste), i na hihia e ae ai Eclipse Public License (EPL). (ʻOiaʻiʻo, ʻaʻole maʻamau kēia he hihia pili kānāwai, e ʻōlelo, nā papahana Eclipse iā ia iho, akā ʻaʻole no nā huahana kumu pani.) Ma waho aʻe o kona ʻano haphazardness, hoʻopuka kēia ʻenehana i nā pilikia kaulana: hoʻopuka ʻia nā code i ka wā e hoʻoponopono ai i nā hewa. etc. ʻO ka mea ʻoi aku ka maikaʻi o ka hoʻomau ʻana o nā hiʻohiʻona i "nā mea i loko o lākou iho" a ʻaʻole hoʻohana i ka hiki ke hoʻohui. Akā, ʻo ka hoʻokaʻawale ʻana i nā manaʻo maʻamau a me nā protocols no nā ʻōlelo hoʻohālike e pili ana i ka lima e hiki ke alakaʻi i ka hana ʻana i nā mea hoʻohana hou no ka hana ʻana me lākou, e like me ka mea i hana ʻia ma ka hihia o EMF.

ʻAʻole ia ʻaʻole maopopo ʻo Eclipse i kēia mau pilikia. I ka makahiki 2005 Martin Aeschlimann, hōʻuluʻulu i ka ʻike o ka hoʻomohala ʻana i ka prototype CDT, hoʻopaʻapaʻa ka pono e hana i ka hana maʻamau no nā kumu hoʻohālike ʻōlelo, me nā hiʻohiʻona e pili ana i ka lima. Akā, e like me ka hana pinepine, ma muli o nā hana koʻikoʻi kiʻekiʻe, ʻaʻole hiki ke hoʻokō ʻia kēia mau manaʻo. I kēia manawa, ʻo ka factorization o *DT code kekahi o nā kumuhana underdeveloped ma Eclipse.

Ma kekahi manaʻo, ua hoʻolālā ʻia ka papahana Handly e hoʻoponopono i nā pilikia like me EMF, akā no nā hiʻohiʻona e pili ana i ka lima, a me nā ʻōlelo nui (ʻo ia hoʻi, e hōʻike ana i nā mea o ke ʻano o kekahi ʻōlelo papahana). ʻO nā pahuhopu nui i hoʻonohonoho ʻia i ka hoʻolālā ʻana iā Handly i helu ʻia ma lalo nei:

  • Ka ʻike ʻana i nā abstractions nui o ke kumuhana.
  • Hoʻemi i ka hoʻoikaika ʻana a me ka hoʻomaikaʻi ʻana i ka maikaʻi o ka hoʻokō ʻana i nā hiʻohiʻona ʻōlelo ma muli o ka hoʻohana hou ʻana i nā code.
  • Hāʻawi i kahi API meta-level i hoʻohui ʻia i nā kumu hoʻohālike e hiki ai ke hana i nā ʻāpana IDE maʻamau e hana pū me nā kumu hoʻohālike e pili ana i ka ʻōlelo.
  • ʻO ka maʻalahi a me ka scalability.
  • Hoʻohui me Xtext (ma kahi ʻāpana ʻokoʻa).

No ka hōʻike ʻana i nā manaʻo maʻamau a me nā protocols, ua kālailai ʻia nā hoʻokō ʻana o nā kumu hoʻohālike e pili ana i ka ʻōlelo. Hōʻike ʻia nā kikowaena nui a me nā hoʻokō kumu i hāʻawi ʻia e Handly ma Fig. 8.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 8. Nā kikowaena maʻamau a me nā hoʻokō kumu o nā mea Handly

Hōʻike ka interface IElement i ka paʻa o kahi mea a he mea maʻamau i nā mea o nā hiʻohiʻona Handly-based. Hoʻohana ka papa abstract Element i ke ʻano hana lima / kino (Fig. 9).

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 9. IElement a me ka generic handle/body hoʻokō

Eia hou, hāʻawi ʻo Handly i kahi mīkini ākea no ka hoʻolaha ʻana e pili ana i nā loli i nā mea hoʻohālike (Fig. 10). E like me kāu e ʻike ai, ua like like ia me nā ʻano hoʻolaha i hoʻokō ʻia i ke kumu kumu waiwai a me ka hoʻohālike Java, a hoʻohana iā IElementDelta e hāʻawi i kahi hōʻike hoʻokahi o ka ʻike hoʻololi element.

ʻO Eclipse ma ke ʻano he kahua ʻenehana no 1C: Nā Mea Hana Hana Hana
Laiki. 10. Nā hoʻopili maʻamau a me nā hoʻokō kumu o ka mīkini hoʻolaha Handly

Hiki ke hoʻohana ʻia ka ʻāpana Handly i ʻōlelo ʻia ma luna (Fig. 9 a me 10) e hōʻike i nā kumu hoʻohālike e pili ana i ka lima. No ka hana ʻana ʻōlelo ʻōlelo nā hiʻohiʻona, hāʻawi ka papahana i nā hana hou - ʻo ia hoʻi, nā pilina maʻamau a me nā hoʻokō maʻamau no nā mea o ke ʻano kikokikona kumu, ka mea i kapa ʻia kumu kumu (Fig. 8). Hōʻike ka interface ISourceFile i kahi faila kumu, a ʻo ISourceConstruct kahi mea i loko o ka faila kumu. Hoʻohana nā papa abstract SourceFile a me SourceConstruct i nā hana maʻamau e kākoʻo i ka hana ʻana me nā faila kumu a me kā lākou mau mea, no ka laʻana, ka hana ʻana me nā paʻi kikokikona, hoʻopaʻa i nā hoʻonohonoho o kahi mea i loko o ka kikokikona kumu, hoʻoponopono i nā hiʻohiʻona me nā mea o kēia manawa o kahi kope kope kope. , etc. He mea paʻakikī ka hoʻokō ʻana i kēia mau hana, a hiki iā Handly ke hōʻemi nui i ka hoʻomohala ʻana i nā kumu hoʻohālike ʻōlelo ma ka hoʻolako ʻana i nā hoʻokō kumu kiʻekiʻe.

Ma waho aʻe o nā ʻōnaehana kumu i helu ʻia ma luna nei, hāʻawi ʻo Handly i kahi ʻōnaehana no nā paʻi kikokikona a me nā paʻi kiʻi, kākoʻo no ka hoʻohui ʻana me nā mea hoʻoponopono kumu kumu (me ka hoʻohui ʻana i waho o ka pahu me ka Xtext editor), a me kekahi mau mea UI maʻamau. hana pū me nā mea hoʻoponopono kumu kumu. No ka hōʻike ʻana i kona hiki, hāʻawi ka papahana i kekahi mau hiʻohiʻona, me ka hoʻokō ʻana i ka hiʻohiʻona Java ma Handly. (Ke hoʻohālikelike ʻia me ka hoʻokō piha ʻana o ka hiʻohiʻona Java ma JDT, ua hoʻomaʻamaʻa ʻia kēia ʻano hoʻohālike no ka maopopo ʻana.)

E like me ka mea i hōʻike mua ʻia, ʻo ka manaʻo nui i ka wā o ka hoʻolālā mua ʻana o Handly a me ka hoʻomohala ʻana aʻe a hoʻomau ʻia ma ka scalability a me ka maʻalahi.

Ma ke kumu, ʻoi aku ka maikaʻi o nā kumu hoʻohālike e pili ana i ka lima "ma ka hoʻolālā". No ka laʻana, ʻae ka ʻōlelo aʻoaʻo / kino iā ʻoe e kaupalena i ka nui o ka hoʻomanaʻo i hoʻopau ʻia e kahi kumu hoʻohālike. Akā aia kekahi mau nuances. No laila, i ka hoʻāʻo ʻana iā Handly no ka scalability, ua ʻike ʻia kahi pilikia i ka hoʻokō ʻana i ka mīkini hoʻolaha - i ka wā i hoʻololi ʻia ai ka nui o nā mea, ua lōʻihi ka manawa o ke kūkulu ʻana i nā deltas. Ua ʻike ʻia aia ka pilikia like ma ka JDT Java model, kahi i hoʻololi ʻia ai ke code pili. Hoʻoponopono mākou i ka pahu ma Handly a hoʻomākaukau i kahi pākuʻi like no JDT, i loaʻa me ka mahalo. Hoʻokahi wale nō laʻana kēia kahi e hiki ai ke hoʻokomo iā Handly i nā hoʻokō hoʻohālike e kū nei, no ka mea ma kēia hihia hiki ke hoʻopaʻa ʻia kēlā bug ma kahi hoʻokahi.

No ka hoʻokō ʻana i ka Handly i loko o nā hoʻokō hoʻohālike e kū nei i ka ʻenehana, pono e loaʻa i ka waihona ke maʻalahi. ʻO ka pilikia nui, ʻo ia ka mālama ʻana i ka hoʻohālikelike hope ma waena o ke kumu hoʻohālike API. Ua hoʻoholo ʻia kēia pilikia ma Maikaʻi 0.5 ma ka hoʻokaʻawale ʻana i ka API kikoʻī hoʻohālike, i wehewehe ʻia a hoʻomalu piha ʻia e ka mea hoʻomohala, mai ka API pae meta i hoʻohui ʻia e ka waihona. ʻAʻole wale kēia e hiki ai ke hoʻokomo iā Handly i nā hoʻokō e kū nei, akā hāʻawi pū i ka mea hoʻomohala kumu hoʻohālike hou i ke kūʻokoʻa i ka wā e hoʻolālā ai i ka API.

Loaʻa nā ʻano ʻē aʻe o ka hoʻololi. No ka laʻana, ʻaneʻane kau ʻole ʻo Handly i nā kaohi i ke ʻano o ke kŘkohu a hiki ke hoʻohana ʻia e hoʻohālike i nā ʻōlelo maʻamau a me nā ʻōlelo kikoʻī. I ke kūkulu ʻana i ke ʻano o ka faila kumu, ʻaʻole kuhikuhi ʻo Handly i kekahi ʻano kikoʻī o ka hōʻike AST a, ma ke kumu, ʻaʻole ia e koi i ke alo o kahi AST ponoʻī, no laila e hōʻoiaʻiʻo ana i ka hoʻohālikelike ʻana me nā ʻano hana parsing. ʻO ka mea hope loa, kākoʻo ʻo Handly i ka hoʻohui piha ʻana me Eclipse workspace, akā hiki ke hana pololei pū me nā ʻōnaehana faila mahalo i kona hoʻohui ʻana me Pūnaehana Kōnae Eclipse (EFS).

Mana mana o kēia manawa Maikaʻi 0.6 i puka mai i Dekemaba 2016. ʻOiai ʻo ka ʻoiaʻiʻo o ka papahana i kēia manawa o ka incubation a ʻaʻole i hoʻopaʻa ʻia ka API, ua hoʻohana mua ʻia ʻo Handly i ʻelua mau huahana kalepa nui i lawe i ka pilikia o ka hana ʻana ma ke ʻano he "poʻe hoʻohana mua", a, pono wau e ʻōlelo, mai mihi oe.

E like me ka mea i hōʻike ʻia ma luna nei, ʻo kekahi o kēia mau huahana ʻo 1C: Enterprise Development Tools, kahi i hoʻohana ʻia ai ʻo Handly mai ka hoʻomaka ʻana e hoʻohālike i nā mea o ka hoʻolālā kiʻekiʻe o ia 1C: Nā ʻōlelo ʻoihana e like me ka ʻōlelo hoʻonohonoho i kūkulu ʻia a me ka ʻōlelo nīnau. . ʻO kekahi huahana ʻaʻole i ʻike nui ʻia e ka lehulehu. ʻO kēia Codasip Studio, kahi hoʻolālā hoʻolālā i hoʻohui ʻia no ka ʻōnaehana hoʻonohonoho hoʻonohonoho kikoʻī noiʻi (ASIP), i hoʻohana ʻia i loko o ka hui Czech ʻo Codasip ponoʻī a me kāna mau mea kūʻai aku, me ka AMD, AVG, Kauolea, Nā hoʻolālā Sigma. Ua hoʻohana ʻo Codasip i ka Handly i ka hana ʻana mai 2015, e hoʻomaka ana me ka mana Handly 0.2. Hoʻohana ka hoʻokuʻu hou loa o Codasip Studio i ka mana 0.5, i hoʻokuʻu ʻia ma Iune 2016. ʻO Ondřej Ilčík, ka mea alakaʻi i ka hoʻomohala ʻana o IDE ma Codasip, e pili ana i ka papahana, e hāʻawi ana i nā manaʻo koʻikoʻi ma ka inoa o ka "mea hoʻohana ʻekolu". Ua hiki iā ia ke loaʻa i kekahi manawa kūʻokoʻa e komo pololei i ka hoʻomohala ʻana i ka papahana, e hoʻokō ana i kahi papa UI (~ 4000 laina o ke code) no kekahi o nā hiʻohiʻona Handly, kahi hiʻohiʻona Java. Hiki ke loaʻa nā ʻike kikoʻī hou aku e pili ana i ka hoʻohana ʻana iā Handly e nā mea hoʻohana ma ka ʻaoʻao Nā Moʻo Hōʻeuʻeu papahana.

Manaʻo mākou ma hope o ka hoʻokuʻu ʻia ʻana o ka mana 1.0 me kahi hōʻoia o ka paʻa ʻana o ka API a me ka haʻalele ʻana o ka papahana i ke kūlana incubation, e loaʻa iā Handly nā mea hoʻohana hou. I kēia manawa, hoʻomau ka papahana i ka hoʻāʻo a hoʻomaikaʻi hou aku i ka API, e hoʻokuʻu ana i ʻelua "nui" hoʻokuʻu i kēlā me kēia makahiki - i Iune (ka lā like me ka hoʻokuʻu ʻana o Eclipse i ka manawa like) a me Kekemapa, e hāʻawi ana i kahi papa kuhikuhi e hiki ai i nā mea hoʻohana ke hilinaʻi. Hiki iā mākou ke hoʻohui i ka "bug rate" o ka papahana ma kahi haʻahaʻa haʻahaʻa haʻahaʻa a ua hana hilinaʻi ʻo Handly i nā huahana o nā mea hoʻohana mua mai nā mana mua loa. No ka ʻimi hou aku iā Eclipse Handly, hiki iā ʻoe ke hoʻohana Aʻo Hoʻomaka и Nānā Kūlana Kūlana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka