|
2005³â 8¿ù¿¡ Ãâ½ÃµÈ ÀÌÈÄ ¼Ö¶ó¸®½º´Â Ä¿´Ù¶õ ¹ÝÇâÀ» ºÒ·¯ÀÏÀ¸ÄÑ ¿Ô½À´Ï´Ù. 600¸¸°Ç ÀÌ»óÀÇ µî·ÏµÈ ´Ù¿î·Îµå °Ç¼ö¸¦ ±â·ÏÇØ ¿Â ¼Ö¶ó¸®½º´Â µ¥½ºÅ©Å¾ °³¹ßÀÚµéÀÌ ±×µéÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ°í ¹èÄ¡Çϴ Ÿ°ÙÁß¿¡ Çϳª·Î °í·Á µÇ°í ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¼º°øÀº ¼Ö¶ó¸®½º¿¡ Æ÷ÇÔµÈ ±â´ÉÀÎ Á¸, Dtrace, ÀÚ°¡¿¹Ãø ±â´É, ¹× ZFS °°Àº ÃÖ½ÅÀÇ ±â¼úÀûÀÎ Çõ½Å¿Ü¿¡ ¼Ö¶ó¸®½ºÀÇ ¿ÀǼҼÒȰ¡ ¹Ø¹ÙÅÁÀÌ µÇ°í ÀÖ½À´Ï´Ù.
°³¹ßÀÚµéÀº ¾î¶°ÇÑ µ¥½ºÅ©Å¾¿¡ ¾îÇø®ÄÉÀ̼ÇÀ» ¹èÄ¡ ÇÒ±î¿ä? ¾Æ¸¶ ¼Ö¶ó¸®½º10 ¿¡¼ ¿À·¡µ¿¾È »ç¿ëµÇ´ø CDE¸¦ ´ëüÇÑ »õ·Î¿î µ¥½ºÅ©Å¾ÀÎ GNOME¿¡ ¹èÄ¡ÇÒ °ÍÀÔ´Ï´Ù. GNOME Àº Çö´ëÀûÀÎ µ¥½ºÅ©Å¾À¸·Î½á °³¹ßÀÚµéÀÇ ±×µéÀÇ best-of-breed µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» º¸¿©ÁÙ ¼ö ÀÖµµ·Ï µµ¿ÍÁÙ °ÍÀÔ´Ï´Ù.
GNOME Ä¿¹Â´ÏƼ´Â µ¥½ºÅ©Å¾ °³¹ßÀÚµéÀ» ²ø¾îµéÀ̱â À§ÇØ C ¿ÜÀÇ ´Ù¸¥ °³¹ß ¼ö´ÜÀ» Á¦°øÇÒ ¼ö ÀÖ¾î¾ß ÇÔ¿¡ ´ëÇØ ÀüüÀûÀ¸·Î °ø°¨Çϰí ÀÖ½À´Ï´Ù. C´Â »ó´ëÀûÀ¸·Î Àú¼öÁØÀÌ°í ³ÊÃ÷-¿Í-º¼Æ® ÇüÅÂÀÇ ¾ð¾î·Î½á Çö´ëÀÇ °´Ã¼ÁöÇâ ¾ð¾î°¡ Á¦°øÇϰí ÀÖ´Â ÀÎÅÍÆäÀ̽º ±â¹ÝÀÇ ÇÁ·Î±×·¡¹Ö, ÀÚµ¿ÈµÈ ¸Þ¸ð¸® °ü¸®, ¿¹¿Ü ó¸® °°Àº »ý»ê¼º°ú °ü·ÃµÈ ±â´ÉµéÀ» Æ÷ÇÔÇϰí ÀÖÁö ¾Ê½À´Ï´Ù. ¿©·¯ºÐÀÌ »ìÆìº¸°ÔµÉ ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â Çö´ë¿¡¼ »ç¿ëµÇ°í ÀÖ´Â ¾ð¾îÁß °¡Àå ¼º°øÀûÀÎ °´Ã¼ÁöÇâ ¾ð¾îÀÎ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î GPL ¶óÀ̼¾½º ÇÏ¿¡ ¿ÀÇÁ¼Ò½ºÈµÆ°í Àα⵵°¡ °è¼ÓÇØ¼ »ó½ÂÇϰí ÀÖ½À´Ï´Ù. ¶ÇÇÑ ¾Õ¿¡¼ ¾ð±ÞÇÑ ¾ð¾îÀûÀÎ Ãø¸é ¿Ü¿¡µµ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â, ƯÈ÷ ÀÚ¹Ù °³¹ß ŰƮ(JDK)´Â ¹æ´ëÇÑ ¾çÀÇ °ß°íÇÑ ÀÚ¹Ù Ç÷§Æû API¸¦ Á¦°øÇÔÀ¸·Î½á °³¹ßÀÚµéÀÌ Çö´ë ¾îÇø®ÄÉÀ̼ǵéÀÌ ´Ù·ç¾î¾ß ÇÒ ´Ù¾çÇÑ µ¥ÀÌŸ ½ºÆ®¸², XML µ¥ÀÌŸ ¼Ò½º ÆÄ½Ì, ³×Æ®¿öÅ© ÀÛ¾÷ °°Àº UI¿Í °ü·Ã¾ø´Â ÀÛ¾÷µéÀÇ °³¹ßµéµµ ¸Å¿ì ½±°Ô ÇÒ ¼ö ÀÖµµ·Ï µµ¿Í ÁÝ´Ï´Ù.
95 ÆÛ¼¾Æ® ÀÌ»óÀÇ GNOME µ¥½ºÅ©Å¾ ÀÌ C·Î ¾²¿© Á³°í ¸¹Àº »ç¶÷µéÀÌ Çö´ëÀûÀÎ ½ºÅ¸ÀÏÀÇ ½ã ½ºÆ©µð¿À³ª NetBeans °°Àº IDEµéÀÇ C/C++ ¸ðµâÀ» ÀÌ¿ëÇØ °è¼ÓÇØ¼ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» C·Î °³¹ß ÇÒ °ÍÀÔ´Ï´Ù., ±×·¯³ª ÀÌ ±ÛÀº ÀÌ·¯ÇÑ Ã»ÁßµéÀ» À§ÇÑ ±ÛÀº ¾Æ´Õ´Ï´Ù. GNOME ÀÇ C ±â¹Ý °³¹ß¿¡ °üÇÑ ¹æ´ëÇÑ ¾çÀÇ ¿Â¶óÀÎ ¹®¼°¡ gnome.org ¿¡¼ Á¦°øµË´Ï´Ù.
ÀÌ ±ÛÀº ÀÚ¹Ù GNOME µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ·Á´Â ÀÚ¹Ù °³¹ßÀÚµéÀ» À§ÇÑ ¼±Åÿ¡ ´ëÇØ °£·«È÷ ¼Ò°³ÇÑ ÈÄ¿¡ ÀÚ¹Ù GNOME ¹ÙÀεùÀ̶ó°í Çϴ ƯÁ¤ ±â¼ú¿¡ ÃÐÁ¡À» ¸ÂÃâ °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¹ÙÀεùÀº GNMOE Ç÷§Æû¿¡ Ä£¼÷ÇÑ °³¹ßÀڵ鿡°Ô ÃÐÁ¡À» ¸ÂÃß°í ÀÖÁö¸¸ C ±â¹ÝÀÇ ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ¿ÏÀüÈ÷ ÀÚ¹Ù·Î ´ëüÇÏ·Á´Â °³¹ßÀڵ鿡°Ô´Â Àû´çÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¹ÙÀεùÀº ¼Ö¶ó¸®½º ÀͽºÇÁ·¹½º °³¹ßÀÚ ¿¡µð¼Ç 2/07 ÀÇ ÀϺηνá Á¦°øµË´Ï´Ù.
ÀÚ¹Ù °³¹ßÀÚµéÀÌ ¼Ö¶ó¸®½ºÀÇ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ·Á°í ÇÒ¶§¿¡´Â ±âÁ¸ÀÇ GNOME µ¥½ºÅ©Å¾°ú Àß ÅëÇÕ µÉ¼ö ÀÖ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ÇÀº µ¥½ºÅ©Å¾ Å׸¶¿Í µ¿ÀÏÇÑ ³×ÀÌÆ¼ºê ·è¾Ø ÇÊÀ» °øÀ¯Çؼ ³×ÀÌÆ¼ºê ½Ã½ºÅÛ ´ÙÀ̾ó·Î±×, ³×ÀÌÆ¼ºê ¼³Á¤ ¿£Áø, ±×¸®°í ³×ÀÌÆ¼ºê GNMOE µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ǰú ºñ½ÁÇÏ°Ô µ¿ÀÏÇϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
°³¹ßÀڵ鿡°Ô´Â ¸¹Àº ¼±ÅõéÀÌ Á¸Àç ÇÕ´Ï´Ù. ÀÚ¹Ù Ç÷§ÆûÀÇ ½ºÅÄ´Ùµå ¿¡µð¼Ç(Java SE) ¿¡¼ Á¦°øÇÏ´Â ½ºÀ® ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©, ȤÀº ÀÌŬ¸³½º¿¡¼ Á¦°øÇÏ´Â SWT ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ¹Ì GNOME °³¹ßÀÚÀ̰í Glade/GTK ±â¹Ý °³¹ß¿¡ Ä£¼÷ÇÏ´Ù ÇÏ´õ¶óµµ ¶Ç´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¹è¿ö¾ß ÇϹǷΠÀÌ·¯ÇÑ °ÍÀÌ ½Ã°£³¶ºñ°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹Ù GNOME ¹ÙÀεùÀº ¶Ç ´Ù¸¥ ¼±ÅÃÀ» Á¦°ø ÇÕ´Ï´Ù. À̰ÍÀº GNOME Ç÷§Æû ¶óÀ̺귯¸®¿Í freedesktop.org ÀÇ Cairo 2D µå·ÎÀ× ¿£ÁøÀ» À§ÇÑ ÀÚ¹Ù ¹ÙÀεù ¼ÂÀÔ´Ï´Ù. ¹ÙÀεùÀº GNOME °ú GTK+ ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÚ¹Ù ¾ð¾î·Î ¾²¿©Áú ¼ö ÀÖµµ·Ï Çϰí ÀÚ¹Ù ³×ÀÌÆ¼ºê ÀÎÅÍÆäÀ̽º(JNI) ¸¦ ÀÌ¿ëÇØ¼ ÀÚ¹Ù ¿Í ±â¹Ý GNOME Ç÷§Æû, ±×¸®°í Cairo C ¶óÀ̺귯¸®°¡ ¼·Î ¿¬°á µÉ ¼ö ÀÖµµ·Ï Áö¿ø ÇÕ´Ï´Ù.
°Á¶µÇ¾î¾ß ÇÒ Á¡Àº ÀÚ¹Ù GNOME ¹ÙÀεùÀ» ÀÌ¿ëÇÏ´Â °ÍÀº ½ºÀ®ÀÌ Á¦°øÇÏ´Â ÀÚ¹Ù UI ÇÁ·¹ÀÓ¿öÅ©³ª "write once run anywhere" °°Àº ÀÚ¹ÙÀÇ À¯¿¬ÇÔÀ» Æ÷±âÇØ¾ß ÇÏ´Â °ÍÀ» ÀÇ¹Ì ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ·¯ÇÑ ±â¹Ý GNOME Ç÷§Æû °ú Cairo ¶óÀ̺귯¸®¿ÍÀÇ °°áÇÕ ¶§¹®ÀÔ´Ï´Ù. ±×·¯³ª ¸¸¾à Ãæ½ÇÇÑ ±×¸®°í ³×À̺ñÆ®ÇÑ GNOME ÅëÇÕÀÌ Áß¿äÇÑ ¸ñÀûÀ̶ó¸é À̰ÍÀº ÀûÀýÇÑ ±³È¯Á¶°ÇÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹Ù GNOME ¹ÙÀεùÀº °£´ÜÈ÷ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀÇ °³¹ß¿¡ ¶Ç ´Ù¸¥ ¼±ÅñÇÀ» ÁÝ´Ï´Ù. µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ÀûÀýÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼±ÅÃÇÒ¶§ Ç÷§Æû API/ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇÑ Áö½Ä, Å©·Î½º Ç÷§Æû °ú ³×ÀÌÆ¼ºê ÅëÇÕ ¿ä°Ç Áß¿¡ ¾î¶°ÇÑ Ãø¸é¿¡ ¿ìÀ§¸¦ µÑ°ÍÀÎÁö´Â °³¹ßÀڵ鿡°Ô ´Þ·Á ÀÖ½À´Ï´Ù.
ÀÌ ±ÛÀÇ ³ª¸ÓÁö ºÎºÐÀº ÀÚ¹Ù ±â¼ú-±â¹ÝÀÇ GNOME ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϴµ¥ ÀÌ¿ëµÇ´Â ÀÚ¹Ù GNOME ¹ÙÀεù¿¡ ´ëÇØ ´Ù·ì´Ï´Ù. ¿¹Á¦µéÀº NetBeans IDE ·Î °³¹ß µÇ¾úÁö¸¸ ÀÌŬ¸³½º(Ãßõ µµ¼ ÀÇ ÀÚ¹Ù GNOME µ¥¸ð ¸®½ºÆ® Âü°í) ȤÀº IntelliJ, jEdit, Emacs ȤÀº vi °°Àº IDE¸¦ ÀÌ¿ëÇØ¼ °³¹ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
¾ÕºÎºÐ¿¡¼ ¾ð±ÞÇßÁö¸¸ À̰ÍÀº GNOME °ú GTK+ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ¶§ ÇÊ¿ä·ÎÇÑ ÄÚ¾î ¶óÀ̺귯¸®µéÀ» À§ÇÑ ¹ÙÀεù ¼ÂÀÔ´Ï´Ù. ¹ÙÀεùÀº ÀÚ¹Ù API¸¦ Á¦°øÇؼ Java SE Ç÷§Æû¿¡¼ Áö¿øÇÏ´Â JNI ¸¦ ÅëÇØ¼ ±â¹Ý Ç÷§ÆûÀÇ C API ¿¡ Á¢±ÙÀÌ °¡´ÉÇϵµ·Ï ÇÕ´Ï´Ù. ¹ÙÀεùÀº ¼Ö¶ó¸®½º ÆÐŰÁöÀÇ ¼ÂÀ¸·Î Á¦°ø µË´Ï´Ù. :
ÁÁÀº ¼Ò½ÄÀ¸·Î´Â ÀÌ·¯ÇÑ ¹ÙÀεùÀÇ ¼Ö¶ó¸®½º ÀͽºÇÁ·¹½º, °³¹ßÀÚ ¿¡µð¼Ç 2/07 ºÎÅÍ Æ÷ÇԵǾú´Ù´Â °ÍÀÔˆ•.¤¿ ¼Ö¶ó¸®½º¿¡ ±âº»À¸·Î ¼³Ä¡µÈ ÀÚ¹Ù GNOME ÆÐŰÁö´Â SUNWgnome-base-libs-java, SUNWgnome-libs-java, SUNWgnome-config-java,
±×¸®°í SUNWgnome-terminal-java ÀÔ´Ï´Ù.
NetBeans ´Â °·ÂÇÑ ÀÚ¹Ù±â¹ÝÀÇ IDE·Î netbeans.org ¿¡¼ ´Ù¿î·Îµå °¡´ÉÇÕ´Ï´Ù. ÀÚ¹Ù GNOME °ú NetBeans IDE´Â ÀÚ¹Ù GNOME µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇϴµ¥ °°ÀÌ ÀÌ¿ëµÉ ¼ö ÀÖ°í IDE¸¦ ÀÚ¹Ù GNOME API ¿Í °°ÀÌ ÀÌ¿ëÇØ¼ ¾ÕºÎºÎ³ß¼ ¾ð±ÞÇßµíÀÌ ¿©·¯°¡ÁöÀÇ »ùÇà ÇÁ·Î±×·¥µéÀ» ºôµåÇÒ ¼ö ÀÖ½À´Ï´Ù.
NetBeans IDEÀÇ ÀÚ¹Ù GNOME ¶óÀ̺귯¸®
¾îÇø®ÄÉÀ̼ǿ¡ ¹ÙÀεù¿¡ Á¢±ÙÇϱâ À§Çؼ ¿©·¯ºÐÀº ÀÚ¹Ù GNOME ¶óÀ̺귯¸®¸¦ »ý¼ºÇϰí Ãß°¡Çؼ NetBeans IDE°¡ ¸ðµç ÀÚ¹Ù GNOME API jars, ¼Ò½º jars, Javadoc À» Âü°íÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷ÀÌ ¿Ï·áµÈ ÈÄ¿¡´Â ´Ü¼øÈ÷ ÇØ´ç ¶óÀ̺귯¸®¸¦ »õ·Î¿î ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡½ÃÅ´À¸·Î½á ¾îÇø®ÄÉÀ̼ǿ¡°Ô ¹ÙÀεù¿¡ Á¢±Ù ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Netbeans IDE ¿¡¼ ÀÚ¹Ù GNOME ¶óÀ̺귯¸® ¼³Á¤
´ÙÀ½ÀÇ ´Ü°è¸¦ ÅëÇØ¼ JavaGnomeLib ¸¦ ¿©·¯ºÐµéÀÌ »ç¿ëÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡ ¼öµ¿À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
/usr/share/lib/java ¿¡¼ java-gnome ÀÌ ¼³Ä¡ÇÑ jar ÆÄÀϵéÀ» ¼±ÅÃcairo1.0.jar, gconf2.12.jar, glade2.12.jar, glib0.4.jar, gnome2.12.jar, gtk2.10.jar, vte0.12.jar/usr/share/lib/java/src/java-gnome ¿¡¼ java-gnome ÀÌ ¼³Ä¡ÇÑ ¼Ò½º jars ÆÄÀϵéÀ» ¼±ÅÃcairo1.0-src.jar, gconf2.12-src.jar, glade2.12-src.jar, glib0.4-src.jar, gnome2.12-src.jar, gtk2.10-src.jar, vte0.12-src.jarjavadoc À» Ãß°¡/usr/share/lib/java/javadoc/java-gnome ¿¡¼ java-gnome ÀÌ ¼³Ä¡ÇÑ javadoc À» ¼±ÅÃunder /usr/share/lib/java/javadoc/java-gnomecairo-java-1.0.6, libgconf-java-2.12.5, libgnome-java-2.12.6, libvte-java-0.12.2, glib-java-0.4.0, libglade-java-2.12.7, libgtk-java-2.10.0¼³Á¤À» °£´ÜÈ÷ Çϱâ À§ÇØ ¿ì¸®´Â ÀÚ¹Ù GNOME NetBeans Ç÷¯±×ÀÎÀ» ¸¸µé°í ÀÖ°í OpenSolaris.org ÀÚ¹Ù µ¥½ºÅ©Å¾ ½Ã½ºÅÛ ÇÁ·ÎÁ§Æ®ÆäÀÌÁöÀÇ ´Ù¿î·Îµå °ø°£¿¡¼ °ð ´Ù¿î·Îµå°¡ °¡´ÉÇÒ ¿¹Á¤ÀÔ´Ï´Ù(Âü°íÀÚ·á ¼½¼Ç Âü°í). Ç÷¯±×ÀÎÀ» ¼³Ä¡ Çϸé JavaGnomeLib ¸¦ ÀÚµ¿À¸·Î »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. Âü°í»çÇ×À¸·Î ¿©·¯ºÐÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ ¸ðµç ÀÚ¹Ù GNOME API jar µéÀ» ÇÊ¿ä·Î ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖÁö¸¸ ÇϳªÀÇ JavaGnomeLibrary À» ¿©·¯ºÐÀÇ ÀÚ¹Ù GNOME ±â¹Ý ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÏ´Â °ÍÀÌ ÀýÂ÷¸¦ ´Ü¼øÈ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
NetBeans IDE ¸¦ ½ÇÇà½Ã۰í Ç¥ÁØ ÀÚ¹Ù ¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀ» "hello" ¶ó°í ¸í¸íÇϰí JavaGnomeLib ¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÕ´Ï´Ù.
ÀÌÁ¦ ÄÚµùÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù. °£´ÜÇÑ "Hello World" ·Î ½ÃÀÛÇØ º¸°Ú½À´Ï´Ù.
![]() |
±×¸² 1: NetBeans IDE 5.5 »óÀÇ "Hello World" ÀÚ¹Ù ÄÚµå |
ù¹øÂ°·Î GTK+ ¹ÙÀεù¿¡¼ »ç¿ëÇÏ±æ ¿øÇÏ´Â ´Ù¾çÇÑ API µéÀ» ºÒ·¯ ¿É´Ï´Ù. (Âü°íÀÚ·á ¼½¼Ç¿¡ ¸ñ·ÏÈµÈ ÀÚ¹Ù GNOME ¸à ÆäÀÌÁö¸¦ Âü°íÇØ¼ Àüü API import ¸ñ·ÏÀ» È®ÀÎ ÇϽñ⠹ٶ÷.) ¸¸¾à API ¼Ò½º¸¦ º¸°íÀÚ ÇÑ´Ù¸é import ±¸¹®¿¡¼ ¿À¸¥ÂÊ Å¬¸¯À» ÇÑ ´ÙÀ½ Go To -> Source ¸¦ ¼±ÅÃÇÕ´Ï´Ù. jar ÆÄÀÏ¿¡¼ ¸ðµç ¼Ò½º ÆÄÀϵéÀÌ ÇÁ·ÎÁ§Æ® ÆÐ³Î¿¡ ³ªÅ¸³²À¸·Î½á ¾î¶°ÇÑ API¸¦ »ç¿ëÇÒÁö È®½ÅÇÏÁö ¸øÇÒ¶§ ¸Å¿ì À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. NetBeans IDE ´Â ¶ÇÇÑ ÄÚµå ÀÚµ¿¿Ï¼º ±â´ÉÀ» Áö¿øÇϹǷΠ´Ü¼øÈ÷ window. À» ÀÔ·ÂÇϸé À©µµ¿ì À§Á¬°ú °ü·ÃµÈ ¸ðµç »ç¿ë°¡´ÉÇÑ API¿Í API Javadoc À» º¸¿©ÁÙ °ÍÀÔ´Ï´Ù.
Hello ÀÇ »ý¼ºÀÚ¿¡¼ ÃÖ»óÀ§ ·¹º§ À©µµ¿ì¸¦ »ý¼ºÇϰí "Hello!" ŸÀÌÆ²À» °¡Áø ¹öưÀ» Ãß°¡½Ã۰í, »çÀÌÁ ¼³Á¤ÇÑ ´ÙÀ½ º¸¿© ÁÝ´Ï´Ù. ¸ÞÀÎ ·çƾÀº GTK¸¦ ÃʱâÈ ½Ã۰í, Hello ÀÇ »ý¼ºÀÚ¸¦ È£Ãâ Çϰí, ±× ´ÙÀ½ GTKÀÇ ¸ÞÀÎ À̺¥Æ® ·çÇÁ¸¦ ½ÇÇà ½ÃÄѼ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ó¸®Çؼ ¾îÇø®ÄÉÀ̼ǿ¡ ¹Ý¿µÇÕ´Ï´Ù.
°£°áÇÏ°Ô ¼³¸íÇϱâ À§ÇØ ÇÊÀÚ´Â LifeCycleListener Çڵ巯¸¦ À©µµ¿ì¿¡ Ãß°¡½ÃÄѼ À¯Àú°¡ ´Ý±â "X" ¸¦ ´·¶À»¶§ ¾îÇø®ÄÉÀ̼ÇÀ» ±ú²ýÇÏ°Ô Á¾·á½ÃŰ´Â ¹ý¿¡ ´ëÇØ º¸¿© ÁÖÁö ¾Ê¾Ò½À´Ï´Ù. ¾î¶»°Ô ÇÏ´Â Áö »ìÆì º¸·Á¸é HelloWorld.java in »ùÇà ÄÚµå ¸ñ·ÏÀÇ java-gnome-code.tar ÆÄÀÏ ¿¡¼ HelloWorld.java ¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
Èï¹Ì·ÓÁö´Â ¾Ê¾ÒÁö¸¸ ¿©·¯ºÐÀº ¹æ±Ý ¸· ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ¸·Î ¸¸µé¾îÁø ³×ÀÌÆ¼ºê GTK ¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇß½À´Ï´Ù. ÀÌ ¾îÇø®ÄÉÀ̼ÇÀº ¿©·¯ºÐÀÌ ¾î¶°ÇÑ µ¥½ºÅ©Å¾ Å׸¶¸¦ »ç¿ëÇÏ´õ¶óµµ ÀûÀýÇÏ°Ô ´ëÀÀÇÒ °ÍÀÔ´Ï´Ù. Á÷Á¢ Å×½ºÆ®¸¦ ÅëÇØ ÇÊÀÚ°¡ ¸»ÇÏ·Á´Â Àǵµ¸¦ ¾Ë¾Æº¸½Ã±â ¹Ù¶ø´Ï´Ù. GNOME¿¡¼ Start Menu -> Preferences-> Theme ¸¦ ÅëÇØ¼ Å׸¶¸¦ Nimbus ¿¡¼ Blueprint ·Î ÀüȯÇÕ´Ï´Ù.
![]() |
±×¸² 2a: GNMOEÀÇ Nimbus Å׸¶¿¡¼ÀÇ "Hello World" |
![]() |
±×¸² 2b: GNOMEÀÇ Blueprint Å׸¶¿¡¼ÀÇ "Hello World" |
¹öưÀ» Ŭ¸¯ÇÏ¸é ¾Æ¹«·± ¹ÝÀÀµµ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î ´Ù¸¥ ÀÚ¹Ù ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©¿¡¼ Çß´ø°Í°ú ¸¶Âù°¡Áö·Î ¾×¼Ç Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. À̰ÍÀº org.gnu.gtk.event.ButtonListener ÀÔ´Ï´Ù.
´ÙÀ½ÀÇ ¹öư ¸®½º³Ê¸¦ Hello »ý¼ºÀÚ¿¡ btn À» »ý¼ºÇÑ ´ÙÀ½¿¡ Ãß°¡½Ãŵ´Ï´Ù.
btn.addListener(new ButtonListener() {
public void buttonEvent(ButtonEvent e) {
if (e.isOfType(ButtonEvent.Type.CLICK))
{ System.out.println("Hello cruel world!"); } } });
|
¸¸¾à Äڵ忡 ¾î¶°ÇÑ ¹®Á¦°¡ ÀÖ´Ù¸é NetBeans IDE ´Â ¿©·¯ºÐÀÌ ÀÔ·ÂÇÑ ÄÚµåÀÇ ¿ÞÂÊ »çÀ̵忡 ÀÛÀº Àü±¸¸¦ º¸¿©ÁÖ°í À̸¦ ÅëÇØ¼ ¹®Á¦Á¡¿¡ ´ëÇÑ Á¦¾ÈÀ» ÇØ ÁÝ´Ï´Ù. ÀÌ·¯ÇÑ ÄÚµå ÈùÆ®µéÀº ÄÁÆ®·Ñ-½ºÆäÀ̽º ۸¦ ÅëÇØ¼µµ ³ªÅ¸³ª°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÕÀÇ Äڵ带 ÀÔ·ÂÇϸé Àü±¸ Ç¥½Ã°¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù. Àü±¸ ¸¦ Ŭ¸¯Çϸé ButtonListener ¿Í ButtonEvent ±×¸®°í ButtonEvent.Type À» import Çϵµ·Ï ±ÇÇÒ °ÍÀÔ´Ï´Ù.
![]() |
±×¸² 3: NetBeans IDE ÀÇ ÄÚµå ÈùÆ® |
¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇÑ ´ÙÀ½ Hello World ¹öưÀ» Ŭ¸¯Çϸé Ç¥ÁØ Ãâ·Â¿¡ "Hello cruel world!" ¸Þ¼¼Áö¸¦ »ý¼ºÇÒ °ÍÀÔ´Ï´Ù.
![]() |
±×¸² 4: "Hello World"°¡ ¹öư Ŭ¸¯¿¡ ÀÀ´äÇÏ´Â ¸ð½À |
¿©·¯ºÐÀº ÀÌÀü¿¡ Çß´ø ´ë·Î UI ÀÛ¾÷À» °è¼ÓÇØ¼ ÇØ³ª°¥ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª º¹ÀâÇÑ ½Ç¼¼°èÀÇ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» ´Ù·ê¶§ ÀÌ·± ¹æ½ÄÀº ¸Å¿ì ÁøÀú¸® ³ª´Â ÀÛ¾÷ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. UI ¿Í Äڵ带 ºÐ¸® ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â°Ô ´õ ³ºÁö ¾ÊÀ»±î¿ä? À̰ÍÀÌ ¹Ù·Î Glade °¡ ÇÏ´ÂÀÏ ÀÔ´Ï´Ù. À̰ÍÀº GNOME UI µðÀÚÀ̳ʷΠ¿©·¯ºÐÀÌ UI¸¦ WYSIWYG ¹æ½ÄÀÇ ¿¡µðÅÍ·Î »ý¼ºÇÒ ¼ö ÀÖ°í À̰ÍÀ» UI XML Á¤ÀÇ ÆÄÀÏ·Î ÀúÀåÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÝ´Ï´Ù. ÀÌ Glade ÆÄÀÏÀº LibGlade API ¸¦ Áö¿øÇÏ´Â ¸ðµç GNOME ¾îÇø®ÄÉÀ̼ǿ¡¼ ·ÎµùÀÌ °¡´ÉÇÏ°í ¶ÇÇÑ GNOME ¹ÙÀεùÀÇ ÀϺηεµ Áö¿ø µË´Ï´Ù.
ÀÌÁ¦ ¿©·¯ºÐÀº Glade ¿¡¼ ¿©·¯ºÐÀÇ Hello World ¾îÇø®ÄÉÀÌ¼Ç º¸´Ù Á» ´õ º¹ÀâÇÑ UI »ý¼ºÇؼ Å×½ºÆ® ¾îÇø®ÄÉÀ̼ǿ¡¼ ·ÎµùÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÊÀÚ´Â Andrew Overholt ÀÇ Ç÷¡½Ã µ¥¸ð¸¦ ÂüÁ¶ Çß½À´Ï´Ù. ±×¿¡°Ô °¨»çµå¸³´Ï´Ù (Ãßõ µµ¼).
Glade ¸¦ ½ÇÇà½Ãŵ´Ï´Ù
¸ÞÀÎ Glade À©µµ¿ì°¡ Palette, Widget Tree, ±×¸®°íProperties ÆÐ³Î°ú ÇÔ²² ³ªÅ¸³³´Ï´Ù.
![]() |
±×¸² 5: Glade À¯Àú ÀÎÅÍÆäÀ̽º µðÀÚÀÌ³Ê |
ÀÌÁ¦ Palette "GTK+ Basic" ¼½¼Ç¿¡¼ Window ¸¦ ¼±ÅÃÇÕ´Ï´Ù. 3ÁÙÀÇ Vertical Box ¸¦ À©µµ¿ì¿¡ Ãß°¡ ½Ãŵ´Ï´Ù (´Ü¼øÈ÷ ÆÈ·¿Æ® ¾ÆÀÌÅÛ¿¡ ¸¶¿ì½º¸¦ ¿Ã·Á ³õÀ¸¸é ±× ¾ÆÀÌÅÛÀÇ À̸§À» ¾Ë ¼ö ÀÖ½À´Ï´Ù). ±× ´ÙÀ½ Á¦ÀÏ ÀÁÙ¿¡ Label À» Ãß°¡½ÃŰ°í °¡¿îµ¥ ÁÙ¿¡ Button À» Ãß°¡½ÃŰ°í ¸¶Áö¸·À¸·Î Á¦ÀÏ ¾Æ·¡ÁÙ¿¡´Â Text ¿£Æ®¸® À§Á¬À» Ãß°¡ ½Ãŵ´Ï´Ù.
»ý¼ºµÈ À§Á¬µéÀÇ ¼Ó¼ºÀ» º¯°æÇÏ·Á¸é ´Ü¼øÈ÷ À§Á¬Æ®¸®¿¡¼ ÇØ´ç À§Á¬À» ¼±ÅÃÇϰųª Çö À©µµ¿ì¿¡¼ ¼±ÅÃÇØ¼ ÇÁ·ÎÆÛƼ ÆÐ³ÎÀ» ÅëÇØ¼ ¼öÁ¤ÇÕ´Ï´Ù.
glade ¶ó´Â À̸§ÀÇ µð·ºÅ丮¿¡ ÀúÀåÇϰí ÇÁ·ÎÁ§Æ® À̸§À» "TestGlade" ¶ó°í ¼³Á¤ÇÔ. À̰ÍÀº glade/testglade.glade ¾Æ·¡¿¡ UI Á¤ÀǸ¦ ÀúÀåÇÏ°Ô µÊ. ![]() |
Figure 6: TestGlade UI Created in the Glade UI Designer |
¿©·¯ºÐÀÇ GNOME ¾îÇø®ÄÉÀ̼ÇÀÌ »õ·Î¿î Glade UI ¸¦ »ç¿ëÇϱâ À§Çؼ´Â Glade ÆÄÀÏÀ» ¿©·¯ºÐÀÇ ¾îÇø®ÄÉÀÌ¼Ç »ý¼ºÀÚ¿¡¼ ·Îµù½ÃÄÑ¾ß ÇÕ´Ï´Ù.
public TestGlade() {
LibGlade glade = new LibGlade("glade/testglade.glade", this);
}
|
NetBeans IDE ´Â LibGlade ¸¦ import Çϵµ·Ï Áö½ÃÇÒ °ÍÀ̰í ÀÌ È£Ãâ¿¡ try ºí·°À» Ãß°¡Çϵµ·Ï ÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à Glade ÆÄÀÏÀÌ ¾ø°Å³ª XML ÀÌ À߸øµÈ ÆÄÀÏÀ϶§ ¿¹¿Ü¸¦ ´øÁú°ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. ¿ÏÀüÇÑ ÄÚµå ¼Ò½º´Â »ùÇà ÄÚµå ¸®½ºÆÃ ¿¡ ÀÖ´Â java-gnome-code.tar ÆÄÀϾȿ¡ TestGlade.java ¸¦ Âü°í ¹Ù¶ø´Ï´Ù.
ÀÌ·¯ÇÑ ¹æ¹ýÀº UI¸¦ »ý¼ºÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀÌÁö¸¸ Çö ´Ü°è¿¡¼´Â ¾Æ¹«·± ÀÛ¾÷µµ ÇÏÁö ¾Ê½À´Ï´Ù. ¿©·¯ºÐÀÌ ÇØ¾ßÇÒ ÀÛ¾÷Àº À¯Àú À̺¥Æ®¸¦ ¾îÇø®ÄÉÀÌ¼Ç Äڵ忡 Àü´ÞÇÔÀ¸·Î½á ±×¿¡ ¸Â°Ô µ¿ÀÛÇϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. Glade ½Ã±×³Î Çڵ鷯°¡ ÇÊ¿äÇÑ µµ±¸¸¦ Á¦°øÇÕ´Ï´Ù.
Glade ¿¡¼ ¸¸¾à ¿©·¯ºÐÀÌ »ç¿ëÀÚ ¹ÝÀÀ¿¡ µ¿ÀÛÇÏ´Â ÀÚ¹Ù Äڵ带 ÀÛ¼ºÇϰíÀÚ ÇÑ´Ù¸é ¿©·¯ºÐÀº Glade ³»ÀÇ À§Á¬¿¡ ½Ã±×³Î Çڵ鷯¸¦ ¼·Î ¿¬°ü½ÃŰ°í ½Ã±×³Î Çڵ鷯 ±¸ÇöÀ» ¿©·¯ºÐÀÇ Äڵ忡¼ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ù¹øÂ° ¿¹Á¦¿¡¼ÀÇ ¾×¼Ç Çڵ鷯¸¦ ¼³Á¤ÇÏ´Â °Í°ú ¸Å¿ì À¯»çÇÑ ÀÛ¾÷ÀÔ´Ï´Ù. ¿©·¯ºÐÀº Glade ÀÇ ÁÖ¾îÁø ¾î¶°ÇÑ À§Á¬¿¡µµ ´Ù¾çÇÑ ¹üÀ§ÀÇ ½Ã±×³Î Çڵ鷯¸¦ ¿¬°ü½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ½Ã±×³Î Çڵ鷯´Â ±× ´ÙÀ½ ¾îÇø®ÄÉÀÌ¼Ç Äڵ忡¼ ±¸Çö µÇ¾îÁ®¼ ¾îÇø®ÄÉÀÌ¼Ç ¼öÇà½Ã¿¡ ÀϾ´Â ÀûÀýÇÑ »ç¿ëÀÚÀÇ ¹ÝÀÀ¿¡ ´ë¶ó ½ÇÇàµÇ°Ô µË´Ï´Ù.
¹Ýµå½Ã °Á¶µÇ¾î¾ßÇÒ ¾ê±â·Î ½Ã±×³Î Çڵ鷯¿Í ÀÚ¹Ù ±¸Çöü´Â ¹Ýµå½Ã Á¤È®ÇÏ°Ô µ¿ÀÏÇÑ À̸§À» °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿©·¯ºÐÀº ÀÚ¹Ù ¸Þ¼Òµå ±¸Çöü°¡ µ¿ÀÏÇÑ À̸§À» °¡Áö°í ÀÖ´Ù´Â °Í¸¸ ¸¸Á·ÇÑ´Ù¸é Glade ÀÇ ±âº» À̸§À» »ç¿ëÇϰųª Glade ³»¿¡¼ ±×°ÍÀ» »ý¼º ȤÀº ¼öÁ¤ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
TestGlade ¾îÇø®ÄÉÀ̼ÇÀ» È®ÀåÇØ¼ "Press Me!" ¹öưÀ» Ŭ¸¯Çϸé "Button Clicked!" ¶ó´Â ¸Þ¼¼Áö¸¦ Ç¥ÁØ Ãâ·Â À©µµ¿ì¿¡ »ý¼ºÇϵµ·Ï ÇÕ´Ï´Ù.
ÀÏ´Ü Glade ÀÇ Test Glade ÇÁ·ÎÁ§Æ®·Î µ¹¾Æ °©´Ï´Ù.
À̰ÍÀº on_button1_clicked Çڵ鷯¸¦ »ý¼ºÇÕ´Ï´Ù. Glade ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÕ´Ï´Ù.
¾Æ·¡´Â Glade ÀÇ ½ºÅ©¸° ¼¦À¸·Î button1 ½Ã±×³Î Çڵ鷯 on_button1_clicked ¸¦ Properties ´ÙÀ̾ó·Î±×ÀÇ Signals ÅÇ¿¡¼ ¼³Á¤ÇÑ È¸é ÀÔ´Ï´Ù.
![]() |
±×¸² 7: Glade UI µðÀÚÀ̳ʿ¡¼ ½Ã±×³Î Çڵ鷯¸¦ Ãß°¡½Ã۱â |
NetBeans TestGlade ÇÁ·ÎÁ§Æ®·Î µ¹¾Æ °©´Ï´Ù.
public void on_button1_clicked() {
System.out.println("Button Clicked!");
}
|
TestGlade ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇà½Ã۰í "Press Me!" ¹öưÀ» Ŭ¸¯Çؼ ½Ã±×³ÎÇڵ鷯ÀÇ µ¿ÀÛÀ» È®ÀÎ ÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀÌ ½Ã±×³Î Çڵ鷯¿¡¼ »ç¿ëÀÚÀÇ µ¿ÀÛ¿¡ ¹ÝÀÀÇÒ¶§ ¿©·¯ºÐÀº Çϳª ȤÀº ±× ÀÌ»óÀÇ À§Á¬¿¡ Á¢±ÙÇØ¼ ¾îÇø®ÄÉÀ̼ÇÀ» ƯÁ¤ÇÑ ¹æ½ÄÀ¸·Î ¼öÁ¤ÇØ¾ß µÉ Çʿ䰡 ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î "Press Me!" ¸¦ Ŭ¸¯ÇßÀ»¶§ °øÁ¤µÈ ¸Þ¼¼Áö°¡ ³ªÅ¸³ª´Â °ÍÀÌ ¾Æ´Ï¶ó ¾îÇø®ÄÉÀ̼ÇÀÌ Text ¿£Æ®¸® À§Á¬¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÅØ½ºÆ®¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ãâ·ÂÇϱ⸦ ¿øÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ´Â Glade À§Á¬ÀÇ ÇÚµéÀ» ¾ò¾î¿Í¼ À̰ÍÀ» on_button1_clicked ½Ã±×³Î Çڵ鷯¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â Ŭ·¡½º¿¡ ³»ºÎÀûÀ¸·Î ÀúÀåÇØ¾ß ÇÕ´Ï´Ù. ½ÇÁ¦ ÄÚµå »ý¼º ´Ü°è¿¡¼ ¸¸¾à getWidget() È£ÃâÀÌ ¾î¶°ÇÑ ¿¹¿Üµµ ´øÁöÁö ¾Ê¾Ò´Ù¸é getWidget() È£Ãâ ÈÄ¿¡ "entry" °¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÒ °ÍÀÔ´Ï´Ù.
LibGlade glade = new LibGlade("glade/testglade.glade", this);
entry = (Entry)glade.getWidget("entry1");
|
ÀÌÀüÀÇ Äڵ带 ÀÔ·ÂÇß´Ù¸é NetBeans IDE ´Â "Create field entry in testglade.TestGlade"
¶ó´Â ¸Þ¼¼Áö¸¦ ÅëÇØ¼ "private Entry entry;" ÀνºÅϽº º¯¼ö¸¦ Ãß°¡Çϵµ·Ï ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ½Ã±×³Î Çڵ鷯¸¦ ¼öÁ¤Çؼ Text Entry À§Á¬ÀÇ ÅØ½ºÆ®¿¡ Á¢±ÙÇϵµ·Ï ÇÕ´Ï´Ù.
public void on_button1_clicked() {
System.out.println("User typed: " + entry.getText());
}
|
Á» ´õ Èï¹Ì·Î¿î ¾îÇø®ÄÉÀ̼ÇÀÇ ¿¹Á¦¸¦ À§ÇØ ÇÊÀÚ´Â NetBeans BlueJ Calculator ¿¹Á¦¸¦ °¡Á®¿Ô½À´Ï´Ù (David J. Barnes ¿Í Michael Kolling ¿¡ ÀÇÇØ ¸¸µé¾îÁü) ±×¸®°í À̰ÍÀ» Glade UI ¿Í ÀÚ¹Ù GNOME API ¸¦ »ç¿ëÇϵµ·Ï Æ÷ÆÃ ÇÏ¿´½À´Ï´Ù. ÄÚ¾î °è»ê±â CalcEngine Àº º¯°æÇÏÁö ¾Ê¾Ò½ººó´Ù. ÄÚµåÀÇ Àüü ¸ñ·ÏÀº ÀÌ ±ÛÀÇ ¸¶Áö¸·¿¡ ¿¹Á¦ ÄÚµå ¸ñ·ÏÀ» Âü°í ÇϽñ⠹ٶø´Ï´Ù.
![]() |
±×¸² 8: ÀÚ¹Ù GNOME Calculator ¿¹Á¦ |
¿£ÁøÀÌ ¿ÀÁ÷ ´õÇϱâ¿Í »©±â¸¸À» Áö¿øÇϱ⠶§¹®¿¡, ÇÊÀÚ´Â GNOME Calculator ÀÇ UI¸¦ Glade ¸¦ ÀÌ¿ëÇØ ¼Ö¶ó¸®½º¿¡¼ µðÀÚÀÎ ÇÏ¸é¼ Áö¿øµÇÁö ¾Ê´Â ¹öưµé¿¡ Sensitivity ¸¦ "No"¶ó°í ÁöÁ¤ÇÏ¿´½À´Ï´Ù(Properties Panel -> Common Tab).
¿©·¯ºÐÀÌ Äڵ带 »ìÆì º¸¾Ò´Ù¸é ¸î°¡Áö¸¦ »ìÆìº¼ °¡Ä¡°¡ ÀÖ½À´Ï´Ù.
GNOME ¾îÇø®ÄÉÀÌ¼Ç -- À̰ÍÀº GNOME ¾îÇø®ÄÉÀ̼ÇÀ¸·Î GTK+ ¾îÇø®ÄÉÀ̼ǰú´Â Á¤¹Ý´ë ÀÔ´Ï´Ù. Áï Glade ¿¡¼ GNOME ¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÒ¶§ ¿©·¯ºÐÀº ÀϹÝÀûÀÎ À©µµ¿ì¸¦ ½ÃÀÛ Æ÷ÀÎÆ®·Î »ç¿ëÇÏ´Â °Í°ú´Â ¹Ý´ë·Î ÆÈ·¿Æ® "GNOME" ¼½¼Ç¿¡¼ ¾îÇø®ÄÉÀÌ¼Ç À©µµ¿ì¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾îÇø®ÄÉÀÌ¼Ç À©µµ¿ì´Â ÃÖ»óÀÇ ·¹º§ ¸Þ´º, Åø¹Ù, »ç¿ëÀÚ°¡ ¿øÇϴ´ë·Î ¼öÁ¤ÇÒ ¼ö ÀÖ´Â app ¹Ù(»óÅ ¸Þ¼¼Áö)¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
ÀÌÀü¿¡ ³íÀÇ Çß¾ú´ø Program.initGnomeUI ¸¦ ÀÌ¿ëÇØ¼ GTK ¾îÇø®ÄÉÀ̼ÇÀ» ÃʱâÈ ½ÃÄ×´ø ¹æ¹ý°ú´Â ¾à°£ ´Ù¸£°Ô ÃʱâÈ µË´Ï´Ù:
public static void main(String[] args) {
Program prog = Program.initGnomeUI("Calculator", "1.0", args);
new CalculatorApp();
Gtk.main();
}
|
¸í¸íµÈ ¿ÀºêÁ§Æ®¸¦ ½Ã±×³Î Çڵ鷯¿¡ Àü´ÞÇϱâ -- Á¾Á¾ ¿©·¯ºÐÀº ÁÖ¾îÁø ¿ÀºêÁ§Æ®¸¦ ½Ã±×³Î Çڵ鷯¿Í ¿¬°ü½ÃÄѼ ½Ã±×³Î Çڵ鷯°¡ UI¿¡ ÀÇÇØ Æ®¸®°Å µÆÀ»¶§ À̰ÍÀ» Àü´ÞÇÏ´Â °ÍÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. °è»ê±â ¿¹Á¦¸¦ ¿¹¸¦ µé¾î °¢ ÇÔ¼ö ¹öư¸¶´Ù °¢°¢ÀÇ ½Ã±×³Î Çڵ鷯¸¦ °¡Áö´Â °Í ´ë½Å¿¡ ÇϳªÀÇ ½Ã±×³Î Çڵ鷯¸¦ µÎ°í À¯Àú°¡ ¹öưÀ» ´©¸£´Â °Í¿¡ µû¶ó ÀԷ°ªÀ» ó¸®ÇÏ´Â °ÍÀ» ¿øÇÒ ¼ö ÀÖ½À´Ï´Ù. Glade ¿¡¼ ÀÌ·¯ÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ¹æ¹ýÀº ¹öưÀÇ ½Ã±×³Î Çڵ鷯¸¦ ¼³Á¤ÇÒ ¶§ ¹öưÀÇ À̸§¿¡ Object Çʵ带 ¹öưÀÇ À̸§À¸·Î ¼³Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¹æ¹ýÀ» ÅëÇØ¼ ¸í¸íµÈ ¹öưÀº ½Ã±×³Î Çڵ鷯·Î Àü´ÞµÇ°Ô µË´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¸¦ ó¸®ÇÏ´Â °ÍÀº ´Ü¼øÈ÷ ¿À¹ö·ÎµùµÈ ½Ã±×³Î Çڵ鷯¸¦ ÀÚ¹Ù ÄÚµå¾È¿¡¼ »ç¿ëÇÔÀ¸·Î½á ÀûÀýÇÑ Event À§Á¬°ú ¹ü¿ë Ÿ°Ù Object ¸¦ ÃëÇÏ´Â °ÍÀÔ´Ï´Ù. À̶§ ÀûÀýÇÑ Ä³½ºÆÃ ÀÛ¾÷ÀÌ ¹Ýµå½Ã ÇÊ¿ä ÇÕ´Ï´Ù.
public void on_button_clicked(ButtonEvent event, Object target) {
// Get the Named Button Widget set as the Signal Handler Object in Glade
String command = ((Button) target).getLabel();
System.out.println("Button Clicked: " + command);
if( command.equals("0") || command.equals("1") ||
command.equals("2") || command.equals("3") ||
:
|
GConf -- À̰ÍÀº GNOME ÀÇ ¼³Á¤ ½Ã½ºÅÛÀ¸·Î À¯Àú ¾îÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤°ú µ¥ÀÌŸ¸¦ ÀúÀåÇϱâ À§ÇØ ¹Ýµå½Ã »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù. Ãß°¡ÀûÀ¸·Î ÀÌ ÇÁ·Î±×·¥Àº ¾îÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÇØ¾ßÇÒ GNOME ÀÇ ½Ã½ºÅÛ Àü¹ÝÀûÀÎ µ¥ÀÌŸ (¿¹¸¦ µé¾î ³×Æ®¿öÅ© Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ ÇÁ·Ï½Ã ¼ÂÆÃ) ¸¦ °¡Á® ¿À´Âµ¥ »ç¿ë µÉ ¼ö ÀÖ½À´Ï´Ù. GConf
ÀÇ »ç¿ë ¿¹¸¦ À§Çؼ UserInterface.java ¿¡ ¿©·¯°¡Áö ÇÔ¼öµéÀÌ Ãß°¡µÇ¾îÁ³½À´Ï´Ù. ù°·Î GConf ¸¦ ÃʱâÈ Çϱâ À§Çؼ ±×¸®°í µÑ°·Î calculator ¿¡ ÀÔ·ÂµÈ ¸¶Áö¸· ¼ýÀÚ¸¦ get/set Çϱâ À§Çؼ ÀÔ´Ï´Ù. ÀÌ µ¥ÀÌŸ´Â »ç¿ëÀÚ°¡ File-> Quit ¸¦ »ç¿ëÇØ¼ ¾îÇø®ÄÉÀ̼ÇÀ» ´ÝÀ»¶§ GConf ½Ã½ºÅÛ¿¡¼ calculator¸¦ ½ÇÇàÇÏ´Â »çÀÌ¿¡ ÀúÀåµÇ¾î Áý´Ï´Ù. GConf ÀÇ »ç¿ëÀº ´Ü¼øÈ÷ GConf ½Ã½ºÅÛÀÇ ÇÚµéÀ» ¾ò´Â °Í¸¸À» ¿ä±¸ ÇÕ´Ï´Ù. ±×´ÙÀ½¿¡´Â ConfClient ¿¡´Â »óÈ£ ÀÛ¿ëÇÒ µð·ºÅ丮¸¦ ÁöÁ¤ÇÔÀ¸·Î½á ÃßÈÄ¿¡ ÀÌ Å¬¶óÀÌ¾ðÆ® ÀνºÅϽº¸¦ ÀÌ¿ëÇØ¼ GConf ÀÇ Å° °ªµéÀ» »ý¼ºÇÏ°í °¡Á®¿À°í ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
private final String lastResultKey =
"/apps/javagnome_calculator_app/last_result";
:
public void setupGconfAccess() {
client = ConfClient.getInstance();
try {
client.addDirectory("/apps/javagnome-calculator-app",
ConfClientPreloadType.NONE);
:
public String getGconfKeyValue(String configKey){
try {
return client.getString(configKey);
:
public void setGconfKeyValue(String configKey, String configKeyValue){
try {
if (null != configKeyValue)
client.setString(configKey, configKeyValue);
:
|
¿©·¯ºÐÀº ¶ÇÇÑ ConfClientListener ¸¦ ConfClient ÀνºÅϽº¿¡ ÁöÁ¤Çؼ ƯÁ¤ GConf Ű °ªÀÇ º¯°æ¿¡ ´ëÇÑ ÅëÁö¸¦ ¾òÀ» ¼öµµ ÀÖ°í, ¿øÇÑ´Ù¸é client.addListener (listener, configKey) ¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ÇØ¾ßÇÒ ÀÏÀÌ ¾ÆÁ÷ ¸¹ÀÌ ³²¾Æ ÀÖ½À´Ï´Ù. ÀÚ¹Ù GNOME ¹ÙÀεù¿¡ °°ÀÌ Á¦°øµÇ´Â ¿¹Á¦µéÀ» »ìÆì º¸½Ã±â ¹Ù¶ø´Ï´Ù. ƯÈ÷ ´ÙÀ½ÀÇ TestGtk ¿Í TestGnome ¾îÇø®ÄÉÀ̼ÇÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù:
/usr/share/lib/java/javadoc/java-gnome/libgtk-java-##/examples/testgtk/TestGTK /usr/share/lib/java/javadoc/java-gnome/libgnome-java-##/examples/testgnome/TestGNOME |
GConf ¿Í Glade ¿¹Á¦µéÀº ¶ÇÇÑ ÀÌÀü¿¡ ¾ð±ÞÇß´ø javadoc/java-gnome µð·ºÅ丮ÀÇ libgcon,libglade ¼ºêµð·ºÅ丮µé »ó¿¡¼ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ½Ç¼¼°èÀÇ ¾îÇø®ÄÉÀ̼ÇÀº ÀÚ¹Ù GNOME Ä¿¹Â´ÏƼ »çÀÌÆ®¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù. (Ãßõ µµ¼ ¼½¼ÇÀÇ "Java GNOME application" Âü°í).
#java-gnome ä³Î (irc.gimp.net) ¿¡ µé·Á¼ °³¹ßÀÚµé°ú äÆÃÀ» Çϰųª ¹ÙÀεù¿¡ ±Ã±ÝÇÑ Áú¹®À» ÇØÁּŵµ µË´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÇ ¸ÚÁø ¾îÇø®ÄÉÀ̼ÇÀ» ¾Ë·ÁÁÖ°í ½Í´Ù¸é ±×µéÀÌ ¿©·¯ºÐÀ» µµ¿ÍÁÙ °ÍÀÔ´Ï´Ù!
ÀÚ¹Ù GNOME ¹ÙÀεùÀº Glade-±â¹Ý GNOME/GTK+ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ Àͼ÷ÇÑ °³¹ßÀڵ鿡°Ô ÀÌ·¯ÇÑ Á¤·ùÀÇ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ» Àڹ٠ȯ°æ¿¡¼ °³¹ßÇÒ ¼ö ÀÖ´Â ½Ç¿ëÀûÀÎ ¹æ¹ýÀ» Á¦°ø ÇÕ´Ï´Ù. ÇöÀç ÄÚ¾î ¶óÀ̺귯¸®ÀÇ ´ëºÎºÐÀ» »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ GNOME ¾ÖÇø´ Áö¿øÀ̳ª ½Ã½ºÅÛ Æ®·¹ÀÌ Áö¿ø °°Àº ¸î°¡Áö ºÎºÐÀÌ ºüÁ® ÀÖ½À´Ï´Ù.
ÀÚ¹Ù GNOME Ä¿¹Â´ÏƼ´Â ÀÌ¹Ì ¹ÙÀεùÀÇ ÀçµðÀÚÀÎÀ» ÅëÇØ Á»´õ ÀÚµ¿ÈµÈ ¹ÙÀεù »ý¼ºÀ» Áö¿øÇϵµ·Ï ³ë·ÂÇϰí ÀÖ½À´Ï´Ù. ÀÌ ÀÛ¾÷Àº GNOME Ç÷§Æû°ú Cairo ³×ÀÌÆ¼ºê ¶óÀ̺귯¸®ÀÇ API¸¦ °ÅÀÇ 100% »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ°í ¾ÕÀ¸·ÎÀÇ GNOME Ç÷§Æû ¹èÆ÷ÆÇ°ú µ¿±âÈ µÇµµ·Ï ÇÒ °ÍÀÔ´Ï´Ù.
Ä¿¹Â´ÏƼ »çÀÌÆ®¸¦ ÅëÇØ¼ Ãֽо÷µ¥ÀÌÆ®¸¦ Ç×»ó È®ÀÎÇϽñ⠹ٶø´Ï´Ù. Ä¿¹Â´ÏƼ´Â ¾ðÁ¦³ª ÇÁ·ÎÁ§Æ®ÀÇ »õ·Î¿î °øÇåÀÚ¸¦ ȯ¿µÇÕ´Ï´Ù. ÀÚ ÀÌÁ¦ ÀÚ¹Ù GNOME À» ÇØÅ·ÇØ º¾½Ã´Ù!
John Rice ´Â ½ãÀÇ staff engineer ·Î Áö³ ¼ö³â°£ ¿ÀǼֶ󸮽º µ¥½ºÅ©Å¾ ±×·ì¿¡¼ ÀÏÇØ ¿Ô½À´Ï´Ù. ÀÌ Àü¿¡ ±×´Â ¿ÀÇ¿ÀÇǽº ÆÀ¿¡¼ ÀÏÇß¾ú°í ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ¿ÀÇǽºÀÇ ¸ÅÅ©·Î¸¦ ¿ÀÇ¿ÀÇǽº·Î ÀÚµ¿ ¸¶À̱׷¹ÀÌ¼Ç ÇÏ´Â ÀÛ¾÷À» ÇØ¿Ô½À´Ï´Ù. ±×´Â ¼ÒÇÁÆ®¿þ¾î ºÐ¾ß¿¡¼ 18³âÀÇ °³¹ß °æ·ÂÀ» °¡Áö°í ÀÖ°í ´ëºÎºÐÀº ¹®¼ °ü¸®°ú µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÔ´Ï´Ù. GNOME Advisory Board ÀÇ ¸â¹ö·Î John Àº ¾ÆÀÏ·£µåÀÇ µ¿ÂÊ ÇØº¯¿¡ »ì°í ÀÖ½À´Ï´Ù.
Solaris Express, Developer Edition 2/07 - Java GNOME 2.16 installation:
SUNWgnome-base-libs-javaSUNWgnome-libs-javaSUNWgnome-config-javaSUNWgnome-terminal-java/usr/share/lib/java/):
cairo1.0.jarglib0.4.jargtk2.10.jargnome2.12.jarglade2.12.jargconf2.12.jarvte0.12.jar/usr/lib/):
libcairojni.solibglibjni.solibgtkjni.solibgnomejni.solibgladejni.solibgconfjni.solibvtejni.so/usr/share/lib/java/javadoc/java-gnome/*/index.html/usr/share/lib/java/src/java-gnome/*-src.jar/usr/share/lib/java/javadoc/java-gnome/*/examples/man java-gnome ¿¹Á¦ ÄÚµå ¸ñ·ÏÀº java-gnome-code.tar ÆÄÀÏ¿¡¼ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. tar ÆÄÀÏÀÇ ³»¿ëÀº ¾Æ·¡¿Í °°½À´Ï´Ù:
java-gnome-code/ java-gnome-code/testglade/ java-gnome-code/testglade/TestGlade.java java-gnome-code/testglade/glade/ java-gnome-code/testglade/glade/testglade.glade.txt java-gnome-code/licensing.txt java-gnome-code/hello/ java-gnome-code/hello/Hello.java java-gnome-code/calculator/ java-gnome-code/calculator/UserInterface.java java-gnome-code/calculator/CalcEngine.java java-gnome-code/calculator/CalculatorApp.java java-gnome-code/calculator/glade/ java-gnome-code/calculator/glade/calculator.glade.txt |
ÁÖÀÇ: glade.txt ·Î ³¡³ª´Â ÆÄÀϵéÀº .glade ÆÄÀÏ·Î »ç¿ë Àü¿¡ Àç¸í¸í µÇ¾î¾ß ÇÕ´Ï´Ù.