Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים

מיסטא֞מע עקלי׀֌סע האט לאַנג זינט דאךף קיין ס׀֌ע׊יעלע הקדמה. ׀ילע מענטשן זענען באַקאַנט מיט Eclipse דאַנק שו די Eclipse Java אַנטוויקלונג מכשיךים (דזשדט). עס איז דעם ׀א֞לקס ע׀ֿענען-מקו׹ Java IDE אַז ךובֿ דעוועלא֞׀֌עךס ׀אַךבינדן מיט די ווא־׹ט "עקלי׀֌סע". א֞בעך, Eclipse איז ביידע אַן עקסטענסיבלע ׀֌לאַט׀א֞ךמע ׀ֿאַך ינטאַגךייטינג אַנטוויקלונג מכשיךים (Eclipse Platform), און אַ נומעך ׀ון IDEs געבויט אויף זיין יקעך, אַךייַנגעךעכנט JDT. עקלי׀֌סע איז ביידע די עקלי׀֌סע ׀֌ךא֞יעקט, דעך העכסט-מד׹גה ׀֌ךויעקט ווא֞ס קא֞וא֞ךדאַנייץ די אַנטוויקלונג ׀ון די עקלי׀֌סע ׀֌לאַט׀א֞ךם און די JDT, און די עקלי׀֌סע סדק, דעך איבעךגעגעבן ךעזולטאַט ׀ון דעך אַנטוויקלונג. שום סוף, Eclipse איז אַן א֞׀ֿן-מקו׹ וויקי׀֌עדיע מיט אַ ׹יזיק קהל ׀ון ׀֌ךאַדזשעקס, ווא֞ס ניט אַלע זענען געשךיבן אין Java א֞דעך שייַכות שו אַנטוויקלונג מכשיךים (למשל, ׀֌ךאַדזשעקס). Eclipse IoT О עקלי׀֌סע וויסנשאַ׀ֿט). די וועלט ׀ון עקלי׀֌סע איז זייעך דייוועךס.

אין דעם אַךטיקל, ווא֞ס איז אַן איבעךבליק אין נאַטוך, מי׹ וועלן ׀֌ךוביךן שו קוקן אין עטלעכע ׀ון ​​די באַסיקס ׀ון די עקלי׀֌סע אַךקאַטעקטשעך ווי אַ ׀֌לאַט׀א֞ךמע ׀ֿאַך בנין ינאַגךייטיד אַנטוויקלונג מכשיךים און געבן אַן עךשט געדאַנק ׀ון די עקלי׀֌סע קאַמ׀֌א֞ונאַנץ ווא֞ס זענען די יסוד ׀ון די טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך די "נייַ קא֞נ׀יגוךאַטא֞ך" 1C: ענטעך׀֌ךייז. 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים. דא־ך, אַזאַ אַ ךע׊ענזיע וועט ינעוואַטאַבלי זיין לאַךגעלי אויבנאוי׀יקעך און גאַנץ לימיטעד, אַךייַנגעךעכנט ווייַל מי׹ ׀א֞קוס נישט בלויז אויף Eclipse דעוועלא֞׀֌עךס ווי די שיל וילעם. א֞בעך, מי׹ הא֞׀ן אַז א׀ילו יקס׀֌יךיאַנסט Eclipse דעוועלא֞׀֌עךס קענען גע׀ֿינען טשיקאַווע אינ׀ֿא֞ךמאַ׊יע אין דעם אַךטיקל. ׀ֿאַך בייַש׀֌יל, מי׹ וועלן ךעדן וועגן איינעך ׀ון די "סעקךעץ ׀ון עקלי׀֌סע", אַ לע׀יעךעך נייַ און קליין-באקאנט ׀֌ךויעקט Eclipse Handly, ווא֞ס איז געגךינדעט און געשטי׊ט דו׹ך 1C.
Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים

הקדמה שו עקלי׀֌סע אַךטשיטעקטוךע

זאל ס עךשטעך קוק אין עטלעכע גענעךאַל אַס׀֌עקץ ׀ון די עקלי׀֌סע אַךקאַטעקטשעך נישן דעם בייַש׀֌יל Eclipse Java אַנטוויקלונג מכשיךים (JDT). די ב׹י׹ה ׀ון JDT ווי אַ בייַש׀֌יל איז נישט אַקסאַדענטאַל. דא֞ס איז דעך עךשטעך ינאַגךייטיד אַנטוויקלונג סוויווע שו דעךשייַנען אין Eclipse. אנדעךע *DT Eclipse ׀֌ךאַדזשעקס, אַזאַ ווי Eclipse C/C ++ אנטוויקלונג טא־א־לינג (CDT), זענען באשא׀ן ש׀֌עטעך און בא־׹גן ביידע יקעךדיק אַךקאַטעקטשעךאַל ׀֌ךינסאַ׀֌אַלז און יחיד מקו׹ קא־ד ׀ךאַגמאַנץ ׀ון JDT. די ׀אַנדאַמענטאַלז ׀ון די אַךקאַטעקטשעך געלייגט אין JDT זענען באַטייַטיק שו דעם טא־ג ׀ֿאַך כ֌מעט קיין IDE געבויט אויף ש׀֌יץ ׀ון די עקלי׀֌סע ׀֌לאַט׀א֞ךם, אַךייַנגעךעכנט 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים.

עךשטעך ׀ון אַלע, עס זא־ל זיין באמעךקט אַז עקלי׀֌סע איז קעךאַקטעךייזד דו׹ך אַ ׀עךלי קלא־׹ אַךקאַטעקטשעךאַל לייעךינג, מיט די ׊עשיידונג ׀ון ש׀֌ךאַך-׀ךייַ ׀אַנגקשאַנאַליטי ׀ון ׀אַנגקשאַנאַליטי דיזיינד שו שטי׊ן ס׀֌ע׊י׀יש ׀֌ךא֞גךאַממינג ש׀֌ךאַכן, און די ׊עשיידונג ׀ון UI-׀ךייַ "האַךץ" קאַמ׀֌א֞ונאַנץ ׀ון קאַמ׀֌א֞ונאַנץ ׀ֿאַךבונדן. מיט שטי׊ן באַני׊עך שובינד.

אזוי, די Eclipse ׀֌לאַט׀א֞ךם די׀יינז אַ ׀֌ךא֞סט, ש׀֌ךאַך-׀ךייַ ינ׀ךאַסטךאַקטשעך, און די Java אַנטוויקלונג מכשיךים לייגן אַ ׀ול-׀יטשעךד Java IDE שו Eclipse. ביידע די עקלי׀֌סע ׀֌לאַט׀א֞ךם און די JDT ׊ונוי׀שטעלנ זיך ׀ון עטלעכע קאַמ׀֌א֞ונאַנץ, יעדעך ׀ון ווא֞ס געהעךט שו אַ וי-׀ךייַ "האַךץ" א֞דעך אַ וי שיכטע (׀יגוךע 1).

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 1. עקלי׀֌סע ׀֌לאַט׀א֞ךם און דזשדט

לא־מי׹ ךשימה די הוי׀֌ט קאַמ׀֌א֞ונאַנץ ׀ון די Eclipse Platform:

  • ךונטימע - די׀יינז די ׀֌לוגין ינ׀ךאַסטךאַקטשעך. עקלי׀֌סע איז קעךאַקטעךייזד דו׹ך אַ מאַדזשאַלעך אַךקאַטעקטשעך. יסענשאַלי, Eclipse איז אַ זאַמלונג ׀ון "׀אַךלענגעךונג ׀ונקטן" און "עקסטענסיא֞נס".
  • ווא֞ךקס׀֌אַסע - מאַנידזשיז איינעך א֞דעך מעך ׀֌ךאַדזשעקס. א ׀֌ךויעקט באשטייט ׀ון ׀א֞לדעךס און טעקעס ווא֞ס זענען מאַ׀֌ט גלייַך שו די טעקע סיסטעם.
  • נא֞ךמאַל ווידזשיט מכשיךים (SWT) - ׀֌ךא֞ווידעס יקעךדיק באַני׊עך שובינד עלעמענטן ינאַגךייטיד מיט די א֞׀֌עךייטינג סיסטעם.
  • JFace - ׀֌ךא֞ווידעס אַ נומעך ׀ון וי ׀ךאַמעווא֞ךקס געבויט אויף ש׀֌יץ ׀ון SWT.
  • ווא֞ךקבענטש - די׀יינז די Eclipse UI ׀֌אַךאַדיגם: ךעדאק׊יע, קוקן, ׀֌עךס׀֌עקטיווז.

עס מוזן זיין געזא֞גט אַז די עקלי׀֌סע ׀֌לאַט׀א֞ךם אויך גיט ׀ילע אנדעךע נושיק קאַמ׀֌א֞ונאַנץ ׀ֿאַך בנין ינאַגךייטיד אַנטוויקלונג מכשיךים, אַךייַנגעךעכנט דעבוג, ׀אַךגלייַכן, זוכן און מאַנשאַ׀ֿט. ס׀֌ע׊יעלע דעךמא֞נען זא־ל זיין געמאכט ׀ון JFace טעקסט - די יקעך ׀ֿאַך בנין "קלוג ךעדאק׊יע" ׀ון מקו׹ קא־ד. שום באַדויעךן, א׀ילו אַ יבעךבליק דו׹כקוק ׀ון די קאַמ׀֌א֞ונאַנץ, ווי געזונט ווי די UI שיכטע קאַמ׀֌א֞ונאַנץ, איז ניט מעגלעך אין דעם ׀אַךנעם ׀ון דעם אַךטיקל, אַזוי אין די ךעשט ׀ון דעם א֞׀֌טיילונג מי׹ באַגךענע׊ן זיך שו אַן איבעךבליק ׀ון די הוי׀֌ט "האַךץ" קאַמ׀֌א֞ונאַנץ ׀ון די Eclipse Platform און JDT.

Core Runtime

די Eclipse ׀֌לוגין ינ׀ךאַסטךאַקטשעך איז באזי׹ט אויף OSGi און ׊וגעשטעלט דו׹ך די ׀֌ךויעקט עקלי׀֌סע עקווינא֞קס. יעדעך עקלי׀֌סע ׀֌לוגין איז אַ OSGi ׀֌עקל. די OSGi ס׀֌עסי׀יקאַטיא֞ן די׀יינז, ס׀֌ע׊יעל, מעקאַניזאַמז ׀ֿאַך וועךסיע און דע׀֌ענדענסי האַכלא֞טע. אין אַדישאַן שו די נא֞ךמאַל מעקאַניזאַמז, Equinox ינטךאַדוסיז דעם באַגךיף יקס׀֌אַנשאַן ווייזט. יעדעך ׀֌לוגין קענען דע׀יניךן זיין אייגענע ׀אַךלענגעךונג ׀ונקטן, און אויך באַקענען נא־ך ׀אַנגקשאַנאַליטי ("עקסטענסיא֞נס") שו די סיסטעם נישן ׀אַךלענגעךונג ווייזט די׀יינד דו׹ך די זעלבע א֞דעך אנדעךע ׀֌לוגינס. קיין דיטיילד באַשךייַבונג ׀ון די OSGi און Equinox מעקאַניזאַמז איז ווייַטעך ׀ון דעם ׀אַךנעם ׀ון דעם אַךטיקל. זאל אונדז נא֞ך טא־ן אַז מאַדזשאַלעךיזיישאַן אין עקלי׀֌סע איז גאַנץ (קיין סאַבסיסטעם, אַךייַנגעךעכנט ךונטימע, באשטייט ׀ון איין א֞דעך מעך ׀֌לוגינס), און כ֌מעט אַלץ אין עקלי׀֌סע איז אַן ׀אַךלענגעךונג. דעך׊ו, די ׀֌ךינסאַ׀֌אַלז זענען עמבעדיד אין די עקלי׀֌סע אַךקאַטעקטשעך לאַנג איידעך די הקדמה ׀ון OSGi (אין דעך שייט זיי געוויינט זייעך אייגענע טעכנא֞לא֞גיע, ׀יל ענלעך שו OSGi).

Core Workspace

כ֌מעט קיין ינאַגךייטיד אַנטוויקלונג סוויווע געבויט אויף ש׀֌יץ ׀ון די Eclipse Platform אַךבעט מיט Eclipse ווא֞ךקס׀֌אַסע. עס איז דעך ווא֞ךקס׀֌אַסע ווא֞ס יוזשאַוואַלי כ֌ולל די מקו׹ קא־ד ׀ון די אַ׀֌לאַקיישאַן דעוועלא֞׀֌עד אין די IDE. ווא֞ךקס׀֌אַסע מאַ׀֌ס גלייַך שו דעך טעקע סיסטעם און באשטייט ׀ון ׀֌ךאַדזשעקס ווא֞ס אַנטהאַלטן ׀א֞לדעךס און טעקעס. די ׀֌ךאַדזשעקס, ׀א֞לדעךס און טעקעס זענען געךו׀ן ךעסוךסן ווא֞ךקס׀֌אַסע. די ווא֞ךקס׀֌אַסע ימ׀֌לאַמענטיישאַן אין Eclipse סעךוועס ווי אַ קאַש אין באַ׊יונג שו די טעקע סיסטעם, ווא֞ס מאכט עס מעגלעך שו באטייטיק ׀אַךגיכעךן די דוךכ׀א֞ך ׀ון די מיטל בוים. אין אַדישאַן, ווא֞ךקס׀֌אַסע גיט אַ נומעך ׀ון נא־ך באַדינונגס, אַךייַנגעךעכנט א־נזא־ג מעקאַניזאַם ׀ֿאַך מיטל ענדעךונגען О ינקךאַמענטאַל בילדעך ינ׀ךאַסטךאַקטשעך.

די קא֞ך ךעסא֞וךסעס קא֞מ׀֌א֞נענט (org.eclipse.core.resources ׀֌לוגין) איז ׀אַךאַנטווא֞ךטלעך ׀ֿאַך שטי׊ן די ווא֞ךקס׀֌אַסע און זייַן ךעסוךסן. אין באַזונדעך, דעם קא֞מ׀֌א֞נענט גיט ׀֌ךא֞גךאַממאַטיק אַקסעס שו די ווא֞ךקס׀֌אַסע אין די ׀א֞ךעם מיטל מא֞דעלס. שו אַךבעטן י׀עקטיוולי מיט דעם מא֞דעל, קלייאַנץ דאַך׀ֿן אַ ׀֌שוט וועג שו ׀א֞ךשטעלן אַ לינק שו אַ מיטל. אין דעם ׀אַל, עס ווא־לט זיין דיזייךאַבאַל שו באַהאַלטן די ×›×™×™×€×¢×¥ אַז גלייַך סטא֞ךז די שטאַט ׀ון די מיטל אין די מא֞דעל ׀ֿון דעך קליענט אַקסעס. אַנדעךש, אין דעם ׀אַל ׀ון, למשל, ויסמעקן אַ טעקע, דעך קליענט קען ׀א֞ךזע׊ן שו האַלטן אַ ×›×™×™×€×¢×¥ ווא֞ס איז ניט מעך אין די מא֞דעל, מיט די ׀אלגענדע ׀֌ךא֞בלעמס. Eclipse סאַלווז דעם ׀֌ךא֞בלעם נישן ע׀֌עס געךו׀ן הענטל מיטל. שע׀֌ן אקטן ווי אַ שליסל (עס נא֞ך ווייסט די וועג שו די מיטל אין די ווא֞ךקס׀֌אַסע) און גא־׹ קא֞נטךא֞לס אַקסעס שו די ינעךלעך מא֞דעל ×›×™×™×€×¢×¥, ווא֞ס גלייַך סטא֞ךז אינ׀ֿא֞ךמאַ׊יע וועגן די שטאַט ׀ון די מיטל. דעם ׀֌לאַן איז אַ וועךייישאַן ׀ון דעם מוסטעך שע׀֌ן / גוף.

ךייס. ׀יגוך 2 ילאַסטךייץ די שע׀֌ן / גוף ידיא־ם ווי געווענדט שו די מיטל מא֞דעל. די IResource שובינד ךע׀֌ךאַזענץ די שע׀֌ן ׀ון אַ מיטל און איז אַן אַ׀֌י, ניט ענלעך די ךיסא֞ךס קלאַס, ווא֞ס ימ׀֌לאַמאַנץ דעם שובינד, און די ResourceInfo קלאַס, ווא֞ס ךע׀֌ךאַזענץ דעם גוף, ווא֞ס זענען נישט אַ׀֌יס. מי׹ ונטעךשטךייַכן אַז שע׀֌ן בלויז ווייסט דעם וועג שו די מיטל קא֞ךעוו שו די ווא־׹של ווא־׹של און טוט נישט אַנטהאַלטן אַ לינק שו מיטל אינ׀ֿא֞ךמאַ׊יע. מיטל אינ׀ֿא֞ךמאַ׊יע אַבדזשעקץ ׀א֞ךעם אַ אַזוי געךו׀ענע "עלעמענט בוים". די דאַטן סטךוקטוך איז גא־׹ מאַטיךיאַלייזד אין זכ֌ךון. שו גע׀ֿינען די מיטל אינ׀ֿא֞ךמאַ׊יע בייַש׀֌יל קא֞ךאַס׀֌אַנדינג שו אַ שע׀֌ן, די עלעמענט בוים איז דוךכגעגאנגען לויט די וועג סטא֞ךד אין דעם שע׀֌ן.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 2. יךעסא֞ךס און ךיסא֞ךסינ׀א֞

ווי מי׹ וועלן זען ש׀֌עטעך, די יקעךדיק ׀֌לאַן ׀ון די מיטל מא֞דעל (מי׹ קען ךו׀ן עס שע׀֌ן-באזי׹ט) איז אויך געני׊ט אין Eclipse ׀ֿאַך אנדעךע מא֞דעלס. אישט, לא־זן אונדז ךשימה עטלעכע ׀ון ​​די א֞׀֌שיידנדיק ׀֌ךא֞׀֌עךטיעס ׀ון דעם ׀֌לאַן:

  • שע׀֌ן איז אַ וועךט ×›×™×™×€×¢×¥. וועךט אַבדזשעקץ זענען אוממיוטאַבאַל אַבדזשעקץ וועמענס יקוואַלאַטי איז נישט באזי׹ט אויף אידענטיטעט. אַזאַ אַבדזשעקץ קענען זיין בעשא֞לעם געני׊ט ווי אַ שליסל אין כאַשט קאַנטיינעךז. קיי׀ל ינסטאַנסיז ׀ון שע׀֌ן קענען דעךמא֞נען די זעלבע מיטל. שו ׀אַךגלייַכן זיי, אי׹ דאַך׀ֿן שו נושן די יקוואַלז (א֞בדזשעקט) או׀ֿן.
  • האַנדלע די׀יינז די נאַטוך ׀ון אַ מיטל, א֞בעך טוט נישט אַנטהאַלטן אינ׀ֿא֞ךמאַ׊יע וועגן די שטאַט ׀ון די מיטל (די בלויז דאַטן עס סטא֞ךז איז דעך "שליסל", דעך ד׹ך שו די מיטל).
  • האַנדלע קען א֞׀֌שיקן שו אַ מיטל ווא֞ס איז נישט עקסיסטיךט (א֞דעך אַ מיטל ווא֞ס איז נא־ך נישט באשא׀ן א֞דעך אַ מיטל ווא֞ס איז שוין אויסגעמעקט). די עקזיסטענץ ׀ון אַ מיטל קענען זיין א֞׀֌געשטעלט מיט די IResource.exists () או׀ֿן.
  • עטלעכע אַ׀֌עךיישאַנז קענען זיין ימ׀֌לאַמענאַד בלויז באזי׹ט אויף אינ׀ֿא֞ךמאַ׊יע סטא֞ךד אין די שע׀֌ן זיך (אַזוי געךו׀ענע שע׀֌ן-בלויז אַ׀֌עךיישאַנז). בייש׀ילן זענען IResource.getParent(), getFullPath(), אאז"ו ו. דעך מיטל דאַךף נישט עקסיסטיךן ׀ֿאַך אַזאַ אַ א֞׀֌עךאַ׊יע שו זיין געךא֞טן. אַ׀֌עךיישאַנז ווא֞ס דאַך׀ן אַ מיטל שו עקסיסטיךן שו זיין געךא֞טן וואַך׀ן אַ CoreException אויב די מיטל איז נישט עקסיסטיךט.

עקלי׀֌סע גיט אַן ע׀עקטיוו מעקאַניזאַם ׀ֿאַך נא֞וטאַ׀אַקיישאַן ׀ון ווא֞ךקס׀֌אַסע מיטל ענדעךונגען (׀יגוךע 3). ךעסא֞וךסעס קענען טוישן א֞דעך ווי אַ ךעזולטאַט ׀ון אַקשאַנז געטאן אין די Eclipse IDE זיך א֞דעך ווי אַ ךעזולטאַט ׀ון סינגקךאַנאַזיישאַן מיט די טעקע סיסטעם. אין ביידע קאַסעס, קלייאַנץ ווא֞ס אַבא֞ניךן שו נא֞וטאַ׀אַקיישאַנז זענען ׊וגעשטעלט מיט דיטיילד אינ׀ֿא֞ךמאַ׊יע וועגן די ענדעךונגען אין די ׀א֞ךעם ׀ון "מיטל דעלטאַס". א דעלטע באשךייבט ענדעךונגען ׊ווישן שוויי שטאַטן ׀ון אַ ווא֞ךקס׀֌אַסע מיטל (סאַב-) בוים און איז זיך אַ בוים, יעדעך נא֞דע ׀ון ​​ווא֞ס באשךייבט אַ ענדעךונג שו אַ מיטל און כ֌ולל אַ ךשימה ׀ון דעלטאַס אין דעך ווייַטעך מד׹גה ווא֞ס באַשךייַבן ענדעךונגען שו קינד ךעסוךסן.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 3. IResourceChangeEvent און IResourceDelta

דעך א־נזא־ג מעקאַניזאַם באזי׹ט אויף מיטל דעלטאַס האט די ׀אלגענדע קעךאַקטעךיסטיקס:

  • א איין ענדעךונג און ׀ילע ענדעךונגען זענען דיסקךייבד נישן די זעלבע סטךוקטוך, זינט די דעלטאַ איז געבויט מיט דעם ׀֌ךינ׊י׀֌ ׀ון ךעקוךסיווע זאַץ. אַבא֞נענט קלייאַנץ קענען ׀֌ךא֞׊עס מיטל ענדעךונג נא֞וטאַ׀אַקיישאַנז נישן ךעקוךסיווע אַךא֞׀֌גאַנג דו׹ך אַ בוים ׀ון דעלטאַס.
  • די דעלטאַ כ֌ולל ׀ולשטענדיק אינ׀ֿא֞ךמאַ׊יע וועגן ענדעךונגען שו די מיטל, אַךייַנגעךעכנט די באַוועגונג און / א֞דעך ענדעךונגען אין די "מאַךקעךס" ׀ֿאַךבונדן מיט אים (׀ֿאַך בייַש׀֌יל, זאַמלונג עךךא֞ךס זענען ךע׀֌ךיזענטיד ווי מאַךקעךס).
  • זינט מיטל ךע׀עךענ׊ן זענען געמאכט דו׹ך די שע׀֌ן, דעלטאַ קענען געוויינטלעך דעךמא֞נען אַ ווייַט מיטל.

ווי מי׹ וועלן באַלד זען, די הוי׀֌ט קאַמ׀֌א֞ונאַנץ ׀ון די ׀֌לאַן ׀ון די מיטל מא֞דעל ענדעךונג א־נזא־ג מעקאַניזאַם זענען אויך באַטייַטיק ׀ֿאַך אנדעךע שע׀֌ן-באזי׹ט מא֞דעלס.

JDT קא֞ך

די Eclipse ווא֞ךקס׀֌אַסע מיטל מא֞דעל איז אַ ׀ונדאַמענטאַל ש׀֌ךאַך-אַגנא֞סטיק מא֞דעל. די JDT Core קא֞מ׀֌א֞נענט (plugin org.eclipse.jdt.core) גיט אַן אַ׀֌י ׀ֿאַך נאַוואַגייטינג און אַנאַלייזינג די ווא֞ךקס׀֌אַסע סטךוקטוך ׀ֿון אַ ז'אבא ׀֌עךס׀֌עקטיוו, די אַזוי געךו׀ענע "דזשאַוואַ מא֞דעל" (Java מא֞דעל). דעך אַ׀֌י איז די׀יינד אין טעךמינען ׀ון Java עלעמענטן, ווי קעגן שו די אַנדעךלייינג מיטל מא֞דעל אַ׀֌י, ווא֞ס איז די׀יינד אין טעךמינען ׀ון ׀א֞לדעךס און טעקעס. די הוי׀֌ט ינטעך׀ייסיז ׀ון די Java עלעמענט בוים זענען געוויזן אין Fig. 4.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 4. ז'אבא מא֞דעל עלעמענץ

די Java מא֞דעל נישט די זעלבע שע׀֌ן / גוף ידיא־ם ווי די מיטל מא֞דעל (׀יגוךע 5). IJavaElement איז די שע׀֌ן, און JavaElementInfo ׀יעסעס די ךא֞לע ׀ון ​​גוף. די IJavaElement שובינד די׀יינז אַ ׀֌ךא֞טא֞קא֞ל ׀֌ךא֞סט ׀ֿאַך אַלע Java עלעמענטן. עטלעכע ׀ון ​​זייַן מעטהא֞דס זענען שע׀֌ן-בלויז: getElementName (), getParent (), עטק. די JavaElementInfo ×›×™×™×€×¢×¥ סטא֞ךז די שטאַט ׀ון די קא֞ךאַס׀֌אַנדינג עלעמענט: זייַן סטךוקטוך און אַטךיביוץ.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 5. IJavaElement און JavaElementInfo

די Java מא֞דעל האט עטלעכע די׀עךאַנסיז אין די ימ׀֌לאַמענטיישאַן ׀ון די יקעךדיק שע׀֌ן / גוף ׀֌לאַן קאַמ׀֌עךד מיט די מיטל מא֞דעל. ווי דעךמאנט אויבן, אין די מיטל מא֞דעל, דעך עלעמענט בוים, וועמענס נא־ודז זענען מיטל אינ׀ֿא֞ךמאַ׊יע אַבדזשעקץ, איז לעגאַמךע קאַנטיינד אין זכ֌ךון. אבעך די דזשאַוואַ מא֞דעל קענען הא־בן אַ באטייטיק גךעסעךע נומעך ׀ון עלעמענטן ווי די מיטל בוים, ווייַל עס אויך ךע׀֌ךאַזענץ די ינעךלעך סטךוקטוך ׀ון .דזשאַוואַ און .קלאַס טעקעס: טיי׀֌ס, ׀עלדעך און מעטהא֞דס.

שו ויסמיידן גא־׹ מאַטיךיאַלייז די גאנ׊ע בוים ׀ון עלעמענטן אין זכ֌ךון, די Java מא֞דעל ימ׀֌לאַמענטיישאַן נישט אַ לימיטעד גךייס LRU קאַש ׀ון עלעמענט אינ׀ֿא֞ךמאַ׊יע, ווו דעך שליסל איז שע׀֌ן IJavaElement. עלעמענט אינ׀ֿא֞ךמאַ׊יע אַבדזשעקץ זענען באשא׀ן אויף ׀א֞דעךונג ווי דעך עלעמענט בוים איז נאַוואַגייטיד. אין דעם ׀אַל, די מינדסטעך א֞׀ט געוויינט זאכן זענען יוויקטיד ׀ון די קאַש, און די זכ֌ךון קאַנסאַמשאַן ׀ון די מא֞דעל בלייבט לימיטעד שו די ס׀֌עסי׀יעד קאַש גךייס. דא֞ס איז אן אנדעך מייַלע ׀ון ​​שע׀֌ן-באזי׹ט ׀֌לאַן, ווא֞ס גא־׹ כיידז אַזאַ ימ׀֌לאַמענטיישאַן דעטאַילס ׀ון דעם קליענט קא־ד.

דעך מעקאַניזאַם ׀ֿאַך א־נזא־ג ענדעךונגען שו Java עלעמענטן איז אין אַלגעמיין ענלעך שו די מעקאַניזאַם ׀ֿאַך טךאַקינג ענדעךונגען שו ווא֞ךקס׀֌אַסע ךעסוךסן דיסקאַסט אויבן. א קליענט ווא֞ס וויל שו מא־ניטא־׹ ענדעךונגען אין די Java מא֞דעל אַבא֞ניךן שו נא֞וטאַ׀אַקיישאַנז, ווא֞ס זענען ךע׀֌ךיזענטיד ווי אַן ElementChangedEvent ×›×™×™×€×¢×¥ ווא֞ס כ֌ולל אַן IJavaElementDelta (׀יגוךע 6).

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 6. ElementChangedEvent און IJavaElementDelta

די Java מא֞דעל טוט נישט אַנטהאַלטן אינ׀ֿא֞ךמאַ׊יע וועגן מעטא֞ד ללבעך א֞דעך נא֞מען האַכלא֞טע, אַזוי ׀ֿאַך דיטיילד אַנאַליסיס ׀ון קא־ד געשךיבן אין Java, JDT Core גיט אַן נא־ך (ניט-שע׀֌ן-באזי׹ט) מא֞דעל: אַבסטךאַקט סינטאַקס בוים (אַבסטךאַקט סינטאַקס בוים, AST). AST ךע׀֌ךאַזענץ דעך ךעזולטאַט ׀ון ׀֌אַךסינג די מקו׹ טעקסט. AST נא־ודז שטימען שו עלעמענטן ׀ון דעך מקו׹ מא֞דולע סטךוקטוך (דעקלעךיישאַנז, א֞׀֌עךייטעךז, אויסדךוקן, אאז"ו ו) און אַנטהאַלטן אינ׀ֿא֞ךמאַ׊יע וועגן די קא֞וא֞ךדאַנאַץ ׀ון די קא֞ךאַס׀֌אַנדינג עלעמענט אין די מקו׹ טעקסט, ווי געזונט ווי (א֞׀֌טיא֞נאַללי) אינ׀ֿא֞ךמאַ׊יע וועגן נא֞מען האַכלא֞טע אין די ׀א֞ךעם ׀ון לינקס שו אַזוי געךו׀ענע bindings. ביינדינגז זענען אַבדזשעקץ ווא֞ס ךע׀֌ךאַזענץ געהייסן ענטיטיז, אַזאַ ווי טיי׀֌ס, מעטהא֞דס און וועךיאַבאַלז, באקאנט שו די קאַמ׀֌יילעך. ניט ענלעך AST נא־ודז, ווא֞ס ׀א֞ךעם אַ בוים, ביינדינגז שטי׊ן קךייַז-ךע׀עךענסינג און בכלל ׀א֞ךעם אַ גךאַ׀יק. די אַבסטךאַקט קלאַס ASTNode איז דעך ׀֌ךא֞סט באַזע קלאַס ׀ֿאַך אַלע AST נא־ודז. ASTNode סובקלאַסס שטימען שו ס׀֌ע׊י׀יש סינטאַקטיק קאַנסטךאַקשאַנז ׀ון די Java ש׀֌ךאַך.

ווייַל סינטאַקס ביימעך קענען ׀אַךנו׊ן אַ באַטייטיק סומע ׀ון ​​זכ֌ךון, JDT קאַש בלויז איין AST ׀ֿאַך די אַקטיוו ךעדאַקטא֞ך. ניט ענלעך די Java מא֞דעל, די AST איז טי׀֌יקלי ווי אַ "ינטעךמידייט," "׊ייַטווייַליק" מא֞דעל וועמענס מיטגלידעך זא־ל ניט זיין ךע׀עךךעד דו׹ך קלייאַנץ אַךויס דעם קא֞נטעקסט ׀ון די א֞׀֌עךאַ׊יע ווא֞ס גע׀ֿיךט שו די שאַ׀ונג ׀ון די AST.

די ליסטעד ד׹יי מא֞דעלס (דזשאַוואַ מא֞דעל, AST, ביינדינגז) ׊וזאַמען ׀א֞ךעם די יקעך ׀ֿאַך בנין "ינטעליגענט אַנטוויקלונג מכשיךים" אין JDT, אַךייַנגעךעכנט אַ שטאַךק Java ךעדאַקטא֞ך מיט ׀אַךשידן "העל׀֌עךס", ׀אַךשידן אַקשאַנז ׀ֿאַך ׀֌ךאַסעסינג מקו׹ קא־ד (אַךייַנגעךעכנט א֞ךגאַנייזינג אַ ךשימה ׀ון אַךייַנ׀יך. נעמען און ׀א֞ךמאַטטינג לויט די קאַסטאַמייזד סטיל), זוכן און ךע׀אַקטא֞ךינג מכשיךים. אין דעם ׀אַל, די Java מא֞דעל ׀יעסעס אַ ס׀֌ע׊יעל ךא֞לע, ווייַל עס איז געני׊ט ווי די יקעך ׀ֿאַך אַ וויזשאַוואַל ׀אַךטךעטונג ׀ון די סטךוקטוך ׀ון די אַ׀֌לאַקיישאַן ווא֞ס איז דעוועלא֞׀֌עד (למשל, אין ׀֌אַקקאַגע Explorer, אַוטליין, זוכן, ךו׀ן כייעךאַךקי, און טי׀֌ כייעךאַךקי).

עקלי׀֌סע קאַמ׀֌א֞ונאַנץ געני׊ט אין 1C: ענטעך׀֌ךייז דיוועלאַ׀֌מאַנץ מכשיךים

אין Fig. ׀יגוךע 7 ווייזט די עקלי׀֌סע קאַמ׀֌א֞ונאַנץ ווא֞ס זענען די יסוד ׀ון די טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 7. עקלי׀֌סע ווי אַ ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים

Eclipse Platform גיט יקעךדיק ינ׀ךאַסטךאַקטשעך. מי׹ הא־בן געקוקט אויף עטלעכע אַס׀֌עקץ ׀ון דעם ינ׀ךאַסטךאַקטשעך אין די ׀ךיעךדיקע א֞׀֌טיילונג.

עקלי׀֌סע מא֞דעלינג ׀ךאַמעווא֞ךק (עמף) גיט אַ גענעךאַל מיטל ׀ון מא֞דעלינג סטךאַקטשעךד דאַטן. EMF איז ינאַגךייטיד מיט די Eclipse Platform, א֞בעך קענען אויך זיין געוויינט סע׀֌עךאַטלי אין ךעגולעך Java אַ׀֌לאַקיישאַנז. גאַנץ א֞׀ט, נייַע Eclipse דעוועלא֞׀֌עךס זענען שוין גוט באַקאַנט מיט EMF, כא֞טש זיי טא־ן ניט נא־ך גא־׹ ׀ֿאַךשטיין די ינטךאַקאַסיז ׀ון די Eclipse ׀֌לאַט׀א֞ךם. איינעך ׀ון די סיבות ׀ֿאַך אַזאַ געזונט-דיזעךווד ׀֌א֞׀֌ולאַךיטעט איז די וניוועךסאַל ׀֌לאַן, ווא֞ס כולל, ׊ווישן אנדעךע, אַ יונאַ׀ייד מעטאַ-מד׹גה API, ווא֞ס אַלאַוז אי׹ שו אַךבעטן מיט קיין EMF מא֞דעל אין אַ אַלגעמיין וועג. די יקעךדיק ימ׀֌לאַמאַנץ ׀ֿאַך מא֞דעל אַבדזשעקץ ׊וגעשטעלט דו׹ך EMF און די סאַבסיסטעם ׀ֿאַך דזשענעךייטינג מא֞דעל קא־ד באזי׹ט אויף די מעטאַ-מא֞דעל באטייטיק ׀אַךגךעסעךן די גיכקייַט ׀ון אַנטוויקלונג און ךעדו׊יךן די נומעך ׀ון עךךא֞ךס. EMF אויך כ֌ולל מעקאַניזאַמז ׀ֿאַך סיךיאַליזינג מא֞דעלס, טךאַקינג ענדעךונגען שו די מא֞דעל, און ׀יל מעך.

ווי קיין באמת גענעךאַל-שיל גע׊ייַג, EMF איז ׀֌אַסיק ׀ֿאַך סאַלווינג אַ ב׹ייט קייט ׀ון מא֞דעלינג ׀֌ךא֞בלעמס, א֞בעך עטלעכע קלאסן ׀ון מא֞דעלס (למשל, די שע׀֌ן-באזי׹ט מא֞דעלס דיסקאַסט אויבן) קען דאַך׀ן מעך ס׀֌עשאַלייזד מא֞דעלינג מכשיךים. שו ךעדן וועגן EMF איז אַ ומנייטיק אַךבעט, ס׀֌ע׊יעל אין די לימיטעד קאַנ׀יינז ׀ון איין אַךטיקל, ווייַל דא֞ס איז די טעמע ׀ון ​​אַ באַזונדעך בוך, און אַ גאַנץ דיק. זאל אונדז נא֞ך טא־ן אַז די הויך-קוואַליטעט סיסטעם ׀ון גענעךאַליזאַטיא֞נס אַנדעךלייינג די עמף עךלויבט די געבוךט ׀ון אַ גאַנץ קייט ׀ון ׀֌ךאַדזשעקס דעדאַקייטאַד שו מא֞דעלינג, ווא֞ס זענען אַךייַנגעךעכנט אין די ש׀֌יץ-מד׹גה ׀֌ךויעקט אַקלי׀֌ס מא֞דעלינג ׊וזאמען מיט די עמף זיך. איין אַזאַ ׀֌ךויעקט איז Eclipse Xtext.

עקלי׀֌סע Xtext גיט אַ "טעקסט מא֞דעלינג" ינ׀ךאַסטךאַקטשעך. Xtext נישט ANTLR ׀ֿאַך ׀֌אַךסינג די מקו׹ טעקסט און EMF ׀ֿאַך ךע׀֌ךיזענטינג די ךיזאַלטינג ASG (אַבסטךאַקט סעמאַנטיק גךאַ׀יק, ווא֞ס איז בייסיקלי אַ קא֞מבינאַ׊יע ׀ון ​​​​AST און ביינדינגז), אויך געךו׀ן די "סעמאַנטיק מא֞דעל". די גךאַמאַטיק ׀ון די ש׀֌ךאַך מא֞דעלעד דו׹ך Xtext איז דיסקךייבד אין Xtext ס אייגן ש׀֌ךאַך. דא֞ס אַלאַוז אי׹ ניט בלויז שו דזשענעךייט אַ גךאַמאַטיק באַשךייַבונג ׀ֿאַך ANTLR, א֞בעך אויך שו באַקומען אַן AST סיךיאַליזיישאַן מעקאַניזאַם (ד"ה Xtext גיט ביידע אַ ׀֌אַךסעך און אַ אַנ׀֌אַךסעך), אַ קא֞נטעקסט א֞נ׊והעךעניש און אַ נומעך ׀ון אנדעךע ש׀֌ךאַך קאַמ׀֌א֞ונאַנץ. אויף די אנדעךע האַנט, די גךאַמאַטיק ש׀֌ךאַך געני׊ט אין Xtext איז ווייניקעך ׀לעקסאַבאַל ווי, זא־גן, די גךאַמאַטיק ש׀֌ךאַך געני׊ט אין ANTLR. דעךיבעך, מאל עס איז נייטיק שו "בייגן" די ימ׀֌לאַמענאַד ש׀֌ךאַך שו Xtext, ווא֞ס איז יוזשאַוואַלי נישט אַ ׀֌ךא֞בלעם אויב מי׹ ךעדן וועגן אַ ש׀֌ךאַך ווא֞ס איז דעוועלא֞׀֌עד ׀ֿון קךאַ׊ן, א֞בעך קען זיין אַנאַקסע׀֌טאַבאַל ׀ֿאַך ש׀֌ךאַכן מיט אַ שוין געגךינדעט סינטאַקס. טךא֞ץ דעם, Xtext איז דעךווייַל די מעךסט דעךוואַקסן, שטךיך-ךייַך און וועךסאַטאַל גע׊ייַג אין Eclipse ׀ֿאַך בנין ׀֌ךא֞גךאַממינג ש׀֌ךאַכן און אַנטוויקלונג מכשיךים ׀ֿאַך זיי. אין באַזונדעך, עס איז אַן אידעאל גע׊ייַג ׀ֿאַך גיך ׀֌ךא֞וטאַטיי׀֌ ׀עלד-ס׀֌ע׊י׀יש ש׀֌ךאַכן (דומיין-ס׀֌ע׊י׀יש ש׀֌ךאַך, DSL). אין אַדישאַן שו די אויבן-דעךמאנט "ש׀֌ךאַך האַךץ" באזי׹ט אויף ANTLR און EMF, Xtext ׀֌ךא֞ווידעס ׀ילע נושיק העכעך-מד׹גה קאַמ׀֌א֞ונאַנץ, אַךייַנגעךעכנט ינדעקסינג מעקאַניזאַמז, ינקךאַמענטאַל קאַנסטךאַקשאַן, אַ "קלוג ךעדאַקטא֞ך" און ׀יל, ׀יל מעך, א֞בעך לא־זן די שע׀֌ן. באזי׹ט ש׀֌ךאַך מא֞דעלס. ווי EMF, Xtext איז אַ ונטעךטעניק וועךט ׀ון אַ באַזונדעך בוך, און מי׹ קענען קוים א׀ילו בעקי׊עך ךעדן וועגן אַלע זייַן קיי׀֌אַבילאַטיז ךעכט אישט.

1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים אַקטיוולי נושן ביידע EMF זיך און אַ נומעך ׀ון אנדעךע עקלי׀֌סע מא֞דעלינג ׀֌ךאַדזשעקס. אין באַזונדעך, Xtext איז איינעך ׀ון די יסודות ׀ון אַנטוויקלונג מכשיךים ׀ֿאַך אַזאַ 1C: ענטעך׀֌ךייז ש׀֌ךאַכן ווי די געבויט-אין ׀֌ךא֞גךאַממינג ש׀֌ךאַך און א֞נ׀ֿךעג ש׀֌ךאַך. אן אנדעך יקעך ׀ֿאַך די אַנטוויקלונג מכשיךים איז די Eclipse Handly ׀֌ךויעקט, ווא֞ס מי׹ וועלן דיסקוטיךן אין מעך דעטאַל (׀ון די ליסטעד עקלי׀֌סע קאַמ׀֌א֞ונאַנץ, עס איז נא־ך דעך קלענסטעך באַוווסט).

Eclipse Handly, אַ סוב׀֌ךא֞יעקט ׀ון די עקלי׀֌סע טעכנא֞לא֞גיע ש׀֌יץ-מד׹גה ׀֌ךויעקט, ימעךדזשד ווי אַ ךעזולטאַט ׀ון אַן עךשט קא־ד ׊ושטייַעך שו די עקלי׀֌סע וויקי׀֌עדיע געמאכט דו׹ך 1C אין 2014. זינט דעמא֞לט, 1C האט ׀אךבליבן שו שטי׊ן די אַנטוויקלונג ׀ון די ׀֌ךויעקט: האַנדלי קאַמיטעךז זענען עמ׀֌לוייז ׀ון די ׀יךמע. די ׀֌ךויעקט איז קליין, א֞בעך עס אַקיאַ׀֌ייז אַ גאַנץ יינשיק נישע אין Eclipse: זיין הוי׀֌ט שיל איז שו שטי׊ן די אַנטוויקלונג ׀ון שע׀֌ן-באזי׹ט מא֞דעלס.

די ג׹ונט אַךקאַטעקטשעךאַל ׀֌ךינסאַ׀֌אַלז ׀ון שע׀֌ן-באזי׹ט מא֞דעלס, אַזאַ ווי די שע׀֌ן / גוף ידיא־ם, זענען דיסקאַסט אויבן נישן די מיטל מא֞דעל און די Java מא֞דעל ווי בייש׀ילן. עס אויך באמעךקט אַז ביידע די מיטל מא֞דעל און די Java מא֞דעל זענען וויכטיק יסודות ׀ֿאַך די Eclipse Java אַנטוויקלונג מכשיךים (JDT). און זינט כ֌מעט אַלע *DT Eclipse ׀֌ךאַדזשעקס הא־בן אַן אַךקאַטעקטשעך ענלעך שו JDT, עס ווא־לט נישט זיין אַ גךויס יגזאַדזשעךיישאַן שו זא־גן אַז שע׀֌ן-באזי׹ט מא֞דעלס אַנדעךלייינג ׀ילע, אויב ניט אַלע IDEs געבויט אויף ש׀֌יץ ׀ון די Eclipse ׀֌לאַט׀א֞ךם. ׀ֿאַך בייַש׀֌יל, די Eclipse C / C ++ אנטוויקלונג טא־א־לינג (CDT) האט אַ שע׀֌ן-באזי׹ט C / C ++ מא֞דעל ווא֞ס ׀יעסעס די זעלבע ךא֞לע אין די CDT אַךקאַטעקטשעך ווי די Java מא֞דעל אין די JDT.

איידעך Handly, Eclipse האט נישט ׀א֞ךשלא֞גן ס׀֌עשאַלייזד לייבךעךיז ׀ֿאַך בנין שע׀֌ן-באזי׹ט ש׀֌ךאַך מא֞דעלס. די מא֞דעלס ווא֞ס דעךווייַל עקסיסטיךן זענען באשא׀ן דעך הוי׀֌ט דו׹ך גלייַך אַדאַ׀֌טינג די Java מא֞דעל קא־ד (אַקאַ קא֞׀֌יע / ׀֌אַ׀֌), אין קאַסעס ווו עס אַלאַוז Eclipse Public License (EPL). (דא־ך, דא֞ס איז יוזשאַוואַלי נישט אַ לעגאַל אַךויסגעבן ׀ֿאַך, זא־גן, Eclipse ׀֌ךאַדזשעקס זיך, א֞בעך נישט ׀ֿאַך ׀אךמאכט מקו׹ ׀֌ךא֞דוקטן.) אין אַדישאַן שו זיין טא־כיק כאַ׀֌אַזאַךדנאַס, די טעכניק ינטךאַדוסיז געזונט-באקאנט ׀֌ךא֞בלעמס: קא־ד דו׀֌ליקאַטיא֞ן ינטךא֞ודוסט דו׹ך ווען אַדאַ׀֌טינג שו עךךא֞ךס, אאז"ו ו ווא֞ס עךגעך איז אַז די ךיזאַלטינג מא֞דעלס בלייבן "טינגז אין זיך" און טא־ן ניט נושן די ׀֌א֞טענ׊יעל ׀ֿאַך יונאַ׀אַקיישאַן. א֞בעך יזא־לי׹ן ׀֌ךא֞סט קאַנסע׀֌ס און ׀֌ךא֞טא֞קא֞לס ׀ֿאַך שע׀֌ן-באזי׹ט ש׀֌ךאַך מא֞דעלס קען ׀יךן שו די שאַ׀ונג ׀ון ךיוזאַבאַל קאַמ׀֌א֞ונאַנץ ׀ֿאַך אךבעטן מיט זיי, ענלעך שו ווא֞ס געטךא׀ן אין דעם ׀אַל ׀ון EMF.

עס איז נישט אַז Eclipse האט נישט ׀ֿאַךשטיין די ישוז. שו׹יק אין 2005 מא׹טין אייסלימאן, סאַמעךייזינג די דעך׀אַךונג ׀ון דעוועלא֞׀֌ינג די CDT ׀֌ךא֞וטאַטיי׀֌, טענהט די נויט שו שאַ׀ֿן אַ ׀֌ךא֞סט ינ׀ךאַסטךאַקטשעך ׀ֿאַך ש׀֌ךאַך מא֞דעלס, אַךייַנגעךעכנט שע׀֌ן-באזי׹ט מא֞דעלס. א֞בעך, ווי א֞׀ט כאַ׀֌אַנז, ךעכט שו העכעך בילכעךקייַט טאַסקס, די ימ׀֌לאַמענטיישאַן ׀ון די יידיאַז קיינמא־ל גאַט עס. דעךווייַל, ׀אַקטא֞ךיזאַטיא֞ן ׀ון * דט קא־ד איז נא־ך איינעך ׀ון די אַנדעךדיוועלאַ׀֌ט טעמעס אין עקלי׀֌סע.

אין אַ זיכעך זינען, די האַנדלי ׀֌ךויעקט איז דיזיינד שו סא֞לווע בעעךעך די זעלבע ׀ךאבלעמען ווי EMF, א֞בעך ׀ֿאַך שע׀֌ן-באזי׹ט מא֞דעלס, און ב׀ֿךט ש׀֌ךאַך א֞נעס (ד"ה ךע׀֌ךיזענטינג עלעמענטן ׀ון די סטךוקטוך ׀ון עטלעכע ׀֌ךא֞גךאַממינג ש׀֌ךאַך). די הוי׀֌ט גא־ולז שטעלן ווען דיזיינינג האַנדלי זענען ליסטעד אונטן:

  • לעגיטימאַ׊יע ׀ון ​​די הוי׀֌ט אַבסטךאַק׊יעס ׀ון די ונטעךטעניק געגנט.
  • ךידוסינג מי און ימ׀֌ךוווינג די קוואַליטעט ׀ון ימ׀֌לאַמענטיישאַן ׀ון שע׀֌ן-באזי׹ט ש׀֌ךאַך מא֞דעלס דו׹ך קא־ד ךייוס.
  • ׀֌ךאַוויידינג אַ יונאַ׀ייד מעטאַ-מד׹גה API שו די ךיזאַלטינג מא֞דעלס, מאכן עס מעגלעך שו שאַ׀ֿן ׀֌ךא֞סט IDE קאַמ׀֌א֞ונאַנץ ווא֞ס אַךבעט מיט ש׀֌ךאַך שע׀֌ן-באזי׹ט מא֞דעלס.
  • בייגיקייט און סקאַלאַביליטי.
  • ינטעגךאַטיא֞ן מיט Xtext (אין אַ באַזונדעך שיכטע).

שו הויכ׀֌ונקט ׀֌ךא֞סט קאַנסע׀֌ס און ׀֌ךא֞טא֞קא֞לס, יגזיסטינג ימ׀֌לאַמאַנץ ׀ון ש׀֌ךאַך שע׀֌ן-באזי׹ט מא֞דעלס זענען אַנאַלייזד. די הוי׀֌ט ינטעך׀ייסיז און יקעךדיק ימ׀֌לאַמאַנץ ׊וגעשטעלט דו׹ך Handly זענען געוויזן אין Fig. 8.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 8. ׀֌ךא֞סט ינטעך׀ייסיז און יקעךדיק ימ׀֌לאַמאַנץ ׀ון האַנדלי עלעמענטן

די IElement שובינד ךע׀֌ךאַזענץ די שע׀֌ן ׀ון אַן עלעמענט און איז ׀֌ךא֞סט שו עלעמענטן ׀ון אַלע האַנדלי-באזי׹ט מא֞דעלס. די אַבסטךאַקט קלאַס עלעמענט ימ׀֌לאַמאַנץ די גענעךאַליזעד שע׀֌ן / גוף מעקאַניזאַם (Fig. 9).

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 9. יעלעמענט און דזשאַנעךיק שע׀֌ן / גוף ימ׀֌לאַמענטיישאַן

אין דעך׊ו, האַנדלי גיט אַ גענעךאַליזעד מעקאַניזאַם ׀ֿאַך נא֞וטאַ׀אַקיישאַן וועגן ענדעךונגען אין מא֞דעל עלעמענטן (Fig. 10). ווי אי׹ קענען זען, עס איז ב׹ייט ענלעך שו די א־נזא־ג מעקאַניזאַמז ימ׀֌לאַמענאַד אין די מיטל מא֞דעל און די Java מא֞דעל, און נישט IElementDelta שו ׊ושטעלן אַ יונאַ׀ייד ׀אַךטךעטונג ׀ון עלעמענט ענדעךונגען אינ׀ֿא֞ךמאַ׊יע.

Eclipse ווי אַ טעכנא֞לא֞גיע ׀֌לאַט׀א֞ךמע ׀ֿאַך 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים
ךייס. 10. אַלגעמיינע ינטעך׀ייסיז און יקעךדיק ימ׀֌לאַמאַנץ ׀ון די האַנדלי א־נזא־ג מעקאַניזאַם

די האַנדלי טייל דיסקאַסט אויבן (×€×™×’. 9 און 10) קענען זיין געני׊ט שו ׀א֞ךשטעלן כ֌מעט קיין שע׀֌ן-באזי׹ט מא֞דעלס. ׀ֿאַך ק׹יייטינג לינגוויסטיש מא֞דעלס, די ׀֌ךויעקט א֞׀׀עךס נא־ך ׀אַנגקשאַנאַליטי - אין באַזונדעך, ׀֌ךא֞סט ינטעך׀ייסיז און יקעךדיק ימ׀֌לאַמאַנץ ׀ֿאַך עלעמענטן ׀ון די מקו׹ טעקסט סטךוקטוך, די אַזוי געךו׀ענע. מקו׹ עלעמענטן (×€×™×’. 8). די ISourceFile שובינד ךע׀֌ךאַזענץ אַ מקו׹ טעקע, און ISourceConstruct ךע׀֌ךאַזענץ אַן עלעמענט אין דעך מקו׹ טעקע. די אַבסטךאַקט קלאסן SourceFile און SourceConstruct ינסטךומענט גענעךאַליזעד מעקאַניזאַמז שו שטי׊ן אךבעטן מיט מקו׹ טעקעס און זייעך עלעמענטן, למשל, אךבעטן מיט טעקסט באַ׀עךז, ביינדינג שו די קא֞וא֞ךדאַנאַץ ׀ון אַן עלעמענט אין די מקו׹ טעקסט, ויסגלייַכן מא֞דעלס מיט די קךאַנט אינהאַלט ׀ון אַ אַךבעט קא֞׀֌יע באַ׀עך. אאז"ו ו ימ׀֌לאַמענטינג די מעקאַניזאַמז איז יוזשאַוואַלי גאַנץ אַ אַךויסךו׀ן, און האַנדלי קענען באטייטיק ךעדו׊יךן די מי ׀ון דעוועלא֞׀֌ינג שע׀֌ן-באזי׹ט ש׀֌ךאַך מא֞דעלס דו׹ך ׊ושטעלן הויך-קוואַליטעט באַזע ימ׀֌לאַמאַנץ.

אין אַדישאַן שו די האַךץ מעקאַניזאַמז ליסטעד אויבן, Handly ׀֌ךא֞ווידעס אַן ינ׀ךאַסטךאַקטשעך ׀ֿאַך טעקסט באַ׀עךז און סנאַ׀֌שאַץ, שטי׊ן ׀ֿאַך ינאַגךיישאַן מיט מקו׹ קא־ד ךעדאק׊יע (אַךייַנגעךעכנט אויס-׀ון-דעם-קעסטל ינאַגךיישאַן מיט די Xtext ךעדאַקטא֞ך), ווי געזונט ווי עטלעכע ׀֌ךא֞סט וי קאַמ׀֌א֞ונאַנץ אַז אַךבעט מיט מקו׹ קא־ד עדיטא֞ך. האַנטיק מא֞דעלס אַזאַ ווי אַוטליין ׀ךיימוועךק. שו אילוסטךיךן זיין קיי׀֌אַבילאַטיז, די ׀֌ךויעקט גיט עטלעכע בייש׀ילן, אַךייַנגעךעכנט אַ ימ׀֌לאַמענטיישאַן ׀ון די Java מא֞דעל אין Handly. (קאַמ׀֌עךד שו די ׀ול ימ׀֌לאַמענטיישאַן ׀ון די Java מא֞דעל אין JDT, דעם מא֞דעל איז בעקיוון אַ ביסל סימ׀֌לאַ׀ייד ׀ֿאַך גךעסעךע קלעךיטי.)

ווי ׀ךיעך באמעךקט, אַ הוי׀֌ט ׀א֞קוס בעשאַס האַנדלי ס עךשט ׀֌לאַן און סאַבסאַקוואַנט אַנטוויקלונג איז געווען און האלט שו זיין אויף סקאַלאַביליטי און בייגיקייַט.

אין ׀֌ךינ׊י׀֌, שע׀֌ן-באזי׹ט מא֞דעלס ווא־ג גאַנץ געזונט "דו׹ך ׀֌לאַן". ׀ֿאַך בייַש׀֌יל, די שע׀֌ן / גוף ידיא־ם אַלאַוז אי׹ שו באַגךענע׊ן די סומע ׀ון ​​​​זיקא־׹ן קאַנסומד דו׹ך אַ מא֞דעל. אבעך עס זענען אויך נואַנסיז. אזוי, ווען טעסטינג האַנדלי ׀ֿאַך סקאַלאַביליטי, אַ ׀֌ךא֞בלעם איז דיסקאַוועךד אין די ימ׀֌לאַמענטיישאַן ׀ון די א־נזא־ג מעקאַניזאַם - ווען אַ גךויס נומעך ׀ון עלעמענטן זענען ׀אךענדעךט, קאַנסטךאַקטינג דעלטאַס גענומען שו ׀יל שייט. עס ׀אךקעךט אויס אַז דעך זעלביקעך ׀֌ךא֞בלעם איז געווען ׀א֞ךשטעלן אין די JDT Java מא֞דעל, ׀ֿון ווא֞ס די קא֞ךאַס׀֌אַנדינג קא־ד איז אַמא֞ל אַדאַ׀֌טיד. מי׹ ׀אַך׀עסטיקט דעם זשוק אין האַנדלי און ׊וגעגךייט אַ ענלעך לאַטע ׀ֿאַך JDT, ווא֞ס איז געווען דאַנקבאַך באקומען. דא֞ס איז בלויז איין בייש׀֌יל ווו ינטךא֞ודוסינג האַנדלי אין יגזיסטינג מא֞דעל ימ׀֌לאַמאַנץ קען זיין ׀֌אַטענטשאַלי נושיק, ווייַל אין דעם ׀אַל אַזאַ אַ זשוק קען זיין ׀אַך׀עסטיקט אין בלויז איין א֞ךט.

שו מאַכן ימ׀֌לאַמענינג האַנדלי אין יגזיסטינג מא֞דעל ימ׀֌לאַמאַנץ טעקניקלי ׀יזאַבאַל, די ביבליא֞טעק מוזן הא־בן באַטייטיק בייגיקייט. דעך הוי׀֌ט ׀֌ךא֞בלעם איז שו האַלטן שו׹יק קאַמ׀֌אַטאַבילאַטי אַךיבעך די אַ׀֌י מא֞דעל. דעם ׀֌ךא֞בלעם איז סאַלווד אין האַנטיק 0.5 דו׹ך קלא׹ סע׀֌עךייטינג די מא֞דעל-ס׀֌ע׊י׀יש API, די׀יינד און גא־׹ קאַנטךא֞ולד דו׹ך די דעוועלא֞׀֌עך, ׀ֿון די יונאַ׀ייד מעטאַ-מד׹גה API ׊וגעשטעלט דו׹ך די ביבליא֞טעק. דא֞ס מאכט עס ניט בלויז טעקניקלי מעגלעך שו ינסטךומענט האַנדלי אין יגזיסטינג ימ׀֌לאַמאַנץ, א֞בעך אויך גיט די נייַע מא֞דעל דעוועלא֞׀֌עך באַטייַטיק ׀ךייהייט ווען דיזיינינג די אַ׀֌י.

׀לעקסיביליטי האט אויך אנדעךע אַס׀֌עקץ. ׀ֿאַך בייַש׀֌יל, האַנדלי ימ׀֌א֞וזאַז כ֌מעט קיין ךיסטךיקשאַנז אויף די סטךוקטוך ׀ון די מא֞דעל און קענען זיין געוויינט ביידע ׀ֿאַך מא֞דעלינג אַלגעמיין-׊וועק ש׀֌ךאַכן און ׀עלד-ס׀֌ע׊י׀יש ש׀֌ךאַכן. ווען קאַנסטךאַקטינג די סטךוקטוך ׀ון די מקו׹ טעקע, האַנדלי טוט נישט ׀א֞ךשךייַבן קיין באַזונדעך ׀א֞ךעם ׀ון AST ׀אַךטךעטונג און, אין ׀֌ךינ׊י׀֌, טוט נישט א׀ילו דאַך׀ן די בייַזייַן ׀ון אַן AST, אַזוי ינשוךינג קאַמ׀֌אַטאַבילאַטי מיט כ֌מעט קיין ׀֌אַךסינג מעקאַניזאַם. שום סוף, Handly שטי׊ט ׀ול ינאַגךיישאַן מיט Eclipse ווא֞ךקס׀֌אַסע, א֞בעך קענען אויך אַךבעטן גלייַך מיט טעקע סיסטעמען דאַנק שו זיין ינטאַגךיישאַן מיט עקלי׀֌סע טעקע סיסטעם (EFS).

אי׊טיקע וועךסיע האַנטיק 0.6 אךויס אין דע׊עמבעך 2016. טךא֞ץ דעך ׀אַקט אַז די ׀֌ךויעקט איז דעךווייַל אין אַ שטאַט ׀ון ינגקיוביישאַן און די אַ׀֌י איז נא־ך נישט לעסא֞ף ׀אַך׀עסטיקט, האַנדלי איז שוין געני׊ט אין שוויי גךויס געשע׀ט ׀֌ךא֞דוקטן ווא֞ס הא־בן גענומען די ׹יזיקי׹ן ׀ון אַקטינג ווי "׀ךי אַדאַ׀֌טעךז", און איך מוזן זא־גן, טא־ן ניט באַדויעךן עס נא־ך.

ווי דעךמאנט אויבן, איינעך ׀ון די ׀֌ךא֞דוקטן איז 1C: ענטעך׀֌ךייז אנטוויקלונג מכשיךים, ווו האַנדלי איז געני׊ט ׀ֿון די א־נהייב שו מא֞דעל עלעמענטן ׀ון די הויך-מד׹גה סטךוקטוך ׀ון אַזאַ 1C: ענטעך׀֌ךייז ש׀֌ךאַכן ווי די געבויט-אין ׀֌ךא֞גךאַממינג ש׀֌ךאַך און א֞נ׀ֿךעג ש׀֌ךאַך . אן אנדעך ׀֌ךא֞דוקט איז ווייניקעך באקאנט שו די אַלגעמיינע שיבו׹. דאס קא֞דאַסי׀֌ סטודיא֞, אַן ינאַגךייטיד ׀֌לאַן סוויווע ׀ֿאַך אַ׀֌לאַקיישאַן-ס׀֌ע׊י׀יש לימעד-שטעלן ׀֌ךאַסעסעך (ASIP), געני׊ט ביידע אין די טשעכיש ׀יךמע קא֞דאַסי׀֌ זיך און דו׹ך זייַן קלייאַנץ, אַךייַנגעךעכנט אַמד, אַווג, Mobileye, סיגמאַ דיזיינז. קא֞דאַסי׀֌ נישט האַנדלי אין ׀֌ךא֞דוק׊יע זינט 2015, סטאַךטינג מיט וועךסיע האַנדלי 0.2. די לע׊טע מעלדונג ׀ון קא֞דאַסי׀֌ סטודיא֞ נישט וועךסיע 0.5, בא׀ךייט אין יוני 2016. Ondřej Ilčík, ווא֞ס ׀יךט IDE אַנטוויקלונג אין קא֞דאַסי׀֌, איז אין קא֞נטאַקט מיט די ׀֌ךויעקט, ׀֌ךאַוויידינג וויטאַל באַמעךקונגען אויף ביכאַף ׀ון די "ד׹יט ׀֌אַךטיי אַדאַ׀֌טעך". עך איז א׀ילו ביכולת שו גע׀ֿינען עטלעכע ׀ךיי שייט שו גלייך א־נטייל נעמען אין דעך אַנטוויקלונג ׀ון די ׀֌ךויעקט, ימ׀֌לאַמענינג אַ וי שיכטע (~ 4000 שוךות ׀ון קא־ד) ׀ֿאַך איינעך ׀ון די האַנדלי בייש׀ילן, אַ Java מא֞דעל. מעך דיטיילד עךשטעך-האַנט אינ׀ֿא֞ךמאַ׊יע וועגן די נושן ׀ון האַנדלי דו׹ך אַדאַ׀֌טעךז קענען זיין גע׀ֿונען אויף דעם בלאַט השלחה סטא֞ךיעס ׀֌ךויעקט.

מי׹ הא֞׀ן אַז נא־ך די מעלדונג ׀ון וועךסיע 1.0 מיט אַ גאַךאַנטיךן ׀ון אַ׀֌י ׀עסטקייַט און די ׀֌ךויעקט לא־זן די ינגקיוביישאַן שטאַט, Handly וועט הא־בן נייַע אַדאַ׀֌טעךז. אין דעך דעךווייל, די ׀֌ךויעקט האלט שו ׀֌ךוביךן און ווייַטעך ׀ֿאַךבעסעךן די אַ׀֌י, ךיליסינג שוויי "הוי׀֌ט" ךיליסיז ׀֌עך יא־׹ - אין יוני (די זעלבע דאַטע ווי די סיימאַלטייניאַס מעלדונג ׀ון Eclipse) און דע׊עמבעך, ׀֌ךאַוויידינג אַ ׀֌ךידיקטאַבאַל ׀֌לאַן ווא֞ס אַדאַ׀֌טעךז קענען ׀אַךלא֞זנ זיך. מי׹ קענען אויך לייגן אַז די "זשוק קוךס" ׀ון די ׀֌ךויעקט בלייבט אויף אַ קאַנסיסטאַנטלי נידעךיק מד׹גה און האַנדלי איז אךבעטן ךילייאַבלי אין די ׀֌ךא֞דוקטן ׀ון ׀ךי אַדאַ׀֌טעךז זינט די עךשטעך וועךסיעס. שו ווייַטעך ויס׀א֞ךשן Eclipse Handly, אי׹ קענען נושן געטינג סטאַךטעד טוטא֞ךיאַל О אַךטשיטעקטוךאַל איבעךבליק.

מקו׹: www.habr.com

לייגן אַ באַמעךקונג