Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools

НавСрноС, Eclipse Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ нуТдаСтся Π² особом прСдставлСнии. МногиС Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Eclipse благодаря Eclipse Java development tools (JDT). ИмСнно эта популярная open-source Java IDE ассоциируСтся Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² со словом β€œEclipse”. Однако Eclipse – это ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠ°Ρ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Eclipse Platform), ΠΈ Ρ†Π΅Π»Ρ‹ΠΉ ряд IDE, построСнных Π½Π° Π΅Π΅ основС, Π² Ρ‚ΠΎΠΌ числС JDT. Eclipse – это ΠΈ Eclipse Project, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Eclipse Platform ΠΈ JDT, ΠΈ Eclipse SDK – поставляСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НаконСц, Eclipse – это open-source Foundation с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ сообщСством ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… написаны Π½Π° Java ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ срСдствам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Eclipse IoT ΠΈ Eclipse Science). ΠœΠΈΡ€ Eclipse ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·Π΅Π½.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΠΏΠΎ своСму Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Ρƒ, ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основы Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Eclipse ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для построСния ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Eclipse, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ тСхнологичСской ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для Β«Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π°Β» 1C: ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, 1C:Enterprise Development Tools. РазумССтся, Ρ‚Π°ΠΊΠΎΠ΅ рассмотрСниС Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ повСрхностным ΠΈ довольно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ориСнтируСмся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Eclipse-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, надССмся, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Eclipse смогут Π½Π°ΠΉΡ‚ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ для сСбя ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. НапримСр, ΠΌΡ‹ расскаТСм ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· «сСкрСтов EclipseΒ», ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΈ малоизвСстном ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Eclipse Handly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» основан ΠΈ поддСрТиваСтся Ρ„ΠΈΡ€ΠΌΠΎΠΉ 1C.
Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Eclipse

Рассмотрим Π²Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ аспСкты Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Eclipse Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Eclipse Java development tools (JDT). Π’Ρ‹Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½Π½ΠΎ JDT Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π΅ случаСн. Π­Ρ‚ΠΎ пСрвая интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, появившаяся Π² Eclipse. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ *DT ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Eclipse, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Eclipse C/C++ Development Tooling (CDT), Π±Ρ‹Π»ΠΈ созданы ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΈ заимствовали ΠΊΠ°ΠΊ основныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ исходного ΠΊΠΎΠ΄Π° ΠΈΠ· JDT. ΠžΡΠ½ΠΎΠ²Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² JDT, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ ΠΏΠΎ сСй дСнь для практичСски любой IDE, построСнной ΠΏΠΎΠ²Π΅Ρ€Ρ… Eclipse Platform, Π² Ρ‚ΠΎΠΌ числС ΠΈ для 1C:Enterprise Development Tools.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Eclipse Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ достаточно Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ расслоСниС, с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ языково-нСзависимой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… языков программирования, ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ UI-нСзависимых «ядСрных» (core) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, связанных с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Π’Π°ΠΊ, Eclipse Platform опрСдСляСт ΠΎΠ±Ρ‰ΡƒΡŽ, языково-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ инфраструктуру, Π° Java development tools Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΊ Eclipse ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Java IDE. Как Eclipse Platform, Ρ‚Π°ΠΊ ΠΈ JDT состоят ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… относится Π»ΠΈΠ±ΠΎ ΠΊ UI-нСзависимому «ядру», Π»ΠΈΠ±ΠΎ ΠΊ слою UI (рис. 1).

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 1. Eclipse Platform и JDT

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Eclipse Platform:

  • Runtime β€” ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ инфраструктуру ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Для Eclipse Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. По сути, Eclipse являСтся ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Β«Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ» ΠΈ Β«Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉΒ».
  • Workspace β€” УправляСт ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму.
  • Standard Widget Toolkit (SWT) β€” ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.
  • JFace β€” ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ряд UI Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², построСнных ΠΏΠΎΠ²Π΅Ρ€Ρ… SWT.
  • Workbench β€” ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ UI-ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ Eclipse: Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, прСдставлСния, пСрспСктивы.

НуТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Eclipse Platform прСдоставляСт ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для построСния ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Debug, Compare, Search, ΠΈ Team. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ JFace Text – основу для построСния Β«ΡƒΠΌΠ½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²Β» исходного ΠΊΠΎΠ΄Π°. К соТалСнию, Π΄Π°ΠΆΠ΅ Π±Π΅Π³Π»ΠΎΠ΅ рассмотрСниС этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ UI-слоя Π½Π΅ прСдставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, поэтому Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части этого Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΡ‹ ограничимся ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ основных «ядСрных» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Eclipse Platform ΠΈ JDT.

Core Runtime

Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Eclipse основана Π½Π° OSGi ΠΈ прСдоставляСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Eclipse Equinox. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Eclipse являСтся OSGi-Π±Π°Π½Π΄Π»ΠΎΠΌ. БпСцификация OSGi опрСдСляСт, Π² частности, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ вСрсионирования ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ зависимостСй. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этим стандартным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ, Equinox Π²Π²ΠΎΠ΄ΠΈΡ‚ понятиС Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ свои Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π½ΠΎΡΠΈΡ‚ΡŒ Π² систСму Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Β«Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ»), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ этим ΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ. Π₯ΠΎΡ‚ΡŒ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² OSGi ΠΈ Equinox Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ модуляризация Π² Eclipse ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ (любая подсистСма, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Runtime, состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²), ΠΈ практичСски всС Π² Eclipse являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π±Ρ‹Π»ΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Eclipse Π΅Ρ‰Π΅ Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ внСдрСния OSGi (Π² Ρ‚ΠΎ врСмя использовалась собствСнная тСхнология, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ аналогичная OSGi).

Core Workspace

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ любая интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, построСнная Π½Π° основС Eclipse Platform, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Eclipse workspace. ИмСнно workspace ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит исходный ΠΊΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² IDE прилоТСния. Workspace Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ отобраТаСтся Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈ состоит ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΏΠ°ΠΏΠΊΠΈ, ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ рСсурсами workspace. РСализация workspace Π² Eclipse слуТит ΠΊΠ°ΠΊ Π±Ρ‹ кэшСм ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Ρ‡Ρ‚ΠΎ позволяСт Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²Π° рСсурсов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, workspace прСдоставляСт ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСсурсов ΠΈ инфраструктуру ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ»Π΄Π΅Ρ€ΠΎΠ².

Π—Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ workspace ΠΈ Π΅Π³ΠΎ рСсурсов ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Core Resources (ΠΏΠ»Π°Π³ΠΈΠ½ org.eclipse.core.resources). Π’ частности, эта ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° прСдоставляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ доступ ΠΊ workspace Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов. Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этой модСлью ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ простой способ прСдставлСния ссылки Π½Π° рСсурс. ΠŸΡ€ΠΈ этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, нСпосрСдствСнно хранящий состояниС рСсурса Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚ клиСнтского доступа. Π˜Π½Π°Ρ‡Π΅, Π² случаС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, удалСния Ρ„Π°ΠΉΠ»Π°, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ Π½Π΅Ρ‚ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, с Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ‚ΡΡŽΠ΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. Eclipse Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ handle рСсурса. Handle выступаСт Π² Ρ€ΠΎΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π° (ΠΎΠ½ Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу Π² workspace) ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСпосрСдствСнно Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ состоянии рСсурса. Π”Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ являСтся Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Handle/Body.

Рис. 2 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ΄ΠΈΠΎΠΌΡƒ Handle/Body ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ IResource прСдставляСт handle рСсурса ΠΈ являСтся API, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ класса Resource, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ этот интСрфСйс, Π° Ρ‚Π°ΠΊΠΆΠ΅ класса ResourceInfo, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ body, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ API Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ. ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ handle Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ корня workspace ΠΈ Π½Π΅ содСрТит Π² сСбС ссылку Π½Π° resource info. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ resource info ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Β«Π΄Π΅Ρ€Π΅Π²ΠΎ элСмСнтов» (element tree). Π­Ρ‚Π° структура Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² памяти. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ экзСмпляр resource info, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ handle, element tree обходится Π² соотвСтствии с ΠΏΡƒΡ‚Π΅ΠΌ, хранящимся Π² этом handle.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 2. IResource и ResourceInfo

Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² дальнСйшСм, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ handle-based) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Eclipse ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. А ΠΏΠΎΠΊΠ° пСрСчислим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства этого Π΄ΠΈΠ·Π°ΠΉΠ½Π°:

  • Handle являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (value object). ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-значСния – это Π½Π΅ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ (immutable) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, равСнство ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ основываСтся Π½Π° идСнтичности. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° Π² Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. НСсколько экзСмпляров handle ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ рСсурс. Для ΠΈΡ… сравнСния Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals(Object).
  • Handle опрСдСляСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ рСсурса, Π½ΠΎ Π½Π΅ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ состоянии рСсурса (СдинствСнныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Ρ…Ρ€Π°Π½ΠΈΡ‚, это Β«ΠΊΠ»ΡŽΡ‡Β», ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу).
  • Handle ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ рСсурс (Π»ΠΈΠ±ΠΎ рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ создан, Π»ΠΈΠ±ΠΎ рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½). БущСствованиС рСсурса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° IResource.exists().
  • НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ исходя ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, хранящСйся Π² самом handle (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ handle-only ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ IResource.getParent(), getFullPath(), ΠΈ Ρ‚.ΠΏ. РСсурс Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ рСсурс сущСствовал, Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (CoreException), Ссли рСсурс Π½Π΅ сущСствуСт.

Eclipse прСдоставляСт эффСктивный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± измСнСниях рСсурсов workspace (рис. 3). РСсурсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ дСйствий, выполняСмых Π² самой Eclipse IDE, Ρ‚Π°ΠΊ ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния синхронизации с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях подписавшимся Π½Π° Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ прСдоставляСтся Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± измСнСниях Π² Π²ΠΈΠ΄Π΅ «рСсурсных Π΄Π΅Π»ΡŒΡ‚Β» (resource delta). Π”Π΅Π»ΡŒΡ‚Π° описываСт измСнСния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя состояниями (ΠΏΠΎΠ΄-)Π΄Π΅Ρ€Π΅Π²Π° рСсурсов workspace ΠΈ сама являСтся Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описываСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСсурса ΠΈ содСрТит список Π΄Π΅Π»ΡŒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ уровня, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… измСнСния Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… рСсурсов.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 3. IResourceChangeEvent и IResourceDelta

ΠžΡΠ½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° рСсурсных Π΄Π΅Π»ΡŒΡ‚Π°Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ характСристиками:

  • ЕдинствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ мноТСство ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ структуры, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π΅Π»ΡŒΡ‚Π° строится ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ рСкурсивной ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹-подписчики ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСсурсов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсивного спуска ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π΄Π΅Π»ΡŒΡ‚.
  • Π”Π΅Π»ΡŒΡ‚Π° содСрТит ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСсурса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ассоциированных с Π½ΠΈΠΌ Β«ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ²Β» (Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ошибки компиляции).
  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ссылки Π½Π° рСсурс Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· handle, Π΄Π΅Π»ΡŒΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ рСсурс.

Как ΠΌΡ‹ вскорС ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, основныС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

JDT Core

МодСль рСсурсов Eclipse workspace являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ языково-нСзависимой модСлью. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° JDT Core (ΠΏΠ»Π°Π³ΠΈΠ½ org.eclipse.jdt.core) прСдоставляСт API для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° структуры workspace с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Java, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ «модСль JavaΒ» (Java model). Π­Ρ‚ΠΎΡ‚ API ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… элСмСнтов Java, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ API ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ интСрфСйсы Π΄Π΅Ρ€Π΅Π²Π° элСмСнтов Java ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° рис. 4.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 4. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ Java

МодСль Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡƒ handle/body, Ρ‡Ρ‚ΠΎ ΠΈ модСль рСсурсов (рис. 5). IJavaElement – это handle, Π° JavaElementInfo ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ body. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ IJavaElement опрСдСляСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΠ±Ρ‰ΠΈΠΉ для всСх элСмСнтов Java. НСкоторыС ΠΈΠ· Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ handle-only: getElementName(), getParent(), ΠΈ Ρ‚.ΠΏ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ JavaElementInfo Ρ…Ρ€Π°Π½ΠΈΡ‚ состояниС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта: Π΅Π³ΠΎ структуру ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 5. IJavaElement и JavaElementInfo

МодСль Java ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отличия Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° handle/body ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с модСлью рСсурсов. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов element tree, ΡƒΠ·Π»Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ resource info, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ содСрТится Π² памяти. Но Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Java ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большСС число элСмСнтов, Ρ‡Π΅ΠΌ Π² Π΄Π΅Ρ€Π΅Π²Π΅ рСсурсов, вСдь Π² Π½Π΅ΠΉ прСдставлСна, Π² Ρ‚ΠΎΠΌ числС, ΠΈ внутрСнняя структура .java ΠΈ .class Ρ„Π°ΠΉΠ»ΠΎΠ²: Ρ‚ΠΈΠΏΡ‹, поля, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго Π΄Π΅Ρ€Π΅Π²Π° элСмСнтов Π² памяти, рСализация ΠΌΠΎΠ΄Π΅Π»ΠΈ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ LRU-кэш element info, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся handle IJavaElement. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ element info ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ запросу ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ происходит навигация Π΄Π΅Ρ€Π΅Π²Π° элСмСнтов. ΠŸΡ€ΠΈ этом Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‚ΡΡ ΠΈΠ· кэша, ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти модСлью остаСтся ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ кэша. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство handle-based Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скрываСт Ρ‚Π°ΠΊΠΈΠ΅ подробности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ клиСнтского ΠΊΠΎΠ΄Π°.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСмСнтов Java Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ рассмотрСнному Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ рСсурсов workspace. ΠšΠ»ΠΈΠ΅Π½Ρ‚, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Java, подписываСтся Π½Π° Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ElementChangedEvent, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит IJavaElementDelta (рис. 6).

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 6. ElementChangedEvent и IJavaElementDelta

МодСль Java Π½Π΅ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½, поэтому для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°, написанного Π½Π° Java, JDT Core прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ (Π½Π΅ handle-based) модСль: абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (abstract syntax tree, AST). AST прСдставляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° исходного тСкста. Π£Π·Π»Ρ‹ AST ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ элСмСнтам структуры исходного модуля (объявлСниям, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ, выраТСниям, ΠΈ Ρ‚.ΠΏ.) ΠΈ содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта Π² исходном тСкстС, Π° Ρ‚Π°ΠΊΠΆΠ΅ (Π² качСствС ΠΎΠΏΡ†ΠΈΠΈ) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ ссылок Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ bindings. Bindings ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сущности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΡ‹, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, извСстныС компилятору. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡƒΠ·Π»ΠΎΠ² AST, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Π΄Π΅Ρ€Π΅Π²ΠΎ, bindings ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ пСрСкрСстныС ссылки ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π³Ρ€Π°Ρ„. Абстрактный класс ASTNode являСтся ΠΎΠ±Ρ‰ΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом для всСх ΡƒΠ·Π»ΠΎΠ² AST. ΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ ASTNode ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ синтаксичСским конструкциям языка Java.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ синтаксичСскиС Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство памяти, JDT ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ AST, для Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ Java, AST ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рассматриваСтся ΠΊΠ°ΠΊ «промСТуточная», «врСмСнная» модСль, Π½Π° элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½Π΅ слСдуСт ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ссылки Π²Π½Π΅ контСкста ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄ΡˆΠ΅ΠΉ ΠΊ созданию AST.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Java model, AST, bindings) совмСстно ΡΠ²Π»ΡΡŽΡ‚ΡΡ основой для построСния Β«ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ» Π² JDT, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Java с Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Β«ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ°ΠΌΠΈΒ», Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ исходного ΠΊΠΎΠ΄Π° (срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… организация списка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠΌΠ΅Π½ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² соотвСтствии с настроСнным стилСм), инструмСнты поиска ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. ΠŸΡ€ΠΈ этом модСль Java ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΎΡΠΎΠ±ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС основы для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния структуры Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Package Explorer, Outline, Search, Call Hierarchy, ΠΈ Type Hierarchy).

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Eclipse, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² 1Π‘:Enterprise Developments Tools

На рис. 7 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Eclipse, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ тСхнологичСской ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для 1C:Enterprise Development Tools.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 7. Eclipse ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1Π‘:Enterprise Development Tools

Eclipse Platform прСдоставляСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ инфраструктуру. ΠœΡ‹ рассмотрСли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты этой инфраструктуры Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Eclipse Modeling Framework (EMF) прСдоставляСт ΠΎΠ±Ρ‰ΠΈΠ΅ срСдства модСлирования структурированных Π΄Π°Π½Π½Ρ‹Ρ…. EMF ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с Eclipse Platform, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… прилоТСниях Java. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Eclipse-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с EMF, хотя Π΅Ρ‰Π΅ Π½Π΅ совсСм Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² тонкостях Eclipse Platform. Одной ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ заслуТСнной популярности являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС, ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API ΠΌΠ΅Ρ‚Π°-уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с любой EMF модСлью. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡ‹Π΅ EMF Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ подсистСма Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ‚Π°-ΠΌΠΎΠ΄Π΅Π»ΠΈ сущСствСнно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ количСство ошибок. Π’Π°ΠΊΠΆΠ΅ EMF содСрТит ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ сСриализации ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Как любой ΠΏΠΎ-настоящСму ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, EMF ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡, связанных с ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ классы ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рассмотрСнныС Π²Ρ‹ΡˆΠ΅ handle-based ΠΌΠΎΠ΄Π΅Π»ΠΈ) ΠΌΠΎΠ³ΡƒΡ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² Π±ΠΎΠ»Π΅Π΅ спСциализированных срСдствах модСлирования. Π Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ± EMF – занятиС Π½Π΅Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΠ΅, особСнно Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ довольно толстой. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ качСствСнная систСма ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, полоТСнная Π² основу EMF, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° свСт Ρ†Π΅Π»ΠΎΠΌΡƒ спСктру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², посвящСнных ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Eclipse Modeling наряду с самим EMF. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² являСтся Eclipse Xtext.

Eclipse Xtext прСдоставляСт инфраструктуру «тСкстового модСлирования». Xtext ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ANTLR для синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° исходного тСкста ΠΈ EMF для прСдставлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ASG (abstract semantic graph, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΏΠΎ сути, являСтся ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ AST ΠΈ bindings), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ «сСмантичСской модСлью». Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Xtext языка описываСтся Π½Π° собствСнном языкС Xtext. Π­Ρ‚ΠΎ позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описаниС Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ для ANTLR, Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сСриализации AST (Ρ‚.Π΅. Xtext прСдоставляСт ΠΈ parser, ΠΈ unparser), ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΡƒΡŽ подсказку, ΠΈ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… языковых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, язык описания Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Xtext, ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΎΠΊ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, скаТСм, с языком описания Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² ANTLR. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° приходится Β«ΠΏΠΎΠ΄Π³ΠΈΠ±Π°Ρ‚ΡŒΒ» ΠΏΠΎΠ΄ Xtext Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ с нуля языкС, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ для языков с ΡƒΠΆΠ΅ слоТившимся синтаксисом. НСсмотря Π½Π° это, Xtext являСтся Π² настоящСС врСмя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Ρ€Π΅Π»Ρ‹ΠΌ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΌ, ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом Π² Eclipse для построСния языков программирования ΠΈ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Π½ΠΈΡ…. Π’ частности, ΠΎΠ½ являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для быстрого прототипирования ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков (domain-specific language, DSL). ΠšΡ€ΠΎΠΌΠ΅ упомянутого Π²Ρ‹ΡˆΠ΅ «языкового ядра» Π½Π° основС ANTLR ΠΈ EMF, Xtext прСдоставляСт мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокого уровня, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ индСксации, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ построСния, Β«ΡƒΠΌΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Β», ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½ΠΎ оставляСт Π·Π° скобками языковыС handle-based ΠΌΠΎΠ΄Π΅Π»ΠΈ. Как ΠΈ EMF, Xtext являСтся ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ достойным ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ ΠΌΡ‹ вряд Π»ΠΈ смоТСм Π΄Π°ΠΆΠ΅ Π±Π΅Π³Π»ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ сСйчас ΠΎΠ±ΠΎ всСх Π΅Π³ΠΎ возмоТностях.

1Π‘:Enterprise Development Tools Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ EMF сам ΠΏΠΎ сСбС, Ρ‚Π°ΠΊ ΠΈ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Eclipse Modeling. Π’ частности, Xtext являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Ρ‚Π°ΠΊΠΈΡ… языков 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, ΠΊΠ°ΠΊ встроСнный язык программирования ΠΈ язык запросов. Π”Ρ€ΡƒΠ³ΠΎΠΉ основой этих срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Eclipse Handly, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ остановимся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ (ΠΈΠ· пСрСчислСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Eclipse ΠΎΠ½ ΠΏΠΎΠΊΠ° Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ извСстСн).

Eclipse Handly, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Eclipse Technology, появился Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Eclipse Foundation, осущСствлСнной Ρ„ΠΈΡ€ΠΌΠΎΠΉ 1C Π² 2014 Π³ΠΎΠ΄Ρƒ. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Ρ„ΠΈΡ€ΠΌΠ° 1Π‘ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: committer’ы Handly ΡΠ²Π»ΡΡŽΡ‚ΡΡ сотрудниками Ρ„ΠΈΡ€ΠΌΡ‹. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ нСбольшой, Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ достаточно ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² Eclipse: Π³Π»Π°Π²Π½ΠΎΠΉ Π΅Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ΄ΠΈΠΎΠΌΠ° handle/body, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π²Ρ‹ΡˆΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов ΠΈ Java-ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’Π°ΠΌ ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ модСль рСсурсов, ΠΈ модСль Java ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ основами для Eclipse Java development tools (JDT). А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ практичСски всС *DT ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Eclipse ΠΈΠΌΠ΅ΡŽΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ JDT, Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ большим ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ handle-based ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² основС ΠΌΠ½ΠΎΠ³ΠΈΡ…, Ссли Π½Π΅ всСх IDE, построСнных ΠΏΠΎΠ²Π΅Ρ€Ρ… Eclipse Platform. НапримСр, Π² Eclipse C/C++ Development Tooling (CDT) имССтся handle-based модСль C/C++, ΠΈΠ³Ρ€Π°ΡŽΡ‰Π°Ρ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ CDT Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Java-модСль Π² JDT.

Π”ΠΎ появлСния Handly, Eclipse Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» спСциализированных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для построСния языковых handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сСйчас ΠΌΠΎΠ΄Π΅Π»ΠΈ создавались Π² основном с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСпосрСдствСнной Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Java-ΠΌΠΎΠ΄Π΅Π»ΠΈ (a.k.a. copy/paste), Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° это позволяСт Eclipse Public License (EPL). (ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ, скаТСм, для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² самого Eclipse это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ с ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρ‡Π΅Π³ΠΎ Π½Π΅ скаТСшь ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… с Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.) Помимо Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ для Π½Π΅Π΅ бСссистСмности, такая ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстным ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ: Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°, привнСсСнным ΠΏΡ€ΠΈ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ошибкам, ΠΈ Ρ‚.ΠΏ. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Β«Π²Π΅Ρ‰ΡŒΡŽ Π² сСбС» ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» для ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. А вСдь Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… понятий ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² для языковых handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ привСсти ΠΊ созданию ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² случаС с EMF.

НСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Eclipse Π½Π΅ Π±Ρ‹Π»ΠΎ понимания этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π•Ρ‰Π΅ Π² 2005 Π³ΠΎΠ΄Ρƒ Martin Aeschlimann, обобщая ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° CDT, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания ΠΎΠ±Ρ‰Π΅ΠΉ инфраструктуры для языковых ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ handle-based ΠΌΠΎΠ΄Π΅Π»ΠΈ. Но, ΠΊΠ°ΠΊ это часто Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΈΠ·-Π·Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих ΠΈΠ΄Π΅ΠΉ Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊ ΠΈ Π½Π΅ дошли Ρ€ΡƒΠΊΠΈ. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, факторизация ΠΊΠΎΠ΄Π° *DT-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· нСдостаточно ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ Π² Eclipse.

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ смыслС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Handly ΠΏΡ€ΠΈΠ·Π²Π°Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ EMF, Π½ΠΎ для handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΈ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ языковых (Ρ‚.Π΅. ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… элСмСнты структуры Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ языка программирования). НиТС пСрСчислСны основныС Ρ†Π΅Π»ΠΈ, ΡΡ‚Π°Π²ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Handly:

  • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основных абстракций ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.
  • Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ усилий ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ качСства Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языковых handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π·Π° счСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ API ΠΌΠ΅Ρ‚Π°-уровня ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ модСлям, Π΄Π΅Π»Π°ΡŽΡ‰Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ созданиС ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ IDE, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с языковыми handle-based модСлями.
  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ.
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Xtext (Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ слоС).

Для выдСлСния ΠΎΠ±Ρ‰ΠΈΡ… понятий ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языковых handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ интСрфСйсы ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, прСдоставляСмыС Handly, ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° рис. 8.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 8. ΠžΠ±Ρ‰ΠΈΠ΅ интСрфСйсы ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов Handly

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ IElement прСдставляСт handle элСмСнта ΠΈ являСтся ΠΎΠ±Ρ‰ΠΈΠΌ для элСмСнтов всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, основанных Π½Π° Handly. Абстрактный класс Element Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ handle/body (рис. 9).

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 9. IElement ΠΈ обобщСнная рСализация handle/body

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Handly прСдоставляСт ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСмСнтов ΠΌΠΎΠ΄Π΅Π»ΠΈ (рис. 10). Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… ΠΎΠ½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ рСсурсов ΠΈ Java-ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IElementDelta для ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСмСнта.

Eclipse ΠΊΠ°ΠΊ тСхнологичСская ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для 1C:Enterprise Development Tools
Рис. 10. ΠžΠ±Ρ‰ΠΈΠ΅ интСрфСйсы ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Handly

РассмотрСнная Π²Ρ‹ΡˆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ Handly (рис. 9 ΠΈ 10) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прСдставлСния практичСски Π»ΡŽΠ±Ρ‹Ρ… handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Для создания языковых ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ – Π² частности, ΠΎΠ±Ρ‰ΠΈΠ΅ интСрфСйсы ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для элСмСнтов структуры исходного тСкста, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… source elements (рис. 8). Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ISourceFile прСдставляСт исходный Ρ„Π°ΠΉΠ», Π° ISourceConstruct – элСмСнт Π²Π½ΡƒΡ‚Ρ€ΠΈ исходного Ρ„Π°ΠΉΠ»Π°. АбстрактныС классы SourceFile ΠΈ SourceConstruct Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΈΡ… элСмСнтами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚Ρƒ с тСкстовыми Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ, привязку ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ элСмСнта Π² исходном тСкстС, reconciling ΠΌΠΎΠ΄Π΅Π»ΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ содСрТимым Π±ΡƒΡ„Π΅Ρ€Π° working copy, ΠΈ Ρ‚.ΠΏ. РСализация этих ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся достаточно нСпростой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, ΠΈ Handly ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ усилия ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ языковых handle-based ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π·Π° счСт прСдоставлСния качСствСнных Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Помимо пСрСчислСнных Π²Ρ‹ΡˆΠ΅ основных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², Handly прСдоставляСт инфраструктуру тСкстовых Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈ «снимков» (snapshots), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Xtext editor), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с основанными Π½Π° Handly модСлями, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ outline framework. Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ своих возмоТностСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ прСдоставляСт нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠ΄Π΅Π»ΠΈ Java Π½Π° Handly. (По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Java-ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² JDT, данная модСль Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ нСсколько ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π° для большСй наглядности.)

Как Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Handly ΠΈ дальнСйшСм Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΡƒΠ΄Π΅Π»ΡΠ»ΠΎΡΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ гибкости.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, handle-based ΠΌΠΎΠ΄Π΅Π»ΠΈ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ β€œby design”. НапримСр, ΠΈΠ΄ΠΈΠΎΠΌΠ° handle/body позволяСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство потрСбляСмой модСлью памяти. Но Π΅ΡΡ‚ΡŒ ΠΈ Π½ΡŽΠ°Π½ΡΡ‹. Π’Π°ΠΊ, ΠΏΡ€ΠΈ испытаниях Handly Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ – ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ большого числа элСмСнтов построСниС Π΄Π΅Π»ΡŒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Оказалось, Ρ‡Ρ‚ΠΎ Ρ‚Π° ΠΆΠ΅ самая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° присутствуСт ΠΈ Π² Java-ΠΌΠΎΠ΄Π΅Π»ΠΈ JDT, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π² своС врСмя Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. ΠœΡ‹ исправили ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Handly ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ для JDT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» с Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ принят. Π­Ρ‚ΠΎ всСго лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Handly Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, вСдь Π² этом случаС Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ всСго Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Handly Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ тСхничСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ. Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ API ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π° Π² Handly 0.5 посрСдством Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ отдСлСния спСцифичного для ΠΌΠΎΠ΄Π΅Π»ΠΈ API, опрСдСляСмого ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, ΠΎΡ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ API ΠΌΠ΅Ρ‚Π°-уровня, прСдоставляСмого Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ тСхничСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Handly Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ свободу ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ API.

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ аспСкты. НапримСр, Handly ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° структуру ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ для модСлирования языков ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков. ΠŸΡ€ΠΈ построСнии структуры исходного Ρ„Π°ΠΉΠ»Π°, Handly Π½Π΅ прСдписываСт ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ прСдставлСния AST ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ самого наличия AST, обСспСчивая, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с практичСски Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°. НаконСц, Handly ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Eclipse workspace, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ нСпосрСдствСнно с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами, благодаря ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Eclipse File System (EFS).

ВСкущая вСрсия Handly 0.6 Π²Ρ‹ΡˆΠ»Π° Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2016 Π³ΠΎΠ΄Π°. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ находится Π² состоянии ΠΈΠ½ΠΊΡƒΠ±Π°Ρ†ΠΈΠΈ ΠΈ API ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ зафиксирован, Handly ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π²ΡƒΡ… ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… коммСрчСских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рискнули Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ Β«Ρ€Π°Π½Π½ΠΈΡ… Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€ΠΎΠ²Β», ΠΈ, Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΆΠ°Π»Π΅ΡŽΡ‚ ΠΎΠ± этом.

Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² – 1C:Enterprise Development Tools, Π³Π΄Π΅ Handly с самого Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для модСлирования элСмСнтов высокоуровнСвой структуры Ρ‚Π°ΠΊΠΈΡ… языков 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, ΠΊΠ°ΠΊ встроСнный язык программирования ΠΈ язык запросов. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠ΅Π½Π΅Π΅ извСстСн ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ΅. Π­Ρ‚ΠΎ Codasip Studio, интСгрированная срСда проСктирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… процСссоров (application-specific instruction-set processor, ASIP), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ самой Ρ‡Π΅ΡˆΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Codasip, Ρ‚Π°ΠΊ ΠΈ Π΅Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… AMD, AVG, Mobileye, Sigma Designs. Codasip ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Handly Π² production c 2015 Π³ΠΎΠ΄Π°, начиная с вСрсии Handly 0.2. ПослСдний Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π΅Π»ΠΈΠ· Codasip Studio ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ 0.5, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π² июнС 2016 Π³ΠΎΠ΄Π°. OndΕ™ej Ilčík, Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ IDE Π² Codasip, находится Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, обСспСчивая ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎΡ‚ Π»ΠΈΡ†Π° «стороннСго Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€Π°Β». Он Π΄Π°ΠΆΠ΅ смог Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ свободного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСпосрСдствСнно ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² слой UI (~ 4000 строк ΠΊΠΎΠ΄Π°) для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Handly, ΠΌΠΎΠ΄Π΅Π»ΠΈ Java. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Β«ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… уст» ΠΎΠ± использовании Handly Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° страницС Success Stories ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НадССмся, Ρ‡Ρ‚ΠΎ послС выпуска вСрсии 1.0 с Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠ΅ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ API ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· состояния ΠΈΠ½ΠΊΡƒΠ±Π°Ρ†ΠΈΠΈ, Ρƒ Handly появятся ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€Ρ‹. Пока ΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΠΊΠ°Ρ‚ΠΊΡƒ ΠΈ дальнСйшСС ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ API, выпуская ΠΏΠΎ Π΄Π²Π° Β«Π±ΠΎΠ»ΡŒΡˆΠΈΡ…Β» Ρ€Π΅Π»ΠΈΠ·Π° Π² Π³ΠΎΠ΄ – Π² июнС (Π² Ρ‚Ρƒ ΠΆΠ΅ Π΄Π°Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· Eclipse) ΠΈ Π΄Π΅ΠΊΠ°Π±Ρ€Π΅, обСспСчивая прСдсказуСмый Π³Ρ€Π°Ρ„ΠΈΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€Ρ‹. МоТно Π΅Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€œbug rate” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° остаСтся Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Handly с самых ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… Ρ€Π°Π½Π½ΠΈΡ… Π°Π΄ΠΎΠΏΡ‚Π΅Ρ€ΠΎΠ². Для дальнСйшСго знакомства с Eclipse Handly ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Getting Started Tutorial ΠΈ Architectural Overview.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ