1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්

සමහරවිට, සූර්ය ග්රහණය දිගු කලක් තිස්සේ විශේෂ හැඳින්වීමක් අවශ්ය නොවේ. Eclipse Java සංවර්ධන මෙවලම් වලට ස්තුති වන්නට බොහෝ අය Eclipse ගැන හුරුපුරුදුය.JDT) බොහෝ සංවර්ධකයින් "Eclipse" යන වචනය සමඟ සම්බන්ධ කරන්නේ මෙම ජනප්‍රිය විවෘත මූලාශ්‍ර ජාවා IDE ය. කෙසේ වෙතත්, Eclipse යනු සංවර්ධන මෙවලම් (Eclipse Platform) ඒකාබද්ධ කිරීම සඳහා විස්තීරණ වේදිකාවක් වන අතර JDT ඇතුළුව එහි පදනම මත ගොඩනගා ඇති IDE ගණනාවක් වේ. Eclipse යනු Eclipse ව්‍යාපෘතිය, Eclipse Platform සහ JDT සංවර්ධනය සම්බන්ධීකරණය කරන ඉහළ මට්ටමේ ව්‍යාපෘතිය සහ එම සංවර්ධනයේ ප්‍රතිඵලය වන Eclipse SDK යන දෙකම වේ. අවසාන වශයෙන්, Eclipse යනු විශාල ව්‍යාපෘති ප්‍රජාවක් සහිත විවෘත-මූලාශ්‍ර පදනමකි, ඒවා සියල්ලම ජාවා භාෂාවෙන් ලියා ඇති හෝ සංවර්ධන මෙවලම් වලට අදාළ නොවේ (උදාහරණයක් ලෙස, ව්‍යාපෘති Eclipse IoT и සූර්යග්රහණ විද්යාව) Eclipse ලෝකය ඉතා විවිධාකාර වේ.

ස්වභාවධර්මයේ දළ විශ්ලේෂණයක් වන මෙම ලිපියෙන්, අපි ඒකාබද්ධ සංවර්ධන මෙවලම් තැනීමේ වේදිකාවක් ලෙස Eclipse ගෘහ නිර්මාණ ශිල්පයේ මූලික කරුණු කිහිපයක් දෙස බැලීමට උත්සාහ කරමු සහ තාක්ෂණයේ පදනම වන Eclipse සංරචක පිළිබඳ මූලික අදහසක් ලබා දෙන්නෙමු. "නව වින්‍යාසකරු" 1C සඳහා වේදිකාව: ව්‍යවසාය. 1C: ව්යවසාය සංවර්ධන මෙවලම්. ඇත්ත වශයෙන්ම, එවැනි සමාලෝචනයක් නොවැළැක්විය හැකි ලෙස බොහෝ දුරට මතුපිටින් පෙනෙන අතර තරමක් සීමිත වනු ඇත, මන්ද අපි ඉලක්කගත ප්‍රේක්ෂකයින් ලෙස Eclipse සංවර්ධකයින් කෙරෙහි පමණක් අවධානය යොමු කරන බැවිනි. කෙසේ වෙතත්, පළපුරුදු Eclipse සංවර්ධකයින්ට පවා ලිපියේ රසවත් තොරතුරු සොයා ගැනීමට හැකි වනු ඇතැයි අපි බලාපොරොත්තු වෙමු. උදාහරණයක් ලෙස, අපි සාපේක්ෂ නව සහ එතරම් නොදන්නා ව්‍යාපෘතියක් වන “Eclipse හි රහස්” එකක් ගැන කතා කරමු. Eclipse Handly1C විසින් ආරම්භ කරන ලද සහ සහාය දක්වන ලදී.
1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්

Eclipse Architecture හැඳින්වීම

අපි මුලින්ම උදාහරණය භාවිතා කරමින් Eclipse architecture හි සාමාන්‍ය කරුණු කිහිපයක් බලමු Eclipse Java සංවර්ධන මෙවලම් (JDT). උදාහරණයක් ලෙස JDT තෝරා ගැනීම අහම්බයක් නොවේ. Eclipse හි දිස්වන පළමු ඒකාබද්ධ සංවර්ධන පරිසරය මෙයයි. Eclipse C/C++ Development Tooling (CDT) වැනි අනෙකුත් *DT Eclipse ව්‍යාපෘති පසුව නිර්මාණය කරන ලද අතර JDT වෙතින් මූලික වාස්තු විද්‍යාත්මක මූලධර්ම සහ තනි මූල කේත කොටස් දෙකම ණයට ගන්නා ලදී. 1C:Enterprise Development Tools ඇතුළුව Eclipse Platform මත ගොඩනගා ඇති ඕනෑම IDE එකක් සඳහා JDT හි දක්වා ඇති ගෘහ නිර්මාණ ශිල්පයේ මූලික කරුණු අද දක්වාම අදාළ වේ.

පළමුවෙන්ම, සූර්යග්‍රහණය තරමක් පැහැදිලි වාස්තු විද්‍යාත්මක ස්ථරයකින් සංලක්ෂිත වන අතර, විශේෂිත ක්‍රමලේඛන භාෂාවන්ට සහය දැක්වීම සඳහා නිර්මාණය කර ඇති ක්‍රියාකාරීත්වයෙන් භාෂා-ස්වාධීන ක්‍රියාකාරීත්වය වෙන් කිරීම සහ UI-ස්වාධීන “core” සංරචක ආශ්‍රිත සංරචක වලින් වෙන් කිරීම. සහායක පරිශීලක අතුරුමුහුණත සමඟ.

මේ අනුව, Eclipse වේදිකාව පොදු, භාෂා-ස්වාධීන යටිතල ව්‍යුහයක් නිර්වචනය කරයි, සහ ජාවා සංවර්ධන මෙවලම් මගින් Eclipse වෙත සම්පූර්ණ විශේෂාංග සහිත Java IDE එකක් එක් කරයි. Eclipse Platform සහ JDT යන දෙකම සංරචක කිහිපයකින් සමන්විත වන අතර, ඒ සෑම එකක්ම UI-ස්වාධීන "core" හෝ UI ස්ථරයකට අයත් වේ (රූපය 1).

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 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 ප්ලගින යටිතල පහසුකම් පදනම් වී ඇත OSGi සහ ව්යාපෘතිය මගින් සපයනු ලැබේ Eclipse Equinox. සෑම Eclipse ප්ලගිනයක්ම OSGi බණ්ඩලයකි. OSGi පිරිවිතරය, විශේෂයෙන්ම, අනුවාදනය සහ පරායත්තතා විභේදනය සඳහා යාන්ත්රණ නිර්වචනය කරයි. මෙම සම්මත යාන්ත්රණ වලට අමතරව, Equinox සංකල්පය හඳුන්වා දෙයි පුළුල් කිරීමේ ලක්ෂ්ය. සෑම ප්ලගිනයකටම තමන්ගේම විස්තාරණ ලක්ෂ්‍යයන් නිර්වචනය කළ හැකි අතර, එම හෝ වෙනත් ප්ලගීන මගින් අර්ථ දක්වා ඇති දිගු ලක්ෂ්‍ය භාවිතයෙන් පද්ධතියට අමතර ක්‍රියාකාරීත්වය ("දිගු") හඳුන්වා දිය හැක. OSGi සහ Equinox යාන්ත්‍රණ පිළිබඳ ඕනෑම සවිස්තරාත්මක විස්තරයක් මෙම ලිපියේ විෂය පථයෙන් ඔබ්බට ය. Eclipse හි මොඩියුලරීකරණය සම්පූර්ණ බව පමණක් සටහන් කරමු (ධාවන කාලය ඇතුළුව ඕනෑම උප පද්ධතියක් ප්ලගීන එකක් හෝ වැඩි ගණනකින් සමන්විත වේ), සහ Eclipse හි සෑම දෙයක්ම පාහේ දිගුවක් වේ. එපමණක් නොව, OSGi හඳුන්වාදීමට බොහෝ කලකට පෙර මෙම මූලධර්ම Eclipse architecture තුළ අන්තර්ගත විය (එකල ඔවුන් OSGi ට බොහෝ සමාන ඔවුන්ගේම තාක්ෂණය භාවිතා කළහ).

Core Workspace

Eclipse Platform මත ගොඩනගා ඇති ඕනෑම ඒකාබද්ධ සංවර්ධන පරිසරයක් පාහේ Eclipse වැඩබිම සමඟ ක්‍රියා කරයි. එය සාමාන්‍යයෙන් IDE හි සංවර්ධනය කරන ලද යෙදුමේ ප්‍රභව කේතය අඩංගු වැඩබිමයි. කාර්ය අවකාශය සෘජුවම ගොනු පද්ධතියට සිතියම් ගත කරන අතර ෆෝල්ඩර සහ ගොනු අඩංගු ව්‍යාපෘති වලින් සමන්විත වේ. මෙම ව්යාපෘති, ෆෝල්ඩර සහ ගොනු ලෙස හැඳින්වේ සම්පත් වැඩබිම. Eclipse හි වැඩ අවකාශය ක්‍රියාත්මක කිරීම ගොනු පද්ධතියට අදාළව හැඹිලියක් ලෙස ක්‍රියා කරයි, එමඟින් සම්පත් ගසෙහි ගමන් කිරීම සැලකිය යුතු ලෙස වේගවත් කිරීමට හැකි වේ. මීට අමතරව, වැඩබිම ඇතුළුව අමතර සේවාවන් ගණනාවක් සපයයි සම්පත් වෙනස්කම් සඳහා දැනුම්දීමේ යාන්ත්රණය и වර්ධක තනන්නන් යටිතල පහසුකම්.

Core Resources සංරචකය (org.eclipse.core.resources plugin) වැඩබිමට සහ එහි සම්පත් වලට සහාය වීම සඳහා වගකීම දරයි. විශේෂයෙන්ම, මෙම සංරචකය පෝරමයේ වැඩබිමට වැඩසටහන්ගත ප්රවේශය සපයයි සම්පත් ආකෘති. මෙම ආකෘතිය සමඟ ඵලදායි ලෙස වැඩ කිරීමට, ගනුදෙනුකරුවන්ට සම්පතක් වෙත සබැඳියක් ඉදිරිපත් කිරීමට සරල ක්රමයක් අවශ්ය වේ. මෙම අවස්ථාවෙහිදී, ආකෘතියේ ඇති සම්පතේ තත්වය සෘජුවම ගබඩා කරන වස්තුව සේවාදායකයා වෙත ප්‍රවේශ වීමෙන් සැඟවීමට යෝග්‍ය වේ. එසේ නොමැති නම්, උදාහරණයක් ලෙස, ගොනුවක් මකා දැමීමේදී, සේවාදායකයාට පසුව ඇති වන ගැටළු සමඟ, ආකෘතියේ නොමැති වස්තුවක් දිගටම රඳවා තබා ගත හැකිය. Eclipse කියන දෙයක් භාවිතා කරලා මේ ගැටලුව විසඳනවා හැසිරවීම සම්පත. හසුරුව යතුරක් ලෙස ක්‍රියා කරයි (එය වැඩබිමේ ඇති සම්පතට මාර්ගය පමණක් දනී) සහ සම්පතේ තත්වය පිළිබඳ තොරතුරු කෙලින්ම ගබඩා කරන අභ්‍යන්තර ආදර්ශ වස්තුව වෙත ප්‍රවේශය සම්පූර්ණයෙන්ම පාලනය කරයි. මෙම සැලසුම මෝස්තරයේ විචලනයකි හසුරුව/ශරීරය.

සහල්. රූප සටහන 2 මඟින් සම්පත් ආකෘතියට අදාළ වන පරිදි හසුරුව/ශරීර වාග්‍ය ​​නිරූපණය කරයි. IResource අතුරුමුහුණත සම්පතක හසුරුව නියෝජනය කරන අතර මෙම අතුරුමුහුණත ක්‍රියාත්මක කරන Resource පන්තිය මෙන් නොව API එකක් වන අතර API නොවන ශරීරය නියෝජනය කරන ResourceInfo පන්තිය වේ. හසුරුව වැඩබිම් මූලයට සාපේක්ෂව සම්පත් වෙත යන මාර්ගය පමණක් දන්නා අතර සම්පත් තොරතුරු වෙත සබැඳියක් අඩංගු නොවන බව අපි අවධාරණය කරමු. සම්පත් තොරතුරු වස්තූන් ඊනියා "මූලද්‍රව්‍ය ගසක්" සාදයි. මෙම දත්ත ව්‍යුහය සම්පූර්ණයෙන්ම මතකයේ අන්තර්ගත වේ. හසුරුවකට අනුරූප වන සම්පත් තොරතුරු නිදසුන සොයා ගැනීමට, මූලද්‍රව්‍ය ගස එම හසුරුවෙහි ගබඩා කර ඇති මාර්ගය අනුව ගමන් කරයි.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 2. IResource සහ ResourceInfo

අපි පසුව දකින පරිදි, සම්පත් ආකෘතියේ මූලික සැලසුම (අපි එය හසුරුව මත පදනම් ලෙස හැඳින්විය හැක) අනෙකුත් මාදිලි සඳහාද Eclipse හි භාවිතා වේ. දැනට, මෙම සැලසුමේ සුවිශේෂී ගුණාංග කිහිපයක් ලැයිස්තුගත කරමු:

  • හසුරුව යනු වටිනා වස්තුවකි. වටිනාකම් වස්තු යනු සමානාත්මතාවය අනන්‍යතාවය මත පදනම් නොවන වෙනස් කළ නොහැකි වස්තූන් ය. එවැනි වස්තූන් හෑෂ් බහාලුම්වල යතුරක් ලෙස ආරක්ෂිතව භාවිතා කළ හැකිය. හැසිරවීමේ අවස්ථා කිහිපයක් එකම සම්පතක් යොමු කළ හැක. ඒවා සංසන්දනය කිරීම සඳහා, ඔබ සමාන (Object) ක්රමය භාවිතා කළ යුතුය.
  • හසුරුව සම්පතක හැසිරීම නිර්වචනය කරයි, නමුත් සම්පතේ තත්වය පිළිබඳ තොරතුරු අඩංගු නොවේ (එය ගබඩා කරන එකම දත්ත "යතුර", සම්පත වෙත යන මාර්ගයයි).
  • හසුරුව නොපවතින සම්පතක් (තවමත් නිර්මාණය කර නොමැති සම්පතක් හෝ දැනටමත් මකා දමා ඇති සම්පතක්) වෙත යොමු විය හැක. IResource.exists() ක්‍රමය භාවිතයෙන් සම්පතක පැවැත්ම පරීක්ෂා කළ හැක.
  • සමහර මෙහෙයුම් හසුරුවෙහිම ගබඩා කර ඇති තොරතුරු මත පදනම්ව ක්‍රියාත්මක කළ හැකිය (ඊනියා හසුරුව-පමණක් මෙහෙයුම්). උදාහරණ වන්නේ IResource.getParent(), getFullPath() ආදියයි. එවැනි මෙහෙයුමක් සාර්ථක වීමට සම්පත පැවතිය යුතු නැත. සාර්ථක වීමට සම්පතක් පැවතීමට අවශ්‍ය වන මෙහෙයුම් සම්පත් නොමැති නම් CoreException එකක් විසි කරයි.

Eclipse මඟින් වැඩබිම් සම්පත් වෙනස්කම් දැනුම් දීම සඳහා කාර්යක්ෂම යාන්ත්‍රණයක් සපයයි (රූපය 3). Eclipse IDE තුළම සිදු කරන ක්‍රියාවල ප්‍රතිඵලයක් ලෙස හෝ ගොනු පද්ධතිය සමඟ සමමුහුර්ත කිරීමේ ප්‍රතිඵලයක් ලෙස සම්පත් වෙනස් විය හැක. අවස්ථා දෙකේදීම, දැනුම්දීම් සඳහා දායක වන සේවාදායකයින්ට "සම්පත් ඩෙල්ටා" ආකාරයේ වෙනස්කම් පිළිබඳ සවිස්තරාත්මක තොරතුරු සපයනු ලැබේ. ඩෙල්ටාවක් වැඩබිම් සම්පතක (උප) ගසක අවස්ථා දෙකක් අතර සිදුවන වෙනස්කම් විස්තර කරන අතර එයම ගසකි, එහි සෑම නෝඩයක්ම සම්පතක වෙනසක් විස්තර කරන අතර ළමා සම්පත්වල වෙනස්කම් විස්තර කරන ඊළඟ මට්ටමේ ඩෙල්ටා ලැයිස්තුවක් අඩංගු වේ.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 3. IResourceChangeEvent සහ IResourceDelta

සම්පත් ඩෙල්ටා මත පදනම් වූ දැනුම්දීම් යාන්ත්‍රණයට පහත ලක්ෂණ ඇත:

  • ඩෙල්ටා ප්‍රත්‍යාවර්තක සංයුතියේ මූලධර්මය භාවිතයෙන් ගොඩනගා ඇති බැවින් එකම ව්‍යුහය භාවිතයෙන් තනි වෙනසක් සහ බොහෝ වෙනස්කම් විස්තර කෙරේ. ග්‍රාහක සේවාලාභීන්ට ඩෙල්ටා ගසක් හරහා ප්‍රත්‍යාවර්තී අවරෝහණ භාවිතයෙන් සම්පත් වෙනස් කිරීමේ දැනුම්දීම් සැකසීමට හැකිය.
  • ඩෙල්ටාවේ එහි චලනය සහ/හෝ ඒ හා සම්බන්ධ "සලකුණු" වල වෙනස්කම් ඇතුළුව සම්පතෙහි වෙනස්කම් පිළිබඳ සම්පූර්ණ තොරතුරු අඩංගු වේ (උදාහරණයක් ලෙස, සම්පාදන දෝෂ සලකුණු ලෙස නිරූපණය කෙරේ).
  • සම්පත් යොමු කිරීම් හසුරුව හරහා සිදු කරන බැවින්, ඩෙල්ටා ස්වභාවිකවම දුරස්ථ සම්පතක් යොමු කළ හැක.

අප ඉක්මනින් දකින පරිදි, සම්පත් ආකෘතිය වෙනස් කිරීමේ දැනුම්දීම් යාන්ත්‍රණයේ සැලසුමේ ප්‍රධාන සංරචක වෙනත් හැසිරවීම් මත පදනම් වූ ආකෘති සඳහා ද අදාළ වේ.

JDT Core

Eclipse Workspace සම්පත් ආකෘතිය මූලික භාෂා-අඥෙයවාදී ආකෘතියකි. JDT Core සංරචකය (plugin org.eclipse.jdt.core) ජාවා ඉදිරිදර්ශනයකින්, ඊනියා "ජාවා ආකෘතිය" (Java model) සිට වැඩ අවකාශයේ ව්‍යුහය සැරිසැරීමට සහ විශ්ලේෂණය කිරීමට API සපයයි.ජාවා ආකෘතිය) මෙම API ෆෝල්ඩර සහ ගොනු අනුව නිර්වචනය කරන ලද යටින් පවතින සම්පත් ආදර්ශ API වලට ප්‍රතිවිරුද්ධව, Java මූලද්‍රව්‍ය අනුව අර්ථ දක්වා ඇත. ජාවා මූලද්‍රව්‍ය ගසෙහි ප්‍රධාන අතුරු මුහුණත් රූපයේ දැක්වේ. 4.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 4. Java Model Elements

ජාවා ආකෘතිය සම්පත් ආකෘතියට සමාන හසුරුව/ශරීර ව්‍යවහාරය භාවිතා කරයි (රූපය 5). IJavaElement යනු හසුරුව වන අතර JavaElementInfo ශරීරයේ කාර්යභාරය ඉටු කරයි. IJavaElement අතුරුමුහුණත සියලු ජාවා මූලද්‍රව්‍ය සඳහා පොදු ප්‍රොටෝකෝලයක් නිර්වචනය කරයි. එහි සමහර ක්‍රම හැසිරවීමට පමණි: getElementName(), getParent() ආදිය. JavaElementInfo වස්තුව අනුරූප මූලද්‍රව්‍යයේ තත්වය ගබඩා කරයි: එහි ව්‍යුහය සහ ගුණාංග.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 5. IJavaElement සහ JavaElementInfo

ජාවා ආකෘතියට සම්පත් ආකෘතියට සාපේක්ෂව මූලික හසුරුව/ශරීර සැලසුම ක්‍රියාත්මක කිරීමේදී යම් යම් වෙනස්කම් තිබේ. ඉහත සඳහන් කළ පරිදි, සම්පත් ආකෘතියේ, මූලද්‍රව්‍ය ගස, එහි නෝඩ් සම්පත් තොරතුරු වස්තු වන අතර, එය සම්පූර්ණයෙන්ම මතකයේ අඩංගු වේ. නමුත් Java ආකෘතියට සම්පත් ගසට වඩා සැලකිය යුතු තරම් විශාල මූලද්‍රව්‍ය සංඛ්‍යාවක් තිබිය හැක, මන්ද එය .java සහ .class ගොනු වල අභ්‍යන්තර ව්‍යුහය ද නියෝජනය කරයි: වර්ග, ක්ෂේත්‍ර සහ ක්‍රම.

මතකයේ ඇති මූලද්‍රව්‍යවල සම්පූර්ණ වෘක්ෂයම සම්පූර්ණයෙන් ද්‍රව්‍යකරණය වීම වැලැක්වීම සඳහා, ජාවා මාදිලිය ක්‍රියාත්මක කිරීම සීමිත ප්‍රමාණයේ LRU හැඹිලි මූලද්‍රව්‍ය තොරතුරු භාවිතා කරයි, එහි යතුර IJavaElement හසුරුවයි. මූලද්‍රව්‍ය වෘක්ෂය සංචාලනය කරන විට ඉල්ලුම මත මූලද්‍රව්‍ය තොරතුරු වස්තු නිර්මාණය වේ. මෙම අවස්ථාවෙහිදී, අවම වශයෙන් භාවිතා කරන අයිතම හැඹිලියෙන් ඉවත් කරනු ලබන අතර, ආකෘතියේ මතක පරිභෝජනය නිශ්චිත හැඹිලි ප්‍රමාණයට සීමා වේ. මෙය හසුරුව මත පදනම් වූ සැලසුමේ තවත් වාසියක් වන අතර, එවැනි ක්‍රියාත්මක කිරීමේ විස්තර සේවාදායක කේතයෙන් සම්පූර්ණයෙන්ම සඟවයි.

ජාවා මූලද්‍රව්‍ය වෙත වෙනස්කම් දැනුම් දීමේ යාන්ත්‍රණය සාමාන්‍යයෙන් ඉහත සාකච්ඡා කර ඇති වැඩ ඉඩ සම්පත් වල වෙනස්කම් නිරීක්ෂණය කිරීමේ යාන්ත්‍රණයට සමාන වේ. ජාවා මාදිලියේ වෙනස්කම් නිරීක්ෂණය කිරීමට කැමති සේවාලාභියෙකු IJavaElementDelta අඩංගු ElementChangedEvent වස්තුවක් ලෙස නිරූපනය වන දැනුම්දීම් වලට දායක වේ (රූපය 6).

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 6. ElementChangedEvent සහ IJavaElementDelta

ජාවා ආකෘතියේ ක්‍රම ශරීර හෝ නාම විභේදනය පිළිබඳ තොරතුරු අඩංගු නොවේ, එබැවින් ජාවා හි ලියා ඇති කේතය පිළිබඳ සවිස්තරාත්මක විශ්ලේෂණයක් සඳහා, JDT Core අතිරේක (හැසිරවීම මත පදනම් නොවන) ආකෘතියක් සපයයි: වියුක්ත සින්ටැක්ස් ගස (වියුක්ත සින්ටැක්ස් ගස, AST). AST මූලාශ්‍ර පෙළ විග්‍රහ කිරීමේ ප්‍රතිඵලය නියෝජනය කරයි. AST නෝඩ් ප්‍රභව මොඩියුලයේ (ප්‍රකාශන, ක්‍රියාකරුවන්, ප්‍රකාශන, ආදිය) ව්‍යුහයේ මූලද්‍රව්‍යවලට අනුරූප වන අතර මූලාශ්‍ර පෙළෙහි අනුරූප මූලද්‍රව්‍යයේ ඛණ්ඩාංක පිළිබඳ තොරතුරු මෙන්ම (විකල්පයක් ලෙස) නාම විභේදනය පිළිබඳ තොරතුරු අඩංගු වේ. ඊනියා වෙත සබැඳි වල ස්වරූපය බන්ධන. බැඳීම් යනු සම්පාදකයා දන්නා වර්ග, ක්‍රම සහ විචල්‍ය වැනි නම් කරන ලද ආයතන නියෝජනය කරන වස්තු වේ. ගසක් සාදන AST නෝඩ් මෙන් නොව, බන්ධන හරස් යොමු කිරීම් සඳහා සහය වන අතර සාමාන්‍යයෙන් ප්‍රස්ථාරයක් සාදයි. ASTNode වියුක්ත පන්තිය යනු සියලුම AST නෝඩ් සඳහා පොදු පාදක පන්තියයි. ASTNode උප පංති ජාවා භාෂාවේ විශේෂිත වාක්‍ය නිර්මිතයන්ට අනුරූප වේ.

සින්ටැක්ස් ගස්වලට සැලකිය යුතු මතක ප්‍රමාණයක් පරිභෝජනය කළ හැකි නිසා, සක්‍රීය සංස්කාරකය සඳහා JDT හැඹිලිගත කරන්නේ එක් AST එකක් පමණි. ජාවා ආකෘතිය මෙන් නොව, AST සාමාන්‍යයෙන් "අතරමැදි", "තාවකාලික" ආකෘතියක් ලෙස සලකනු ලබන අතර, AST නිර්මාණය කිරීමට තුඩු දුන් මෙහෙයුමේ සන්දර්භයට පරිබාහිර සේවාදායකයින් විසින් සාමාජිකයන් විසින් යොමු නොකළ යුතුය.

ලැයිස්තුගත කර ඇති ආකෘති තුන (ජාවා ආකෘතිය, AST, බන්ධන) එකට JDT හි "බුද්ධිමත් සංවර්ධන මෙවලම්" තැනීමේ පදනම සාදයි, විවිධ "සහායකයන්" සහිත බලවත් ජාවා සංස්කාරකයක්, ප්‍රභව කේත සැකසීම සඳහා විවිධ ක්‍රියා (ආනයන ලැයිස්තුවක් සංවිධානය කිරීම ඇතුළුව. අභිරුචිකරණය කරන ලද විලාසය අනුව නම් සහ හැඩතල ගැන්වීම), සෙවීම් සහ ප්‍රතිනිර්මාණය කිරීමේ මෙවලම්. මෙම අවස්ථාවෙහිදී, ජාවා ආකෘතිය විශේෂ කාර්යභාරයක් ඉටු කරයි, මන්ද එය සංවර්ධනය වෙමින් පවතින යෙදුමේ ව්‍යුහයේ දෘශ්‍ය නිරූපණය සඳහා පදනම ලෙස භාවිතා කරයි (උදාහරණයක් ලෙස, පැකේජ ගවේෂකය, දළ සටහන, සෙවීම, ඇමතුම් ධූරාවලිය සහ ධූරාවලිය වර්ගය).

1C:Enterprise Developments Tools හි භාවිතා වන Eclipse සංරචක

රූපයේ. 7C:Enterprise Development Tools සඳහා තාක්ෂණික වේදිකාවේ පදනම වන Eclipse සංරචක රූප සටහන 1 හි දැක්වේ.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 7. 1C සඳහා වේදිකාවක් ලෙස Eclipse: Enterprise Development Tools

Eclipse Platform මූලික යටිතල පහසුකම් සපයයි. අපි පෙර කොටසේ මෙම යටිතල පහසුකම්වල සමහර පැති දෙස බැලුවෙමු.

Eclipse Modeling Framework (EMF) ව්‍යුහගත දත්ත ආකෘති නිර්මාණය කිරීමේ සාමාන්‍ය මාධ්‍යයක් සපයයි. EMF Eclipse Platform සමඟ ඒකාබද්ධ කර ඇත, නමුත් සාමාන්‍ය ජාවා යෙදුම්වල වෙන වෙනම භාවිතා කළ හැක. බොහෝ විට, නව Eclipse සංවර්ධකයින් දැනටමත් EMF සමඟ හොඳින් හඳුනන නමුත්, ඔවුන් තවමත් Eclipse Platform හි සංකීර්ණතා සම්පූර්ණයෙන් වටහාගෙන නැත. එවැනි හොඳ ජනප්‍රියත්වයක් සඳහා එක් හේතුවක් වන්නේ විශ්වීය සැලසුම වන අතර එයට වෙනත් දේ අතර ඒකාබද්ධ මෙටා මට්ටමේ API ඇතුළත් වේ, එමඟින් ඔබට ඕනෑම EMF ආකෘතියක් සමඟ සාමාන්‍ය ආකාරයකින් වැඩ කිරීමට ඉඩ සලසයි. EMF විසින් සපයනු ලබන ආදර්ශ වස්තූන් සඳහා මූලික ක්‍රියාත්මක කිරීම් සහ මෙටා-ආකෘතිය මත පදනම් වූ ආදර්ශ කේතය ජනනය කිරීම සඳහා උප පද්ධතිය සැලකිය යුතු ලෙස සංවර්ධනයේ වේගය වැඩි කරන අතර දෝෂ ගණන අඩු කරයි. EMF අනුක්‍රමික මාදිලි සඳහා යාන්ත්‍රණ, ආකෘතියේ වෙනස්කම් නිරීක්ෂණය කිරීම සහ තවත් බොහෝ දේ අඩංගු වේ.

ඕනෑම සැබෑ පොදු කාර්ය මෙවලමක් මෙන්, පුළුල් පරාසයක ආකෘති නිර්මාණ ගැටළු විසඳීම සඳහා EMF සුදුසු වේ, නමුත් සමහර මාදිලියේ පන්ති (උදාහරණයක් ලෙස, ඉහත සාකච්ඡා කර ඇති හසුරුව මත පදනම් වූ ආකෘති) වඩාත් විශේෂිත ආකෘති නිර්මාණ මෙවලම් අවශ්‍ය විය හැකිය. EMF ගැන කතා කිරීම ස්තුතිවන්ත නොවන කාර්යයකි, විශේෂයෙන් එක් ලිපියක සීමිත සීමාවන් තුළ, මෙය වෙනම පොතක විෂය වන අතර තරමක් ඝන එකක් වන බැවිනි. EMF යටින් පවතින උසස් තත්ත්වයේ සාමාන්‍යකරණ පද්ධතිය ඉහළ මට්ටමේ ව්‍යාපෘතියට ඇතුළත් කර ඇති ආකෘති නිර්මාණය සඳහා කැප වූ ව්‍යාපෘති මාලාවක් බිහි කිරීමට ඉඩ දුන් බව පමණක් සටහන් කරමු. Eclipse Modeling EMF සමඟම. එවැනි එක් ව්‍යාපෘතියක් වන්නේ Eclipse Xtext ය.

Eclipse Xtext "පෙළ ආකෘති නිර්මාණය" යටිතල පහසුකම් සපයයි. Xtext භාවිතා කරයි ANTLR මූලාශ්‍ර පෙළ සහ EMF විග්‍රහ කිරීම සඳහා ප්‍රතිඵලයක් ලෙස ලැබෙන ASG නියෝජනය කිරීම සඳහා (අමුක්ත අර්ථකථන ප්‍රස්ථාරය, එය අත්‍යවශ්‍යයෙන්ම AST සහ බන්ධනවල එකතුවකි), එය "අර්ථකථන ආකෘතිය" ලෙසද හැඳින්වේ. Xtext විසින් ආකෘතිගත කරන ලද භාෂාවේ ව්‍යාකරණ Xtext ගේම භාෂාවෙන් විස්තර කෙරේ. මෙය ඔබට ANTLR සඳහා ව්‍යාකරණ විස්තරයක් ජනනය කිරීමට පමණක් නොව, AST අනුක්‍රමික යාන්ත්‍රණයක් ලබා ගැනීමටද ඉඩ සලසයි (එනම් Xtext විග්‍රහ කරන්නෙකු සහ unparser යන දෙකම සපයයි), සන්දර්භ ඉඟියක් සහ වෙනත් භාෂා සංරචක ගණනාවක්. අනෙක් අතට, Xtext හි භාවිතා වන ව්‍යාකරණ භාෂාව ANTLR හි භාවිතා වන ව්‍යාකරණ භාෂාවට වඩා අඩු නම්‍යශීලී වේ. එමනිසා, සමහර විට ක්‍රියාත්මක කරන ලද භාෂාව Xtext වෙත “නැමීමට” අවශ්‍ය වේ, එය සාමාන්‍යයෙන් අපි මුල සිටම වර්ධනය වන භාෂාවක් ගැන කතා කරන්නේ නම් එය ගැටළුවක් නොවේ, නමුත් දැනටමත් ස්ථාපිත වාක්‍ය ඛණ්ඩයක් ඇති භාෂා සඳහා පිළිගත නොහැකි විය හැකිය. එසේ තිබියදීත්, Xtext දැනට ක්‍රමලේඛන භාෂා සහ ඒවා සඳහා සංවර්ධන මෙවලම් ගොඩනැගීම සඳහා Eclipse හි වඩාත්ම පරිණත, විශේෂාංග-පොහොසත් සහ බහුකාර්ය මෙවලම වේ. විශේෂයෙන්, එය වේගවත් මූලාකෘති සඳහා කදිම මෙවලමකි වසම-විශේෂිත භාෂා (වසම්-විශේෂිත භාෂාව, DSL). ANTLR සහ EMF මත පදනම් වූ ඉහත සඳහන් කළ “භාෂා හරයට” අමතරව, Xtext සුචිගත කිරීමේ යාන්ත්‍රණයන්, වර්ධක ඉදිකිරීම්, “ස්මාර්ට් සංස්කාරකයක්” සහ තවත් බොහෝ දේ ඇතුළුව ප්‍රයෝජනවත් ඉහළ මට්ටමේ සංරචක සපයයි, නමුත් හැසිරවීම ඉවත් කරයි. පදනම් භාෂා ආකෘති. EMF මෙන්, Xtext යනු වෙනම පොතක් සඳහා සුදුසු විෂයයක් වන අතර, අපට දැන් එහි සියලු හැකියාවන් ගැන කෙටියෙන් කතා කළ නොහැක.

1C:Enterprise Development Tools EMF සහ වෙනත් Eclipse Modeling ව්‍යාපෘති ගණනාවක්ම සක්‍රියව භාවිතා කරයි. විශේෂයෙන්ම, Xtext යනු එවැනි 1C: Enterprise භාෂා සඳහා වූ සංවර්ධන මෙවලම්වල අත්තිවාරමක් වන අතර එය ගොඩනඟන ලද ක්‍රමලේඛන භාෂාව සහ විමසුම් භාෂාව වේ. මෙම සංවර්ධන මෙවලම් සඳහා තවත් පදනමක් වන්නේ Eclipse Handly ව්‍යාපෘතියයි, එය අපි වඩාත් විස්තරාත්මකව සාකච්ඡා කරමු (ලැයිස්තුගත කර ඇති Eclipse සංරචක වලින්, එය තවමත් අවම වශයෙන් දන්නා කරුණකි).

Eclipse Handly, Eclipse Technology ඉහළ මට්ටමේ ව්‍යාපෘතියේ උප ව්‍යාපෘතියක්, 1 දී 2014C විසින් Eclipse පදනමට කරන ලද මූලික කේත දායකත්වයක ප්‍රතිඵලයක් ලෙස මතු විය. එතැන් සිට, 1C ව්‍යාපෘතියේ සංවර්ධනය සඳහා අඛණ්ඩව සහාය ලබා දී ඇත: අතින් කැප කරන්නන් සමාගමේ සේවකයින් වේ. ව්‍යාපෘතිය කුඩා ය, නමුත් එය 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 දී මාටින් ඒෂ්ලිමන්, CDT මූලාකෘතිය සංවර්ධනය කිරීමේ අත්දැකීම් සාරාංශ කිරීම, තර්ක කළා හැන්ඩ්ල් පාදක ආකෘති ඇතුළුව භාෂා ආකෘති සඳහා පොදු යටිතල පහසුකම් නිර්මාණය කිරීමේ අවශ්‍යතාවය. එහෙත්, බොහෝ විට සිදු වන පරිදි, ඉහළ ප්‍රමුඛතා කාර්යයන් හේතුවෙන්, මෙම අදහස් ක්‍රියාත්මක කිරීම කිසි විටෙකත් එයට සම්බන්ධ නොවීය. මේ අතර, *DT කේතය සාධකකරණය කිරීම තවමත් Eclipse හි ඌන සංවර්ධිත මාතෘකා වලින් එකකි.

එක්තරා අර්ථයකින්, Handly ව්‍යාපෘතිය සැලසුම් කර ඇත්තේ EMF හා සමාන ගැටළු විසඳීමට, නමුත් හසුරුව මත පදනම් වූ ආකෘති සහ මූලික වශයෙන් භාෂා සඳහා (එනම්, සමහර ක්‍රමලේඛන භාෂාවක ව්‍යුහයේ අංග නියෝජනය කිරීම). Handly නිර්මාණය කිරීමේදී ප්‍රධාන ඉලක්ක පහත දැක්වේ.

  • විෂය ක්ෂේත්රයේ ප්රධාන වියුක්තයන් හඳුනා ගැනීම.
  • උත්සාහය අඩු කිරීම සහ කේත නැවත භාවිතා කිරීම හරහා හැසිරවීම මත පදනම් වූ භාෂා ආකෘති ක්‍රියාත්මක කිරීමේ ගුණාත්මකභාවය වැඩි දියුණු කිරීම.
  • ප්‍රතිඵලයක් ලෙස ලැබෙන මාදිලි සඳහා ඒකාබද්ධ මෙටා මට්ටමේ API ලබා දීම, භාෂා හැසිරවීම මත පදනම් වූ ආකෘති සමඟ ක්‍රියා කරන පොදු IDE සංරචක නිර්මාණය කිරීමට හැකි වේ.
  • නම්යශීලීභාවය සහ පරිමාණය.
  • Xtext සමඟ ඒකාබද්ධ කිරීම (වෙනම ස්ථරයක).

පොදු සංකල්ප සහ ප්‍රොටෝකෝල ඉස්මතු කිරීම සඳහා, භාෂා හැසිරවීම මත පදනම් වූ ආකෘතිවල පවතින ක්‍රියාත්මක කිරීම් විශ්ලේෂණය කරන ලදී. Handly විසින් සපයන ලද ප්‍රධාන අතුරුමුහුණත් සහ මූලික ක්‍රියාත්මක කිරීම් රූපයේ දැක්වේ. 8.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 8. පොදු අතුරුමුහුණත් සහ හෑන්ඩ්ලි මූලද්‍රව්‍යවල මූලික ක්‍රියාත්මක කිරීම්

IElement අතුරුමුහුණත මූලද්‍රව්‍යයක හසුරුව නියෝජනය කරන අතර එය සියලු Handly-පාදක මාදිලිවල මූලද්‍රව්‍ය සඳහා පොදු වේ. වියුක්ත පන්තියේ මූලද්‍රව්‍යය සාමාන්‍යකරණය කරන ලද හසුරුව/ශරීර යාන්ත්‍රණය ක්‍රියාත්මක කරයි (රූපය 9).

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 9. IElement සහ Generic handle/body කියාත්මක කිරීම

මීට අමතරව, ආදර්ශ මූලද්‍රව්‍යවල වෙනස්කම් පිළිබඳව දැනුම් දීම සඳහා Handly සාමාන්‍යකරණය කරන ලද යාන්ත්‍රණයක් සපයයි (රූපය 10). ඔබට පෙනෙන පරිදි, එය සම්පත් ආකෘතියේ සහ ජාවා ආකෘතියේ ක්‍රියාත්මක කරන ලද දැනුම්දීම් යාන්ත්‍රණයන්ට පුළුල් ලෙස සමාන වන අතර, මූලද්‍රව්‍ය වෙනස් කිරීමේ තොරතුරු පිළිබඳ ඒකාබද්ධ නියෝජනයක් සැපයීමට IElementDelta භාවිතා කරයි.

1C සඳහා තාක්ෂණික වේදිකාවක් ලෙස Eclipse: ව්‍යවසාය සංවර්ධන මෙවලම්
සහල්. 10. හෑන්ඩ්ලි දැනුම්දීම් යාන්ත්‍රණයේ සාමාන්‍ය අතුරුමුහුණත් සහ මූලික ක්‍රියාත්මක කිරීම්

ඉහත සාකච්ඡා කර ඇති Handly කොටස (රූපය 9 සහ 10) ඕනෑම හසුරුව මත පදනම් වූ ආකෘති නියෝජනය කිරීමට භාවිතා කළ හැක. නිර්මාණය සඳහා භාෂාමය ආකෘති, ව්‍යාපෘතිය අමතර ක්‍රියාකාරීත්වයක් ලබා දෙයි - විශේෂයෙන්, පොදු අතුරුමුහුණත් සහ මූල පෙළ ව්‍යුහයේ මූලද්‍රව්‍ය සඳහා මූලික ක්‍රියාත්මක කිරීම්, ඊනියා මූලාශ්ර මූලද්රව්ය (රූපය 8). ISourceFile අතුරුමුහුණත මූලාශ්‍ර ගොනුවක් නියෝජනය කරයි, සහ ISourceConstruct ප්‍රභව ගොනුව තුළ ඇති අංගයක් නියෝජනය කරයි. SourceFile සහ SourceConstruct යන වියුක්ත පන්ති මූලාශ්‍ර ගොනු සහ ඒවායේ මූලද්‍රව්‍ය සමඟ වැඩ කිරීම සඳහා සාමාන්‍යකරණය කළ යාන්ත්‍රණයන් ක්‍රියාත්මක කරයි, නිදසුනක් ලෙස, පෙළ බෆර සමඟ වැඩ කිරීම, මූලාශ්‍ර පෙළෙහි ඇති මූලද්‍රව්‍යයක ඛණ්ඩාංකවලට බැඳීම, ක්‍රියාකාරී පිටපත් බෆරයක වත්මන් අන්තර්ගතයන් සමඟ ආකෘති ප්‍රතිසන්ධාන කිරීම. , ආදිය. මෙම යාන්ත්‍රණ ක්‍රියාත්මක කිරීම සාමාන්‍යයෙන් තරමක් අභියෝගයක් වන අතර, උසස් තත්ත්වයේ පාදක ක්‍රියාත්මක කිරීම් ලබා දීමෙන් හසුරු මත පදනම් වූ භාෂා ආකෘති සංවර්ධනය කිරීමේ උත්සාහය Handly විසින් සැලකිය යුතු ලෙස අඩු කළ හැකිය.

ඉහත ලැයිස්තුගත කර ඇති මූලික යාන්ත්‍රණයන්ට අමතරව, Handly පෙළ බෆර සහ ස්නැප්ෂොට් සඳහා යටිතල පහසුකම් සපයයි, මූලාශ්‍ර කේත සංස්කාරක සමඟ ඒකාබද්ධ කිරීම සඳහා සහාය (Xtext සංස්කාරකය සමඟ කොටුවෙන් පිටත ඒකාබද්ධ කිරීම ඇතුළුව), මෙන්ම සමහර පොදු UI සංරචක ප්‍රභව කේත සංස්කාරක සමඟ වැඩ කරන්න. දළ සටහන් රාමුව වැනි අතේ ගෙන යා හැකි ආකෘති. එහි හැකියාවන් නිදර්ශනය කිරීම සඳහා, ව්‍යාපෘතිය, Handly හි Java ආකෘතිය ක්‍රියාත්මක කිරීම ඇතුළුව උදාහරණ කිහිපයක් සපයයි. (JDT හි ජාවා ආකෘතිය සම්පූර්ණයෙන් ක්‍රියාත්මක කිරීම හා සසඳන විට, මෙම ආකෘතිය වැඩි පැහැදිලිකම සඳහා හිතාමතාම තරමක් සරල කර ඇත.)

කලින් සඳහන් කළ පරිදි, Handly හි ආරම්භක සැලසුම් සහ පසුකාලීන සංවර්ධනය තුළ ප්‍රධාන අවධානය යොමු වූයේ පරිමාණය සහ නම්‍යශීලී බව මත ය.

ප්‍රතිපත්තිමය වශයෙන්, හසුරුව මත පදනම් වූ ආකෘති "සැලසුම් අනුව" හොඳින් පරිමාණය කරයි. උදාහරණයක් ලෙස, හැන්ඩ්ල්/බොඩි අයිඩියම් ඔබට ආකෘතියක් විසින් පරිභෝජනය කරන මතක ප්‍රමාණය සීමා කිරීමට ඉඩ සලසයි. නමුත් සූක්ෂ්මතා ද තිබේ. මේ අනුව, පරිමාණය සඳහා Handly පරීක්ෂා කිරීමේදී, දැනුම්දීමේ යාන්ත්‍රණය ක්‍රියාත්මක කිරීමේදී ගැටළුවක් අනාවරණය විය - මූලද්‍රව්‍ය විශාල ප්‍රමාණයක් වෙනස් කළ විට, ඩෙල්ටා ඉදිකිරීමට වැඩි කාලයක් ගත විය. වරක් අනුරූප කේතය අනුවර්තනය කරන ලද JDT ජාවා ආකෘතියේ ද එම ගැටළුව ඇති බව පෙනී ගියේය. අපි Handly හි දෝෂය නිවැරදි කර JDT සඳහා සමාන පැච් එකක් සකස් කළෙමු, එය කෘතවේදීව ලැබිණි. මෙය දැනට පවතින ආදර්ශ ක්‍රියාත්මක කිරීම් වලට Handly හඳුන්වාදීම ප්‍රයෝජනවත් විය හැකි එක් උදාහරණයක් පමණි, මන්ද මෙම අවස්ථාවේ දී එවැනි දෝෂයක් එක් ස්ථානයකදී නිවැරදි කළ හැකි බැවිනි.

දැනට පවතින ආදර්ශ ක්‍රියාත්මක කිරීම් වලට Handly ක්‍රියාත්මක කිරීම තාක්‍ෂණිකව ශක්‍ය කිරීමට, පුස්තකාලයට සැලකිය යුතු නම්‍යශීලී බවක් තිබිය යුතුය. ප්රධාන ගැටළුව වන්නේ API ආකෘතිය හරහා පසුගාමී අනුකූලතාව පවත්වා ගැනීමයි. මෙම ගැටළුව විසඳා ඇත අතින් 0.5 සංවර්ධකයා විසින් නිර්වචනය කරන ලද සහ සම්පුර්ණයෙන්ම පාලනය කරන ලද ආකෘති-විශේෂිත API, පුස්තකාලය විසින් සපයනු ලබන ඒකාබද්ධ මෙටා මට්ටමේ API වෙතින් පැහැදිලිව වෙන් කිරීම මගින්. මෙය තාක්‍ෂණිකව පවතින ක්‍රියාත්මක කිරීම් වලට Handly ක්‍රියාත්මක කිරීමට පමණක් නොව, API නිර්මාණය කිරීමේදී නව මාදිලියේ සංවර්ධකයාට සැලකිය යුතු නිදහසක් ලබා දෙයි.

නම්‍යශීලීභාවයට වෙනත් පැති ද ඇත. උදාහරණයක් ලෙස, Handly ආකෘතියේ ව්‍යුහය මත කිසිදු සීමාවක් පනවන්නේ නැති අතර සාමාන්‍ය අරමුණු සහ වසම්-විශේෂිත භාෂා දෙකම ආකෘති කිරීමට භාවිතා කළ හැක. මූලාශ්‍ර ගොනුවේ ව්‍යුහය ගොඩනඟන විට, Handly විසින් AST නියෝජනයේ කිසිදු විශේෂ ආකාරයක් නියම නොකරන අතර, ප්‍රතිපත්තිමය වශයෙන්, AST එකක් තිබීම පවා අවශ්‍ය නොවේ, එමඟින් ඕනෑම විග්‍රහ කිරීමේ යාන්ත්‍රණයක් සමඟ අනුකූලතාව සහතික කෙරේ. අවසාන වශයෙන්, Handly Eclipse වැඩබිම සමඟ පූර්ණ අනුකලනය සඳහා සහය දක්වයි, නමුත් එය සමඟ ඒකාබද්ධ වීම නිසා ගොනු පද්ධති සමඟ සෘජුවම වැඩ කළ හැක. Eclipse ගොනු පද්ධතිය (EFS).

වත්මන් අනුවාදය අතින් 0.6 2016 දෙසැම්බර් මාසයේදී එළියට ආවා. ව්‍යාපෘතිය දැනට ඉන්කියුබේෂන් තත්වයක පවතින අතර API තවමත් අවසන් කර නොමැති වුවද, "මුල් භාවිතා කරන්නන්" ලෙස ක්‍රියා කිරීමේ අවදානම ගත් විශාල වාණිජ නිෂ්පාදන දෙකක Handly දැනටමත් භාවිතා කර ඇති අතර, මම පැවසිය යුතුය. තවමත් ඒ ගැන පසුතැවෙන්න එපා.

ඉහත සඳහන් කළ පරිදි, මෙම නිෂ්පාදනවලින් එකක් වන්නේ 1C: ව්‍යවසාය සංවර්ධන මෙවලම් වන අතර, එවැනි 1C: ව්‍යවසාය භාෂා වල ඉහළ මට්ටමේ ව්‍යුහයේ මූලද්‍රව්‍ය ආදර්ශයට ගැනීම සඳහා ආරම්භයේ සිටම Handly භාවිතා කරනු ලැබේ. . තවත් නිෂ්පාදනයක් සාමාන්‍ය ජනතාව එතරම් දන්නේ නැත. මෙය කොඩසිප් ස්ටුඩියෝව, යෙදුම්-විශේෂිත උපදෙස්-සැකසුම් ප්‍රොසෙසරය (ASIP) සඳහා ඒකාබද්ධ සැලසුම් පරිසරයක්, චෙක් සමාගමක් වන Codasip තුළම සහ එහි සේවාදායකයින් විසින් භාවිතා කරනු ලැබේ. AMD, AVG, මොබයිල්, සිග්මා නිර්මාණ. Codasip Handly 2015 අනුවාදයෙන් පටන් ගෙන, 0.2 සිට නිෂ්පාදනයේදී Handly භාවිතා කරයි. Codasip Studio හි නවතම නිකුතුව 0.5 ජුනි මාසයේදී නිකුත් කරන ලද 2016 අනුවාදය භාවිතා කරයි. Codasip හි IDE සංවර්ධනයට නායකත්වය දෙන Ondřej Ilčík, ව්‍යාපෘතිය සමඟ සම්බන්ධ වී සිටින අතර, "තුන්වන පාර්ශ්වයේ අනුග්‍රාහකයා" වෙනුවෙන් වැදගත් ප්‍රතිපෝෂණ සපයයි. ජාවා ආකෘතියක් වන Handly උදාහරණ සඳහා UI ස්ථරයක් (~ 4000 කේත රේඛා) ක්‍රියාවට නංවමින් ව්‍යාපෘතියේ සංවර්ධනයට සෘජුවම සහභාගී වීමට යම් නිදහස් කාලයක් සොයා ගැනීමට පවා ඔහුට හැකි විය. හදාගන්නන් විසින් Handly භාවිතය පිළිබඳ වඩාත් සවිස්තරාත්මක පළමු තොරතුරු පිටුවෙන් සොයාගත හැකිය සාර්ථක වූ ව්යාපෘතිය.

API ස්ථායීතාවයේ සහතිකයක් සහිත 1.0 අනුවාදය නිකුත් කිරීමෙන් පසුව සහ ඉන්කියුබේෂන් තත්වයෙන් ඉවත් වන ව්‍යාපෘතියෙන් පසුව, Handly හට නව අනුගාමිකයින් ලැබෙනු ඇතැයි අපි බලාපොරොත්තු වෙමු. මේ අතර, ව්‍යාපෘතිය අඛණ්ඩව API පරීක්‍ෂා කිරීම සහ වැඩිදියුණු කිරීම, වසරකට "ප්‍රධාන" නිකුතු දෙකක් නිකුත් කරයි - ජුනි මාසයේදී (සමගාමී සූර්යග්‍රහණය නිකුතුවේ දිනය) සහ දෙසැම්බර් මාසයේදී, හදා ගන්නන්ට විශ්වාසය තැබිය හැකි පුරෝකථනය කළ හැකි කාලසටහනක් සපයයි. ව්‍යාපෘතියේ “දෝෂ අනුපාතය” අඛණ්ඩව අඩු මට්ටමක පවතින බවත්, මුල් අනුවාදවල සිටම හෑන්ඩ්ලි මුල් භාවිතා කරන්නන්ගේ නිෂ්පාදනවල විශ්වාසනීය ලෙස ක්‍රියා කරන බවත් අපට එකතු කළ හැකිය. Eclipse Handly තවදුරටත් ගවේෂණය කිරීමට, ඔබට භාවිතා කළ හැක නිබන්ධනය ආරම්භ කිරීම и වාස්තු විද්‍යාත්මක දළ විශ්ලේෂණය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න