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

MIDlets Ŭ·¡½º
¸ðµç J2ME ÇÁ·Î±×·¥ÀÇ ±â¹ÝÇÏ¿¡ ±¸ÃàÇϱâ

Soma Ghosh
¼±ÀÓ °³¹ßÀÚ, Entigo
2002³â 3¿ù

¿©·¯ºÐÀº ÀÚ¹Ù °¡»ó ¸Ó½ÅÀ» ¸Þ¸ð¸® ¿ë·®ÀÌ Àû°í ÀÚ¿øÀÌ Á¦ÇѵǾî ÀÖÀ¸¸ç ³×Æ®¿öÅ©·Î ¿¬°áµÈ ȯ°æ¿¡ ÀûÇÕÇÏ°Ô ¸¸µé°í ½ÍÀ» °ÍÀÌ´Ù. K °¡»ó ¸Ó½Å (KVM)ÀÇ Á߽ɿ¡ Ư¼öÇÑ Àڹ٠Ŭ·¡½º°¡ Àִµ¥, MIDletÀÌ ±×°ÍÀÌ´Ù. ÀÌ ±Û¿¡¼­ Soma Ghosh´Â ¿©·¯ºÐ¿¡°Ô MIDlet Ŭ·¡½ºÀÇ Àå´ÜÁ¡À» ¼Ò°³ÇÏ°í ¿©·¯ºÐ ÀÚ½ÅÀÇ J2ME ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¶§ À̸¦ È°¿ëÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÏ°Ú´Ù. ¿©·¯ºÐÀº MIDletÀÇ ÀÌ·ÐÀ» ¹è¿ì°í ³­ ÈÄ ±×³à°¡ ±¸ÃàÇÏ´Â »ùÇà ÇÁ·Î±×·¥À» ÅëÇØ ±× ±â¼úÀÌ ½ÇÇàµÇ´Â °ÍÀ» È®ÀÎÇÏ°Ô µÉ °ÍÀÌ´Ù.

ÀÌ ÁÖÁ¦¿¡ ´ëÇØ ³»°¡ ÀÛ¼ºÇÑ ÀÌÀü ±Û¿¡¼­ ³ª´Â Java 2 Platform, Micro Edition (J2ME)ÀÇ ±âÃÊ »çÇ׵鿡 ´ëÇØ ³íÀÇÇÏ¿´´Ù. ±× ±ÛÀ» ÀоÁö ¾ÊÀº ºÐÀ̶ó¸é ÀÌ ±ÛÀ» Àбâ Àü¿¡ ¾Æ¸¶µµ ±×°ÍÀ» ¸ÕÀú ÀÐ¾î º¸¾Æ¾ß ÇÒ °ÍÀÌ´Ù. J2MEÀÇ °¡Àå Áß¿äÇÑ ±¸¼º ¿ä¼Ò°¡ MIDletÀÌ´Ù. ¿©±â¼­ ¿ì¸®´Â MIDletÀÇ »óÅÂ¿Í »óÅ ¾ÖÇø®ÄÉÀÌ¼Ç »Ó ¾Æ´Ï¶ó À̺¥Æ®¿Í ¿¹¿Ü¸¦ ó¸®Çϱâ À§ÇÑ ±â¹ýµéÀ» °ËÅäÇϸ鼭 MIDIetÀ» »ó¼¼È÷ »ìÆ캸µµ·Ï ÇÏ°Ú´Ù. ¶ÇÇÑ ¿©±â¿¡¼­ ¼³¸íµÈ °³³äµéÀ» ÀÔÁõÇØ ÁÙ °£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇØ º½À¸·Î½á °á·ÐÀ» Áþµµ·Ï ÇÏ°Ú´Ù. ÀÌ ±ÛÀ» ³¡³¾ ¶§ÂëÀÌ¸é ¿©·¯ºÐÀº ¿©·¯ºÐ ÀÚ½ÅÀÇ J2ME ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ´Â ÁßÀÏ °ÍÀÌ´Ù.

MIDletÀ̶õ ¹«¾ùÀΰ¡?

Mobile Information Device Profile (MIDP)Àº À̵¿ ÀüÈ­³ª ±âº»ÀûÀÎ ¼öÁØÀÇ ÆÊž Àåºñ¿Í °°Àº ¸ð¹ÙÀÏ Á¤º¸ Àåºñ¸¦ Ÿ°ÙÀ¸·Î ÇÏ´Â ÀÚ¹Ù API ¼¼Æ®ÀÌ´Ù. MIDletÀº MIDP ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸»ÇÑ´Ù. ÀÌ ±Û¿¡¼­´Â MIDlet °ú MID ¾ÖÇø®ÄÉÀ̼Ƕó´Â ¿ë¾î°¡ ±³´ë·Î »ç¿ëµÈ´Ù. MIDletÀº J2ME ½ÇÇà ȯ°æÀÇ ±¸¼º ¿ä¼Ò°¡ µÈ´Ù.

MIDletÀº ¸ð¹ÙÀÏ Àåºñ¿¡¼­ ÀÛµ¿Çϵµ·Ï ¼³°èµÇ¾úÀ¸¸ç ÀÚ¹Ù °¡»ó ¸Ó½ÅÀÇ Çٽɸ¸ ¸ðÀº ¹öÀüÀÎ K Virtual Machine (KVM)ÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡ ÀÇÇØ ½ÇÇàµÇ°í Á¦¾îµÇµµ·Ï ¸¸µé¾îÁ³´Ù.javax.microedition.midlet.MIDlet Ŭ·¡½º´Â MIDlet°ú ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ »çÀÌÀÇ ÀÎÅÍÆäÀ̽º·Î ÀÛµ¿ÇÑ´Ù. ÀÌ Å¬·¡½ºÀÇ ¸Þ¼Òµå´Â ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ MIDletÀ» ¸¸µé°í ±¸µ¿½ÃÅ°°í ÁßÁö½ÃÅ°°í ¾ø¾Öµµ·Ï ÇØÁØ´Ù.

J2ME ¾ÖÇø®ÄÉÀ̼ÇÀº javax.microedition.midlet.MIDlet Ŭ·¡½º¸¦ È®ÀåÇØ¾ß Çϴµ¥, ÀÌ´Â ´ÙÀ½ ÀÛ¾÷µé¿¡ ´ëÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ Á¦°øÇÑ´Ù.:

  • ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ MIDlet »óÅ º¯È­¸¦ ÅëÁöÇÏ°í ¿äûÇÔÀ¸·Î½á MIDletÀ» Á¦¾îÇϵµ·Ï ÇÑ´Ù.

  • MIDletÀÌ ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ °ü¸®ÇÏ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ·¹Áö½ºÅ͸®ÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç µð½ºÅ©¸³ÅÍ (application descriptor)·ÎºÎÅÍ Æ¯¼ºÀ» °Ë»öÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

±×¸² 1Àº MIDlet°ú ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ °£ÀÇ »óÈ£ÀÛ¿ëÀ» º¸¿©ÁØ´Ù.

±×¸² 1. MIDlet ȯ°æ
The MIDlet environment

MIDletÀÇ »óÅÂ

MIDletÀº ±× ¼ö¸í Áֱ⠵¿¾È ´Ù¾çÇÑ »óÅ ·Î ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ »óŵéÀº ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ ·±Å¸ÀÓ È¯°æ ³»¿¡¼­ ¿©·¯ MIDletµéÀÇ ÇൿÀ» °ü¸®Çϵµ·Ï ÇØ ÁØ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â MIDletµéÀ» °³º°ÀûÀ¸·Î ½ÃÀÛ½ÃÅ°°í ÁßÁö½ÃÅ´À¸·Î½á ÁÖ¾îÁø ½ÃÁ¡¿¡ ¾î¶² MIDletÀÌ ÀÛµ¿ÇÒÁö ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â ¶ÇÇÑ MIDletÀÇ »óŸ¦ À¯Áöº¸¼öÇÑ´Ù. MIDletÀº ´ÙÀ½ »óŵé Áß Çϳª·Î ÀÖÀ» ¼ö ÀÖ´Ù.:

  • ÀÛµ¿ : MIDletÀº ±¸µ¿½Ã¿¡ ÀÛµ¿ »óÅ·Πµé¾î°¡°í ÀϺΠÀÚ¿øÀ» Â÷ÁöÇÒ ¼ö ÀÖ´Ù.
  • ÁßÁö : ÁßÁö »óÅ¿¡¼­ MIDletÀº °øÀ¯µÈ ÀÚ¿øÀ» ÇØÁ¦ÇÏ°í Á¤ÁöÇÑ´Ù.
  • Æıâ : ÀÌ°ÍÀº MIDletÀÇ Á¾·á ´Ü°èÀÌ´Ù. Á¾·áµÈ MIDletÀº ¸ðµç ÀÚ¿øÀ» ÇØÁ¦ÇÏ°í ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡ ¾î¶² ¿µ¼ÓÀûÀÎ »óŸ¦ ÀúÀåÇØ¾ß ÇÑ´Ù.

±×¸² 2´Â MIDLetÀÇ »óÅ º¯È­¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. È­»ìÇ¥´Â Çã°¡µÈ »óÅ º¯È­¸¦ ³ªÅ¸³½´Ù. ¿¹¸¦ µé¾î, ÀÛµ¿ »óÅÂÀÇ MIDletÀº ÁßÁö »óųª Æı⠻óÅ Áß Çϳª·Î À̵¿ÇÒ ¼ö ÀÖ´Ù.

±×¸² 2. MIDletÀÇ »óÅ º¯È­
MIDlet state changes

»óÅ ±¸Çö : ÇÑ »óÅ¿¡¼­ ´Ù¸¥ »óÅ·ΠÀ̵¿Çϱâ

¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ´Â »óŸ¦ ¹Ù²Ù±â À§ÇØ MIDlet¿¡ ƯÁ¤ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. MIDletÀº ÀÌ ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ¿© ÀÚ½ÅÀÇ ³»ºÎ Çൿ°ú ÀÚ¿ø È°¿ëÀ» ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ Áö½ÃÇϴ´ë·Î ¾÷µ¥ÀÌÆ®½ÃŲ´Ù.:

  • startApp(): ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿ »óÅ·Πµé¾î°£´Ù´Â ½ÅÈ£¸¦ º¸³»¸ç, MIDletÀÇ ´ëÈ­Çü È­¸é ȯ°æÀ» ¼³Á¤Çϱâ À§ÇÑ ÃʱâÈ­ ÀýÂ÷µé·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

  • pauseApp(): ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿À» ¸ØÃß°í ÁßÁö »óÅ·Π°¡¶ó°í ½ÅÈ£ÇÑ´Ù.

  • destroyApp(): ÀÌ ¸Þ¼Òµå´Â MIDlet¿¡°Ô ÀÛµ¿À» Á¾·áÇÏ°í Æı⠻óÅ·Π°¡¶ó°í Áö½ÃÇÑ´Ù.

MIDletÀº ½º½º·Î ¸î °¡Áö »óŸ¦ °³½ÃÇÏ°í, ÀÌ ¸Þ¼Òµåµé Áß Çϳª¸¦ È£ÃâÇÏ¿© ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡°Ô ÀÌ·¯ÇÑ »óÅ º¯È­µéÀ» ÅëÁöÇÒ ¼ö ÀÖ´Ù.:

  • notifyDestroyed(): ÀÚ½ÅÀÌ Æı⠻óÅ·Πµé¾î°¬À½À» ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡°Ô ÅëÁöÇϱâ À§ÇØ MIDletÀÌ »ç¿ëÇÏ´Â ¸Þ¼ÒµåÀÌ´Ù.

  • notifyPaused(): ÀÌ ¸Þ¼Òµå´Â MIDletÀÌ ÀÛµ¿ »óÅ·ΠÀÖ°í ½ÍÁö ¾ÊÀ¸¸ç ÁßÁö »óÅ·Π°¡°í ½Í´Ù°í ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ¿¡°Ô ÅëÁöÇÑ´Ù.

  • resumeRequest(): ÀÌ ¸Þ¼Òµå´Â MIDletÀÌ ÀÛµ¿ »óÅ·Π°¡°í ½Í¾îÇÔÀ» Ç¥½ÃÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù. ÀÌ ¸Þ¼Òµå¿¡ ´ëÇÑ È£ÃâÀº ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ »ç¿ëÇϴµ¥, ¾î¶² ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÛµ¿ »óÅ·Π°¥Áö¸¦ °áÁ¤ÇÑ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ ÇÑ MIDletÀ» È°¼ºÈ­Çϱâ·Î °áÁ¤ÇÏ¸é ±× MIDletÀÇ startApp() ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

MIDletÀº ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀڷκÎÅÍ ÁöÁ¤µÈ Ư¼ºµéÀ» °Ë»öÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» ¹Þ¾Ò´Ù. getAppProperty() ¸Þ¼Òµå°¡ ±×°ÍÀÌ´Ù. MIDlet ¹èÄ¡ÀÇ ÀϺκÐÀ¸·Î Á¦°øµÇ´Â ÀÌ Æ¯¼ºµéÀº ¾ÖÇø®ÄÉÀÌ¼Ç µð½ºÅ©¸³ÅÍ ÆÄÀÏ°ú manifest°¡ Á¶ÇÕµÈ °ÍÀ¸·ÎºÎÅÍ ¾ò¾îÁø´Ù.

startApp() ȤÀº pauseApp() µ¿¾È ·±Å¸ÀÓ ¿¹¿Ü°¡ ¹ß»ýÇϸé MIDletÀº Áï½Ã ÆıâµÉ °ÍÀÌ´Ù.

MIDletÀÇ À̺¥Æ® ó¸®

»ç¿ëÀÚ°¡ MIDlet°ú »óÈ£ÀÛ¿ëÇÒ ¶§, À̺¥Æ®°¡ »ý¼ºµÈ´Ù. MIDletÀº ÀÚ½ÅÀÇ À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀÇ ÀϺκÐÀ¸·Î ƯÁ¤ ÀÎÅÍÆäÀ̽ºµéÀ» Á¦°øÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÌ À̺¥Æ®¸¦ ÅëÁö¹Þ°í ÀÌ¿¡ ´ëÇØ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. °¢ ÀÎÅÍÆäÀ̽º´Â Äݹé (callback) À̶ó°í ¾Ë·ÁÁø ¸Þ¼Òµå¸¦ Á¦°øÇϴµ¥, ÀÌ°ÍÀº À̺¥Æ®¿¡ ÀÀ´äÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½ÇÇà½ÃÅ°´Â ÇÁ·Î±×·¡¸Ó Á¤ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀÌ´Ù.

MIDletÀÌ ½ÇÇàµÇ°í ÀÖ´Â µ¿¾È »ý¼ºµÇ´Â À̺¥Æ®µéÀº ´ÙÀ½°ú °°´Ù. :

  • È­¸é¿¡¼­ ÀԷµǴ ¸í·É¹®
  • È­¸é ¾ÆÀÌÅÛÀÇ ³»ºÎ »óÅÂÀÇ º¯È­
  • MIDlet°ú °ü·ÃµÈ Æù µ¥ÀÌÅͺ£À̽ºÀÇ ³»ºÎ »óÅÂÀÇ º¯È­

MIDlet À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀº listener ¸ðµ¨¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù. °¢ °´Ã¼´Â À̺¥Æ®¸¦ ÅëÁö¹Þ°í ¿©±â¿¡ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï Listener¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù. À̸¦ À§ÇØ MIDletÀº ItemStateListener, CommandListener, RecordListener¶ó´Â ¼¼ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. °¢°¢À» »ó¼¼ÇÏ°Ô »ìÆì º¸ÀÚ.

CommandListener

CommandListener´Â È­¸é Ãâ·ÂµÉ ¼ö ÀÖ´Â ¾ÆÀÌÅÛ (¿¹ : È­¸é¿¡ ÀԷµǴ ¸í·É¾î)µé¿¡¼­ »ý¼ºµÇ´Â À̺¥Æ®¸¦ MID ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇϴ åÀÓÀ» °¡Áø´Ù. CommandListener´Â listener¸¦ È®ÀåÇÏ´Â °´Ã¼°¡ ±¸ÇöÇØ¾ß ÇÏ´Â commandAction(Command c, Displayable d)¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù. ÀÌ ¸Þ¼Òµå´Â ¸í·É¾î À̺¥Æ®°¡ Displayable d¿¡ ¹ß»ýÇßÀ½À» °¡¸®Å²´Ù.

ItemStateListener

ItemStateListener´Â È­¸é ¾ÆÀÌÅÛ (¿¹ : È­¸é¿¡ ÀÖ´Â TextField ÀÇ °ª)ÀÇ ³»ºÎ »óÅ º¯È­¸¦ MID ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇϸç, ¾ÆÀÌÅÛÀÇ ³»ºÎ »óÅ°¡ »ç¿ëÀÚ¿¡ ÀÇÇØ º¯°æµÇ¾úÀ» ¶§ È£ÃâµÇ´Â itemStateChanged(Item I)¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ³»ºÎ »óÅÂÀÇ º¯È­´Â »ç¿ëÀÚ¿¡ ÀÇÇØ ¹ß»ýÇÑ´Ù.:

  • ChoiceGroup¿¡¼­ ¼±ÅÃµÈ °ªµé º¯°æÇϱâ

  • ´ëÈ­Çü GaugeÀÇ °ª Á¶Á¤Çϱâ

  • TextField¿¡ °ªÀ» ÀÔ·ÂÇϰųª ¼öÁ¤Çϱâ

  • DateField¿¡ ³¯Â¥³ª ½Ã°£ ÀÔ·ÂÇϱâ

¿©·¯ºÐÀº ³»°¡ ÀÛ¼ºÇÑ ÀÌÀü ±Û¿¡¼­ À̵é È­¸é ¾ÆÀÌÅÛ¿¡ °üÇØ ´õ ¹è¿ï ¼ö ÀÖ´Ù.

¾ÆÀÌÅÛ¿¡ ¾ðÁ¦ »õ °ªÀ» ÀÔ·ÂÇØ¾ß ÇÏ´ÂÁöÀÇ °áÁ¤Àº Àåºñ¿¡ ´Þ·Á ÀÖ´Ù. ¿¹¸¦ µé¾î, TextField ³»¿¡ ÅؽºÆ® ÆíÁýÀ» ±¸ÇöÇÏ´Â °ÍÀº Àåºñ¿¡ µû¶ó ¾ÆÁÖ ´Ù¾çÇÏ´Ù.

ItemStateListener´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ ´ëÈ­Çü ¾ÆÀÌÅÛÀÇ °ªÀ» º¯°æÇÑ °æ¿ì¿¡´Â È£ÃâµÇÁö ¾Ê´Â´Ù. »ç¿ëÀÚ°¡ º¯°æÇßÀ» ¶§¸¸ È£ÃâµÈ´Ù.

RecordListener

RecordListenerÀÇ Ã¥ÀÓÀº ¾ÖÇø®ÄÉÀ̼ǰú ¿¬°üµÇ¾î ÀÖ´Â ·¹ÄÚµå ½ºÅä¾î¿¡¼­ ·¹ÄÚµå º¯°æ°ú °ü·ÃµÈ À̺¥Æ®¸¦ ¹Þ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» »ç¿ëÇÏ·Á¸é ¾ÖÇø®ÄÉÀ̼ÇÀº RecordListener °¡ Á¦°øÇÏ´Â ´ÙÀ½ ¸Þ¼ÒµåµéÀ» ±¸ÇöÇØ¾ß ÇÑ´Ù. :

  • recordAdded(): ·¹Äڵ尡 ·¹ÄÚµå ½ºÅä¾î¿¡ Ãß°¡µÇ¾úÀ» ¶§ È£ÃâµÈ´Ù.

  • recordDeleted(): ·¹ÄÚµå ½ºÅä¾îÀÇ ·¹Äڵ尡 º¯°æµÈ ÈÄ¿¡ È£ÃâµÈ´Ù.

  • recordChanged(): ·¹ÄÚµå ½ºÅä¾î¿¡¼­ ·¹Äڵ尡 »èÁ¦µÈ ÈÄ È£ÃâµÈ´Ù.

Listener¿Í °´Ã¼ ¿¬°á½ÃÅ°±â

MIDletÀÌ ½ÇÇàµÉ ¶§ °´Ã¼µéÀÌ À̺¥Æ®¿¡ ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï Listeners°¡ ÀÌµé °´Ã¼µé¿¡ ¿¬°áµÇ¾î¾ß ÇÑ´Ù. MIDlet Ŭ·¡½º´Â À̺¥Æ® listener¸¦ °´Ã¼¿Í ¿¬°á½ÃÅ°±â À§ÇÑ Æ¯Á¤ ¸Þ¼ÒµåµéÀ» Á¦°øÇÑ´Ù.:

  • setCommandListener(): ÀÌ ¸Þ¼Òµå´Â ¸ðµç ¸í·É¾î¿¡ ´ëÇÑ listener¸¦ Displayable¿¡ ¼³Á¤Çϸç, ÀÌÀüÀÇ CommandListener¸¦ ¹Ù²Û´Ù

  • setItemStateListener(): ÀÌ ¸Þ¼Òµå´Â È­¸é ¾ÆÀÌÅÛ¿¡ ´ëÇÑ ¾ÆÀÌÅÛ »óÅ listener¸¦ ¼³Á¤Çϸç, ÀÌÀüÀÇ itemStateListener¸¦ ¹Ù²Û´Ù.

  • addRecordStateListener(): ÀÌ ¸Þ¼Òµå´Â ·¹ÄÚµå ½ºÅä¾î¿¡ ·¹ÄÚµå »óÅ listener¸¦ Ãß°¡ÇÑ´Ù.

±×¸² 3Àº MIDlet À̺¥Æ® ó¸® ¸ðµ¨ÀÌ´Ù.

±×¸² 3. MIDlet À̺¥Æ® ó¸®
MIDlet event handling

MIDletÀÇ ¿¹¿Ü

MIDletÀº ¿¹¿Ü ó¸® ±â´ÉÀ» »ç¿ëÇØ ¿¹¿ÜÀûÀÎ »óȲÀ» ó¸®ÇÒ ¼ö ÀÖ´Ù. ¿¹¿Ü¶õ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¿¾È Á¤»óÀûÀÎ ¸í·ÉÀÇ È帧À» È¥¶õ½ÃÅ°´Â À̺¥Æ®¸¦ ¸»ÇÑ´Ù. MIDletÀº ÀÚ¹Ù ¿¹¿Ü ó¸® ¸ÞÄ¿´ÏÁòÀÇ ¸ðµ¨À» º¸Á¸ÇÏ°í ÀÖ´Ù. ±×·¯ÇÑ ¿¡·¯°¡ ¸Þ¼Òµå¿¡ ¹ß»ýÇßÀ» ¶§, ¸Þ¼Òµå´Â ¿¹¿Ü °´Ã¼¸¦ ¸¸µé¾î À̸¦ ·±Å¸ÀÓ ½Ã½ºÅÛ¿¡ ³Ñ°Ü ÁØ´Ù. ¿¹¿Ü °´Ã¼´Â ¿¹¿ÜÀÇ À¯Çü ¹× ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ ÇÁ·Î±×·¥ÀÇ »óÅ µî ¿¹¿Ü¿¡ °üÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ±×·¯¸é ·±Å¸ÀÓ ½Ã½ºÅÛÀº ¿¡·¯¸¦ ó¸®Çϱâ À§ÇØ ¸î °¡Áö Äڵ带 ¹ß°ßÇØ¾ß ÇÑ´Ù. ÀÚ¹Ù Àü¹® ¿ë¾î¿¡¼­, ¿¹¿Ü °´Ã¼¸¦ ¸¸µé¾î À̸¦ ·±Å¸ÀÓ ½Ã½ºÅÛ¿¡ ³Ñ°Ü ÁÖ´Â °ÍÀº ¿¹¿Ü¸¦ ´øÁø´Ù(throwing an exception)¶ó°í ºÒ¸°´Ù.

¾Õ¿¡¼­ »ìÆì º¸¾ÒµíÀÌ, MIDletÀº ¼ö¸í Áֱ⠵¿¾È ´Ù¾çÇÑ »óÅ·ΠÀÖÀ» ¼ö ÀÖ´Ù. MIDletÀº ¿äûµÈ MIDlet »óÅ º¯È­°¡ ½ÇÆÐÇßÀ½À» ÇÔÃàÀûÀÎ MIDletStateChangeExceptionÀ» ´øÁüÀ¸·Î½á ¾Ë·ÁÁØ´Ù.

ÀÚ¹Ù ¿¹¿Ü 󸮿¡ °üÇÑ »ó¼¼ Á¤º¸´Â ¾Æ·¡ÀÇ Âü°í ÀÚ·á ºÎºÐÀ» ÂüÁ¶ÇÑ´Ù.

¿¹Á¦ : ÀüÈ­±â À̹ÌÁö ¾ÖÇø®ÄÉÀ̼Ç

À̹ø ¼½¼Ç¿¡¼­ ¿ì¸®´Â ´Ù¾çÇÑ ´Ü°è¿¡¼­ÀÇ MIDletÀÇ ¿ªÇÒÀ» º¸¿©ÁÖ´Â J2ME À̹ÌÁö ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ °ÍÀÌ´Ù. ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀº ¶ÇÇÑ À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ Á¾·áÇÏ´Â ±â´Éµµ °¡Áú °ÍÀÌ´Ù.

PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº ÀÚ½ÅÀÇ MIDIet ¸Þ¼Òµå¿¡ ´ëÇÑ È£Ãâ¿¡ ´ëÀÀÇÏ¿© ÇϳªÀÇ »ý¼ºÀÚ¸¦ ºÒ·¯¿Â´Ù. ÀÌ »ý¼ºÀÚ´Â ÀüÈ­±â È­¸é ȯ°æ, ÀüÈ­±â È­¸é ¾ÆÀÌÅÛ, ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¾·á½ÃÅ°±â À§ÇÑ È­¸é ¸í·É¾î¸¦ »ý¼ºÇÏ¿© ÃʱâÈ­ ÀýÂ÷¸¦ ¼öÇàÇÑ´Ù.

ÀüÈ­±â È­¸é ȯ°æÀº Display Ŭ·¡½º¿¡ ÀÇÇØ Ç¥½ÃµÈ´Ù. MIDlet´ç Á¤È®È÷ ÇϳªÀÇ Display ÀνºÅϽº°¡ ÀÖ°í, PhoneImage »ý¼ºÀÚ´Â getDisplay() ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ±× ÀνºÅϽº¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¾ò´Â´Ù.:


            display = Display.getDisplay(this);

ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÇ UI Ãø¸éÀº ±×·¡ÇÈ À̹ÌÁö µ¥ÀÌÅ͸¦ º¸À¯Çϱâ À§ÇØ »ç¿ëµÇ´Â javax.microedition.lcdui.Image Ŭ·¡½ºÀÌ´Ù. Image °´Ã¼µéÀº È­¸é ÀåÄ¡¿Í µ¶¸³ÀûÀ¸·Î Á¸ÀçÇÑ´Ù. ±×µéÀº È­¸é°ú ¹«°üÇÑ ¸Þ¸ð¸®¿¡¸¸ Á¸ÀçÇϸç, ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸í½ÃÀûÀÎ ¸í·É¾î(CanvasÀÇ paint() ¸Þ¼Òµå¿¡¼­Ã³·³)¸¦ ¹ßÇàÇÏÁö ¾Ê´Â ÇÑ È¤Àº Image °´Ã¼°¡ Form È­¸éÀ̳ª Alert È­¸é ³»¿¡ À§Ä¡ÇÏ°í ±× È­¸éÀÌ °»½ÅµÇ±â Àü±îÁö´Â È­¸é¿¡ Ç¥½ÃµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

À̹ÌÁö´Â ±×µéÀÌ ¸¸µé¾îÁø ¹æ½Ä¿¡ µû¶ó °¡º¯ÀÏ ¼öµµ ÀÖ°í ºÒº¯ÀÏ ¼öµµ ÀÖ´Ù. ºÒº¯ À̹ÌÁö´Â ÀϹÝÀûÀ¸·Î ÀÚ¿ø ¹øµé, ÆÄÀÏ È¤Àº ³×Æ®¿öÅ©¿¡¼­ À̹ÌÁö µ¥ÀÌÅ͸¦ ·ÎµùÇÔÀ¸·Î½á ¸¸µé¾îÁø´Ù. À̵éÀº ÇÑ ¹ø ¸¸µé¾îÁö¸é ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. °¡º¯ À̹ÌÁö´Â È­¸é°ú ¹«°üÇÑ ¸Þ¸ð¸®¿¡¼­ ¸¸µé¾îÁø´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀº À̸¦ À§ÇØ Graphics °´Ã¼¸¦ ¸íÈ®ÇÏ°Ô »ý¼ºÇÑ ÈÄ À̵éÀ» Ç¥½ÃÇÒ ¼ö ÀÖ´Ù. Alert, Choice, Form ȤÀº ImageItem °´Ã¼¿¡ ÀÖ´Â À̹ÌÁö´Â ºÒº¯À̾î¾ß ÇÑ´Ù. ·±Å¸ÀÓ È¯°æÀÌ ¾ÖÇø®ÄÉÀ̼ǿ¡°Ô ÅëÁöÇÏÁö ¾Ê°í ¾ðÁ¦µçÁö È­¸éÀ» ¾÷µ¥ÀÌÆ®Çϱâ À§ÇØ À̵éÀ» »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº javax.microedition.lcdui.Image Ŭ·¡½ºÀÇ createImage(String resourceName) ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ºÒº¯ À̹ÌÁö ¾ÆÀÌÅÛÀ» »ý¼ºÇÑ´Ù. ÀÌ ¸Þ¼Òµå´Â ÁöÁ¤µÈ ÀÚ¿ø¿¡¼­ ¾ò¾îÁö´Â Çص¶µÈ À̹ÌÁö µ¥ÀÌÅ͵é·ÎºÎÅÍ ºÒº¯ À̹ÌÁö¸¦ »ý¼ºÇϴµ¥, ÀÌ µ¥ÀÌÅ͵éÀº Àåºñ ±¸Çö¿¡ µû¶ó ÀÚ¿ø ¹øµé ³»¿¡ ȤÀº ÆÄÀÏ ½Ã½ºÅÛ»ó¿¡, ȤÀº ³×Æ®¿öÅ©»ó¿¡ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. resourceNameÀº Áö¿øµÇ´Â À̹ÌÁö Æ÷¸Ë Áß Çϳª·Î µÈ À̹ÌÁö µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ÀÚ¿øÀÇ À̸§À» Ç¥½ÃÇÏ°í ÀÖ´Ù. ±¸ÇöÀº PNG (Portable Network Graphics) Æ÷¸Ë v.1.0¿¡ ÀúÀåµÇ¾î ÀÖ´Â À̹ÌÁöµéÀ» Áö¿øÇØ¾ß ÇÑ´Ù.

ÀÚ¿ø ¸íÀÌ nullÀÏ °æ¿ì ¸Þ¼Òµå´Â NullPointerExceptionÀ» ´øÁø´Ù. ÀÚ¿øÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª µ¥ÀÌÅ͸¦ ·ÎµùÇÒ ¼ö ¾ø°Å³ª À̹ÌÁö µ¥ÀÌÅ͸¦ Çص¶ÇÒ ¼ö ¾ø´Â °æ¿ì¿¡´Â IOExceptionÀ» ´øÁø´Ù. Listing1Àº ÀÌ ¸ðµç °ÍÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö º¸¿©ÁØ´Ù.

Listing 1.À̹ÌÁö »ý¼ºÇϱâ

               try
     {
              image = Image.createImage("/img/JavaPowered-8.png");
                    
     }
     catch (java.lang.NullPointerException exc)
     {
          exc.printStackTrace();
     }
     catch (java.io.IOException ioExc)
     {
          ioExc.printStackTrace();
     }

startApp

PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀº startApp()¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ÀÛµ¿ »óÅ·Πµé¾î°£´Ù. Image ¾ÆÀÌÅÛÀº Form °´Ã¼ (Listing 2 ÂüÁ¶)¿¡ ³»ÀåµÇ¾î ÀÖ´Ù. ±¸ÇöÀº È­¸é ¹èÄ¡, ¼øȯ ¹× ½ºÅ©·Ñ¸µÀ» ó¸®ÇÑ´Ù. Form ¿ª½Ã È­¸é ¸í·É¾î¿Í ¿¬°áµÇ¾î ÀÖ´Ù.

Listing 2.ÀüÈ­±â È­¸é¿¡ À̹ÌÁö Ãß°¡Çϱâ

displayForm = new Form("Image");
displayForm. append(
                new ImageItem("Default Layout",
                image,
                ImageItem.LAYOUT_DEFAULT,
                "Image Cannot be shown"));
displayForm.addCommand(exitCommand);

startApp() ¸Þ¼Òµå´Â Listing 3°ú °°ÀÌ °¢ ¸í·É¾î¸¦ listener¿¡ ¿¬°áÇÏ°í FormÀ» ÇöÀç Ç¥½Ã °¡´ÉÇÑ ¾ÆÀÌÅÛÀ¸·Î Á¤ÀÇÇÔÀ¸·Î½á À̺¥Æ® ó¸® ¸ÞÄ¿´ÏÁòÀ» ¼³Á¤ÇÑ´Ù.

Listing 3. È­¸é¿¡ »ç¿ëÀÚ »óÈ£ÀÛ¿ë Ư¼º Ãß°¡Çϱâ

displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);

¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®ÀÚ°¡ pauseApp() ¸Þ¼Òµå¸¦ È£ÃâÇϸé PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¤Áö »óÅ·Πµé¾î°£´Ù. ÀÌ´Â ¹é±×¶ó¿îµå ÀÛ¾÷ÀÌ ¾ø°Å³ª ·¹ÄÚµå ½ºÅä¾î°¡ Á¾·áµÇ¾úÀ» ¶§ »ç¿ëÇÏ´Â ¹«¿¬»ê ¸Þ¼ÒµåÀÌ´Ù. destroyApp() ¸Þ¼Òµå´Â PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÇ Á¾·á ´Ü°è¸¦ ½ÃÀÛ½ÃŲ´Ù. ÀÌ ¸Þ¼Òµå´Â ¸ðµç ÀÚ¿øÀ» ÇØÁ¦Çϴ åÀÓÀ» °¡Áö°í ÀÖ´Ù.

commandAction ¸Þ¼Òµå (Listing 4 ÂüÁ¶)´Â PhoneImage MIDletÀÌ ¸í·É¿¡ ÀÀ´äÇϵµ·Ï Çϸç, ¸ðµç È­¸é ¸í·É¾î ÀÛ¾÷½Ã È£ÃâµÈ´Ù. exitCommand°¡ È£ÃâµÇ¾úÀ» ¶§ MIDletÀ» Á¾·á½ÃÅ°´Â exitCommandÀÇ Çڵ鷯°¡ Á¤ÀǵȴÙ.

Listing 4. ¸í·É¾î ÄÝ¹é ±¸ÇöÇϱâ

public void commandAction (
  Command c, Displayable s) {
    if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();

    }

   }

Listing 5´Â PhoneImage ¾ÖÇø®ÄÉÀ̼ÇÀÇ Àüü ¼Ò½º ÄÚµåÀÌ´Ù. :

Listing 5. PhoneImage


// Import of API classes

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

 

//A first MIDlet with simple text and a few commands.

public class PhoneImage extends MIDlet 

               implements CommandListener, ItemStateListener {

 

//The commands

private Command exitCommand;

//The display for this MIDlet

private Display display;

// Display items e.g. Form and Image


Form displayForm;
Image image;


public PhoneImage() {

            display = Display.getDisplay(this);
               exitCommand = new Command("Exit", Command.SCREEN, 1);

               try
                 {
                   image = Image.createImage("/img/JavaPowered-8.png");
                    
               }
               catch (java.io.IOException ioExc)
               {
                    ioExc.printStackTrace();
               }
 

 

 }

 

 // Start the MIDlet by creating the Form and 

 // associating the exit command and listener.

  public void startApp() {

                  displayForm = new Form("Image");
                     displayForm. append(
                new ImageItem("Default Layout",
                                image,
                                ImageItem.LAYOUT_DEFAULT,
                                "Image Cannot be shown"));

                    displayForm.addCommand(exitCommand);

                     displayForm.setCommandListener(this);

                     displayForm.setItemStateListener(this);

                     display.setCurrent(displayForm);

  }

  

  public  void itemStateChanged(Item item)

  {

 

  }

  

  // Pause is a no-op when there is no background

  // activities or record stores to be closed.

  public void pauseApp() { }

 

  // Destroy must cleanup everything not handled 

  // by the garbage collector.

  public void destroyApp (boolean unconditional) { }

 

  // Respond to commands. Here we are only implementing

  // the exit command. In the exit command, cleanup and

  // notify that the MIDlet has been destroyed.

  public void commandAction (

  Command c, Displayable s) {

    if (c == exitCommand) {

            destroyApp(false);

            notifyDestroyed();

    }

   }

 }

±×¸² 4´Â ÀåÄ¡ ¿¡¹Ä·¹ÀÌÅͻ󿡼­ ½ÇÇàµÇ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù.

±×¸² 4. PhoneImage ¾ÖÇø®ÄÉÀ̼Ç
The PhoneImage application

°á·Ð

¸ðµç À̵¿ ÀüÈ­³ª È£Ãâ±â¿¡¼­ ÀÛµ¿ÇÏ´Â ¹«¼± ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÛ¼ºÀÌ MIDletÀ¸·Î ÈξÀ ½¬¿öÁ³´Ù. MIDletÀÇ Àß Á¤ÀÇµÈ ¾ÆÅ°ÅØó´Â ±¤¹üÀ§ÇÑ ±â´ÉÀ» Á¦°øÇÏÁö¸¸ ¿ä¾àµÈ ¾ÆÅ°ÅØó¸¦ À¯ÁöÇÏ´Â Àß Á¤ÀÇµÈ ¸Þ¼Òµå ¼¼Æ®¸¦ ±â¹ÝÀ¸·Î ±¸ÃàµÇ¾ú´Ù. ³ª´Â ÀÌ ±ÛÀÌ ¿©·¯ºÐ ÀÚ½ÅÀÇ MIDlet ±¸Ãà¿¡ Âø¼öÇϴµ¥ µµ¿òÀÌ µÇ±â¸¦ ¹Ù¶õ´Ù.

Âü°í ÀÚ·á

¸ñ Â÷:
MIDlet¶õ ¹«¾ùÀΰ¡?
MIDletÀÇ »óÅÂ
MIDletÀÇ À̺¥Æ® ó¸®
MIDletÀÇ ¿¹¿Ü
¿¹Á¦ : ÀüÈ­±â À̹ÌÁö ¾ÖÇø®ÄÉÀ̼Ç
°á·Ð
Âü°í ÀÚ·á
ÇÊÀÚ ¼Ò°³
±â»ç¿¡ ´ëÇÑ Æò°¡
°ü·Ã dW ¸µÅ©:
Think small with J2ME
Subscribe to the developerWorks newsletter
US ¿ø¹® Àбâ
Also in the Java zone:
Tutorials
Tools and products
Code and components
Articles
ÇÊÀÚ¼Ò°³
ÄÄÇ»ÅÍ °úÇÐ ¹× °øÇÐÀ» Àü°øÇÑ Soma Ghosh´Â Áö³­ 6³â µ¿¾È ´Ù¾çÇÑ ¹üÀ§ÀÇ ÀüÀÚ »ó°Å·¡¿Í ³×Æ®¿öÅ· ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇØ ¿Ô´Ù. ±×³à´Â ¹«¼± »ó°Å·¡°¡ ¾÷°èÀÇ °¡±î¿î ¹Ì·¡°¡ µÉ °ÍÀ̶ó°í ¹Ï°í ÀÖÀ¸¸ç ÃÖ±Ù¿¡´Â ±âÁ¸ µ¥½ºÅ©Å¾ ¸ðµ¨À» ¹«¼±À¸·Î ¸¸µå´Â ½Ãµµ¿¡ °ü½ÉÀ» °¡Á® ¿Ô´Ù. ±×³à´Â ÇöÀç B2B ÆǸŠ¹× ¼­ºñ½ºÃø ÀüÀÚ »ó°Å·¡ Á¦Ç°ÀÇ °³Ã´ÀÚÀÎ Entigo»çÀÇ ¼±ÀÓ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ·Î ÀÏÇÏ°í ÀÖ´Ù.
ÀÌ ±â»ç¿¡ ´ëÇÏ¿© ¾î¶»°Ô »ý°¢ÇϽʴϱî?

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

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