IBM Korea Skip to main content
       IBM Ȩ    |  Á¦Ç° & ¼­ºñ½º  |  °í°´Áö¿ø & ´Ù¿î·Îµå  |  È¸¿ø°¡ÀÔ  

IBM developerWorks > ÀÚ¹Ù
developerWorks

Ç÷§Æû°£ À̽ļº ÀÖ´Â ¿ø½Ã GUI ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÇϱâ
GCJ, ¸®´ª½º, SWT°¡ Çù·ÂÇÏ¿© ÀÚ¹Ù UI ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ý

Level: Intermediate

Kirk Vogen
I/T Àü¹®°¡, IBM Global Services
2002³â 4¿ù

ÀÚ¹Ù ¾ð¾î´Â ¼­¹öÃø°ú ¾ÖÇø´ ºÐ¾ß¿¡¼­ ¶Ñ·ÇÇÑ ¹ßÀüÀ» ÀÌ·èÇßÁö¸¸, ÃÖÁ¾ »ç¿ëÀÚ ¾ÖÇø®ÄÉÀ̼ǿ¡ À־´Â ±×·¸Áö ¸øÇß´Ù. ¸®´ª½º, GNU Compiler for Java ¹× Standard Widget ToolkitÀ» »ç¿ëÇϸé ÀÚ¹Ù ¾ð¾î·Î ÇÁ·Î±×·¡¹ÖµÈ ½Å¼ÓÇÑ ¿ø½Ã GUI ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¼ö ÀÖ´Ù. (Windowsµµ ¸ÓÁö ¾Ê¾Ò´Ù). º£Å׶û ÀÚ¹Ù °³¹ßÀÚÀÎ Kirk VogenÀÌ ±× ¹æ¹ýÀ» º¸¿©ÁØ´Ù.

¿ì¸® ¸ðµÎ´Â ÀÚ¹Ù ¾ð¾î°¡ ¼­¹ö¿Í ¾ÖÇø´ ºÐ¾ß¿¡¼­ Å« ¼º°øÀ» °ÅµÎ¾ú´Ù´Â °ÍÀ» ¾Ë°í ÀÖÁö¸¸, ÃÖÁ¾ »ç¿ëÀÚ ¾ÖÇø®ÄÉÀÌ¼Ç ºÐ¾ß¿¡¼­´Â ¿Ö Å« ÆòÆÇÀ» ¾òÁö ¸øÇßÀ»±î? ¿©±â¿¡´Â ¸î °¡Áö ÀÌÀ¯°¡ ÀÖ´Ù. ¸ÕÀú, ½ÉÁö¾î´Â ÀÛÀº ¾ÖÇø®ÄÉÀ̼ǿ¡¼­Á¶Â÷ ¼ö ¸Þ°¡¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ°ï ÇÑ´Ù. µÑ°, ÀÚ¹Ù ¾ð¾î¿Í ÇÔ²² Á¦°øµÇ´Â GUI ¶óÀ̺귯¸®´Â Á¾Á¾ ¿ø½Ã ¾ð¾î·Î ±¸ÃàµÈ ¾ÖÇø®ÄÉÀ̼ǰú ´Þ¶ó º¸ÀÌ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾î³½´Ù. µû¶ó¼­ ¿©·¯ºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¾Æ¹«¸® °­·ÂÇÏ°í ¾ÈÁ¤ÀûÀÌ´Ù ÇÏ´õ¶óµµ ¿ø½Ã ¾ÖÇø®ÄÉÀ̼ǿ¡ ºñÇØ ¾î»öÇÏ°í ¼­Åø·¯ º¸ÀÌ´Â ¸ð½ÀÀÌ ´«¿¡ ¶è´Ù

GNU Compiler for Java

¸Þ¸ð¸® ¿ë·® ¹®Á¦·Î ½ÃÀÛÇØ º¸ÀÚ. °¡»ó ¸Ó½ÅÀº ÀÚ¹Ù ¹ÙÀÌÆ®Äڵ带 ½ÇÇà½Ãų ¶§ ¼ö¸¹Àº "ÀÛ¾÷"À» ¼öÇàÇØ¾ß Çϱ⠶§¹®¿¡ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀº Ãß°¡ÀûÀÎ ¸Þ¸ð¸®¸¦ »ç¿ëÇÑ´Ù. ¿À´Ã³¯ÀÇ °í±Þ ÄÄÆÄÀÏ·¯¿¡¼­ ÄÄÆÄÀÏÀº Àû½Ã¿¡ ÀÌ·ç¾îÁö°í ÄÄÆÄÀÏ·¯´Â ´ÙÀ½¿¡ »ç¿ëÇϱâ À§ÇØ Á¤º¸¸¦ ±ÞÈ÷ ij½Ã¿¡ ÀúÀåÇØ¾ß ÇÑ´Ù. ºÐ¸íÈ÷ ¿äÁîÀ½ ¸Þ¸ð¸®°¡ Àú·ÅÇϱâ´Â ÇÏÁö¸¸, ½ÇÇàÁßÀÎ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿©·¯ °³¶ó¸é ´ëÇü ¸Ó½ÅÀÌ¶óµµ Áö¼ÓÀûÀÎ ¸Þ¸ð¸® ÆäÀÌ¡¿¡ ÀÇÇØ ´À·ÁÁú ¼ö ÀÖ´Ù. GNU Compiler for Java (GCJ)À» »ý°¢ÇØ º¸ÀÚ. GCJ´Â ÀÚ¹Ù ¼Ò½º³ª ¹ÙÀÌÆ® Äڵ带 ÃëÇØ À̵éÀ» ¿ø½Ã ¸Ó½Å ÄÚµå·Î ÄÄÆÄÀÏÇÑ´Ù. ¿©·¯ Àڹ٠Ŭ·¡½º¿¡¼­ ³ª¿Â ¸Ó½Å ÄÚµåµéÀº ÇϳªÀÇ ¿ø½Ã ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ÇÔ²² °áÇÕµÉ ¼ö ÀÖ´Ù.

Áö³­ 1¿ù Martyn Honeyford´Â ¿ø½Ã ÄÄÆÄÀÏ°ú GCJ¿¡ ´ëÇØ ¼Ò°³ÇÏ¿´´Ù (Âü°íÀÚ·á). ¿¹Á¦¸¦ ÅëÇØ º¸¿©ÁÖ¾úµíÀÌ, ¿ø½Ã ÄÄÆÄÀÏµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÌ °¡»ó ¸Ó½Å¿¡¼­ ½ÇÇàµÇ´Â ¾ÖÇø®ÄÉÀ̼Ǻ¸´Ù ÈξÀ ÀûÀº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹¾Ò´Ù.

Standard Widget Toolkit

ÀÌ°ÍÀº ¾ÆÁÖ ÈǸ¢ÇÏÁö¸¸, MartynÀÌ ÁöÀûÇßµíÀÌ GCJ´Â ¾ÆÁ÷ AWT³ª SwingÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×·¯¸é ¿ì¸®´Â ¿ø½Ã ÄÄÆÄÀÏµÈ GUI ¾ÖÇø®ÄÉÀ̼ÇÀ» ¾î¶»°Ô ¸¸µé °ÍÀΰ¡? Standard Widget Toolkit (SWT)À» »ý°¢ÇØ º¸ÀÚ. ÀÌ API´Â ¿ÀÇ ¼Ò½º Eclipse Åø Ç÷§ÆûÀÇ ÀϺÎÀÌ´Ù. Swing ´ë SWT ÀüÀïÀ» ÀÏÀ¸Å³ À§ÇèÀ» ¹«¸¨¾²°í (Âü°íÀÚ·á), SWTÀÇ ¸î °¡Áö ÀÌÁ¡À» ¼³¸íÇÏ°Ú´Ù.

SWT´Â AWT°ú SwingÀÇ ´ÜÁ¡À» ¹úÃæÇÏ·Á°í ½ÃµµÇÑ´Ù. AWT¿¡¼­ ¿ì¸®´Â ÃÖ¼Ò °øºÐ¸ð Á¦ÇÑÀ» °¡Áø´Ù. ¸ðµç Ç÷§Æû¿¡¼­ Á¸ÀçÇÏ´Â widget¸¸ Áö¿øµÈ´Ù. µû¶ó¼­, Motif´Â ¿ø½Ã Æ®¸® widgetÀ» Á¦°øÇÏÁö ¾ÊÁö¸¸ Windows´Â Á¦°øÇϱ⠶§¹®¿¡ AWT´Â Æ®¸® widgetÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù.

À©µµ¿ì¿¡¼­ÀÇ GCJ

À©µµ¿ì¿¡¼­ÀÇ GCJ´Â ¾ÆÁ÷ ½ÇÇöµÇÁö ¾Ê¾Ò´Ù. ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ÆÄÀÏ ½Ã½ºÅÛ (¿¹ : FAT¿Í NTFS)°ú °ü·ÃµÈ GCJÀÇ ¹ö±× ¶§¹®¿¡ GCJ´Â ÇöÀç À©µµ¿ì¿¡¼­ ½ÇÇàµÇÁö ¾Ê´Â´Ù. ±×·¯³ª ÈǸ¢ÇÑ Â÷±â ±â´ÉÀÌ GCJ 3.1¿¡¼­ µîÀåÇØ¾ß ÇÑ´Ù. ¸®´ª½º¸¦ »ç¿ëÇÏ¿© ¿©·¯ºÐÀº ¸®´ª½º»ó¿¡¼­ ¿©·¯ºÐÀÇ Äڵ带 ÄÄÆÄÀÏÇÏ°í À©µµ¿ì ¹ÙÀ̳ʸ®µµ ¸¸µé¾î ³»´Â Å©·Î½º ÄÄÆÄÀÏ·¯·Î GCJ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. GCJ 3.1Àº 2002³â 4¿ù 15ÀÏ Ãâ½Ã¸¦ ¸ñÇ¥·Î ÇÏ°í ÀÖ´Ù. ÃֽŠÁøô »çÇ×À» º¸·Á¸é GCJ ȨÆäÀÌÁö¿Í ¸ÞÀϸµ ¸®½ºÆ® (Âü°íÀÚ·á)¸¦ º¸±â ¹Ù¶õ´Ù.

SwingÀº ´Ù¸¥ ±Ø´ÜÀ¸·Î °£´Ù. ÈǸ¢ÇÑ API¸¦ °®Ãß°í ¸ÚÁö°Ô ¼³°èµÇ¾úÁö¸¸ SwingÀº ÀÚüÀûÀ¸·Î widgetÀ» ±¸ÇöÇÑ´Ù. µû¶ó¼­ SwingÀº widgetÀ» Á¦°øÇϱâ À§ÇØ ¿î¿µ üÁ¦¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù. ÀÌ Á¡Àº ¿ø½Ã Áö¿ø°ú °ü°è¾øÀÌ Swing¿¡°Ô ¹ÏÀ» ¼ö ¾øÀ» Á¤µµÀÇ À¯¿¬¼ºÀ» ÁØ´Ù. ±×·¯³ª SwingÀÌ Á÷Á¢ À̵é widgetµéÀ» ÀÛ¼ºÇϱ⠶§¹®¿¡ °á°ú·Î ³ª¿À´Â ¸ð½ÀÀº Á¾Á¾ ¿ø½Ã ¾ÖÇø®ÄÉÀ̼ǰú ´«¿¡ ¶ç°Ô ´Ù¸£´Ù.

SWTÀº ÀÌµé µÎ GUI ÅøŶ °£ÀÇ Â÷À̸¦ ¸Þ¿ì·Á°í ½ÃµµÇÑ´Ù. SWTÀÇ Áø°Ý ¸í·ÉÀº "¿ø½Ã widgetÀÌ ÀÖ´Ù¸é À̸¦ »ç¿ëÇ϶ó. ¾ø´Ù¸é À̸¦ ¿¡¹Ä·¹ÀÌÆ®Ç϶ó"ÀÌ´Ù. ÀÌ ¿¹°¡ ¾Õ¿¡¼­ ¾ð±ÞÇÑ Æ®¸® widgetÀÌ´Ù. À©µµ¿ì´Â ¿ø½Ã tree widgetÀ» Áö¿øÇϱ⠶§¹®¿¡ SWT°¡ À©µµ¿ì¿¡¼­ ½ÇÇàµÉ ¶§´Â À̸¦ »ç¿ëÇÑ´Ù. ±×·¯³ª Motif´Â Æ®¸® widgetÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ Motif ÇÏ¿¡¼­ ½ÇÇàÇÒ ¶§´Â SWT°¡ ÀÚüÀûÀÎ widget ¹öÀüÀ» ÀÛ¼ºÇÑ´Ù. WST¸¦ »ç¿ëÇÑ °á°ú·Î ³ª¿Â ¾ÖÇø®ÄÉÀ̼ÇÀº ¿ø½Ã ¾ÖÇø®ÄÉÀ̼ǰú ¾ÆÁÖ À¯»çÇÑ ¸ð½ÀÀε¥, ¿ø½Ã widgetÀÌ °¡´ÉÇÑ ÇÑ ¸¹ÀÌ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù.

°³¹ß ȯ°æ ±¸¼ºÇϱâ

±×·¸´Ù¸é ¿©·¯ºÐÀº ÀÌ ¸ðµç °ÍÀ» ¿ø½ÃÀûÀ¸·Î ¾î¶»°Ô ÄÄÆÄÀÏÇÒ °ÍÀΰ¡? ¿ì¼± GCJ¸¦ °®Ãá °³¹ß ȯ°æ ±¸¼ºÀÌ ÇÊ¿äÇÏ´Ù. GCJ´Â ¸®´ª½º¿Í ´Ù¸¥ UNIX º¯Á¾ (À©µµ¿ì¿¡¼­ÀÇ GCJÀÇ »óÅ¿¡ ´ëÇؼ­´Â º¸Á¶ÀÚ·á "À©µµ¿ì¿¡¼­ÀÇ GCJ"¸¦ ÂüÁ¶ÇÑ´Ù)¿¡¼­ Áö¿øµÈ´Ù. °³¹ß ȯ°æÀ» ±¸¼ºÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº ¸®´ª½º ¹èÆ÷ÆÇ Áß ÇϳªÀÇ ÃֽŠ¹öÀüÀ» ¼³Ä¡ÇÏ´Â °ÍÀÌ´Ù. Mandrake 8.1¿Í Red Hat 7.2´Â ¸ðµÎ ±¸ÀÔ Áï½Ã ¼³Ä¡µÇ´Â GCJ 3.0.1°ú ÇÔ²² Á¦°øµÈ´Ù. GCJ´Â ¾ÆÁ÷ ¹ßÀüÇÏ°í ÀÖ´Â ´Ü°èÀ̱⠶§¹®¿¡ ¿©·¯ºÐÀº ÃÖ½ÅÀÇ, ±×¸®°í °¡Àå ÈǸ¢ÇÑ ¹öÀü »ç¿ëÀ» °í·ÁÇÏ°í ½ÍÀ» ¼ö ÀÖ´Ù. ³ª´Â ¹öÀü 3.0.3°ú 3.0.4¿¡¼­ Å×½ºÆ®ÇÏ¿´´Ù. GCJ¸¦ ¼öÀÛ¾÷À¸·Î ¼³Ä¡ÇÏ´Â °ÍÀº ºñ±³Àû ½±´Ù. GCJ ÆäÀÌÁö´Â ÈǸ¢ÇÑ ¹®¼­¸¦ Á¦°øÇÑ´Ù. (Âü°íÀÚ·á)

ÀÏ´Ü ¿©·¯ºÐÀÌ GCJ¸¦ °®Ãá ȯ°æÀ» °¡Áö°Ô µÇ¸é Eclipse SDK¸¦ ´Ù¿î·Îµå¹Þ¾Æ ¼³Ä¡ÇÑ´Ù. ±×·¯¸é ¿©·¯ºÐÀº SWT ¼Ò½º¿Í ¹ÙÀÌÆ® Äڵ带 ¾ò°Ô µÈ´Ù. Eclipse SDK¸¦ ¼³Ä¡ÇÏ·Á¸é ZIP ÆÄÀÏ (Eclipse SDK¶ó´Â Á¦¸ñÀ» °¡Áø)À» ´Ù¿î·Îµå¹Þ°í ÇÑ µð·ºÅ丮¿¡ ¾ÐÃàÀ» Ç®¸é µÈ´Ù. ³ª´Â /usr/local/eclipseÀ» ÃßõÇÏÁö¸¸, ¾î¶² µð·ºÅ丮¶óµµ ±¦ÂúÀ» °ÍÀÌ´Ù.

ÄÄÆÄÀÏ ½ÃÀÛÇϱâ

°³¹ß ȯ°æÀ» ±¸¼ºÇÑ ÈÄ¿¡ ÄÄÆÄÀÏÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç ÄÄÆÄÀÏÀº ´ëºÎºÐÀÇ SWT ¼Ò½º¿¡¼­ ´ÙÀ½°ú À¯»çÇÑ ¸í·É¹®À» ½ÇÇà½ÃŲ´Ù.


gcj -c MyClass.java -o MyClass.o

SWT ¼Ò½º ÆÄÀÏ Áß ¾à 30°³°¡ ÀÚ¹Ù ¿ø½Ã ÀÎÅÍÆäÀ̽º (JNI)¸¦ »ç¿ëÇÑ´Ù. µû¶ó¼­ ¿ì¸®´Â À̵éÀ» ¾à°£ ´Ù¸£°Ô ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù. (-fjni Ç÷¡±×¿¡ ÁÖ¸ñ):


gcj -fjni -c MyJNIClass.java -o MyJNIClass.o

¸¶Áö¸·À¸·Î, °á°ú·Î ³ª¿Â °´Ã¼ ÆÄÀϵéÀ» ÇϳªÀÇ °øÀ¯µÈ °´Ã¼·Î ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.


gcj -shared -o swt.so MyClass.o MyJNIClass.o ...

SWT ±¸ÃàÇϱâ

ÀÌ ±Û¿¡¼­ ¿ì¸®´Â SWT¸¦ ÇϳªÀÇ °øÀ¯µÈ °´Ã¼·Î ÄÄÆÄÀÏÇÏ°í ÀÌ °´Ã¼¸¦ ¿ì¸®ÀÇ °á°ú ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ µ¿ÀûÀ¸·Î ÂüÁ¶ÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐÀº SWT¸¦ ¿©·¯ºÐÀÇ ÄÚµå¿Í ÇÔ²² ½ÇÇà ÆÄÀÏ·Î ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ ÁÖÀÇÇØ¾ß ÇÏÁö¸¸ ÀÌ ±ÛÀÇ ¹üÀ§»ó ¿ì¸®´Â °øÀ¯ °´Ã¼¿¡ ÁýÁßÇÒ °ÍÀÌ´Ù. ÀÚ½ÅÀÇ À̸§ÀÌ °¡¸®Å°µíÀÌ °øÀ¯µÈ °´Ã¼´Â °øÀ¯°¡ °¡´ÉÇÏ´Ù´Â ÁÖ¿ä ÀÌÁ¡À» °¡Áö°í ÀÖ´Ù. ¾ÖÇø®ÄÉÀ̼ǵéÀº ¸ðµÎ ·±Å¸Àӽÿ¡ µ¿ÀÏÇÑ °´Ã¼¸¦ µ¿ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±× °á°ú ³ª¿À´Â ½ÇÇà ÆÄÀÏÀÇ »çÀÌÁî´Â ÈξÀ ÀÛÀ» °ÍÀÌ´Ù.

¼Ò½º ÄÚµå ´Ù¿î·ÎµåÆÇ¿¡ Æ÷ÇԵǾî ÀÖ´Â Ant BuildfileÀ» »ç¿ëÇÏ¿© ¿ì¸®´Â SWT¸¦ ÀÚµ¿À¸·Î ÄÄÆÄÀÏÇÒ °ÍÀÌ´Ù. ÀÌ ÆÄÀÏÀº µÎ °³ÀÇ ÁÖ¿ä »çÇ×À» °¡Áö°í ÀÖ´Ù. ¿ì¼±, SWT ¼Ò½º Äڵ忡 µÎ °³ÀÇ ÆÐÄ¡¸¦ Àû¿ëÇÑ´Ù (¸î °³ÀÇ ÀÛÀº ÄÄÆÄÀÏ·¯ ¿¡·¯ ¶§¹®¿¡ ¼¼ °³ÀÇ SWT ÆÄÀÏÀÌ GCJ¿Í ÄÄÆÄÀϵÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, int x, y, x1, y1¸¦ ÇÑ Çà¿¡ µÎ·Á ÇÏÁö ¾Ê°í ¿©·¯ °³ÀÇ ÇàÀ¸·Î ³ª´©¾î¾ß ÇÑ´Ù. ÀÌ °æ¿ì ÀÌ ¼¼ ¼Ò½º ÆÄÀϵéÀ» ±â´ÉÀûÀ¸·Î µ¿ÀÏÇÏ°Ô ¸¸µé±â À§ÇÑ ÀÛÀº ÆÐÄ¡°¡ Àû¿ëµÈ´Ù. ¾Õ¿¡¼­ ¾ð±ÞÇßµíÀÌ, GCJ´Â ¾ÆÁ÷ ¹ßÀüÁßÀÌ´Ù. ÀÌµé ¹ö±×´Â ½Ã°£ÀÌ Áö³²¿¡ µû¶ó ¾ø¾îÁ®¾ß ÇÑ´Ù). µÑ°, buildfileÀº Á¦°øµÈ makefileÀ» »ç¿ëÇÏ¿© make¸¦ È£ÃâÇÑ´Ù.

Listing 1¿¡¼­ º¸¿©ÁöµíÀÌ, Ant buildfileÀº Ant 1.3°ú Ant 1.4.1¿¡¼­ Å×½ºÆ®µÇ¾ú´Ù. ¾Æ·¡ Listing¿¡¼­´Â °ø°£¿¡ ¿©À¯¸¦ µÎ±â À§ÇØ ÁÖ¼®À» »èÁ¦ÇßÀ½¿¡ ÁÖÀÇÇÑ´Ù. ±×·¯³ª ´Ù¿î·ÎµåÆÇ¿¡¼­´Â ¿ÏÀüÇÑ Äڵ带 ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.

±¸ÃàÆÇÀ» ½ÇÇà½ÃÅ°·Á¸é ´ÙÀ½ ´Ü°èµéÀ» µû¸¥´Ù.

  1. Ant¸¦ ¼³Ä¡ÇÑ´Ù. (Ant¿¡ ´ëÇÑ Ãß°¡ Á¤º¸´Â Âü°íÀÚ·á ÂüÁ¶)

  2. ÀÌ ±ÛÀÇ ¼Ò½º ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ°í ÇÑ µð·ºÅ丮¿¡ ¾ÐÃàÀ» Ǭ´Ù. ¼Ò½º ÆÄÀÏ¿¡´Â buildfile, ÆÐÄ¡ ¹× °ü·Ã makefileÀÌ µé¾î ÀÖ´Ù.

  3. SWT µð·ºÅ丮¸¦ Ç×ÇØÇÏ°í ant¸¦ ÀÔ·ÂÇÑ´Ù. buildfileÀº ¿©·¯ºÐÀÌ usr/local/eclipse¿¡ Eclipse¸¦ ¼³Ä¡Çß´Ù°í °¡Á¤ÇÑ´Ù. ¿©·¯ºÐÀÌ ´Ù¸¥ µð·ºÅ丮¿¡ Eclipse¸¦ ¼³Ä¡Çß´Ù¸é ant -Declipse_install_dir=your_directory¸¦ ÀÔ·ÂÇϴµ¥, ¿©±â¼­ your_directory ¿¡ ¿©·¯ºÐÀÌ Eclipse¸¦ ¼³Ä¡ÇÑ µð·ºÅ丮¸¦ ÁöÁ¤ÇÑ´Ù.

ÁÖÀÇ: Ant buildfileÀ» »ç¿ëÇÏ°í ½ÍÁö ¾Ê´Ù¸é SWT ¼Ò½º ÄÚµå¿Í ¹ÙÀÌÆ®ÄÚµåÀÇ ¾ÐÃàÀ» ¼öÀÛ¾÷À¸·Î Ç®°í ¼Ò½º Äڵ忡 µé¾î ÀÖ´Â ¼¼ °³ÀÇ ÆÐÄ¡¸¦ Unix ÆÐÄ¡ ¸í·É¾î·Î Àû¿ëÇÑ´Ù (.patch ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿©). ±×¸®°í makefileÀ» ½ÇÇà½ÃŲ´Ù.

Listing 1. Ant buildfile

<project name="BuildEclipse" default="cleanup">

  <!--
  The following properties can be overridden at the command-line.

    e.g. ant -Declipse_install_dir=/usr/local/eclipse
  -->
  <property name="eclipse_install_dir" value="/usr/local/eclipse"/>
  <property name="temp_dir" value="build_temp"/>
  <property name="shared_object_name" value="swt.so"/>


  <target name="init">
    <mkdir dir="${temp_dir}"/>
  </target>

  <target name="unpack" depends="init">
    <unzip src="${eclipse_install_dir}/plugins/org.eclipse.swt/swtsrc.zip"
           dest="${temp_dir}"/>
    <unjar src="${eclipse_install_dir}/plugins/org.eclipse.swt/swt.jar"
           dest="${temp_dir}"/>
  </target>

  <target name="patch" depends="unpack">
    <patch patchfile="TabFolder.patch"
           originalfile="${temp_dir}/org/eclipse/swt/widgets/TabFolder.java"/>
    <patch patchfile="Widget.patch"
           originalfile="${temp_dir}/org/eclipse/swt/widgets/Widget.java"/>
    <patch patchfile="TreeEditor.patch"/>
    <move file="TreeEditor.java" todir="${temp_dir}/org/eclipse/swt/custom"/>
  </target>

  <target name="make" depends="patch">
    <execon executable="touch">
      <fileset dir="${temp_dir}" includes="**/*.java" excludes="**/*.class"/>
    </execon>
    <execon executable="touch">
      <fileset dir="${temp_dir}" includes="**/*.class" excludes="**/*.java"/>
    </execon>
    <copy file="Makefile" todir="${temp_dir}"/>
    <exec executable="make" dir="${temp_dir}">
      <arg line="-f Makefile"/>
    </exec>
  </target>

  <target name="cleanup" depends="make">
    <move file="${temp_dir}/${shared_object_name}" todir="."/>
    <delete dir="${temp_dir}"/>
  </target>

</project>

¾ÖÇø®ÄÉÀÌ¼Ç »ý¼ºÇϱâ

ÀÌÁ¦ ¿©·¯ºÐÀº SWT¸¦ °øÀ¯µÈ °´Ã¼·Î ±¸ÃàÇ߱⠶§¹®¿¡ »ùÇà ¾ÖÇø®ÄÉÀÌ¼Ç »ç¿ëÀ» ½ÃµµÇØ º¼ ¼ö ÀÖ´Ù. Listing 2¿¡ ³ª¿Í ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀº °íÀüÀûÀÎ "Hello, World!" ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ´Â °£´ÜÇÑ Ã¢À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

Listing 2. Hello, World »ùÇà ¾ÖÇø®ÄÉÀ̼Ç

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;

public class Hello {

    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell(display);
        RowLayout layout = new RowLayout();
        layout.justify = true;
        layout.pack = true;
        shell.setLayout(layout);
        shell.setText("Hello, World!");
        Label label = new Label(shell, SWT.CENTER);
        label.setText("Hello, World!");
        shell.pack();
        shell.open ();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep ();
        }
       display.dispose ()

ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÄÄÆÄÀÏÇÏ·Á¸é ´ÙÀ½ ´Ü°èµéÀ» µû¸¥´Ù.

  1. ¿©·¯ºÐÀÇ SWT °øÀ¯ °´Ã¼ (swt.so)¸¦ Hello World µð·ºÅ丮¿¡ º¹»çÇÏ°í ´ÙÀ½ ¸í·É¹®À» ÀÔ·ÂÇÑ´Ù. (/usr/local/eclipse¿ÜÀÇ µð·ºÅ丮¿¡ Eclipse SDK ¸¦ ÀÔ·ÂÇß´Ù¸é ÀØÁö ¸»°í À̸¦ ¿©·¯ºÐÀÇ µð·ºÅ丮¸íÀ¸·Î ¹Ù²Û´Ù.)

    
    gcj -CLASSPATH=/usr/local/eclipse/plugins/org.eclipse.swt/swt.jar 
      -c Hello.java -o Hello.o
    
    gcj -main=Hello -o Hello Hello.o swt.so
    


  2. ´ÙÀ½ ¸í·É¹®À» »ç¿ëÇÏ¿© ¿©·¯ºÐÀÇ ¶óÀ̺귯¸® °æ·Î¸¦ ¼³Á¤ÇÑ´Ù (¿©·¯ºÐÀÌ bash ¼¿À» »ç¿ëÇÏ°í ÀÖ´Ù°í °¡Á¤ÇÏ°í).

    
    export LD_LIBRARY_PATH=
      .:/usr/local/eclipse:/usr/local/eclipse/plugins/org.eclipse.swt/ws/motif
    


  3. ./Hello¸¦ ÀÔ·ÂÇÏ°í, ¿ø½Ã ÄÄÆÄÀÏµÈ GUI ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿©·¯ºÐ È­¸é¿¡ µîÀåÇÏ´Â °ÍÀ» ÁöÄѺ»´Ù.

ÀÌ ±ÛÀÇ ¼Ò½º ÄÚµå´Â ÀÌ ÀýÂ÷¸¦ ÀÚµ¿È­ÇÏ´Â makefileÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.

Àü¸Á

À©µµ¿ì ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÄÆÄÀÏÀÌ °ÅÀÇ Çö½ÇÈ­µÇ°í ÀÖ°í (º¸Á¶ÀÚ·á "À©µµ¿ì¿¡¼­ÀÇ GCJ" ÂüÁ¶), SWT°¡ ÇöÀç ¸®´ª½º/Motif ¹× À©µµ¿ì¿¡¼­¸¸ Áö¿øµÇ°í ÀÖÁö¸¸ SWT¸¦ ¸®´ª½º »óÀÇ GTK/GNOME¿¡ Æ÷ÆÃÇÏ·Á´Â È°¹ßÇÑ °³¹ß ÀÛ¾÷ÀÌ ÁøÇà ÁßÀÌ´Ù. SWT´Â ¶ÇÇÑ AIX¿Í Solaris »óÀÇ Motif¿¡¼­µµ ÀÛµ¿ÇÏÁö¸¸, ±¤¹üÀ§ÇÏ°Ô Å×½ºÆ®µÇÁö ¾Ê¾Ò´Ù. ¸¶Áö¸·À¸·Î, Windows CE, QNX ¹× ¸ÅŲÅä½Ã Æ÷Æ®¿¡ ´ëÇؼ­µµ ÀϺΠÀÛ¾÷ÀÌ ÁøÇà ÁßÀÌÁö¸¸, ÇöÀç ½ÃÁ¡¿¡¼­ ÁÖ¿ä Æ÷Ä¿½º´Â ´Ù¸¥ Ç÷§Æûµé¿¡ ÁÖ¾îÁö°í ÀÖ´Â °ÍÀ¸·Î º¸ÀδÙ. ´Ù¾çÇÑ SWT Æ÷Æ®ÀÇ Áøô »çÇ×À» º¸·Á¸é Âü°íÀڷḦ ÂüÁ¶ÇÑ´Ù.

°á·Ð

¿ì¸® ¸ðµÎ´Â ÀÚ¹Ù ¾ð¾î°¡ ÀϺΠÈǸ¢ÇÑ ±â´ÉÀ» °¡Áö°í ÀÖÀ½À» ¾Ë°í ÀÖ´Ù. ÀÚ¹Ù´Â ¸ÚÁö°í °´Ã¼ ÁöÇâ °³³äÀÇ ÈǸ¢ÇÑ ±¸ÇöÀ» Á¦°øÇÏ¸ç ¸Å¿ì À¯¿ëÇÑ Ç¥ÁØ Å¬·¡½º ¶óÀ̺귯¸®¿Í ÇÔ²² Á¦°øµÈ´Ù. ÀÌ ÀÌÁ¡µéÀ» GCJ ¹× SWT¿Í °áÇÕ½ÃÅ°¸é ÀÚ¹Ù ¾ð¾î´Â ¼­¹ö¿Í À¥ ºê¶ó¿ìÀú¿¡¼­ ÀÚ½ÅÀÇ Åä´ë¸¦ ±¸ÃàÇÏ°í ÃÖÁ¾ »ç¿ëÀÚ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¼°è·Î ÀÌÇàÇϵµ·Ï ÀÚ¸®¸Å±èÇÒ ¼ö ÀÖ´Ù.

Âü°íÀÚ·á

¸ñ Â÷:
GNU Compiler for Java
Standard Widget Toolkit
À©µµ¿ì¿¡¼­ÀÇ GCJ
°³¹ß ȯ°æ ±¸¼ºÇϱâ
SWT ±¸ÃàÇϱâ
¾ÖÇø®ÄÉÀÌ¼Ç »ý¼ºÇϱâ
Àü¸Á
°á·Ð
Âü°í ÀÚ·á
ÇÊÀÚ ¼Ò°³
±â»ç¿¡ ´ëÇÑ Æò°¡
°ü·Ã dW ¸µÅ©:
ÀÚ¹Ù ¿ø½Ã ÄÄÆÄÀÏÀÇ ¹«°Ô Àç±â
Subscribe to the developerWorks newsletter
US ¿ø¹® Àбâ
Also in the Java zone:
Tutorials
Tools and products
Code and components
Articles
ÇÊÀÚ¼Ò°³
Photo of Kirk Vogen Kirk VogenÀº ÇÁ·Î±×·¡¹Ö, ƯÈ÷ ´Ù¾çÇÑ °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡ ¿­ÁßÇØ ÀÖ´Â ÀÚ¹Ù º£Å׶ûÀÌ´Ù. ±×´Â 95³â St. Olaf College¸¦ Á¹¾÷Çß°í, IBM Global Services¿¡¼­ WebSphere¸¦ »ç¿ëÇÑ ÀüÀÚ »ó°Å·¡ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà¿¡ Àü³äÇØ ¿Ô´Ù.
ÀÌ ±â»ç¿¡ ´ëÇÏ¿© ¾î¶»°Ô »ý°¢ÇϽʴϱî?

Á¤¸» ÁÁ´Ù (5) ÁÁ´Ù (4) ±×Àú±×·¸´Ù (3) ¼öÁ¤º¸¿ÏÀÌ ÇÊ¿äÇÏ´Ù(2) ÇüÆí¾ø´Ù (1)

  È¸»ç¼Ò°³  |  °³ÀÎÁ¤º¸ º¸È£Á¤Ã¥  |  ¹ý·ü  |  ¹®ÀÇ