1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse

์•„๋งˆ ์‹ ์˜ค๋žซ๋™์•ˆ ํŠน๋ณ„ํ•œ ์†Œ๊ฐœ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Eclipse Java ๊ฐœ๋ฐœ ๋„๊ตฌ(JDT). ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ "Eclipse"๋ผ๋Š” ๋‹จ์–ด์™€ ์—ฐ๊ด€์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ์ด ์ธ๊ธฐ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค Java IDE์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Eclipse๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ(Eclipse Platform)๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”Œ๋žซํผ์ด์ž JDT๋ฅผ ํฌํ•จํ•˜์—ฌ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์—ฌ๋Ÿฌ IDE์ž…๋‹ˆ๋‹ค. Eclipse๋Š” Eclipse ํ”Œ๋žซํผ๊ณผ JDT์˜ ๊ฐœ๋ฐœ์„ ์กฐ์ •ํ•˜๋Š” ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์ธ Eclipse ํ”„๋กœ์ ํŠธ์ด์ž, ํ•ด๋‹น ๊ฐœ๋ฐœ์˜ ๊ฒฐ๊ณผ๋ฌผ์ธ Eclipse SDK์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ Eclipse๋Š” ๊ฑฐ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ฐ–์ถ˜ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ Java๋กœ ์ž‘์„ฑ๋˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ๋„๊ตฌ(์˜ˆ: ํ”„๋กœ์ ํŠธ)์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ดํด๋ฆฝ์Šค IoT ะธ ์ดํด๋ฆฝ์Šค ์‚ฌ์ด์–ธ์Šค). Eclipse์˜ ์„ธ๊ณ„๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

๋ณธ์งˆ์ ์œผ๋กœ ๊ฐœ์š”์ธ ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ํ†ตํ•ฉ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ธ Eclipse ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ธฐ์ˆ ์˜ ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•˜๋Š” Eclipse ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. "์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์ž" 1C: Enterprise๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. 1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ. ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ๊ฒ€ํ† ๋Š” ํ•„์—ฐ์ ์œผ๋กœ Eclipse ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋งŒ ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋Œ€์ƒ ๋…์ž๋กœ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ฒด๋กœ ํ”ผ์ƒ์ ์ด๊ณ  ๋‹ค์†Œ ์ œํ•œ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ™๋ จ๋œ Eclipse ๊ฐœ๋ฐœ์ž๋ผ๋„ ์ด ๊ธฐ์‚ฌ์—์„œ ํฅ๋ฏธ๋กœ์šด ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒ๋Œ€์ ์œผ๋กœ ์ƒˆ๋กญ๊ณ  ์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ์ธ "Eclipse์˜ ๋น„๋ฐ€" ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Eclipse Handly, 1C๊ฐ€ ์„ค๋ฆฝํ•˜๊ณ  ์ง€์›ํ–ˆ์Šต๋‹ˆ๋‹ค.
1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse

Eclipse ์•„ํ‚คํ…์ฒ˜ ์†Œ๊ฐœ

๋จผ์ € ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Eclipse ์•„ํ‚คํ…์ฒ˜์˜ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์ธก๋ฉด์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Eclipse Java ๊ฐœ๋ฐœ ๋„๊ตฌ (JDT). ์˜ˆ๋ฅผ ๋“ค์–ด JDT๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์€ ์šฐ์—ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” Eclipse์— ๋“ฑ์žฅํ•œ ์ตœ์ดˆ์˜ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. Eclipse CDT(C/C++ Development Tooling)์™€ ๊ฐ™์€ ๋‹ค๋ฅธ *DT Eclipse ํ”„๋กœ์ ํŠธ๋Š” ๋‚˜์ค‘์— ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ JDT์—์„œ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜ ์›์น™๊ณผ ๊ฐœ๋ณ„ ์†Œ์Šค ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋ชจ๋‘ ์ฐจ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. JDT์— ๊ตฌ์ถ•๋œ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ์€ ์˜ค๋Š˜๋‚  1C:Enterprise Development Tools๋ฅผ ํฌํ•จํ•˜์—ฌ Eclipse ํ”Œ๋žซํผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ๊ฑฐ์˜ ๋ชจ๋“  IDE์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„ , Eclipse๋Š” ํŠน์ • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ธฐ๋Šฅ๊ณผ ์–ธ์–ด ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ด€๋ จ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ UI ๋…๋ฆฝ์ ์ธ "ํ•ต์‹ฌ" ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ƒ๋‹นํžˆ ๋ช…ํ™•ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ณ„์ธต์ด ํŠน์ง•์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Eclipse ํ”Œ๋žซํผ์€ ์–ธ์–ด ๋…๋ฆฝ์ ์ธ ๊ณตํ†ต ์ธํ”„๋ผ๋ฅผ ์ •์˜ํ•˜๊ณ  Java ๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Java IDE๋ฅผ Eclipse์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Eclipse ํ”Œ๋žซํผ๊ณผ JDT๋Š” ๋ชจ๋‘ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” UI ๋…๋ฆฝ์ ์ธ "์ฝ”์–ด" ๋˜๋Š” UI ๊ณ„์ธต(๊ทธ๋ฆผ 1)์— ์†ํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 1. Eclipse ํ”Œ๋žซํผ๊ณผ JDT

Eclipse ํ”Œ๋žซํผ์˜ ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‚˜์—ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋Ÿฐํƒ€์ž„ โ€” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธํ”„๋ผ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Eclipse๋Š” ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Eclipse๋Š” "ํ™•์žฅ ์ง€์ "๊ณผ "ํ™•์žฅ"์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ๊ณต๊ฐ„ โ€” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ง์ ‘ ๋งคํ•‘๋˜๋Š” ํด๋”์™€ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • SWT(ํ‘œ์ค€ ์œ„์ ฏ ํˆดํ‚ท) - ์šด์˜ ์ฒด์ œ์™€ ํ†ตํ•ฉ๋œ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • JํŽ˜์ด์Šค โ€” SWT๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ๋‹ค์–‘ํ•œ UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์›Œํฌ ๋ฒค์น˜ โ€” ํŽธ์ง‘๊ธฐ, ๋ณด๊ธฐ, ๊ด€์  ๋“ฑ Eclipse UI ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

Eclipse ํ”Œ๋žซํผ์€ ๋””๋ฒ„๊ทธ, ๋น„๊ต, ๊ฒ€์ƒ‰ ๋ฐ ํŒ€์„ ํฌํ•จํ•˜์—ฌ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋‹ค๋ฅธ ๋งŽ์€ ๊ตฌ์„ฑ ์š”์†Œ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์˜ "์Šค๋งˆํŠธ ํŽธ์ง‘๊ธฐ"๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ธ JFace Text์— ๋Œ€ํ•ด ํŠน๋ณ„ํžˆ ์–ธ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์ด ๋ฌธ์„œ์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ์™€ UI ๋ ˆ์ด์–ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์กฐ์ฐจ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ด ์„น์…˜์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์—์„œ๋Š” UI ๋ ˆ์ด์–ด ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ฃผ์š” "ํ•ต์‹ฌ" ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๊ฐœ์š”๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Eclipse ํ”Œ๋žซํผ๊ณผ JDT.

ํ•ต์‹ฌ ๋Ÿฐํƒ€์ž„

Eclipse ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธํ”„๋ผ๋Š” ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. OSGi ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ดํด๋ฆฝ์Šค ์ถ˜๋ถ„. ๊ฐ Eclipse ํ”Œ๋Ÿฌ๊ทธ์ธ์€ OSGi ๋ฒˆ๋“ค์ž…๋‹ˆ๋‹ค. OSGi ์‚ฌ์–‘์€ ํŠนํžˆ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์ข…์†์„ฑ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์™ธ์—๋„ Equinox๋Š” ๋‹ค์Œ ๊ฐœ๋…์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ ํฌ์ธํŠธ. ๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž์ฒด ํ™•์žฅ ์ง€์ ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ •์˜ํ•œ ํ™•์žฅ ์ง€์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ("ํ™•์žฅ")์„ ๋„์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. OSGi ๋ฐ Equinox ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ด ๊ธฐ์‚ฌ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. Eclipse์˜ ๋ชจ๋“ˆํ™”๋Š” ์ „์ฒด์ ์ด๋ฉฐ(๋Ÿฐํƒ€์ž„์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๊ตฌ์„ฑ๋จ) Eclipse์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด ํ™•์žฅ์ด๋ผ๋Š” ์ ๋งŒ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๋”์šฑ์ด ์ด๋Ÿฌํ•œ ์›์น™์€ OSGi๊ฐ€ ๋„์ž…๋˜๊ธฐ ์˜ค๋ž˜ ์ „์— Eclipse ์•„ํ‚คํ…์ฒ˜์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‹น์‹œ์—๋Š” OSGi์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž์ฒด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค).

ํ•ต์‹ฌ ์ž‘์—…๊ณต๊ฐ„

Eclipse ํ”Œ๋žซํผ ์œ„์— ๊ตฌ์ถ•๋œ ๊ฑฐ์˜ ๋ชจ๋“  ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ Eclipse ์ž‘์—… ๊ณต๊ฐ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ IDE์—์„œ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ž‘์—… ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์ž‘์—…๊ณต๊ฐ„์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ง์ ‘ ๋งคํ•‘๋˜๋ฉฐ ํด๋”์™€ ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ, ํด๋” ๋ฐ ํŒŒ์ผ์„ ์ž์› ์ž‘์—… ๊ณต๊ฐ„. Eclipse์˜ ์ž‘์—…๊ณต๊ฐ„ ๊ตฌํ˜„์€ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์บ์‹œ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ๋ฆฌ์†Œ์Šค ํŠธ๋ฆฌ ํƒ์ƒ‰ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Workspace๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ถ”๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ะธ ์ฆ๋ถ„ ๋นŒ๋” ์ธํ”„๋ผ.

ํ•ต์‹ฌ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์š”์†Œ(org.eclipse.core.resources ํ”Œ๋Ÿฌ๊ทธ์ธ)๋Š” ์ž‘์—…๊ณต๊ฐ„๊ณผ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์› ๋ชจ๋ธ. ์ด ๋ชจ๋ธ์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ชจ๋ธ์˜ ๋ฆฌ์†Œ์Šค ์ƒํƒœ๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฐœ์ฒด๋ฅผ ํด๋ผ์ด์–ธํŠธ ์•ก์„ธ์Šค๋กœ๋ถ€ํ„ฐ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋” ์ด์ƒ ๋ชจ๋ธ์— ์—†๋Š” ๊ฐœ์ฒด๋ฅผ ๊ณ„์† ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Eclipse๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ•ธ๋“ค ์ž์›. ํ•ธ๋“ค์€ ํ‚ค ์—ญํ• ์„ ํ•˜๋ฉฐ(์ž‘์—… ๊ณต๊ฐ„์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋งŒ ์•Œ๊ณ  ์žˆ์Œ) ๋ฆฌ์†Œ์Šค ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๋‚ด๋ถ€ ๋ชจ๋ธ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๋””์ž์ธ์€ ํŒจํ„ด์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค ํ•ธ๋“ค/๋ณธ์ฒด.

์Œ€. ๊ทธ๋ฆผ 2๋Š” ์ž์› ๋ชจ๋ธ์— ์ ์šฉ๋œ ํ•ธ๋“ค/๋ณธ๋ฌธ ๊ด€์šฉ๊ตฌ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. IResource ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Resource ํด๋ž˜์Šค์™€ ๋ณธ๋ฌธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ResourceInfo ํด๋ž˜์Šค๊ฐ€ API๊ฐ€ ์•„๋‹Œ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ๋ฆฌ์†Œ์Šค์˜ ํ•ธ๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” API์ž…๋‹ˆ๋‹ค. ํ•ธ๋“ค์€ ์ž‘์—…๊ณต๊ฐ„ ๋ฃจํŠธ์— ์ƒ๋Œ€์ ์ธ ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋งŒ ์•Œ๊ณ  ๋ฆฌ์†Œ์Šค ์ •๋ณด์— ๋Œ€ํ•œ ๋งํฌ๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ์ •๋ณด ๊ฐœ์ฒด๋Š” ์†Œ์œ„ "์š”์†Œ ํŠธ๋ฆฌ"๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์™„์ „ํžˆ ๊ตฌ์ฒดํ™”๋ฉ๋‹ˆ๋‹ค. ํ•ธ๋“ค์— ํ•ด๋‹นํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์ •๋ณด ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ํ•ธ๋“ค์— ์ €์žฅ๋œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ์š”์†Œ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 2. IResource ๋ฐ ResourceInfo

๋‚˜์ค‘์— ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ ์ž์› ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ ๋””์ž์ธ(ํ•ธ๋“ค ๊ธฐ๋ฐ˜์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜๋„ ์žˆ์Œ)์€ Eclipse์—์„œ ๋‹ค๋ฅธ ๋ชจ๋ธ์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด ๋””์ž์ธ์˜ ๋ช‡ ๊ฐ€์ง€ ๋…ํŠนํ•œ ์†์„ฑ์„ ๋‚˜์—ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ•ธ๋“ค์€ ๊ฐ’ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๊ฐ’ ๊ฐœ์ฒด๋Š” ๋™์ผ์„ฑ์ด ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๋Š” ๋ถˆ๋ณ€ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋Š” ํ•ด์‹œ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ํ‚ค๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ธ๋“ค์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋น„๊ตํ•˜๋ ค๋ฉด equals(Object) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Handle์€ ๋ฆฌ์†Œ์Šค์˜ ๋™์ž‘์„ ์ •์˜ํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์— ์ €์žฅ๋˜๋Š” ์œ ์ผํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ์ธ "ํ‚ค"์ž…๋‹ˆ๋‹ค).
  • ํ•ธ๋“ค์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค(์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค ๋˜๋Š” ์ด๋ฏธ ์‚ญ์ œ๋œ ๋ฆฌ์†Œ์Šค)๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IResource.exists() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ์ž‘์—…์€ ํ•ธ๋“ค ์ž์ฒด์— ์ €์žฅ๋œ ์ •๋ณด๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์†Œ์œ„ ํ•ธ๋“ค ์ „์šฉ ์ž‘์—…). ์˜ˆ๋ฅผ ๋“ค๋ฉด IResource.getParent(), getFullPath() ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•˜๋ ค๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ์ž‘์—…์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด CoreException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Eclipse๋Š” ์ž‘์—…๊ณต๊ฐ„ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋Š” ํšจ์œจ์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3). ๋ฆฌ์†Œ์Šค๋Š” Eclipse IDE ์ž์ฒด ๋‚ด์—์„œ ์ˆ˜ํ–‰๋œ ์ž‘์—…์˜ ๊ฒฐ๊ณผ ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ์˜ ๋™๊ธฐํ™”์˜ ๊ฒฐ๊ณผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์•Œ๋ฆผ์„ ๊ตฌ๋…ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” "๋ฆฌ์†Œ์Šค ๋ธํƒ€" ํ˜•์‹์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ธํƒ€๋Š” ์ž‘์—…๊ณต๊ฐ„ ๋ฆฌ์†Œ์Šค(ํ•˜์œ„) ํŠธ๋ฆฌ์˜ ๋‘ ์ƒํƒœ ๊ฐ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•˜๋ฉฐ ๊ทธ ์ž์ฒด๊ฐ€ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•˜๊ณ  ํ•˜์œ„ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•˜๋Š” ๋‹ค์Œ ์ˆ˜์ค€์˜ ๋ธํƒ€ ๋ชฉ๋ก์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 3. IResourceChangeEvent ๋ฐ IResourceDelta

๋ฆฌ์†Œ์Šค ๋ธํƒ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ธํƒ€๋Š” ์žฌ๊ท€์  ๊ตฌ์„ฑ ์›๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋˜๋ฏ€๋กœ ๋‹จ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๋…์ž ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธํƒ€ ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•œ ์žฌ๊ท€ ํ•˜๊ฐ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์•Œ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธํƒ€์—๋Š” ๋ฆฌ์†Œ์Šค ์ด๋™ ๋ฐ/๋˜๋Š” ์ด์™€ ๊ด€๋ จ๋œ "๋งˆ์ปค"์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ „์ฒด ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋Š” ๋งˆ์ปค๋กœ ํ‘œ์‹œ๋จ).
  • ํ•ธ๋“ค์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ์ฐธ์กฐ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ธํƒ€๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์›๊ฒฉ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณง ์•Œ๊ฒŒ ๋˜๊ฒ ์ง€๋งŒ, ์ž์› ๋ชจ๋ธ ๋ณ€๊ฒฝ ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์„ค๊ณ„์˜ ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋‹ค๋ฅธ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

JDT ์ฝ”์–ด

Eclipse ์ž‘์—…๊ณต๊ฐ„ ์ž์› ๋ชจ๋ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ธ์–ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. JDT Core ๊ตฌ์„ฑ์š”์†Œ(ํ”Œ๋Ÿฌ๊ทธ์ธ org.eclipse.jdt.core)๋Š” ์†Œ์œ„ "Java ๋ชจ๋ธ"์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” Java ๊ด€์ ์—์„œ ์ž‘์—…๊ณต๊ฐ„ ๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ž๋ฐ” ๋ชจ๋ธ). ์ด API๋Š” ํด๋” ๋ฐ ํŒŒ์ผ ์ธก๋ฉด์—์„œ ์ •์˜๋˜๋Š” ๊ธฐ๋ณธ ์ž์› ๋ชจ๋ธ API์™€ ๋‹ฌ๋ฆฌ Java ์š”์†Œ ์ธก๋ฉด์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค. Java ์š”์†Œ ํŠธ๋ฆฌ์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ทธ๋ฆผ 4์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. XNUMX.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 4. Java ๋ชจ๋ธ ์š”์†Œ

Java ๋ชจ๋ธ์€ ์ž์› ๋ชจ๋ธ๊ณผ ๋™์ผํ•œ ํ•ธ๋“ค/๋ณธ๋ฌธ ๊ด€์šฉ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 5). IJavaElement๊ฐ€ ํ•ธ๋“ค์ด๊ณ , JavaElementInfo๊ฐ€ ๋ฐ”๋”” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. IJavaElement ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ชจ๋“  Java ์š”์†Œ์— ๊ณตํ†ต์ ์ธ ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. getElementName(), getParent() ๋“ฑ ์ผ๋ถ€ ๋ฉ”์†Œ๋“œ๋Š” ํ•ธ๋“ค ์ „์šฉ์ž…๋‹ˆ๋‹ค. JavaElementInfo ๊ฐ์ฒด๋Š” ํ•ด๋‹น ์š”์†Œ์˜ ์ƒํƒœ(๊ตฌ์กฐ ๋ฐ ์†์„ฑ)๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 5. IJavaElement ๋ฐ JavaElementInfo

Java ๋ชจ๋ธ์€ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ธฐ๋ณธ ํ•ธ๋“ค/๋ณธ๋ฌธ ๋””์ž์ธ ๊ตฌํ˜„์— ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ์—์„œ ๋…ธ๋“œ๊ฐ€ ๋ฆฌ์†Œ์Šค ์ •๋ณด ๊ฐœ์ฒด์ธ ์š”์†Œ ํŠธ๋ฆฌ๋Š” ์™„์ „ํžˆ ๋ฉ”๋ชจ๋ฆฌ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java ๋ชจ๋ธ์€ .java ๋ฐ .class ํŒŒ์ผ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ(์œ ํ˜•, ํ•„๋“œ ๋ฐ ๋ฉ”์†Œ๋“œ)๋„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์†Œ์Šค ํŠธ๋ฆฌ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์ˆ˜์˜ ์š”์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ ์ „์ฒด ์š”์†Œ ํŠธ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ๊ตฌ์ฒดํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Java ๋ชจ๋ธ ๊ตฌํ˜„์—์„œ๋Š” ์š”์†Œ ์ •๋ณด์˜ ์ œํ•œ๋œ ํฌ๊ธฐ LRU ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ IJavaElement ํ•ธ๋“ค์ž…๋‹ˆ๋‹ค. ์š”์†Œ ์ •๋ณด ๊ฐœ์ฒด๋Š” ์š”์†Œ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ์š”์ฒญ ์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์ด ์บ์‹œ์—์„œ ์ œ๊ฑฐ๋˜๊ณ  ๋ชจ๋ธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋Š” ์ง€์ •๋œ ์บ์‹œ ํฌ๊ธฐ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์—์„œ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ˆจ๊ธฐ๋Š” ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋””์ž์ธ์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์ž…๋‹ˆ๋‹ค.

Java ์š”์†Œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ž‘์—…๊ณต๊ฐ„ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Java ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” IJavaElementDelta(๊ทธ๋ฆผ 6)๊ฐ€ ํฌํ•จ๋œ ElementChangedEvent ๊ฐœ์ฒด๋กœ ํ‘œ์‹œ๋˜๋Š” ์•Œ๋ฆผ์„ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 6. ElementChangedEvent ๋ฐ IJavaElementDelta

Java ๋ชจ๋ธ์—๋Š” ๋ฉ”์„œ๋“œ ๋ณธ๋ฌธ์ด๋‚˜ ์ด๋ฆ„ ํ™•์ธ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ Java๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด JDT Core๋Š” ์ถ”๊ฐ€(ํ•ธ๋“ค ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ) ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ (์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ, AST). AST๋Š” ์†Œ์Šค ํ…์ŠคํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. AST ๋…ธ๋“œ๋Š” ์†Œ์Šค ๋ชจ๋“ˆ ๊ตฌ์กฐ์˜ ์š”์†Œ(์„ ์–ธ, ์—ฐ์‚ฐ์ž, ํ‘œํ˜„์‹ ๋“ฑ)์— ํ•ด๋‹นํ•˜๋ฉฐ ์†Œ์Šค ํ…์ŠคํŠธ์˜ ํ•ด๋‹น ์š”์†Œ ์ขŒํ‘œ์— ๋Œ€ํ•œ ์ •๋ณด์™€ (์˜ต์…˜์œผ๋กœ) ์ด๋ฆ„ ํ™•์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ„ ๋งํฌ์˜ ํ˜•ํƒœ ๋ฐ”์ธ๋”ฉ. ๋ฐ”์ธ๋”ฉ์€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ ค์ง„ ํ˜•์‹, ๋ฉ”์„œ๋“œ, ๋ณ€์ˆ˜ ๋“ฑ ๋ช…๋ช…๋œ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๋Š” AST ๋…ธ๋“œ์™€ ๋‹ฌ๋ฆฌ ๋ฐ”์ธ๋”ฉ์€ ์ƒํ˜ธ ์ฐธ์กฐ๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค ASTNode๋Š” ๋ชจ๋“  AST ๋…ธ๋“œ์— ๋Œ€ํ•œ ๊ณตํ†ต ๊ธฐ๋ณธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ASTNode ํ•˜์œ„ ํด๋ž˜์Šค๋Š” Java ์–ธ์–ด์˜ ํŠน์ • ๊ตฌ๋ฌธ ๊ตฌ์กฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ JDT๋Š” ํ™œ์„ฑ ํŽธ์ง‘๊ธฐ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ AST๋งŒ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. Java ๋ชจ๋ธ๊ณผ ๋‹ฌ๋ฆฌ AST๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ AST ์ƒ์„ฑ์œผ๋กœ ์ด์–ด์ง„ ์ž‘์—… ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๋ฉค๋ฒ„๋ฅผ ์ฐธ์กฐํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” "์ค‘๊ฐ„", "์ž„์‹œ" ๋ชจ๋ธ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

๋‚˜์—ด๋œ ์„ธ ๊ฐ€์ง€ ๋ชจ๋ธ(Java ๋ชจ๋ธ, AST, ๋ฐ”์ธ๋”ฉ)์€ ๋‹ค์–‘ํ•œ "๋„์šฐ๋ฏธ"๊ฐ€ ํฌํ•จ๋œ ๊ฐ•๋ ฅํ•œ Java ํŽธ์ง‘๊ธฐ, ์†Œ์Šค ์ฝ”๋“œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ž‘์—…(๊ฐ€์ ธ์˜ค๊ธฐ ๋ชฉ๋ก ๊ตฌ์„ฑ ํฌํ•จ)์„ ํฌํ•จํ•˜์—ฌ JDT์—์„œ "์ง€๋Šฅํ˜• ๊ฐœ๋ฐœ ๋„๊ตฌ"๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜์„ ํ•จ๊ป˜ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜๋œ ์Šคํƒ€์ผ์— ๋”ฐ๋ฅธ ์ด๋ฆ„ ๋ฐ ํ˜•์‹), ๊ฒ€์ƒ‰ ๋ฐ ๋ฆฌํŒฉํ† ๋ง ๋„๊ตฌ. ์ด ๊ฒฝ์šฐ Java ๋ชจ๋ธ์€ ๊ฐœ๋ฐœ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ์˜ ์‹œ๊ฐ์  ํ‘œํ˜„(์˜ˆ: ํŒจํ‚ค์ง€ ํƒ์ƒ‰๊ธฐ, ๊ฐœ์š”, ๊ฒ€์ƒ‰, ํ˜ธ์ถœ ๊ณ„์ธต ๊ตฌ์กฐ)์˜ ๊ธฐ์ดˆ๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํŠน๋ณ„ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ์— ์‚ฌ์šฉ๋˜๋Š” Eclipse ๊ตฌ์„ฑ์š”์†Œ

๊ทธ๋ฆผ์—์„œ. ๊ทธ๋ฆผ 7์€ 1C:Enterprise Development Tools์šฉ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์˜ ๊ธฐ๋ฐ˜์„ ํ˜•์„ฑํ•˜๋Š” Eclipse ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 7. 1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ์šฉ ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse

์ดํด๋ฆฝ์Šค ํ”Œ๋žซํผ ๊ธฐ๋ณธ์ ์ธ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์„น์…˜์—์„œ ์ด ์ธํ”„๋ผ์˜ ์ผ๋ถ€ ์ธก๋ฉด์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Eclipse ๋ชจ๋ธ๋ง ํ”„๋ ˆ์ž„ ์›Œํฌ (EMF)์€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. EMF๋Š” Eclipse ํ”Œ๋žซํผ๊ณผ ํ†ตํ•ฉ๋˜์–ด ์žˆ์ง€๋งŒ ์ผ๋ฐ˜ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด Eclipse ๊ฐœ๋ฐœ์ž๋Š” ์•„์ง Eclipse ํ”Œ๋žซํผ์˜ ๋ณต์žก์„ฑ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์ด๋ฏธ EMF์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋‹น์—ฐํ•œ ์ธ๊ธฐ์˜ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๋ณดํŽธ์ ์ธ ๋””์ž์ธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฌด์—‡๋ณด๋‹ค๋„ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  EMF ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ๋ฉ”ํƒ€ ์ˆ˜์ค€ API๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. EMF์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋ธ ๊ฐ์ฒด์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„๊ณผ ๋ฉ”ํƒ€ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋ธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ด๊ณ  ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. EMF์—๋Š” ๋ชจ๋ธ ์ง๋ ฌํ™”, ๋ชจ๋ธ ๋ณ€๊ฒฝ ์ถ”์  ๋“ฑ์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง„์ •ํ•œ ๋ฒ”์šฉ ๋„๊ตฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ EMF๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๋ชจ๋ธ๋ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€๋งŒ ์ผ๋ถ€ ๋ชจ๋ธ ํด๋ž˜์Šค(์˜ˆ: ์œ„์—์„œ ์„ค๋ช…ํ•œ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ)์—๋Š” ๋ณด๋‹ค ์ „๋ฌธ์ ์ธ ๋ชจ๋ธ๋ง ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. EMF์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ํŠนํžˆ ํ•œ ๊ธฐ์‚ฌ์˜ ์ œํ•œ๋œ ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ์‚ฌํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์€ ๋ณ„๋„์˜ ์ฑ…๊ณผ ๋‹ค์†Œ ๋‘๊บผ์šด ์ฑ…์˜ ์ฃผ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. EMF์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๊ณ ํ’ˆ์งˆ ์ผ๋ฐ˜ํ™” ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ ๋ชจ๋ธ๋ง ์ „์šฉ ํ”„๋กœ์ ํŠธ ์ „์ฒด๊ฐ€ ํƒ„์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํด๋ฆฝ์Šค ๋ชจ๋ธ๋ง EMF ์ž์ฒด์™€ ํ•จ๊ป˜. ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜๊ฐ€ Eclipse Xtext์ž…๋‹ˆ๋‹ค.

์ดํด๋ฆฝ์Šค Xtext "ํ…์ŠคํŠธ ๋ชจ๋ธ๋ง" ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Xtext ์‚ฌ์šฉ ์•คํŠธ๋Ÿฌ ์†Œ์Šค ํ…์ŠคํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ๊ฒฐ๊ณผ ASG(๋ณธ์งˆ์ ์œผ๋กœ AST์™€ ๋ฐ”์ธ๋”ฉ์˜ ์กฐํ•ฉ์ธ ์ถ”์ƒ ์˜๋ฏธ ๊ทธ๋ž˜ํ”„)๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ EMF("์˜๋ฏธ ๋ชจ๋ธ"์ด๋ผ๊ณ ๋„ ํ•จ) Xtext๊ฐ€ ๋ชจ๋ธ๋งํ•œ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์€ Xtext ๊ณ ์œ ์˜ ์–ธ์–ด๋กœ ๊ธฐ์ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ANTLR์— ๋Œ€ํ•œ ๋ฌธ๋ฒ• ์„ค๋ช…์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ AST ์ง๋ ฌํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜(์ฆ‰, Xtext๋Š” ํŒŒ์„œ์™€ ํŒŒ์„œ ํ•ด์ œ๊ธฐ๋ฅผ ๋ชจ๋‘ ์ œ๊ณต), ์ปจํ…์ŠคํŠธ ํžŒํŠธ ๋ฐ ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ์–ธ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Xtext์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ• ์–ธ์–ด๋Š” ANTLR์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ• ์–ธ์–ด๋ณด๋‹ค ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋•Œ๋กœ๋Š” ๊ตฌํ˜„๋œ ์–ธ์–ด๋ฅผ Xtext๋กœ "๊ตฌ๋ถ€๋Ÿฌ์•ผ" ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ๋˜๋Š” ์–ธ์–ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฏธ ํ™•๋ฆฝ๋œ ๊ตฌ๋ฌธ์ด ์žˆ๋Š” ์–ธ์–ด์—๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Xtext๋Š” ํ˜„์žฌ Eclipse์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์„ฑ์ˆ™ํ•˜๊ณ  ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•˜๋ฉฐ ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์‹ ์†ํ•œ ํ”„๋กœํ† ํƒ€์ดํ•‘์— ์ด์ƒ์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ๋ณ„ ์–ธ์–ด (๋„๋ฉ”์ธ๋ณ„ ์–ธ์–ด, DSL). ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ANTLR ๋ฐ EMF ๊ธฐ๋ฐ˜์˜ "์–ธ์–ด ์ฝ”์–ด" ์™ธ์—๋„ Xtext๋Š” ์ธ๋ฑ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์ฆ๋ถ„ ๊ตฌ์„ฑ, "์Šค๋งˆํŠธ ํŽธ์ง‘๊ธฐ" ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ๋งŽ์€ ์œ ์šฉํ•œ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ํ•ธ๋“ค์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜ ์–ธ์–ด ๋ชจ๋ธ. EMF์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Xtext๋„ ๋ณ„๋„์˜ ์ฑ…์œผ๋กœ ๋‹ค๋ฃฐ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ฃผ์ œ์ด๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ทธ ๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๊ธฐ์กฐ์ฐจ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” EMF ์ž์ฒด์™€ ๊ธฐํƒ€ ์—ฌ๋Ÿฌ Eclipse ๋ชจ๋ธ๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋‘ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Xtext๋Š” ๋‚ด์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์ฟผ๋ฆฌ ์–ธ์–ด์™€ ๊ฐ™์€ 1C:Enterprise ์–ธ์–ด์šฉ ๊ฐœ๋ฐœ ๋„๊ตฌ์˜ ๊ธฐ๋ฐ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ์˜ ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋ฐ˜์€ Eclipse Handly ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚˜์—ด๋œ Eclipse ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ์•„์ง ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์ง€ ์•Š์Œ).

Eclipse HandlyEclipse Technology ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์˜ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์ธ ์€ 1๋…„ 2014C๊ฐ€ Eclipse Foundation์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ฝ”๋“œ ๊ธฐ์—ฌ์˜ ๊ฒฐ๊ณผ๋กœ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ 1C๋Š” ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์„ ๊ณ„์† ์ง€์›ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ปค๋ฏธํ„ฐ๋Š” ํšŒ์‚ฌ ์ง์›์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ทœ๋ชจ๊ฐ€ ์ž‘์ง€๋งŒ Eclipse์—์„œ ๋‹ค์†Œ ๋…ํŠนํ•œ ํ‹ˆ์ƒˆ ์‹œ์žฅ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชฉํ‘œ๋Š” ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ธ๋“ค/๋ณธ์ฒด ๊ด€์šฉ์–ด์™€ ๊ฐ™์€ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜ ์›์น™์€ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ๊ณผ Java ๋ชจ๋ธ์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ๊ณผ Java ๋ชจ๋ธ ๋ชจ๋‘ Eclipse JDT(Java ๊ฐœ๋ฐœ ๋„๊ตฌ)์˜ ์ค‘์š”ํ•œ ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ์ ๋„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ์˜ ๋ชจ๋“  *DT Eclipse ํ”„๋กœ์ ํŠธ์—๋Š” JDT์™€ ์œ ์‚ฌํ•œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์ด Eclipse ํ”Œ๋žซํผ ์œ„์— ๊ตฌ์ถ•๋œ ๋ชจ๋“  IDE๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ๋งŽ์€ IDE์˜ ๊ธฐ์ดˆ๊ฐ€ ๋œ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์žฅ์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Eclipse CDT(C/C++ Development Tooling)์—๋Š” JDT์˜ Java ๋ชจ๋ธ๊ณผ ๋™์ผํ•œ ์—ญํ• ์„ CDT ์•„ํ‚คํ…์ฒ˜์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•ธ๋“ค ๊ธฐ๋ฐ˜ C/C++ ๋ชจ๋ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Handly ์ด์ „์—๋Š” Eclipse๊ฐ€ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ์–ธ์–ด ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๋ชจ๋ธ์€ ์ฃผ๋กœ Java ๋ชจ๋ธ ์ฝ”๋“œ(์ผ๋ช… ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ)๋ฅผ ์ง์ ‘ ์ ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ EPL(Eclipse ๊ณต๊ฐœ ๋ผ์ด์„ ์Šค). (๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ Eclipse ํ”„๋กœ์ ํŠธ ์ž์ฒด์—์„œ๋Š” ๋ฒ•์  ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ํ์‡„ ์†Œ์Šค ์ œํ’ˆ์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ๋ณธ์งˆ์ ์ธ ์šฐ์—ฐ์„ฑ ์™ธ์—๋„ ์ด ๊ธฐ์ˆ ์€ ์ž˜ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์— ์ ์‘ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ ์ค‘๋ณต, ๋“ฑ. ๋” ๋‚˜์œ ๊ฒƒ์€ ๊ฒฐ๊ณผ ๋ชจ๋ธ์ด "๊ทธ ์ž์ฒด"๋กœ ๋‚จ์•„ ์žˆ๊ณ  ํ†ต์ผ ๊ฐ€๋Šฅ์„ฑ์„ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ์–ธ์–ด ๋ชจ๋ธ์— ๋Œ€ํ•œ ๊ณตํ†ต ๊ฐœ๋…๊ณผ ํ”„๋กœํ† ์ฝœ์„ ๋ถ„๋ฆฌํ•˜๋ฉด EMF์˜ ๊ฒฝ์šฐ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ•ด๋‹น ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Eclipse๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. 2005๋…„์— ๋‹ค์‹œ ๋งˆํ‹ด ์• ์Š๋ฆฌ๋งŒ, CDT ํ”„๋กœํ† ํƒ€์ž… ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์š”์•ฝํ•˜๋ฉด, ์ฃผ์žฅํ•˜๋‹ค ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์„ ํฌํ•จํ•˜์—ฌ ์–ธ์–ด ๋ชจ๋ธ์„ ์œ„ํ•œ ๊ณตํ†ต ์ธํ”„๋ผ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ด์ง€๋งŒ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์œผ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด์˜ ๊ตฌํ˜„์€ ๊ฒฐ์ฝ” ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•œํŽธ *DT ์ฝ”๋“œ์˜ ์ธ์ˆ˜ ๋ถ„ํ•ด๋Š” Eclipse์—์„œ ์•„์ง ๊ฐœ๋ฐœ๋˜์ง€ ์•Š์€ ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์˜๋ฏธ์—์„œ Handly ํ”„๋กœ์ ํŠธ๋Š” EMF์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๊ณผ ์ฃผ๋กœ ์–ธ์–ด ๋ชจ๋ธ(์˜ˆ: ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ตฌ์กฐ์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ„)์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Handly๋ฅผ ๋””์ž์ธํ•  ๋•Œ ์„ค์ •ํ•œ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์ œ ์˜์—ญ์˜ ์ฃผ์š” ์ถ”์ƒํ™” ์‹๋ณ„.
  • ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ ํ†ตํ•ด ๋…ธ๋ ฅ์„ ์ค„์ด๊ณ  ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ์–ธ์–ด ๋ชจ๋ธ ๊ตฌํ˜„ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ ๋ชจ๋ธ์— ํ†ตํ•ฉ๋œ ๋ฉ”ํƒ€ ์ˆ˜์ค€ API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์–ธ์–ด ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๊ณตํ†ต IDE ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ.
  • Xtext์™€์˜ ํ†ตํ•ฉ(๋ณ„๋„์˜ ๋ ˆ์ด์–ด)

์ผ๋ฐ˜์ ์ธ ๊ฐœ๋…๊ณผ ํ”„๋กœํ† ์ฝœ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ์–ธ์–ด ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์˜ ๊ธฐ์กด ๊ตฌํ˜„์„ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. Handly์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ ๊ทธ๋ฆผ 8์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. XNUMX.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 8. Handly ์š”์†Œ์˜ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ธฐ๋ณธ ๊ตฌํ˜„

IElement ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์š”์†Œ์˜ ํ•ธ๋“ค์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ชจ๋“  Handly ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์˜ ์š”์†Œ์— ๊ณตํ†ต๋ฉ๋‹ˆ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค Element๋Š” ์ผ๋ฐ˜ํ™”๋œ ํ•ธ๋“ค/๋ณธ์ฒด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 9).

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 9. IElement ๋ฐ ์ผ๋ฐ˜ ํ•ธ๋“ค/๋ณธ๋ฌธ ๊ตฌํ˜„

๋˜ํ•œ Handly๋Š” ๋ชจ๋ธ ์š”์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋Š” ์ผ๋ฐ˜ํ™”๋œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 10). ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด๋Š” ์ž์› ๋ชจ๋ธ ๋ฐ Java ๋ชจ๋ธ์— ๊ตฌํ˜„๋œ ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋Œ€์ฒด๋กœ ์œ ์‚ฌํ•˜๋ฉฐ IElementDelta๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ ๋ณ€๊ฒฝ ์ •๋ณด์˜ ํ†ตํ•ฉ ํ‘œํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1C:์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ Eclipse
์Œ€. 10. Handly ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ผ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ธฐ๋ณธ ๊ตฌํ˜„

์œ„์—์„œ ์„ค๋ช…ํ•œ Handly ๋ถ€๋ถ„(๊ทธ๋ฆผ 9 ๋ฐ 10)์€ ๊ฑฐ์˜ ๋ชจ๋“  ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์„ ์œ„ํ•ด ์–ธ์–ด์ ์ธ ๋ชจ๋ธ์ธ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ, ํŠนํžˆ ์†Œ์œ„ ์†Œ์Šค ํ…์ŠคํŠธ ๊ตฌ์กฐ์˜ ์š”์†Œ์— ๋Œ€ํ•œ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์š”์†Œ (๊ทธ๋ฆผ 8). ISourceFile ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์†Œ์Šค ํŒŒ์ผ์„ ๋‚˜ํƒ€๋‚ด๊ณ  ISourceConstruct๋Š” ์†Œ์Šค ํŒŒ์ผ ๋‚ด์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค SourceFile ๋ฐ SourceConstruct๋Š” ์†Œ์Šค ํŒŒ์ผ ๋ฐ ํ•ด๋‹น ์š”์†Œ ์ž‘์—…์„ ์ง€์›ํ•˜๋Š” ์ผ๋ฐ˜ํ™”๋œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ…์ŠคํŠธ ๋ฒ„ํผ ์ž‘์—…, ์†Œ์Šค ํ…์ŠคํŠธ์˜ ์š”์†Œ ์ขŒํ‘œ์— ๋ฐ”์ธ๋”ฉ, ์ž‘์—… ๋ณต์‚ฌ๋ณธ ๋ฒ„ํผ์˜ ํ˜„์žฌ ๋‚ด์šฉ๊ณผ ๋ชจ๋ธ ์กฐ์ •). , ๋“ฑ. ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๋‹นํžˆ ์–ด๋ ค์šด ์ผ์ด๋ฉฐ Handly๋Š” ๊ณ ํ’ˆ์งˆ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ์–ธ์–ด ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋…ธ๋ ฅ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์— ๋‚˜์—ด๋œ ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์™ธ์—๋„ Handly๋Š” ํ…์ŠคํŠธ ๋ฒ„ํผ ๋ฐ ์Šค๋ƒ…์ƒท์„ ์œ„ํ•œ ์ธํ”„๋ผ, ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์™€์˜ ํ†ตํ•ฉ ์ง€์›(Xtext ํŽธ์ง‘๊ธฐ์™€์˜ ๊ธฐ๋ณธ ํ†ตํ•ฉ ํฌํ•จ) ๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๊ณ  ๊ฐœ์š” ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์€ ๋ชจ๋ธ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋Š” Handly์˜ Java ๋ชจ๋ธ ๊ตฌํ˜„์„ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (JDT์—์„œ Java ๋ชจ๋ธ์˜ ์ „์ฒด ๊ตฌํ˜„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ด ๋ชจ๋ธ์€ ๋” ๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด ์˜๋„์ ์œผ๋กœ ๋‹ค์†Œ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ Handly์˜ ์ดˆ๊ธฐ ์„ค๊ณ„์™€ ํ›„์† ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ฃผ์š” ์ดˆ์ ์€ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด์—ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ทธ๋Ÿด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›์น™์ ์œผ๋กœ ํ•ธ๋“ค ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์€ "์„ค๊ณ„์— ๋”ฐ๋ผ" ์ƒ๋‹นํžˆ ์ž˜ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•ธ๋“ค/๋ณธ์ฒด ๊ด€์šฉ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ์ด ์†Œ๋น„ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‰˜์•™์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด Handly๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์•Œ๋ฆผ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋งŽ์€ ์ˆ˜์˜ ์š”์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ธํƒ€ ๊ตฌ์„ฑ์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ผ๋‹จ ์ ์šฉํ•œ JDT Java ๋ชจ๋ธ์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. Handly์—์„œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , JDT์—์„œ๋„ ๋น„์Šทํ•œ ํŒจ์น˜๋ฅผ ์ค€๋น„ํ–ˆ๋Š”๋ฐ, ์ข‹์€ ๋ฐ˜์‘์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด ๋ชจ๋ธ ๊ตฌํ˜„์— Handly๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ž ์žฌ์ ์œผ๋กœ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋Š” ํ•œ ๊ณณ์—์„œ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด ๋ชจ๋ธ ๊ตฌํ˜„์— Handly๋ฅผ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ƒ๋‹นํ•œ ์œ ์—ฐ์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฌธ์ œ๋Š” API ๋ชจ๋ธ ์ „์ฒด์—์„œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ธ๋””ํ•˜๊ฒŒ 0.5 ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •์˜ํ•˜๊ณ  ์™„์ „ํžˆ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ชจ๋ธ๋ณ„ API์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ†ตํ•ฉ ๋ฉ”ํƒ€ ์ˆ˜์ค€ API๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ๊ตฌํ˜„์— Handly๋ฅผ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ชจ๋ธ ๊ฐœ๋ฐœ์ž๊ฐ€ API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ƒ๋‹นํ•œ ์ž์œ ๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์—ฐ์„ฑ์—๋Š” ๋‹ค๋ฅธ ์ธก๋ฉด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Handly๋Š” ๋ชจ๋ธ ๊ตฌ์กฐ์— ๊ฑฐ์˜ ์ œํ•œ์„ ๋‘์ง€ ์•Š์œผ๋ฉฐ ๋ฒ”์šฉ ์–ธ์–ด์™€ ๋„๋ฉ”์ธ ํŠน์ • ์–ธ์–ด๋ฅผ ๋ชจ๋‘ ๋ชจ๋ธ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ Handly๋Š” ํŠน์ • ํ˜•์‹์˜ AST ํ‘œํ˜„์„ ๊ทœ์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์›์น™์ ์œผ๋กœ AST ์ž์ฒด์˜ ์กด์žฌ๋„ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฑฐ์˜ ๋ชจ๋“  ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ Handly๋Š” Eclipse ์ž‘์—… ๊ณต๊ฐ„๊ณผ์˜ ์™„์ „ํ•œ ํ†ตํ•ฉ์„ ์ง€์›ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ์˜ ํ†ตํ•ฉ ๋•๋ถ„์— ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ๋„ ์ง์ ‘ ์ž‘์—…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Eclipse ํŒŒ์ผ ์‹œ์Šคํ…œ (EFS).

ํ˜„์žฌ ๋ฒ„์ „ ํ•ธ๋””ํ•˜๊ฒŒ 0.6 2016๋…„ XNUMX์›”์— ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ํ˜„์žฌ ์ธํ๋ฒ ์ดํŒ… ๋‹จ๊ณ„์— ์žˆ๊ณ  API๊ฐ€ ์•„์ง ์ตœ์ข…์ ์œผ๋กœ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Handly๋Š” ์ด๋ฏธ "์–ผ๋ฆฌ ์–ด๋‹ตํ„ฐ" ์—ญํ• ์„ ํ•˜๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•œ ๋‘ ๊ฐ€์ง€ ๋Œ€ํ˜• ์ƒ์šฉ ์ œํ’ˆ์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ํ›„ํšŒํ•˜์ง€ ๋งˆ์„ธ์š”.

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜๋Š” 1C:Enterprise Development Tools์ž…๋‹ˆ๋‹ค. Handly๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‚ด์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์ฟผ๋ฆฌ ์–ธ์–ด์™€ ๊ฐ™์€ 1C:Enterprise ์–ธ์–ด์˜ ์ƒ์œ„ ์ˆ˜์ค€ ๊ตฌ์กฐ ์š”์†Œ๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. . ๋˜ ๋‹ค๋ฅธ ์ œํ’ˆ์€ ์ผ๋ฐ˜ ๋Œ€์ค‘์—๊ฒŒ ๋œ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ ์ฝ”๋‹ค์‹ญ ์ŠคํŠœ๋””์˜ค, ASIP(Application-Specific Instruction-Set Processor)๋ฅผ ์œ„ํ•œ ํ†ตํ•ฉ ์„ค๊ณ„ ํ™˜๊ฒฝ์œผ๋กœ, ์ฒด์ฝ” ํšŒ์‚ฌ์ธ Codasip ๋‚ด๋ถ€์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. AMD, AVG, Mobileye, ์‹œ๊ทธ๋งˆ ๋””์ž์ธ. Codasip์€ Handly 2015 ๋ฒ„์ „๋ถ€ํ„ฐ 0.2๋…„๋ถ€ํ„ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ Handly๋ฅผ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. Codasip Studio์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋Š” 0.5๋…„ 2016์›”์— ๋ฆด๋ฆฌ์Šค๋œ ๋ฒ„์ „ 4000๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Codasip์—์„œ IDE ๊ฐœ๋ฐœ์„ ์ด๋„๋Š” Ondล™ej Ilฤรญk์€ ํ”„๋กœ์ ํŠธ์™€ ์ ‘์ด‰ํ•˜์—ฌ "์ œXNUMX์ž ์ฑ„ํƒ์ž"๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์ค‘์š”ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” Handly ์˜ˆ์ œ ์ค‘ ํ•˜๋‚˜์ธ Java ๋ชจ๋ธ์— ๋Œ€ํ•œ UI ๋ ˆ์ด์–ด(~XNUMX์ค„์˜ ์ฝ”๋“œ)๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์— ์ง์ ‘ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž์œ  ์‹œ๊ฐ„๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž…์–‘์ž๋“ค์˜ Handly ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์ง์ ‘ ์ •๋ณด๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณต ์‚ฌ๋ก€ ํ”„๋กœ์ ํŠธ.

API ์•ˆ์ •์„ฑ์ด ๋ณด์žฅ๋œ ๋ฒ„์ „ 1.0์ด ์ถœ์‹œ๋˜๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ธํ๋ฒ ์ด์…˜ ์ƒํƒœ๋ฅผ ๋– ๋‚œ ํ›„ Handly์— ์ƒˆ๋กœ์šด ์ฑ„ํƒ์ž๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋Š” ๊ณ„์†ํ•ด์„œ API๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋”์šฑ ๊ฐœ์„ ํ•˜์—ฌ ๋งค๋…„ XNUMX์›”(๋™์‹œ Eclipse ๋ฆด๋ฆฌ์Šค์™€ ๊ฐ™์€ ๋‚ ์งœ)๊ณผ XNUMX์›”์— ๋‘ ๊ฐœ์˜ "์ฃผ์š”" ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜์—ฌ ์ฑ„ํƒ์ž๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ผ์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ์˜ "๋ฒ„๊ทธ ๋น„์œจ"์ด ์ง€์†์ ์œผ๋กœ ๋‚ฎ์€ ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€๋˜๊ณ  ์žˆ์œผ๋ฉฐ Handly๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „๋ถ€ํ„ฐ ์–ผ๋ฆฌ ์–ด๋‹ตํ„ฐ ์ œํ’ˆ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•ด ์™”๋‹ค๊ณ  ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Eclipse Handly๋ฅผ ๋” ์ž์„ธํžˆ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์ž์Šต์„œ ะธ ๊ฑด์ถ• ๊ฐœ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€