සමහරවිට,
ස්වභාවධර්මයේ දළ විශ්ලේෂණයක් වන මෙම ලිපියෙන්, අපි ඒකාබද්ධ සංවර්ධන මෙවලම් තැනීමේ වේදිකාවක් ලෙස Eclipse ගෘහ නිර්මාණ ශිල්පයේ මූලික කරුණු කිහිපයක් දෙස බැලීමට උත්සාහ කරමු සහ තාක්ෂණයේ පදනම වන Eclipse සංරචක පිළිබඳ මූලික අදහසක් ලබා දෙන්නෙමු. "නව වින්යාසකරු" 1C සඳහා වේදිකාව: ව්යවසාය.
Eclipse Architecture හැඳින්වීම
අපි මුලින්ම උදාහරණය භාවිතා කරමින් Eclipse architecture හි සාමාන්ය කරුණු කිහිපයක් බලමු
පළමුවෙන්ම, සූර්යග්රහණය තරමක් පැහැදිලි වාස්තු විද්යාත්මක ස්ථරයකින් සංලක්ෂිත වන අතර, විශේෂිත ක්රමලේඛන භාෂාවන්ට සහය දැක්වීම සඳහා නිර්මාණය කර ඇති ක්රියාකාරීත්වයෙන් භාෂා-ස්වාධීන ක්රියාකාරීත්වය වෙන් කිරීම සහ UI-ස්වාධීන “core” සංරචක ආශ්රිත සංරචක වලින් වෙන් කිරීම. සහායක පරිශීලක අතුරුමුහුණත සමඟ.
මේ අනුව, Eclipse වේදිකාව පොදු, භාෂා-ස්වාධීන යටිතල ව්යුහයක් නිර්වචනය කරයි, සහ ජාවා සංවර්ධන මෙවලම් මගින් Eclipse වෙත සම්පූර්ණ විශේෂාංග සහිත Java IDE එකක් එක් කරයි. Eclipse Platform සහ JDT යන දෙකම සංරචක කිහිපයකින් සමන්විත වන අතර, ඒ සෑම එකක්ම UI-ස්වාධීන "core" හෝ UI ස්ථරයකට අයත් වේ (රූපය 1).
සහල්. 1. Eclipse Platform සහ JDT
Eclipse Platform හි ප්රධාන කොටස් ලැයිස්තුගත කරමු:
- ධාවන කාලය - ප්ලගින යටිතල පහසුකම් නිර්වචනය කරයි. Eclipse මොඩියුලර් ගෘහ නිර්මාණ ශිල්පයක් මගින් සංලක්ෂිත වේ. අත්යවශ්යයෙන්ම, Eclipse යනු "දිගු ස්ථාන" සහ "දිගු" එකතුවකි.
- වැඩබිම - ව්යාපෘති එකක් හෝ කිහිපයක් කළමනාකරණය කරයි. ව්යාපෘතියක් ගොනු පද්ධතියට සෘජුවම සිතියම්ගත කරන ලද ෆෝල්ඩර සහ ගොනු වලින් සමන්විත වේ.
- සම්මත විජට් මෙවලම් කට්ටලය (SWT) - මෙහෙයුම් පද්ධතිය සමඟ ඒකාබද්ධ වූ මූලික පරිශීලක අතුරුමුහුණත් අංග සපයයි.
- JFace - SWT මත ගොඩනගා ඇති UI රාමු ගණනාවක් සපයයි.
- Workbench — Eclipse UI සුසමාදර්ශය නිර්වචනය කරයි: සංස්කාරකවරුන්, දසුන්, ඉදිරිදර්ශන.
Eclipse Platform මගින් Debug, Compare, Search, සහ Team ඇතුළු ඒකාබද්ධ සංවර්ධන මෙවලම් තැනීම සඳහා තවත් බොහෝ ප්රයෝජනවත් සංරචක සපයන බව කිව යුතුය. මූලාශ්ර කේතයේ “ස්මාර්ට් සංස්කාරකවරුන්” ගොඩනැගීමේ පදනම වන JFace Text ගැන විශේෂයෙන් සඳහන් කළ යුතුය. අවාසනාවකට මෙන්, මෙම සංරචකවල මෙන්ම UI ස්ථර සංරචකවල පරික්ෂණයක් පවා මෙම ලිපියේ විෂය පථය තුළ කළ නොහැක, එබැවින් මෙම කොටසේ ඉතිරි කොටසෙහි ප්රධාන “මූලික” සංරචක පිළිබඳ දළ විශ්ලේෂණයකට අපි සීමා වෙමු. Eclipse Platform සහ JDT.
මූලික ධාවන කාලය
Eclipse ප්ලගින යටිතල පහසුකම් පදනම් වී ඇත
Core Workspace
Eclipse Platform මත ගොඩනගා ඇති ඕනෑම ඒකාබද්ධ සංවර්ධන පරිසරයක් පාහේ Eclipse වැඩබිම සමඟ ක්රියා කරයි. එය සාමාන්යයෙන් IDE හි සංවර්ධනය කරන ලද යෙදුමේ ප්රභව කේතය අඩංගු වැඩබිමයි. කාර්ය අවකාශය සෘජුවම ගොනු පද්ධතියට සිතියම් ගත කරන අතර ෆෝල්ඩර සහ ගොනු අඩංගු ව්යාපෘති වලින් සමන්විත වේ. මෙම ව්යාපෘති, ෆෝල්ඩර සහ ගොනු ලෙස හැඳින්වේ සම්පත් වැඩබිම. Eclipse හි වැඩ අවකාශය ක්රියාත්මක කිරීම ගොනු පද්ධතියට අදාළව හැඹිලියක් ලෙස ක්රියා කරයි, එමඟින් සම්පත් ගසෙහි ගමන් කිරීම සැලකිය යුතු ලෙස වේගවත් කිරීමට හැකි වේ. මීට අමතරව, වැඩබිම ඇතුළුව අමතර සේවාවන් ගණනාවක් සපයයි
Core Resources සංරචකය (org.eclipse.core.resources plugin) වැඩබිමට සහ එහි සම්පත් වලට සහාය වීම සඳහා වගකීම දරයි. විශේෂයෙන්ම, මෙම සංරචකය පෝරමයේ වැඩබිමට වැඩසටහන්ගත ප්රවේශය සපයයි සම්පත් ආකෘති. මෙම ආකෘතිය සමඟ ඵලදායි ලෙස වැඩ කිරීමට, ගනුදෙනුකරුවන්ට සම්පතක් වෙත සබැඳියක් ඉදිරිපත් කිරීමට සරල ක්රමයක් අවශ්ය වේ. මෙම අවස්ථාවෙහිදී, ආකෘතියේ ඇති සම්පතේ තත්වය සෘජුවම ගබඩා කරන වස්තුව සේවාදායකයා වෙත ප්රවේශ වීමෙන් සැඟවීමට යෝග්ය වේ. එසේ නොමැති නම්, උදාහරණයක් ලෙස, ගොනුවක් මකා දැමීමේදී, සේවාදායකයාට පසුව ඇති වන ගැටළු සමඟ, ආකෘතියේ නොමැති වස්තුවක් දිගටම රඳවා තබා ගත හැකිය. Eclipse කියන දෙයක් භාවිතා කරලා මේ ගැටලුව විසඳනවා හැසිරවීම සම්පත. හසුරුව යතුරක් ලෙස ක්රියා කරයි (එය වැඩබිමේ ඇති සම්පතට මාර්ගය පමණක් දනී) සහ සම්පතේ තත්වය පිළිබඳ තොරතුරු කෙලින්ම ගබඩා කරන අභ්යන්තර ආදර්ශ වස්තුව වෙත ප්රවේශය සම්පූර්ණයෙන්ම පාලනය කරයි. මෙම සැලසුම මෝස්තරයේ විචලනයකි
සහල්. රූප සටහන 2 මඟින් සම්පත් ආකෘතියට අදාළ වන පරිදි හසුරුව/ශරීර වාග්ය නිරූපණය කරයි. IResource අතුරුමුහුණත සම්පතක හසුරුව නියෝජනය කරන අතර මෙම අතුරුමුහුණත ක්රියාත්මක කරන Resource පන්තිය මෙන් නොව API එකක් වන අතර API නොවන ශරීරය නියෝජනය කරන ResourceInfo පන්තිය වේ. හසුරුව වැඩබිම් මූලයට සාපේක්ෂව සම්පත් වෙත යන මාර්ගය පමණක් දන්නා අතර සම්පත් තොරතුරු වෙත සබැඳියක් අඩංගු නොවන බව අපි අවධාරණය කරමු. සම්පත් තොරතුරු වස්තූන් ඊනියා "මූලද්රව්ය ගසක්" සාදයි. මෙම දත්ත ව්යුහය සම්පූර්ණයෙන්ම මතකයේ අන්තර්ගත වේ. හසුරුවකට අනුරූප වන සම්පත් තොරතුරු නිදසුන සොයා ගැනීමට, මූලද්රව්ය ගස එම හසුරුවෙහි ගබඩා කර ඇති මාර්ගය අනුව ගමන් කරයි.
සහල්. 2. IResource සහ ResourceInfo
අපි පසුව දකින පරිදි, සම්පත් ආකෘතියේ මූලික සැලසුම (අපි එය හසුරුව මත පදනම් ලෙස හැඳින්විය හැක) අනෙකුත් මාදිලි සඳහාද Eclipse හි භාවිතා වේ. දැනට, මෙම සැලසුමේ සුවිශේෂී ගුණාංග කිහිපයක් ලැයිස්තුගත කරමු:
- හසුරුව යනු වටිනා වස්තුවකි. වටිනාකම් වස්තු යනු සමානාත්මතාවය අනන්යතාවය මත පදනම් නොවන වෙනස් කළ නොහැකි වස්තූන් ය. එවැනි වස්තූන් හෑෂ් බහාලුම්වල යතුරක් ලෙස ආරක්ෂිතව භාවිතා කළ හැකිය. හැසිරවීමේ අවස්ථා කිහිපයක් එකම සම්පතක් යොමු කළ හැක. ඒවා සංසන්දනය කිරීම සඳහා, ඔබ සමාන (Object) ක්රමය භාවිතා කළ යුතුය.
- හසුරුව සම්පතක හැසිරීම නිර්වචනය කරයි, නමුත් සම්පතේ තත්වය පිළිබඳ තොරතුරු අඩංගු නොවේ (එය ගබඩා කරන එකම දත්ත "යතුර", සම්පත වෙත යන මාර්ගයයි).
- හසුරුව නොපවතින සම්පතක් (තවමත් නිර්මාණය කර නොමැති සම්පතක් හෝ දැනටමත් මකා දමා ඇති සම්පතක්) වෙත යොමු විය හැක. IResource.exists() ක්රමය භාවිතයෙන් සම්පතක පැවැත්ම පරීක්ෂා කළ හැක.
- සමහර මෙහෙයුම් හසුරුවෙහිම ගබඩා කර ඇති තොරතුරු මත පදනම්ව ක්රියාත්මක කළ හැකිය (ඊනියා හසුරුව-පමණක් මෙහෙයුම්). උදාහරණ වන්නේ IResource.getParent(), getFullPath() ආදියයි. එවැනි මෙහෙයුමක් සාර්ථක වීමට සම්පත පැවතිය යුතු නැත. සාර්ථක වීමට සම්පතක් පැවතීමට අවශ්ය වන මෙහෙයුම් සම්පත් නොමැති නම් CoreException එකක් විසි කරයි.
Eclipse මඟින් වැඩබිම් සම්පත් වෙනස්කම් දැනුම් දීම සඳහා කාර්යක්ෂම යාන්ත්රණයක් සපයයි (රූපය 3). Eclipse IDE තුළම සිදු කරන ක්රියාවල ප්රතිඵලයක් ලෙස හෝ ගොනු පද්ධතිය සමඟ සමමුහුර්ත කිරීමේ ප්රතිඵලයක් ලෙස සම්පත් වෙනස් විය හැක. අවස්ථා දෙකේදීම, දැනුම්දීම් සඳහා දායක වන සේවාදායකයින්ට "සම්පත් ඩෙල්ටා" ආකාරයේ වෙනස්කම් පිළිබඳ සවිස්තරාත්මක තොරතුරු සපයනු ලැබේ. ඩෙල්ටාවක් වැඩබිම් සම්පතක (උප) ගසක අවස්ථා දෙකක් අතර සිදුවන වෙනස්කම් විස්තර කරන අතර එයම ගසකි, එහි සෑම නෝඩයක්ම සම්පතක වෙනසක් විස්තර කරන අතර ළමා සම්පත්වල වෙනස්කම් විස්තර කරන ඊළඟ මට්ටමේ ඩෙල්ටා ලැයිස්තුවක් අඩංගු වේ.
සහල්. 3. IResourceChangeEvent සහ IResourceDelta
සම්පත් ඩෙල්ටා මත පදනම් වූ දැනුම්දීම් යාන්ත්රණයට පහත ලක්ෂණ ඇත:
- ඩෙල්ටා ප්රත්යාවර්තක සංයුතියේ මූලධර්මය භාවිතයෙන් ගොඩනගා ඇති බැවින් එකම ව්යුහය භාවිතයෙන් තනි වෙනසක් සහ බොහෝ වෙනස්කම් විස්තර කෙරේ. ග්රාහක සේවාලාභීන්ට ඩෙල්ටා ගසක් හරහා ප්රත්යාවර්තී අවරෝහණ භාවිතයෙන් සම්පත් වෙනස් කිරීමේ දැනුම්දීම් සැකසීමට හැකිය.
- ඩෙල්ටාවේ එහි චලනය සහ/හෝ ඒ හා සම්බන්ධ "සලකුණු" වල වෙනස්කම් ඇතුළුව සම්පතෙහි වෙනස්කම් පිළිබඳ සම්පූර්ණ තොරතුරු අඩංගු වේ (උදාහරණයක් ලෙස, සම්පාදන දෝෂ සලකුණු ලෙස නිරූපණය කෙරේ).
- සම්පත් යොමු කිරීම් හසුරුව හරහා සිදු කරන බැවින්, ඩෙල්ටා ස්වභාවිකවම දුරස්ථ සම්පතක් යොමු කළ හැක.
අප ඉක්මනින් දකින පරිදි, සම්පත් ආකෘතිය වෙනස් කිරීමේ දැනුම්දීම් යාන්ත්රණයේ සැලසුමේ ප්රධාන සංරචක වෙනත් හැසිරවීම් මත පදනම් වූ ආකෘති සඳහා ද අදාළ වේ.
JDT Core
Eclipse Workspace සම්පත් ආකෘතිය මූලික භාෂා-අඥෙයවාදී ආකෘතියකි. JDT Core සංරචකය (plugin org.eclipse.jdt.core) ජාවා ඉදිරිදර්ශනයකින්, ඊනියා "ජාවා ආකෘතිය" (Java model) සිට වැඩ අවකාශයේ ව්යුහය සැරිසැරීමට සහ විශ්ලේෂණය කිරීමට API සපයයි.ජාවා ආකෘතිය) මෙම API ෆෝල්ඩර සහ ගොනු අනුව නිර්වචනය කරන ලද යටින් පවතින සම්පත් ආදර්ශ API වලට ප්රතිවිරුද්ධව, Java මූලද්රව්ය අනුව අර්ථ දක්වා ඇත. ජාවා මූලද්රව්ය ගසෙහි ප්රධාන අතුරු මුහුණත් රූපයේ දැක්වේ. 4.
සහල්. 4. Java Model Elements
ජාවා ආකෘතිය සම්පත් ආකෘතියට සමාන හසුරුව/ශරීර ව්යවහාරය භාවිතා කරයි (රූපය 5). IJavaElement යනු හසුරුව වන අතර JavaElementInfo ශරීරයේ කාර්යභාරය ඉටු කරයි. IJavaElement අතුරුමුහුණත සියලු ජාවා මූලද්රව්ය සඳහා පොදු ප්රොටෝකෝලයක් නිර්වචනය කරයි. එහි සමහර ක්රම හැසිරවීමට පමණි: getElementName(), getParent() ආදිය. JavaElementInfo වස්තුව අනුරූප මූලද්රව්යයේ තත්වය ගබඩා කරයි: එහි ව්යුහය සහ ගුණාංග.
සහල්. 5. IJavaElement සහ JavaElementInfo
ජාවා ආකෘතියට සම්පත් ආකෘතියට සාපේක්ෂව මූලික හසුරුව/ශරීර සැලසුම ක්රියාත්මක කිරීමේදී යම් යම් වෙනස්කම් තිබේ. ඉහත සඳහන් කළ පරිදි, සම්පත් ආකෘතියේ, මූලද්රව්ය ගස, එහි නෝඩ් සම්පත් තොරතුරු වස්තු වන අතර, එය සම්පූර්ණයෙන්ම මතකයේ අඩංගු වේ. නමුත් Java ආකෘතියට සම්පත් ගසට වඩා සැලකිය යුතු තරම් විශාල මූලද්රව්ය සංඛ්යාවක් තිබිය හැක, මන්ද එය .java සහ .class ගොනු වල අභ්යන්තර ව්යුහය ද නියෝජනය කරයි: වර්ග, ක්ෂේත්ර සහ ක්රම.
මතකයේ ඇති මූලද්රව්යවල සම්පූර්ණ වෘක්ෂයම සම්පූර්ණයෙන් ද්රව්යකරණය වීම වැලැක්වීම සඳහා, ජාවා මාදිලිය ක්රියාත්මක කිරීම සීමිත ප්රමාණයේ LRU හැඹිලි මූලද්රව්ය තොරතුරු භාවිතා කරයි, එහි යතුර IJavaElement හසුරුවයි. මූලද්රව්ය වෘක්ෂය සංචාලනය කරන විට ඉල්ලුම මත මූලද්රව්ය තොරතුරු වස්තු නිර්මාණය වේ. මෙම අවස්ථාවෙහිදී, අවම වශයෙන් භාවිතා කරන අයිතම හැඹිලියෙන් ඉවත් කරනු ලබන අතර, ආකෘතියේ මතක පරිභෝජනය නිශ්චිත හැඹිලි ප්රමාණයට සීමා වේ. මෙය හසුරුව මත පදනම් වූ සැලසුමේ තවත් වාසියක් වන අතර, එවැනි ක්රියාත්මක කිරීමේ විස්තර සේවාදායක කේතයෙන් සම්පූර්ණයෙන්ම සඟවයි.
ජාවා මූලද්රව්ය වෙත වෙනස්කම් දැනුම් දීමේ යාන්ත්රණය සාමාන්යයෙන් ඉහත සාකච්ඡා කර ඇති වැඩ ඉඩ සම්පත් වල වෙනස්කම් නිරීක්ෂණය කිරීමේ යාන්ත්රණයට සමාන වේ. ජාවා මාදිලියේ වෙනස්කම් නිරීක්ෂණය කිරීමට කැමති සේවාලාභියෙකු IJavaElementDelta අඩංගු ElementChangedEvent වස්තුවක් ලෙස නිරූපනය වන දැනුම්දීම් වලට දායක වේ (රූපය 6).
සහල්. 6. ElementChangedEvent සහ IJavaElementDelta
ජාවා ආකෘතියේ ක්රම ශරීර හෝ නාම විභේදනය පිළිබඳ තොරතුරු අඩංගු නොවේ, එබැවින් ජාවා හි ලියා ඇති කේතය පිළිබඳ සවිස්තරාත්මක විශ්ලේෂණයක් සඳහා, JDT Core අතිරේක (හැසිරවීම මත පදනම් නොවන) ආකෘතියක් සපයයි:
සින්ටැක්ස් ගස්වලට සැලකිය යුතු මතක ප්රමාණයක් පරිභෝජනය කළ හැකි නිසා, සක්රීය සංස්කාරකය සඳහා JDT හැඹිලිගත කරන්නේ එක් AST එකක් පමණි. ජාවා ආකෘතිය මෙන් නොව, AST සාමාන්යයෙන් "අතරමැදි", "තාවකාලික" ආකෘතියක් ලෙස සලකනු ලබන අතර, AST නිර්මාණය කිරීමට තුඩු දුන් මෙහෙයුමේ සන්දර්භයට පරිබාහිර සේවාදායකයින් විසින් සාමාජිකයන් විසින් යොමු නොකළ යුතුය.
ලැයිස්තුගත කර ඇති ආකෘති තුන (ජාවා ආකෘතිය, AST, බන්ධන) එකට JDT හි "බුද්ධිමත් සංවර්ධන මෙවලම්" තැනීමේ පදනම සාදයි, විවිධ "සහායකයන්" සහිත බලවත් ජාවා සංස්කාරකයක්, ප්රභව කේත සැකසීම සඳහා විවිධ ක්රියා (ආනයන ලැයිස්තුවක් සංවිධානය කිරීම ඇතුළුව. අභිරුචිකරණය කරන ලද විලාසය අනුව නම් සහ හැඩතල ගැන්වීම), සෙවීම් සහ ප්රතිනිර්මාණය කිරීමේ මෙවලම්. මෙම අවස්ථාවෙහිදී, ජාවා ආකෘතිය විශේෂ කාර්යභාරයක් ඉටු කරයි, මන්ද එය සංවර්ධනය වෙමින් පවතින යෙදුමේ ව්යුහයේ දෘශ්ය නිරූපණය සඳහා පදනම ලෙස භාවිතා කරයි (උදාහරණයක් ලෙස, පැකේජ ගවේෂකය, දළ සටහන, සෙවීම, ඇමතුම් ධූරාවලිය සහ ධූරාවලිය වර්ගය).
1C:Enterprise Developments Tools හි භාවිතා වන Eclipse සංරචක
රූපයේ. 7C:Enterprise Development Tools සඳහා තාක්ෂණික වේදිකාවේ පදනම වන Eclipse සංරචක රූප සටහන 1 හි දැක්වේ.
සහල්. 7. 1C සඳහා වේදිකාවක් ලෙස Eclipse: Enterprise Development Tools
Eclipse Platform මූලික යටිතල පහසුකම් සපයයි. අපි පෙර කොටසේ මෙම යටිතල පහසුකම්වල සමහර පැති දෙස බැලුවෙමු.
ඕනෑම සැබෑ පොදු කාර්ය මෙවලමක් මෙන්, පුළුල් පරාසයක ආකෘති නිර්මාණ ගැටළු විසඳීම සඳහා EMF සුදුසු වේ, නමුත් සමහර මාදිලියේ පන්ති (උදාහරණයක් ලෙස, ඉහත සාකච්ඡා කර ඇති හසුරුව මත පදනම් වූ ආකෘති) වඩාත් විශේෂිත ආකෘති නිර්මාණ මෙවලම් අවශ්ය විය හැකිය. EMF ගැන කතා කිරීම ස්තුතිවන්ත නොවන කාර්යයකි, විශේෂයෙන් එක් ලිපියක සීමිත සීමාවන් තුළ, මෙය වෙනම පොතක විෂය වන අතර තරමක් ඝන එකක් වන බැවිනි. EMF යටින් පවතින උසස් තත්ත්වයේ සාමාන්යකරණ පද්ධතිය ඉහළ මට්ටමේ ව්යාපෘතියට ඇතුළත් කර ඇති ආකෘති නිර්මාණය සඳහා කැප වූ ව්යාපෘති මාලාවක් බිහි කිරීමට ඉඩ දුන් බව පමණක් සටහන් කරමු.
1C:Enterprise Development Tools EMF සහ වෙනත් Eclipse Modeling ව්යාපෘති ගණනාවක්ම සක්රියව භාවිතා කරයි. විශේෂයෙන්ම, Xtext යනු එවැනි 1C: Enterprise භාෂා සඳහා වූ සංවර්ධන මෙවලම්වල අත්තිවාරමක් වන අතර එය ගොඩනඟන ලද ක්රමලේඛන භාෂාව සහ විමසුම් භාෂාව වේ. මෙම සංවර්ධන මෙවලම් සඳහා තවත් පදනමක් වන්නේ Eclipse Handly ව්යාපෘතියයි, එය අපි වඩාත් විස්තරාත්මකව සාකච්ඡා කරමු (ලැයිස්තුගත කර ඇති Eclipse සංරචක වලින්, එය තවමත් අවම වශයෙන් දන්නා කරුණකි).
හසුරුව මත පදනම් වූ ආකෘතිවල මූලික වාස්තුවිද්යාත්මක මූලධර්ම, එනම් හසුරුව/ශරීර ව්යාජය, සම්පත් ආකෘතිය සහ ජාවා ආකෘතිය උදාහරණ ලෙස යොදා ගනිමින් ඉහත සාකච්ඡා කරන ලදී. Eclipse Java සංවර්ධන මෙවලම් (JDT) සඳහා සම්පත් ආකෘතිය සහ ජාවා ආකෘතිය යන දෙකම වැදගත් පදනමක් බව ද එය සටහන් කළේය. තවද සියලුම *DT Eclipse ව්යාපෘති පාහේ JDT හා සමාන ගෘහ නිර්මාණ ශිල්පයක් ඇති බැවින්, Eclipse Platform මත ගොඩනගා ඇති සියලුම IDEs නොවේ නම්, හසුරු මත පදනම් වූ ආකෘති බොහෝමයක් යටපත් වන බව පැවසීම අතිශයෝක්තියක් නොවේ. උදාහරණයක් ලෙස, Eclipse C/C++ Development Tooling (CDT) හි හැසිරවීම මත පදනම් වූ C/C++ ආකෘතියක් ඇති අතර එය CDT ගෘහනිර්මාණ ශිල්පය තුළ Java ආකෘතිය JDT හි කරන කාර්යභාරයම ඉටු කරයි.
Handly ට පෙර, Eclipse හසුරුව මත පදනම් වූ භාෂා ආකෘති ගොඩනැගීම සඳහා විශේෂිත පුස්තකාල ලබා දුන්නේ නැත. දැනට පවතින ආකෘති නිර්මාණය කර ඇත්තේ ප්රධාන වශයෙන් ජාවා ආකෘති කේතය (කොපි/පේස්ට්) සෘජුවම අනුවර්තනය කිරීමෙනි. එය ඉඩ දෙන අවස්ථාවන්හිදී Eclipse Public License (EPL). (නිසැකවම, මෙය සාමාන්යයෙන් Eclipse ව්යාපෘති සඳහාම නෛතික ප්රශ්නයක් නොවේ, නමුත් සංවෘත මූලාශ්ර නිෂ්පාදන සඳහා නොවේ.) එහි ආවේනික අහඹුභාවයට අමතරව, මෙම තාක්ෂණය සුප්රසිද්ධ ගැටළු හඳුන්වා දෙයි: දෝෂ වලට අනුවර්තනය වන විට හඳුන්වා දුන් කේත අනුපිටපත් කිරීම, ආදිය නරකම දෙය නම්, ප්රතිඵලය වන ආකෘති "තමන් තුළ ඇති දේ" ලෙස පවතින අතර ඒකාබද්ධ කිරීමේ හැකියාවෙන් ප්රයෝජන නොගැනීමයි. නමුත් හැසිරවීම මත පදනම් වූ භාෂා ආකෘති සඳහා පොදු සංකල්ප සහ ප්රොටෝකෝල හුදකලා කිරීම EMF සම්බන්ධයෙන් සිදු වූ දෙයට සමාන ඒවා සමඟ වැඩ කිරීම සඳහා නැවත භාවිතා කළ හැකි සංරචක නිර්මාණය කිරීමට හේතු විය හැක.
Eclipse ට මේ ප්රශ්න නොතේරුණා නෙවෙයි. නැවත 2005 දී
එක්තරා අර්ථයකින්, Handly ව්යාපෘතිය සැලසුම් කර ඇත්තේ EMF හා සමාන ගැටළු විසඳීමට, නමුත් හසුරුව මත පදනම් වූ ආකෘති සහ මූලික වශයෙන් භාෂා සඳහා (එනම්, සමහර ක්රමලේඛන භාෂාවක ව්යුහයේ අංග නියෝජනය කිරීම). Handly නිර්මාණය කිරීමේදී ප්රධාන ඉලක්ක පහත දැක්වේ.
- විෂය ක්ෂේත්රයේ ප්රධාන වියුක්තයන් හඳුනා ගැනීම.
- උත්සාහය අඩු කිරීම සහ කේත නැවත භාවිතා කිරීම හරහා හැසිරවීම මත පදනම් වූ භාෂා ආකෘති ක්රියාත්මක කිරීමේ ගුණාත්මකභාවය වැඩි දියුණු කිරීම.
- ප්රතිඵලයක් ලෙස ලැබෙන මාදිලි සඳහා ඒකාබද්ධ මෙටා මට්ටමේ API ලබා දීම, භාෂා හැසිරවීම මත පදනම් වූ ආකෘති සමඟ ක්රියා කරන පොදු IDE සංරචක නිර්මාණය කිරීමට හැකි වේ.
- නම්යශීලීභාවය සහ පරිමාණය.
- Xtext සමඟ ඒකාබද්ධ කිරීම (වෙනම ස්ථරයක).
පොදු සංකල්ප සහ ප්රොටෝකෝල ඉස්මතු කිරීම සඳහා, භාෂා හැසිරවීම මත පදනම් වූ ආකෘතිවල පවතින ක්රියාත්මක කිරීම් විශ්ලේෂණය කරන ලදී. Handly විසින් සපයන ලද ප්රධාන අතුරුමුහුණත් සහ මූලික ක්රියාත්මක කිරීම් රූපයේ දැක්වේ. 8.
සහල්. 8. පොදු අතුරුමුහුණත් සහ හෑන්ඩ්ලි මූලද්රව්යවල මූලික ක්රියාත්මක කිරීම්
IElement අතුරුමුහුණත මූලද්රව්යයක හසුරුව නියෝජනය කරන අතර එය සියලු Handly-පාදක මාදිලිවල මූලද්රව්ය සඳහා පොදු වේ. වියුක්ත පන්තියේ මූලද්රව්යය සාමාන්යකරණය කරන ලද හසුරුව/ශරීර යාන්ත්රණය ක්රියාත්මක කරයි (රූපය 9).
සහල්. 9. IElement සහ Generic handle/body කියාත්මක කිරීම
මීට අමතරව, ආදර්ශ මූලද්රව්යවල වෙනස්කම් පිළිබඳව දැනුම් දීම සඳහා Handly සාමාන්යකරණය කරන ලද යාන්ත්රණයක් සපයයි (රූපය 10). ඔබට පෙනෙන පරිදි, එය සම්පත් ආකෘතියේ සහ ජාවා ආකෘතියේ ක්රියාත්මක කරන ලද දැනුම්දීම් යාන්ත්රණයන්ට පුළුල් ලෙස සමාන වන අතර, මූලද්රව්ය වෙනස් කිරීමේ තොරතුරු පිළිබඳ ඒකාබද්ධ නියෝජනයක් සැපයීමට IElementDelta භාවිතා කරයි.
සහල්. 10. හෑන්ඩ්ලි දැනුම්දීම් යාන්ත්රණයේ සාමාන්ය අතුරුමුහුණත් සහ මූලික ක්රියාත්මක කිරීම්
ඉහත සාකච්ඡා කර ඇති Handly කොටස (රූපය 9 සහ 10) ඕනෑම හසුරුව මත පදනම් වූ ආකෘති නියෝජනය කිරීමට භාවිතා කළ හැක. නිර්මාණය සඳහා භාෂාමය ආකෘති, ව්යාපෘතිය අමතර ක්රියාකාරීත්වයක් ලබා දෙයි - විශේෂයෙන්, පොදු අතුරුමුහුණත් සහ මූල පෙළ ව්යුහයේ මූලද්රව්ය සඳහා මූලික ක්රියාත්මක කිරීම්, ඊනියා මූලාශ්ර මූලද්රව්ය (රූපය 8). ISourceFile අතුරුමුහුණත මූලාශ්ර ගොනුවක් නියෝජනය කරයි, සහ ISourceConstruct ප්රභව ගොනුව තුළ ඇති අංගයක් නියෝජනය කරයි. SourceFile සහ SourceConstruct යන වියුක්ත පන්ති මූලාශ්ර ගොනු සහ ඒවායේ මූලද්රව්ය සමඟ වැඩ කිරීම සඳහා සාමාන්යකරණය කළ යාන්ත්රණයන් ක්රියාත්මක කරයි, නිදසුනක් ලෙස, පෙළ බෆර සමඟ වැඩ කිරීම, මූලාශ්ර පෙළෙහි ඇති මූලද්රව්යයක ඛණ්ඩාංකවලට බැඳීම, ක්රියාකාරී පිටපත් බෆරයක වත්මන් අන්තර්ගතයන් සමඟ ආකෘති ප්රතිසන්ධාන කිරීම. , ආදිය. මෙම යාන්ත්රණ ක්රියාත්මක කිරීම සාමාන්යයෙන් තරමක් අභියෝගයක් වන අතර, උසස් තත්ත්වයේ පාදක ක්රියාත්මක කිරීම් ලබා දීමෙන් හසුරු මත පදනම් වූ භාෂා ආකෘති සංවර්ධනය කිරීමේ උත්සාහය Handly විසින් සැලකිය යුතු ලෙස අඩු කළ හැකිය.
ඉහත ලැයිස්තුගත කර ඇති මූලික යාන්ත්රණයන්ට අමතරව, Handly පෙළ බෆර සහ ස්නැප්ෂොට් සඳහා යටිතල පහසුකම් සපයයි, මූලාශ්ර කේත සංස්කාරක සමඟ ඒකාබද්ධ කිරීම සඳහා සහාය (Xtext සංස්කාරකය සමඟ කොටුවෙන් පිටත ඒකාබද්ධ කිරීම ඇතුළුව), මෙන්ම සමහර පොදු UI සංරචක ප්රභව කේත සංස්කාරක සමඟ වැඩ කරන්න. දළ සටහන් රාමුව වැනි අතේ ගෙන යා හැකි ආකෘති. එහි හැකියාවන් නිදර්ශනය කිරීම සඳහා, ව්යාපෘතිය, Handly හි Java ආකෘතිය ක්රියාත්මක කිරීම ඇතුළුව උදාහරණ කිහිපයක් සපයයි. (JDT හි ජාවා ආකෘතිය සම්පූර්ණයෙන් ක්රියාත්මක කිරීම හා සසඳන විට, මෙම ආකෘතිය වැඩි පැහැදිලිකම සඳහා හිතාමතාම තරමක් සරල කර ඇත.)
කලින් සඳහන් කළ පරිදි, Handly හි ආරම්භක සැලසුම් සහ පසුකාලීන සංවර්ධනය තුළ ප්රධාන අවධානය යොමු වූයේ පරිමාණය සහ නම්යශීලී බව මත ය.
ප්රතිපත්තිමය වශයෙන්, හසුරුව මත පදනම් වූ ආකෘති "සැලසුම් අනුව" හොඳින් පරිමාණය කරයි. උදාහරණයක් ලෙස, හැන්ඩ්ල්/බොඩි අයිඩියම් ඔබට ආකෘතියක් විසින් පරිභෝජනය කරන මතක ප්රමාණය සීමා කිරීමට ඉඩ සලසයි. නමුත් සූක්ෂ්මතා ද තිබේ. මේ අනුව, පරිමාණය සඳහා Handly පරීක්ෂා කිරීමේදී, දැනුම්දීමේ යාන්ත්රණය ක්රියාත්මක කිරීමේදී ගැටළුවක් අනාවරණය විය - මූලද්රව්ය විශාල ප්රමාණයක් වෙනස් කළ විට, ඩෙල්ටා ඉදිකිරීමට වැඩි කාලයක් ගත විය. වරක් අනුරූප කේතය අනුවර්තනය කරන ලද JDT ජාවා ආකෘතියේ ද එම ගැටළුව ඇති බව පෙනී ගියේය. අපි Handly හි දෝෂය නිවැරදි කර JDT සඳහා සමාන පැච් එකක් සකස් කළෙමු, එය කෘතවේදීව ලැබිණි. මෙය දැනට පවතින ආදර්ශ ක්රියාත්මක කිරීම් වලට Handly හඳුන්වාදීම ප්රයෝජනවත් විය හැකි එක් උදාහරණයක් පමණි, මන්ද මෙම අවස්ථාවේ දී එවැනි දෝෂයක් එක් ස්ථානයකදී නිවැරදි කළ හැකි බැවිනි.
දැනට පවතින ආදර්ශ ක්රියාත්මක කිරීම් වලට Handly ක්රියාත්මක කිරීම තාක්ෂණිකව ශක්ය කිරීමට, පුස්තකාලයට සැලකිය යුතු නම්යශීලී බවක් තිබිය යුතුය. ප්රධාන ගැටළුව වන්නේ API ආකෘතිය හරහා පසුගාමී අනුකූලතාව පවත්වා ගැනීමයි. මෙම ගැටළුව විසඳා ඇත
නම්යශීලීභාවයට වෙනත් පැති ද ඇත. උදාහරණයක් ලෙස, Handly ආකෘතියේ ව්යුහය මත කිසිදු සීමාවක් පනවන්නේ නැති අතර සාමාන්ය අරමුණු සහ වසම්-විශේෂිත භාෂා දෙකම ආකෘති කිරීමට භාවිතා කළ හැක. මූලාශ්ර ගොනුවේ ව්යුහය ගොඩනඟන විට, Handly විසින් AST නියෝජනයේ කිසිදු විශේෂ ආකාරයක් නියම නොකරන අතර, ප්රතිපත්තිමය වශයෙන්, AST එකක් තිබීම පවා අවශ්ය නොවේ, එමඟින් ඕනෑම විග්රහ කිරීමේ යාන්ත්රණයක් සමඟ අනුකූලතාව සහතික කෙරේ. අවසාන වශයෙන්, Handly Eclipse වැඩබිම සමඟ පූර්ණ අනුකලනය සඳහා සහය දක්වයි, නමුත් එය සමඟ ඒකාබද්ධ වීම නිසා ගොනු පද්ධති සමඟ සෘජුවම වැඩ කළ හැක.
වත්මන් අනුවාදය
ඉහත සඳහන් කළ පරිදි, මෙම නිෂ්පාදනවලින් එකක් වන්නේ 1C: ව්යවසාය සංවර්ධන මෙවලම් වන අතර, එවැනි 1C: ව්යවසාය භාෂා වල ඉහළ මට්ටමේ ව්යුහයේ මූලද්රව්ය ආදර්ශයට ගැනීම සඳහා ආරම්භයේ සිටම Handly භාවිතා කරනු ලැබේ. . තවත් නිෂ්පාදනයක් සාමාන්ය ජනතාව එතරම් දන්නේ නැත. මෙය
API ස්ථායීතාවයේ සහතිකයක් සහිත 1.0 අනුවාදය නිකුත් කිරීමෙන් පසුව සහ ඉන්කියුබේෂන් තත්වයෙන් ඉවත් වන ව්යාපෘතියෙන් පසුව, Handly හට නව අනුගාමිකයින් ලැබෙනු ඇතැයි අපි බලාපොරොත්තු වෙමු. මේ අතර, ව්යාපෘතිය අඛණ්ඩව API පරීක්ෂා කිරීම සහ වැඩිදියුණු කිරීම, වසරකට "ප්රධාන" නිකුතු දෙකක් නිකුත් කරයි - ජුනි මාසයේදී (සමගාමී සූර්යග්රහණය නිකුතුවේ දිනය) සහ දෙසැම්බර් මාසයේදී, හදා ගන්නන්ට විශ්වාසය තැබිය හැකි පුරෝකථනය කළ හැකි කාලසටහනක් සපයයි. ව්යාපෘතියේ “දෝෂ අනුපාතය” අඛණ්ඩව අඩු මට්ටමක පවතින බවත්, මුල් අනුවාදවල සිටම හෑන්ඩ්ලි මුල් භාවිතා කරන්නන්ගේ නිෂ්පාදනවල විශ්වාසනීය ලෙස ක්රියා කරන බවත් අපට එකතු කළ හැකිය. Eclipse Handly තවදුරටත් ගවේෂණය කිරීමට, ඔබට භාවිතා කළ හැක
මූලාශ්රය: www.habr.com