ÃÖ¼Ò Ç÷¯±×ÀÎ

¿ì¸®´Â »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º³ª ±âŸ ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÌÀüÀÇ ÀÏ¹Ý Java¿¡¼­ "Hello World"°¡ ¾î¶»°Ô Ç¥½ÃµÇ´ÂÁö ¾Ë°í ÀÖ½À´Ï´Ù.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Eclipse Ç÷§Æû ÄÁÅØ½ºÆ®¿¡¼­´Â ÀÌ ÀÌÀü Ç¥ÁØÀÌ ¾î¶»°Ô µÉ±î¿ä? Hello World¸¦ ¿ÏÀüÇÑ ÇÁ·Î±×·¥À¸·Î »ý°¢ÇÏÁö ¸»°í Ç÷§Æû È®ÀåÀ¸·Î »ý°¢ÇϽʽÿÀ. Hello World¸¦ ÀÛ¼ºÇÏ·Á¸é Workbench¸¦ È®ÀåÇÏ´Â ¹æ¹ýÀ» ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù.

Ç÷§Æû »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±¸¼º¿ä¼Ò¿¡ ´ëÇØ Á¡Á¡ ¸¹ÀÌ ¾Ë¼ö·Ï Workbench UI¸¦ È®ÀåÇÏ°í »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» öÀúÈ÷ °ËÅäÇÏ°Ô µË´Ï´Ù. Áö±ÝÀº °¡Àå ´Ü¼øÇÑ Workbench È®ÀåÀÇ ÇϳªÀÎ "º¸±â"·Î ½ÃÀÛÇÕ´Ï´Ù. 

Workbench âÀ» ¿©·¯ ºñÁÖ¾ó ÆÄÆ®¸¦ Á¦°øÇÏ´Â ÇÁ·¹ÀÓÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÄÆ®´Â µÎ °³ÀÇ ÁÖ¿ä Ä«Å×°í¸®ÀÎ º¸±â¿Í ÆíÁý±â·Î ³ª´· ¼ö Àִµ¥,  ÆíÁý±â¿¡ ´ëÇØ¼­´Â ³ªÁß¿¡ »ìÆì º¸°Ú½À´Ï´Ù.  º¸±â´Â »ç¿ëÀÚ°¡ Workbench¿¡¼­ ÀÛ¾÷ÇÏ´Â ÀϺΠ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ Workbench¿¡¼­ ¼­·Î ´Ù¸¥ ¿ÀºêÁ§Æ®¸¦ ¼±ÅÃÇÏ¸é º¸±â°¡ ÄÁÅÙÃ÷¸¦ º¯°æÇÏ´Â °æ¿ìµµ ¸¹½À´Ï´Ù.

Hello world º¸±â

Hello world Ç÷¯±×ÀÎÀÇ °æ¿ì, °íÀ¯ÀÇ º¸±â¸¦ ±¸ÇöÇÏ¿© "Hello World"¸¦ ÀÛ¼ºÇØ º¾´Ï´Ù.

org.eclipse.ui ÆÐŰÁö ¹× ¼­ºêÆÐŰÁö¿¡´Â Workbench UI(User Interface) API¸¦ Á¤ÀÇÇÏ´Â °ø¿ë ÀÎÅÍÆäÀ̽º°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º Áß ´Ù¼ö¿¡´Â ½Ã½ºÅÛ¿¡ ÀÏ¹Ý ¼öÁ¤»çÇ×À» Á¦°øÇϱâ À§ÇØ È®ÀåÇÒ ¼ö ÀÖ´Â ±âº» ±¸Çö Ŭ·¡½º°¡ ÀÖ½À´Ï´Ù. Hello world ¿¹¿¡¼­´Â 'hello'¶ó°í ÀλçÇÏ´Â ·¹À̺íÀ» Á¦°øÇϱâ À§ÇØ Workbench º¸±â¸¦ È®ÀåÇÕ´Ï´Ù.

Èï¹Ì·Î¿î ÀÎÅÍÆäÀ̽º´Â IViewPart·Î, Workbench¿¡ º¸±â¸¦ Á¦°øÇϱâ À§ÇØ ±¸ÇöµÇ¾î¾ß ÇÏ´Â ¸Þ¼Òµå¸¦ Á¤ÀÇÇÕ´Ï´Ù. ViewPart Ŭ·¡½º´Â ÀÌ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ±âº» ±¸ÇöÀ» Á¦°øÇÕ´Ï´Ù. °£´ÜÈ÷ ¸»ÇØ º¸±â ÆÄÆ®´Â º¸±â¸¦ Ç¥½ÃÇÏ´Â µ¥ ÇÊ¿äÇÑ À§ÁöÆ®(widget) ÀÛ¼ºÀ» ´ã´çÇÕ´Ï´Ù.

Workbench¿¡¼­ Ç¥ÁØ º¸±â´Â Á¾Á¾ »ç¿ëÀÚ°¡ ¼±ÅÃÇ߰ųª Ž»ö ÁßÀÎ ÀϺΠ¿ÀºêÁ§Æ® Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. º¸±â´Â Workbench¿¡¼­ ¹ß»ýÇÏ´Â Á¶Ä¡¸¦ ±â¹ÝÀ¸·Î ÄÁÅÙÃ÷¸¦ °»½ÅÇÕ´Ï´Ù. Áö±ÝÀÇ °æ¿ì´Â Hello world¸¸À» ÀÛ¼ºÇϹǷΠº¸±â´Â ¾ÆÁÖ ´Ü¼øÇÕ´Ï´Ù.

package org.eclipse.examples.helloworld;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;

import org.eclipse.ui.part.ViewPart;



public class HelloWorldView extends ViewPart {
    Label label;
    public HelloWorldView() {
    }
    public void createPartControl(Composite parent) {
        label = new Label(parent, SWT.WRAP);
        label.setText("Hello World");
    }
    public void setFocus() {
        // set focus to my widget.  For a label, this doesn't
        // make much sense, but for more complex sets of widgets
        // you would decide which one gets the focus.
    }

}

º¸±â ÆÄÆ®´Â createPartControl ¸Þ¼Òµå¿¡ º¸±â¸¦ Ç¥½ÃÇÒ À§ÁöÆ®(widget)¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ¿¹¿¡¼­´Â SWT ·¹À̺íÀ» ÀÛ¼ºÇÏ¿© ÀÌ ·¹ÀÌºí¿¡ "Hello World" ÅØ½ºÆ®¸¦ ¼³Á¤ÇÏ°Ô µË´Ï´Ù. 

ÄÚµù ºÎºÐÀ» ¿Ï·áÇß½À´Ï´Ù!  »õ Ŭ·¡½º¸¦ ÄÄÆÄÀÏÇÒ ¼ö ÀÖÁö¸¸(Ç÷¯±×ÀÎÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖµµ·Ï IDE ¶Ç´Â ÄÄÆÄÀÏ·¯ ȯ°æ¿¡¼­ Ç÷§Æû JAR ÆÄÀÏÀ» º¼ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.), »õ º¸±â¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀ» ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. 

»õ º¸±â´Â ´ÙÀ½°ú °°ÀÌ Ç¥½ÃµË´Ï´Ù.

Ç÷§Æû¿¡ ÀÌ º¸±â¸¦ Ãß°¡ÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä?

Hello world Ç÷¯±×ÀÎ

Ç÷§Æû¿¡ º¸±â¸¦ Á¦°øÇÏ·Á ÇÑ´Ù´Â »ç½ÇÀ» ¾Ë·Á¾ß ÇÕ´Ï´Ù. À̰ÍÀº org.eclipse.ui.views È®ÀåÁ¡À» È®ÀåÇÏ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÚµåÀÇ À§Ä¡, Ãß°¡ÇÏ´Â È®Àå µî Ç÷¯±×ÀÎÀ» ¼³¸íÇÏ´Â Manifest ÆÄÀÏ(plugin.xml)À» Á¦°øÇÏ¿© È®ÀåÁ¡À» µî·ÏÇÕ´Ï´Ù.

<?xml version="1.0" ?>
<plugin
    name="Hello World Example" 
    id="org.eclipse.examples.helloworld"
    version="1.0"
    provider-name="Object Technology International, Inc.">
    <requires>
        <import plugin="org.eclipse.ui" />
    </requires>
    <runtime>
        <library name="helloworld.jar" />
    </runtime>
    <extension point="org.eclipse.ui.views">
        <category 
            id="org.eclipse.examples.helloworld.hello"
            name="Hello" />
        <view 
            id="org.eclipse.examples.helloworld.helloworldview"
            name="Hello Greetings"
            category="org.eclipse.examples.helloworld.hello"
            class="org.eclipse.examples.helloworld.HelloWorldView" />
    </extension>
</plugin>

ÀÌ ÆÄÀÏ¿¡¼­ Ç÷¯±×ÀÎÀÇ À̸§, ID, ¹öÀü ¹× Á¦°ø¾÷ü À̸§À» Á¤ÀÇÇÕ´Ï´Ù.

Çʼö Ç÷¯±×Àεµ ³ª¿­ÇÕ´Ï´Ù. Ç÷¯±×Àο¡¼­ SWT API¿Í Workbench¸¦ »ç¿ëÇϹǷΠorg.eclipse.uiµµ ³ª¿­ÇØ¾ß ÇÕ´Ï´Ù. ½ÇÇà °¡´É ÄÚµå À§Ä¡µµ ¼³¸íÇØ¾ß ÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡¼­´Â Äڵ带 helloworld.jar·Î ÆÐŰÁöÈ­ÇÕ´Ï´Ù.

¸¶Áö¸·À¸·Î, Ç÷¯±×ÀÎÀÌ Á¦°øÇÏ´Â È®ÀåÁ¡À» ¼±¾ðÇÕ´Ï´Ù. org.eclipse.ui.views È®Àå¿¡´Â ¼­·Î ´Ù¸¥ ¸î °³ÀÇ ±¸¼º ¸Å°³º¯¼ö°¡ ÀÖ½À´Ï´Ù. Manifest¿¡ ÁöÁ¤ÇÑ ¸Å°³º¯¼ö¸¦ °ËÅäÇϰڽÀ´Ï´Ù.

¸ÕÀú, º¸±â È®ÀåÀÇ Ä«Å×°í¸®¸¦ ¼±¾ðÇÕ´Ï´Ù. Ä«Å×°í¸®´Â Workbench º¸±â Ç¥½Ã ´ëÈ­ »óÀÚ¿¡¼­ °ü·Ã º¸±â¸¦ ÇÔ²² ±×·ìÈ­ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. °íÀ¯ Ä«Å×°í¸® "Hello"¸¦ Á¤ÀÇÇÏ¿© ±× Ä«Å×°í¸®°¡ °íÀ¯ÀÇ ±×·ì¿¡¼­ Ç¥½ÃµÇµµ·Ï ÇÕ´Ï´Ù.

º¸±âÀÇ °íÀ¯ ID¸¦ ¼±¾ðÇϰí, º¸±â ±¸ÇöÀ» Á¦°øÇϴ Ŭ·¡½º À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. º¸±â Ç¥½Ã ´ëÈ­ »óÀÚ¿Í º¸±â Á¦¸ñ Ç¥½ÃÁÙ¿¡ Ç¥½ÃµÉ º¸±â À̸§("Hello Greetings")µµ ÁöÁ¤ÇÕ´Ï´Ù.

Ç÷¯±×ÀÎ ID

Ç÷¯±×ÀÎ Manifest ÆÄÀÏ¿¡¼­´Â ¿©·¯ °³ÀÇ ID°¡ »ç¿ëµË´Ï´Ù. °³º° È®ÀåÁ¡Àº Á¾Á¾ ID(¿¹: º¸±â È®ÀåÁ¡¿¡ ´ëÇØ À§¿¡¼­ »ç¿ëµÈ Ä«Å×°í¸® ID)°¡ ÇÊ¿äÇÑ ±¸¼º ¸Å°³º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. Ç÷¯±×ÀÎ IDµµ Á¤ÀÇÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î, ¼³Ä¡µÈ ¸ðµç Ç÷¯±×ÀÎ °£¿¡ °íÀ¯¼ºÀ» À¯ÁöÇϵµ·Ï ÇÏ·Á¸é ¸ðµç ID¿¡ Java ÆÐŰÁö À̸§ Á¢µÎºÎ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. 

Á¢µÎºÎ ´ÙÀ½¿¡ »ç¿ëÇϴ ƯÁ¤ À̸§Àº »ç¿ëÀÚ°¡ ÀÓÀÇ·Î Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª Ç÷¯±×ÀÎ ID Á¢µÎºÎ°¡ »ç¿ëÀÚÀÇ ÆÐŰÁö Á¢µÎºÎ¿Í Á¤È®È÷ µ¿ÀÏÇÑ À̸§ÀÏ °æ¿ì, ÇØ´ç ÆÐŰÁö¿¡¼­ Ŭ·¡½º À̸§À» »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.   ±×·¸Áö ¾ÊÀ¸¸é ID À̸§ÀÎÁö Ŭ·¡½º À̸§ÀÎÁö ±¸ºÐÇÏ±â ¾î·Æ½À´Ï´Ù. 

¼­·Î ´Ù¸¥ È®ÀåÀÚ ±¸¼º ¸Å°³º¯¼ö¿¡ µ¿ÀÏÇÑ ID¸¦ »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù. À§ÀÇ Manifest¿¡¼­, °øÅë ID Á¢µÎºÎ(org.eclipse.examples.helloworld)¸¦ »ç¿ëÇßÁö¸¸ ¸ðµç ID´Â °íÀ¯ÇÕ´Ï´Ù.  ÀÌ À̸§ ÁöÁ¤ Á¢±Ù¹æ¹ýÀº ÆÄÀÏÀ» ÀÐ¾î °ü·ÃµÈ ID¸¦ ÆÄ¾ÇÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù.