±¸Á¶ º´ÇÕ Ç¥½Ã±â´Â ÇØ´ç ÀԷ¿¡ ´ëÇÑ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇϰí, °á°ú¸¦ °èÃþ ±¸Á¶ º¸±â·Î Á¦°øÇϰí, »ç¿ëÀÚ°¡ ÀÔ·Â »çÀÌ¿¡¼ º´ÇÕÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ±¸Á¶ º´ÇÕ Ç¥½Ã±â´Â ÀÛ¾÷°ø°£ ÀÚ¿øÀ̳ª ¾ÆÄ«ÀÌºê ÆÄÀÏÀÇ ±¸¼º¿ø¿¡ °øÅëÀÔ´Ï´Ù.
¿©·¯ °¡Áö ±¸Á¶ ºñ±³ Ç¥½Ã±âÀÇ ±¸ÇöÀÌ Æ®¸®¸¦ ±â¹ÝÀ¸·Î ÇϹǷÎ, ºñ±³ Ç÷¯±×ÀÎÀº ÀÏ¹Ý Æ®¸® ±â¹ÝÀÇ StructureDiffViewer¸¦ Á¦°øÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀº ´ÜÀÏ ÀÔ·Â ¿ÀºêÁ§Æ®¸¦ °èÃþ ±¸Á¶·Î ±¸ºÐÇÏ´Â ±¸Á¶ ÀÛ¼ºÀÚ¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. StructureDiffViewer´Â °á°ú ±¸Á¶¿¡ ´ëÇÑ ºñ±³¸¦ ¼öÇàÇϰí ÇØ´ç °á°ú¸¦ Æ®¸®·Î Ç¥½ÃÇÕ´Ï´Ù.
org.eclipse.compare.structureCreators È®ÀåÀ» »ç¿ëÇÏ¿© Ç÷¯±×ÀÎÀÇ ±¸Á¶ ÀÛ¼ºÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ÄÁÅÙÃ÷ Ç¥½Ã±â¿Í ¸¶Âù°¡Áö·Î ±¸Á¶ ÀÛ¼ºÀÚ¸¦ ÆÄÀÏ È®ÀåÀÚ ¼¼Æ®¿¡ ÁöÁ¤Çϰųª ÄÁÅÙÃ÷ À¯ÇüÀ» ƯÁ¤ ±¸Á¶ ÀÛ¼ºÀÚ¿Í ¿¬°ü½ÃŰ´Â µ¥ contentTypeBindingÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Á¶ ÀÛ¼ºÀÚ´Â ÄÁÅÙÃ÷ Ç¥½Ã±â¿Í ¸Å¿ì À¯»çÇϹǷΠ¿©±â¿¡¼´Â ¸¶Å©¾÷À» °ËÅäÇÏÁö ¾Ê½À´Ï´Ù. JDT Ç÷¯±×ÀÎÀº org.eclipse.compare.structureCreators¿¡ ´ëÇØ ¸î °¡Áö ÄÁÆ®¸®ºä¼ÇÀ» Á¤ÀÇÇÕ´Ï´Ù.
ÀϺÎÀÇ °æ¿ì, Æ®¸® ±â¹ÝÀÇ StructureDiffViewer´Â Ç÷¯±×Àο¡ ÀûÇÕÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. org.eclipse.compare.structureMergeViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© ±¸Á¶ º´ÇÕ Ç¥½Ã±â¿¡ ÇØ´çÇÏ´Â »ç¿ëÀÚ °íÀ¯ÀÇ ±¸ÇöÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Á¶ º´ÇÕ Ç¥½Ã±â¸¦ ÆÄÀÏ È®ÀåÀÚ¿¡ ÁöÁ¤Çϰųª ÄÁÅÙÃ÷ À¯ÇüÀ» ƯÁ¤ ±¸Á¶ º´ÇÕ Ç¥½Ã±â¿Í ¿¬°ü½ÃŰ´Â µ¥ contentTypeBindingÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. org.eclipse.compare.structureMergeViewers ÄÁÆ®¸®ºä¼Ç¿¡ ´ëÇÑ ¿¹´Â JDT Ç÷¯±×ÀÎÀ» ÂüÁ¶ÇϽʽÿÀ.
°Ë»ö Ç÷¯±×ÀÎÀº °Ë»ö Ç¥½Ã±â¸¦ ±¸ÇöÇÏ´Â µ¥ µµ¿òÀÌ µÇ´Â ¸î °¡Áö À¯Æ¿¸®Æ¼ Ŭ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù.
Â÷º°±â´Â °èÃþÀûÀ¸·Î ±¸Á¶ÈµÈ µ¥ÀÌÅÍÀÇ Â÷º° ¿£ÁøÀÔ´Ï´Ù. µÎ °³³ª ¼¼ °³ÀÇ ÀÔ·ÂÀ» ÇÊ¿ä·Î Çϰí ÇØ´ç ÀԷ¿¡ ´ëÇØ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇÕ´Ï´Ù.
Â÷º° ¿£Áø¿¡ ´ëÇÑ ÀÔ·Â ¿ä¼Ò¿¡¼ IStructureComparator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ °æ¿ì ¿£ÁøÀº ÀÚüÀûÀ¸·Î ÀÔ·Â ¿ä¼ÒÀÇ ÇÏÀ§¿¡ ¹Ýº¹ÀûÀ¸·Î Àû¿ëÇÕ´Ï´Ù. ¸®ÇÁ ¿ä¼Ò¿¡¼ IStreamContentAccessor ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß Â÷º°±â¿¡¼ ÇØ´ç ÄÁÅÙÃ÷¿¡ ´ëÇØ ¹ÙÀÌÆ®½Ä ºñ±³¸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ç÷§Æû ±¸Çö¿¡ Æ÷ÇÔµÈ Â÷º°±â¿¡ ´ëÇÑ ¿©·¯ °¡Áö ÁÁÀº ¿¹Á¦°¡ ÀÖ½À´Ï´Ù.
±âº»ÀûÀ¸·Î Â÷º° ¿£Áø¿¡¼´Â ºñ±³ Á¶ÀÛ °á°ú¸¦ DiffNode ¿ÀºêÁ§Æ®ÀÇ Æ®¸®·Î ¸®ÅÏÇÕ´Ï´Ù. DiffNode¿¡¼´Â µÎ °³ ¶Ç´Â ¼¼ °³ÀÇ ÀÔ·Â °£ º¯°æ»çÇ׿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ¿£ÁøÀÇ ´ÜÀÏ ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© °á°ú ³ëµåÀÇ À¯ÇüÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
DiffNodeÀÇ Æ®¸®¸¦ DiffTreeViewer¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. DiffTreeViewer¿¡¼´Â Æ®¸®ÀÇ ³»ºÎ ³ëµå¿¡¼ IDiffContainer ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ°í ±¸ÇöÀ» IDiffElement ÀÎÅÍÆäÀ̽º¿¡°Ô ³²°ÜµÓ´Ï´Ù.
°èÃþÀûÀ¸·Î ±¸Á¶ÈµÈ µ¥ÀÌÅ͸¦ ºñ±³Çϰí Â÷À̸¦ Ç¥½ÃÇϱâ À§ÇÑ ÀϹÝÀûÀÎ ´Ü°è´Â ´ÙÀ½°ú °°½À´Ï´Ù.
StructureDiffViewer´Â À§ ¼¼ ´Ü°è¸¦ ÀÚµ¿ÈÇϴ Ư¼öÇÑ DiffTreeViewerÀÔ´Ï´Ù. ÀÌ Ç¥½Ã±â´Â ºñ±³ÇÒ µÎ °³ ¶Ç´Â ¼¼ °³ÀÇ ÀÔ·Â ¿ä¼Ò¸¦ °Ë»öÇÏ´Â ICompareInput À¯ÇüÀÇ ´ÜÀÏ ÀÔ·Â ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ Ç¥½Ã±â´Â IStructureCreator¸¦ »ç¿ëÇÏ¿© IStructureComparator ¹× IStreamContentAccessor ¿ÀºêÁ§Æ®°¡ ÀÖ´Â Æ®¸®¸¦ ÃßÃâÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ÀÌ Æ®¸®¸¦ Â÷º° ¿£Áø°ú ºñ±³ÇÏ°í °á°ú¸¦ Æ®¸® Ç¥½Ã±â¿¡ Ç¥½ÃÇÕ´Ï´Ù.
ZipFileStructureCreator´Â IStructureCreator ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ̰í, Â÷º° ¿£Áø(Â÷º°±â)À» ÅëÇØ ½±°Ô ºñ±³ÇÒ ¼ö ÀÖ´Â Zip ¾ÆÄ«À̺êÀÇ ÄÁÅÙÃ÷¸¦ IStructureComparatorÀÇ °èÃþ ±¸Á¶·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ´Â ºñ±³ Ç÷¯±×ÀÎÀÇ °èÃþ ±¸Á¶ ºñ±³ ±â´É¿¡ ±¸Á¶ÈµÈ ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¹æ¹ýÀ» À§ÇÑ ÁÁÀº ¿¹Á¦ÀÔ´Ï´Ù.