GCJ, ¸®´ª½º, SWT°¡ Çù·ÂÇÏ¿© ÀÚ¹Ù UI ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ý
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¿¡¼´Â °ø°£¿¡ ¿©À¯¸¦ µÎ±â À§ÇØ ÁÖ¼®À» »èÁ¦ÇßÀ½¿¡ ÁÖÀÇÇÑ´Ù. ±×·¯³ª
´Ù¿î·ÎµåÆÇ¿¡¼´Â ¿ÏÀüÇÑ Äڵ带 ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
±¸ÃàÆÇÀ» ½ÇÇà½ÃÅ°·Á¸é ´ÙÀ½ ´Ü°èµéÀ» µû¸¥´Ù.
- Ant¸¦ ¼³Ä¡ÇÑ´Ù. (Ant¿¡ ´ëÇÑ Ãß°¡ Á¤º¸´Â Âü°íÀÚ·á
ÂüÁ¶)
- ÀÌ ±ÛÀÇ ¼Ò½º
ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ°í ÇÑ µð·ºÅ丮¿¡ ¾ÐÃàÀ» Ǭ´Ù. ¼Ò½º ÆÄÀÏ¿¡´Â buildfile, ÆÐÄ¡ ¹× °ü·Ã
makefileÀÌ µé¾î ÀÖ´Ù.
- 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 ()
|
ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÄÄÆÄÀÏÇÏ·Á¸é ´ÙÀ½ ´Ü°èµéÀ» µû¸¥´Ù.
- ¿©·¯ºÐÀÇ 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
|
- ´ÙÀ½ ¸í·É¹®À» »ç¿ëÇÏ¿© ¿©·¯ºÐÀÇ ¶óÀ̺귯¸® °æ·Î¸¦ ¼³Á¤ÇÑ´Ù (¿©·¯ºÐÀÌ bash ¼¿À» »ç¿ëÇÏ°í ÀÖ´Ù°í
°¡Á¤ÇÏ°í).
export LD_LIBRARY_PATH=
.:/usr/local/eclipse:/usr/local/eclipse/plugins/org.eclipse.swt/ws/motif
|
./Hello ¸¦ ÀÔ·ÂÇÏ°í, ¿ø½Ã ÄÄÆÄÀÏµÈ GUI ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿©·¯ºÐ
ȸ鿡 µîÀåÇÏ´Â °ÍÀ» ÁöÄѺ»´Ù.
ÀÌ ±ÛÀÇ ¼Ò½º
ÄÚµå´Â ÀÌ ÀýÂ÷¸¦ ÀÚµ¿ÈÇÏ´Â makefileÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
Àü¸Á
À©µµ¿ì ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÄÆÄÀÏÀÌ °ÅÀÇ Çö½Çȵǰí ÀÖ°í (º¸Á¶ÀÚ·á "À©µµ¿ì¿¡¼ÀÇ GCJ" ÂüÁ¶), SWT°¡
ÇöÀç ¸®´ª½º/Motif ¹× À©µµ¿ì¿¡¼¸¸ Áö¿øµÇ°í ÀÖÁö¸¸ SWT¸¦ ¸®´ª½º »óÀÇ GTK/GNOME¿¡ Æ÷ÆÃÇÏ·Á´Â
È°¹ßÇÑ °³¹ß ÀÛ¾÷ÀÌ ÁøÇà ÁßÀÌ´Ù. SWT´Â ¶ÇÇÑ AIX¿Í Solaris »óÀÇ Motif¿¡¼µµ ÀÛµ¿ÇÏÁö¸¸,
±¤¹üÀ§ÇÏ°Ô Å×½ºÆ®µÇÁö ¾Ê¾Ò´Ù. ¸¶Áö¸·À¸·Î, Windows CE, QNX ¹× ¸ÅŲÅä½Ã Æ÷Æ®¿¡ ´ëÇؼµµ ÀϺΠÀÛ¾÷ÀÌ
ÁøÇà ÁßÀÌÁö¸¸, ÇöÀç ½ÃÁ¡¿¡¼ ÁÖ¿ä Æ÷Ä¿½º´Â ´Ù¸¥ Ç÷§Æûµé¿¡ ÁÖ¾îÁö°í ÀÖ´Â °ÍÀ¸·Î º¸ÀδÙ. ´Ù¾çÇÑ SWT Æ÷Æ®ÀÇ
Áøô »çÇ×À» º¸·Á¸é Âü°íÀڷḦ
ÂüÁ¶ÇÑ´Ù.
°á·Ð
¿ì¸® ¸ðµÎ´Â ÀÚ¹Ù ¾ð¾î°¡ ÀϺΠÈǸ¢ÇÑ ±â´ÉÀ» °¡Áö°í ÀÖÀ½À» ¾Ë°í ÀÖ´Ù. ÀÚ¹Ù´Â ¸ÚÁö°í °´Ã¼ ÁöÇâ °³³äÀÇ
ÈǸ¢ÇÑ ±¸ÇöÀ» Á¦°øÇÏ¸ç ¸Å¿ì À¯¿ëÇÑ Ç¥ÁØ Å¬·¡½º ¶óÀ̺귯¸®¿Í ÇÔ²² Á¦°øµÈ´Ù. ÀÌ ÀÌÁ¡µéÀ» GCJ ¹× SWT¿Í
°áÇÕ½ÃÅ°¸é ÀÚ¹Ù ¾ð¾î´Â ¼¹ö¿Í À¥ ºê¶ó¿ìÀú¿¡¼ ÀÚ½ÅÀÇ Åä´ë¸¦ ±¸ÃàÇÏ°í ÃÖÁ¾ »ç¿ëÀÚ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¼°è·Î ÀÌÇàÇϵµ·Ï
ÀÚ¸®¸Å±èÇÒ ¼ö ÀÖ´Ù.
Âü°íÀÚ·á
|