14-3.¸ðµâÈ­

14-3-1.ÀÚ¹Ù ÆÐÅ°ÁöÀÇ ¹®Á¦

°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼­ ¼¼ºÎ ±¸ÇöÀ» ¼û±â´Â ĸ½¶È­´Â ÇʼöÀûÀÎ ±â¹ýÀÌ´Ù. ÀÚ¹ÙÀÇ Ä¸½¶È­¸¦ ±¸ÇöÇÏ´Â ÁÖü´Â Ŭ·¡½ºÀ̸ç Çʼö ±â´É¸¸ °ø°³ÇÏ¿© ÆíÀǼºÀ» ³ôÀÌ°í ³»ºÎ¸¦ °¨Ãß¾î ÀÚÀ¯·Î¿î ¾÷±×·¹À̵带 º¸ÀåÇÑ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥Àº ¼ö¸¹Àº Ŭ·¡½º°¡ °¢ÀÚÀÇ ¿ªÇÒÀ» ¼öÇàÇÏ°í »óÈ£ÀÛ¿ëÇÏ´Â ½ÄÀ¸·Î ±¸¼ºµÈ´Ù.

½¢ÇÏ°Ô ¸¹Àº Ŭ·¡½º´Â ±â´Éº°·Î ºÐ·ùÇÏ¿© ÆÐÅ°Áö¿¡ ´ã±ä´Ù. ÆÐÅ°Áö´Â Ŭ·¡½º¸¦ ±×·ìÇÎÇÏ°í À̸§ Ãæµ¹À» ¹æÁöÇÏ¿© ´ë±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¸¦ Á¶Á÷ÀûÀ¸·Î ±¸¼ºÇÏ°í °ü¸®ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. Ŭ·¡½º¿Í ÆÐÅ°Áö¸¸À¸·Îµµ ½Ç¹« ÇÁ·ÎÁ§Æ®¿¡ ºÎÁ·ÇÔÀÌ ¾ø¾ú°í ¿À·§µ¿¾È ¸ðµÎ Àß ÀûÀÀÇÏ¿´´Ù. ±×·¯³ª ÀÚ¹Ù°¡ Á¡Á¡ ´õ ´Ù¾çÇÑ °÷¿¡ »ç¿ëµÇ°í ±Ô¸ð°¡ Ä¿Áü¿¡ µû¶ó ¿©·¯ °¡Áö °ñÄ¡ ¾ÆÇ ¹®Á¦°¡ ¹ß»ýÇϱ⠽ÃÀÛÇß´Ù.

 

ù°, ÆÐÅ°ÁöÀÇ Ä¸½¶È­´Â ¿Ïº®ÇÏÁö ¾Ê´Ù. Ŭ·¡½º´Â ¾×¼¼½º ÁöÁ¤ÀÚ·Î ¸â¹öÀÇ °ø°³ ¿©ºÎ¸¦ ¸¶À½´ë·Î ÁöÁ¤Çϴµ¥ ºñÇØ ÆÐÅ°ÁöÀÇ Á¤º¸ ÀºÆó´Â ¾àÇÏ´Ù. Ŭ·¡½º¸¦ ¼û±æ ¼ö´Â ÀÖÁö¸¸ °ø°³ ¶Ç´Â ºñ°ø°³ µÑ Áß Çϳª¸¸ ¼±ÅÃÇÒ ¼ö ÀÖ¾î ¿©·¯ ÆÐÅ°Áö¿¡¼­ °ø¿ëÀ¸·Î »ç¿ëÇÒ Å¬·¡½º¸¦ ¿ÜºÎ¿¡ ´ëÇØ ¼û±æ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

ÀÌ ¶óÀ̺귯¸®´Â Á¤º¸¸¦ °ü¸®ÇÏ°í »ç¿ëÀÚ¸¦ ´ë¸éÇÏ°í ³×Æ®¿÷À¸·Î ÀÔÃâ·ÂÇÏ´Â ¿©·¯ °¡Áö ±â´ÉÀ» Á¦°øÇÏ¸ç °¢ ±â´Éº°·Î ÆÐÅ°Áö¸¦ ±¸¼ºÇÑ´Ù. ¶óÀ̺귯¸® Àüü¿¡ °øÅëÀûÀ¸·Î »ç¿ëµÇ´Â ¾Ïȣȭ ±â´ÉÀ» kr.soen.secret ÆÐÅ°ÁöÀÇ Encrypt Ŭ·¡½º·Î Á¤ÀÇÇß´Ù. ¼¼ ÆÐÅ°Áö¿¡¼­ ÀÚÀ¯·Ó°Ô »ç¿ëÇϱâ À§ÇØ Encrypt´Â publicÀ̾î¾ß ÇÑ´Ù.

°ø¿ëÀ¸·Î »ç¿ëÇÒ Å¬·¡½º¸¦ °ø°³ÇØ ¹ö¸®¸é ¶óÀ̺귯¸® ³»ºÎ »Ó¸¸ ¾Æ´Ï¶ó ¿ÜºÎ¿¡¼­µµ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ŭ·¡½º´Â ÆÐÅ°Áö ³»ºÎ·Î ¼û±æ ¼ö ÀÖÁö¸¸ ÆÐÅ°Áö´Â ¼û°Ü µÎ°í ³»ºÎ¿¡¼­¸¸ »ç¿ëÇÒ ¹æ¹ýÀÌ ¾ø´Ù. ÀÌ·² ¶§´Â ¹®¼­³ª °¡À̵带 ÅëÇØ ³»ºÎ¿ë ÆÐÅ°Áö´Â »ç¿ëÇÏÁö ¸»¶ó°í ºÎŹ ¶Ç´Â Çù¹ÚÇÏ´Â ¼ö¹Û¿¡ ¾ø´Âµ¥ ¸ðµç °³¹ßÀÚ°¡ ÀÌ·± ±ÇÀå »çÇ×À» ´Ù ÁöÅ°´Â °ÍÀº ¾Æ´Ï´Ù.

ÀÌ·± ¿¹´Â ÀÚ¹Ù Ç÷§Æû¿¡µµ Àִµ¥ sun.*·Î ½ÃÀÛµÈ ºñ¹Ð ÆÐÅ°Áö(ÀÚ¹Ù 11¿¡¼­ ¿ÏÀüÈ÷ Á¦°ÅµÇ¾ú´Ù)´Â ¹®¼­µµ ¾ø°í »ç¿ëÇÏÁö ¸»¶ó´Â ±Ç°íµµ ÀÖÁö¸¸ °³¹ßÀÚ´Â ¼º´É»óÀÇ ÀÌÁ¡À̳ª ½Ã½ºÅÛ Á¢±ÙÀ» À§ÇØ ºñ¹®¼­È­(Undocument)µÈ Ŭ·¡½º¸¦ ±Í½Å°°ÀÌ ¾Ë¾Æ³»¾î °ø°ø¿¬È÷ »ç¿ëÇß´Ù. »ç¿ëÀÚ°¡ ³»ºÎ ±â´ÉÀ» Á÷Á¢ »ç¿ëÇϸé ÀÌÈÄ ÀÚÀ¯·Ó°Ô À¯Áö, º¸¼öÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ ¹®¹ýÀûÀ¸·Î ¿ÏÀüÈ÷ ¼û±æ ¼ö ÀÖ´Â °­ÇÑ Ä¸½¶È­(Strong Encapsulation)°¡ ÇÊ¿äÇØÁ³´Ù.

µÑ°, ºôµå ´Ü°è¿¡¼­ ÇÁ·Î±×·¥ ±¸µ¿¿¡ ÇÊ¿äÇÑ ¸ðµç Ŭ·¡½º°¡ ´Ù ÀÖ´ÂÁö È®ÀÎÇÒ ¼ö ¾ø´Ù. ÀÚ¹Ù´Â µ¿Àû ·ÎµùÀ» ÅëÇØ ÇÊ¿äÇÑ Å¬·¡½º¸¦ ½ÇÇàÁß¿¡ ·ÎµåÇÑ´Ù. ´öºÐ¿¡ ½ÃÀÛÀÌ ºü¸£°í »ý¼ºÇÒ Å¬·¡½º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÁö¸¸ ½ÇÇà Á÷ÈÄ¿¡´Â ´©¶ô »ç½ÇÀ» ¹Ù·Î ¾Ë ¼ö ¾ø´Ù´Â ¹®Á¦°¡ ÀÖ´Ù. ¾Ïȣȭ¸¦ À§ÇØ ¿©·¯ °¡Áö ¾Ë°í¸®ÁòÀ» ÇÊ¿ä¿¡ µû¶ó °ñ¶ó »ç¿ëÇÒ ¼ö ÀÖ´Ù°í ÇÏÀÚ.

µðÆúÆ® ¾Ë°í¸®ÁòÀº Sha256À¸·Î µÇ¾î ÀÖ°í ´ë°³ÀÇ °æ¿ì´Â Å« ¹®Á¦°¡ ¾ø´Ù. Àß ½ÇÇàµÇ´Ù°¡ »ç¿ëÀÚ°¡ ¾Ë°í¸®ÁòÀ» Seed·Î ¹Ù²Ù¸é ½ÇÇàÁß¿¡ ÀÌ Å¬·¡½º¸¦ ã´Â´Ù. ÀÖÀ¸¸é ´ÙÇàÀÌÁö¸¸ ¾øÀ¸¸é NoClassDefFoundError°¡ ¹ß»ýÇÏ¸ç ´Ù¿îµÇ¾î ¹ö¸°´Ù. Ŭ·¡½º ´©¶ôÀ» ¹æÁöÇÏ·Á¸é ½ÇÇàÁß¿¡ ·ÎµåµÇ´Â Ŭ·¡½º°¡ ´Ù ÀÖ´ÂÁö ¼öÀÛ¾÷À¸·Î ÀÏÀÏÀÌ È®ÀÎÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù.

ÀÌ·± °ñÄ¡¾ÆÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ¿ÜºÎ ÀÇÁ¸¼ºÀ» °ü¸®ÇÏ´Â ºôµå ÅøÀÌ ¸¹ÀÌ ¹ßÇ¥µÇ¾úÁö¸¸ ¿Ïº®ÇÑ À¯È¿¼ºÀ» º¸ÀåÇÏÁö ¸øÇÑ´Ù. ±Ô¸ð°¡ Ä¿Áö¸é ¾î¶² Ŭ·¡½º°¡ ½ÇÇàÁß¿¡ ·ÎµåµÉÁö ¿¹ÃøÇϱ⠾î·Æ°í ¶óÀ̺귯¸®°¡ »ç¿ëÇϴ Ŭ·¡½º±îÁö ¿Ïº®ÇÏ°Ô Á¡°ËÇϱ⠾î·Æ´Ù. ¿ÜºÎ µµ±¸¿¡ ÀÇÁ¸ÇÏ´ø ±â´ÉÀ» ¾ð¾î°¡ È®½ÇÇÏ°Ô Á¦°øÇÏ¿© ±¸¼ºÀÇ ½Å·Ú¼º(reliable configuration)À» È®º¸ÇÒ ÇÊ¿ä°¡ »ý°å´Ù.

°°Àº Ŭ·¡½ºÀÇ Áߺ¹ Æ÷ÇÔÀ̳ª ¹öÀü°£ÀÇ ¹Ì¹¦ÇÑ Â÷À̵µ °ñÄ¡¾ÆÇ ¹®Á¦°¡ µÈ´Ù. ÆÀ ÇÁ·ÎÁ§Æ®¿¡¼­´Â °¢ÀÚ ¾²´Â Ŭ·¡½º°¡ ´Þ¶ó ¶È°°°Å³ª À¯»çÇÑ Å¬·¡½º°¡ ¿©·¯ ¹ø Æ÷ÇԵDZ⵵ ÇÑ´Ù. °¡»ó ¸Ó½ÅÀÌ ¾î¶² °ÍÀ» ·ÎµåÇÒÁö ¿¹ÃøÇϰųª ÅëÁ¦Çϱ⠾î·Á¿îµ¥ ÀÌ ¹®Á¦¸¦ JAR HellÀ̶ó°í ÇÑ´Ù. Ŭ·¡½º ÁýÇÕ³¢¸® ²¿¿© Áö¿Á°°Àº »óȲÀÌ ¹ú¾îÁø´Ù.

¼Â°, ·±Å¸ÀÓÀÌ °Å´ëÇØÁ® ¹èÆ÷°¡ ¾î·Á¿öÁ³´Ù. ÃʱâÀÇ ÀÚ¹Ù Ç÷§ÆûÀº ¶óÀ̺귯¸®ÀÇ ¸ðµç Ŭ·¡½º¸¦ rt.jar¶ó´Â ´Ü ÇϳªÀÇ ÆÄÀÏ¿¡ ÅëÇÕÇÏ¿© ¹èÆ÷Çß´Ù. rt´Â ·±Å¸ÀÓ(Run Time)À̶ó´Â ¶æÀ̸ç ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â À§ÇÑ ¸ðµç Ŭ·¡½º°¡ Æ÷ÇԵǾî ÀÖ´Â ÀÚ¹Ù Ç÷§Æû ±× ÀÚüÀÌ´Ù. ´ÜÀÏ ÆÄÀÏÀ̶ó ¹èÆ÷Çϱ⠽±°í º° ¹®Á¦°¡ ¾ø¾ú´Ù.

±×·¯³ª ÀÚ¹Ù ¹öÀüÀÌ ¿Ã¶ó °¡¸é¼­ rt.jar´Â ¿ë·® 60M¿¡ 2¸¸°³ÀÇ Å¬·¡½º¸¦ Æ÷ÇÔÇÏ´Â ÃÊ´ëÇü ·±Å¸ÀÓÀÌ µÇ¾ú°í ¾ÕÀ¸·Î´Â ´õ ´Ã¾î³¯ °ÍÀÌ »·ÇÏ´Ù. PC¿¡¼­´Â º° ¹«¸®°¡ ¾øÁö¸¸ ÀÓº£µðµå Àåºñ¿¡ ¼³Ä¡Çϱ⿡´Â ³Ê¹« °Å´ëÇÏ´Ù. °Ô´Ù°¡ ´ÜÀÏ ÆÄÀÏÀ̶ó ºÒÇÊ¿äÇÑ °Í±îÁö ÇѲ¨¹ø¿¡ ¹èÆ÷ÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ¼Õ¸ñ ½Ã°è³ª °¡½À±â¿¡ ¸ÖƼ ½º·¹µå³ª ³×Æ®¿÷ ±â´ÉÀÌ ÇÊ¿äÇÒ ¸®°¡ ¾øÁö ¾ÊÀº°¡?

¹èÆ÷ÀÇ ¹®Á¦·Î ÀÎÇØ ÃÖ±Ù ´ëµÎµÇ´Â »ç¹°ÀÎÅͳÝ(IoT)¿¡ È°¿ëÇϱ⠺δ㽺·´°í ÀÚ¹ÙÀÇ ¹ßÀüÀ» °¡·Î¸·´Â Áß´ëÇÑ °áÇÔÀÌ µÇ¾ú´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ Ã¹ ½Ãµµ´Â ÀÚ¹Ù 8¿¡¼­ µµÀÔÇÑ ÄÄÆÑÆ® ÇÁ·ÎÆÄÀÏÀÌ´Ù. ¿ëµµ¿¡ µû¶ó 3´Ü°èÀÇ ·±Å¸ÀÓ ±¸¼ºÀ» ¸¸µé°í °¡Àå ÀÛÀº Å©±â´Â 10M±îÁö ÁÙ¿© ÀÌÀüº¸´Ù´Â ¸¹ÀÌ ÁÁ¾ÆÁ³´Ù.

ÇÏÁö¸¸ °íÀÛ 3´Ü°è¿¡ ºÒ°úÇØ ¼±ÅÃÀÌ ¾î·Æ°í ÀÛÀº ÁýÇÕÀ» ¼±ÅÃÇϸé ÇÊ¿äÇÑ °ÍÀÌ ´©¶ôµÉ °¡´É¼ºÀÌ ÀÖ¾î ¿Ïº®ÇÑ ¹æ¹ýÀº ¾Æ´Ï´Ù. ¿ø·ÐÀûÀ¸·Î ²À ÇÊ¿äÇÑ Å¬·¡½º¸¸ Ãß·Á ¿øÇÏ´Â ·±Å¸ÀÓÀ» »ý¼ºÇÏ°í ·±Å¸ÀÓ°ú ÇÁ·Î±×·¥À» °°ÀÌ ¹èÆ÷ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÚ¹Ù 9´Â ·±Å¸ÀÓÀ» ´õ Àß°Ô ³ª´©°í jlink·Î ½ÇÁ¦ »ç¿ëÇÏ´Â ±â´É¸¸ ¸ð¾Æ À̹ÌÁö¸¦ »ý¼ºÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.

 

¼¼»ó¿¡ ¿Ïº®ÇÑ °ÍÀº ¾ø°í óÀ½ºÎÅÍ ¿Ïº®ÇÒ ¼öµµ ¾ø´Ù. ÀÚ¹ÙÀÇ ÆÐÅ°Áö´Â °ÅÀÇ ¿Ïº®ÇßÁö¸¸ »óȲÀÌ ¹Ù²î°í »õ·Î¿î ÀÀ¿ë ºÐ¾ß°¡ »ý±èÀ¸·Î½á ÇѰ踦 µå·¯³Â´Ù. ÀÌ·± ¿©·¯ °¡Áö ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ µµÀÔµÈ °ÍÀÌ ¸ðµâÈ­´Ù. ÆÐÅ°Áöº¸´Ù »óÀ§ÀÇ ¸ðµâÀ» ¸¸µé°í ¸ðµâº°·Î ÆÐÅ°Áö¸¦ ³ª´©¾î ³ÖÀ½À¸·Î½á ĸ½¶È­¸¦ ´Þ¼ºÇÏ°í ÇÊ¿ä¿¡ µû¶ó Á¶ÇÕÇÏ´Â ±â¹ýÀÌ´Ù.

ÀÚ¹Ù Ç÷§Æû Àüü¸¦ À籸¼ºÇÏ´Â ±ÞÁøÀûÀÎ º¯È­¿©¼­ ¹Ý´ë°¡ ¸¹¾Ò°í ÀÚ¹Ù 7¿¡¼­ µµÀÔÇÏ·Á ÇßÀ¸³ª ½¢ÇÑ ÁøÅëÀ» °Þ´Ù°¡ ÀÚ¹Ù 9¿¡¼­ ºñ·Î¼Ò ½ÇÇöµÇ¾ú´Ù. ÃʾÈÀº ¸¶·ÃµÇ¾úÁö¸¸ ¹öÀü °ü¸® ¹®Á¦ µî ¾ÆÁ÷ ÇØ°áµÇÁö ¾ÊÀº ¹®Á¦°¡ ÀÖ¾î Àü¹®°¡µéµµ ³íÀïÁßÀÌ¸ç ¾ÕÀ¸·Îµµ °è¼Ó ¹Ù²ð ¿¹Á¤ÀÌ´Ù. ´ÙÇàÈ÷ »óÀ§ÀÇ ±¸Á¶°¡ ¹Ù²î¾úÀ» »Ó ÇÏÀ§ÀÇ ¹®¹ýÀÌ ±×´ë·Î¿©¼­ ½ÇÁ¦ ÄÚµù¿¡´Â Å« ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.

14-3-2.¸ðµâ

¸ðµâÈ­ÀÇ ÀÌÁ¡À» ¾òÀ¸·Á¸é ¸ðµç °ÍÀ» ¸ðµâ¾È¿¡ ³Ö¾î¾ß ÇÑ´Ù. ¿©±â¼­´Â ¸ðµâÀ» »ý¼ºÇÏ°í »ç¿ëÇÏ´Â °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ¾È±×·¡µµ º¹ÀâÇѵ¥ ÄÚµå±îÁö º¹ÀâÇÒ ÇÊ¿ä´Â ¾øÀ¸´Ï µ¡¼ÀÀ» ¼öÇàÇϴ Ŭ·¡½º¸¦ ¸¸µé¾î º»´Ù. ¾ÆÁ÷ °³¹ßÅøÀÇ Áö¿øÀÌ ¿Ïº®ÇÏÁö ¾Ê¾Æ Æú´õ ±¸Á¶¸¦ Á÷Á¢ ¸¸µé°í ¸í·ÉÇà¿¡¼­ ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.

½Ç½ÀÀ» À§ÇØ JavaStudy Æú´õ ¾Æ·¡¿¡ moduletest ÇÁ·ÎÁ§Æ® Æú´õ¸¦ »ý¼ºÇÏ°í ÀÌ ¾È¿¡ °ü·Ã ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù. ÀÚ¹Ù´Â ÇÁ·ÎÁ§Æ®¸¦ Æú´õ ´ÜÀ§·Î °ü¸®Çϸç ÀÌ ¾È¿¡ ¼Ò½º¿Í ÄÄÆÄÀÏ °á°ú¸¦ °°ÀÌ ÀúÀåÇÑ´Ù. ¼Ò½º ÀúÀåÀ» À§ÇØ src Æú´õ¸¦ ¸¸µé°í ÀÌ ¾È¿¡ ´ÙÀ½ Æú´õ¿Í ÆÄÀÏÀ» »ý¼ºÇÑ´Ù. ÃÖ´ëÇÑ ´Ü¼øÇÏ°Ô ¸¸µé¾îµµ 10°³ÀÇ Æú´õ¿Í 4°³ÀÇ ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù.

main ¸Þ¼­µå¸¦ °¡Áö´Â mod_main ¸ðµâ°ú Util Ŭ·¡½º¸¦ °¡Áö´Â mod_util ¸ðµâÀ» ÀÛ¼ºÇß´Ù. ÀÌ ±¸Á¶´ë·Î µð·ºÅ͸®¿Í ÆÄÀÏÀ» ¿Ïº®ÇÏ°Ô ¸¸µé±â´Â ¹«Ã´ ±ÍÂúÀº ÀÏÀÌ´Ù. Á÷Á¢ ¸¸µé¾î º¸´Â °ÍÀÌ ÁÁÁö¸¸ ¹Ù»Ú´Ù¸é ¹èÆ÷ ¿¹Á¦ÀÇ moduletest.zip ÆÄÀÏ·Î ½Ç½ÀÇØ º¸ÀÚ.

¸ðµâÀº ÀÚ½ÅÀÇ À̸§°ú °°Àº Æú´õ¿¡ ÀúÀåÇϸç ÆÐÅ°Áö¿Í´Â ´Þ¸® µµ¸ÞÀÎ Çü½ÄÀÇ À̸§À» ºÙÀÌ´õ¶óµµ ¼­ºê Æú´õ¸¦ ±¸¼ºÇÏÁö ¾Ê´Â´Ù. Áï, mod_util ¸ðµâÀº mod_util Æú´õ¿¡ ÀúÀåÇÏ¸ç ¸ðµâ¸íÀÌ kr.soen.util À̸é Æú´õ¸íµµ kr.soen.utilÀÌ´Ù. ¸ðµâ ·çÆ®¿¡´Â ´ÙÀ½ Çü½ÄÀÇ ¸ðµâ ±â¼úÀÚ(module descriptor)¸¦ ÀÛ¼ºÇÑ´Ù.

 

module ¸ðµâ À̸§ {

requires ÇÊ¿äÇÑ ¸ðµâ

exports °ø°³ÇÒ ÆÐÅ°Áö

}

 

¸ðµâ ±â¼úÀÚÀÇ ÆÄÀϸíÀº module-info.java·Î °íÁ¤µÇ¾î ÀÖ´Ù. module Å°¿öµå·Î ½ÃÀÛÇÏ¸ç ´ÙÀ½ ¼¼ °¡Áö Á¤º¸¸¦ ±â·ÏÇÑ´Ù.

 

l  ¸ðµâ À̸§ : ¸ðµâµµ ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ °´Ã¼¿©¼­ ¸íĪ ±ÔÄ¢¿¡ ¸Â´Â À̸§À» ºÙÀδÙ. Áߺ¹À» ÇÇÇϱâ À§ÇØ kr.soen.main ½ÄÀ¸·Î ÆÐÅ°Áö¿Í À¯»çÇÑ µµ¸ÞÀÎ ¹æ½ÄÀÇ À̸§À» ±ÇÀåÇÑ´Ù. ¿¹Á¦¿¡¼­´Â ÆÐÅ°Áö¿ÍÀÇ È¥µ¿À» ¹æÁöÇÏ°í ¸ðµâÀÓÀ» È®½ÇÈ÷ º¸À̱â À§ÇØ ÀǵµÀûÀ¸·Î ªÀº À̸§À» »ç¿ëÇß´Ù.

l  requires ¹®(ÀÔ·Â) : ÀÌ ¸ðµâÀÌ ¿ä±¸ÇÏ´Â ¸ðµâÀÇ ¸ñ·ÏÀ» ÁöÁ¤ÇÑ´Ù. ¿¹¸¦ µé¾î ¾Ïȣȭ ±â´ÉÀ» »ç¿ëÇÑ´Ù¸é ÇØ´ç ±â´ÉÀ» Á¦°øÇÏ´Â ¸ðµâÀÇ À̸§À» Àû´Â´Ù. ÇÊ¿äÇÑ ¸ðµâÀÌ ¾øÀ¸¸é Á¦´ë·Î µ¿ÀÛÇÒ ¼ö ¾ø¾î ¿¡·¯ 󸮵ȴÙ.

l  exports Àý(Ãâ·Â) : ÀÌ ¸ðµâÀÌ ¿ÜºÎ·Î °ø°³ÇÏ´Â ÆÐÅ°Áö¸¦ ÁöÁ¤ÇÑ´Ù. publicÀ¸·Î °ø°³µÈ Ŭ·¡½º¶óµµ ¼Ò¼Ó ÆÐÅ°Áö¸¦ °ø°³ÇØ¾ß ¿ÜºÎ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. exports ¹® µÚ¿¡ to ¸ðµâ¸í ½ÄÀ¸·Î ´ë»óÀ» ÁöÁ¤ÇÏ¿© ƯÁ¤ ¸ðµâ¿¡°Ô¸¸ °ø°³ÇÒ ¼öµµ ÀÖ´Ù.

 

¸ðµâ ±â¼úÀÚ´Â À̸§, ÀÔ·Â, Ãâ·Â µîÀÇ ¸ÞŸ µ¥ÀÌÅ͸¦ ÀÛ¼ºÇÏ¿© ¸ðµâ°£ÀÇ ÀÇÁ¸¼ºÀ» Á¤ÀÇÇÑ´Ù. ÀÔ·ÂÀº ¸ðµâ ´ÜÀ§ÀÌ°í Ãâ·ÂÀº ÆÐÅ°Áö ´ÜÀ§ÀÓÀ» À¯ÀÇÇÏÀÚ. ÇÊ¿äÇÑ ±â´ÉÀº ¸ðµâ ´ÜÀ§·Î ÅëÅ©°Ô ÁöÁ¤ÇÏ°í °ø°³ÇÒ ±â´ÉÀº ÆÐÅ°Áö ´ÜÀ§·Î ¼¶¼¼ÇÏ°Ô ÁöÁ¤Çϱâ À§Çؼ­ÀÌ´Ù.

mod_main ¸ðµâÀº mod_util ¸ðµâÀ» »ç¿ëÇÑ´Ù´Â ¼±¾ðÀ» ÇÏ°í mod_utilÀº kr.soen.util ÆÐÅ°Áö¸¦ ¿ÜºÎ·Î °ø°³ÇÏ¿´´Ù. Util Ŭ·¡½º´Â µÎ Á¤¼öÀÇ ÇÕÀ» ±¸ÇØ ¸®ÅÏÇÏ´Â add ¸Þ¼­µå¸¦ Á¦°øÇϸç main¿¡¼­ ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© µ¡¼ÀÀÇ °á°ú¸¦ Ãâ·ÂÇÑ´Ù. mod_mainÀÌ mod_util¿¡ ÀÇÁ¸ÇÏ´Â °ü°èÀ̸ç mod_utilÀÌ ÀÖ¾î¾ß mod_mainÀÌ Á¦´ë·Î ½ÇÇàµÈ´Ù.

¸ðµâ Æú´õ ¾È¿¡ ÆÐÅ°Áö¸¦ ÀÛ¼ºÇÏ°í ÆÐÅ°Áö ¾È¿¡ Ŭ·¡½ºÀÇ ¼Ò½º ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù. ÆÐÅ°Áö°¡ Ŭ·¡½º¸¦ ´ã´Â ÅëÀ̶ó¸é ¸ðµâÀº ÆÐÅ°Áö¸¦ ´ã´Â ÅëÀÌ´Ù. ÆÐÅ°Áö´Â À̸§À» ±¸¼ºÇÏ´Â °¢ ¿ä¼Òº°·Î ¼­ºê µð·ºÅ͸®¸¦ ±¸¼ºÇÏ°í Á¦ÀÏ ¾ÈÂÊ Æú´õ¿¡ Ŭ·¡½º ¼Ò½º ÆÄÀÏÀ» ÀúÀåÇÑ´Ù. kr.soen.main ÆÐÅ°Áö¾È¿¡ Main.java ÆÄÀÏÀ» »ý¼ºÇÏ°í kr.soen.util ÆÐÅ°Áö¾È¿¡ Util.java ÆÄÀÏÀ» ÀÛ¼ºÇß´Ù.

ÀÌÁ¦ ÀÌ ÇÁ·ÎÁ§Æ®¸¦ ÄÄÆÄÀÏÇØ º¸ÀÚ. ¸ðµâÀÌ ÀúÀåµÈ ·çÆ® Æú´õ¸¦ ¾Ë·Á ÁÖ¾î¾ß Çϴµ¥ À̶§´Â -- module-source-path ¿É¼ÇÀ» »ç¿ëÇÑ´Ù. µÎ ¸ðµâÀÌ ¸ðµÎ src Æú´õ¿¡ ÀÖÀ¸¹Ç·Î src¸¦ ÁöÁ¤Çϸç ÄÄÆÄÀÏ·¯´Â src ¾Æ·¡ÀÇ ¸ðµç ¸ðµâÀ» ã¾Æ ÄÄÆÄÀÏÇÑ´Ù. Ãâ·Â Æú´õ´Â -d ¿É¼ÇÀ¸·Î ÁöÁ¤Çϴµ¥ ÄÄÆÄÀÏ °á°ú¸¦ bin Æú´õ¿¡ ÀúÀåÇϵµ·Ï Çß´Ù. ¸í·ÉÇà¿¡¼­ ´ÙÀ½ ¸í·ÉÀ» ÀÔ·ÂÇÏ¿© ÄÄÆÄÀÏÇÑ´Ù.

 

C:\JavaStudy\moduletest>javac --module-source-path src -d bin src/mod_main/kr/soen/main/Main.java src/mod_util/kr/soen/util/Util.java

 

¼Ò½º ÆÄÀÏÀÌ Main.java¿Í Util.java µÎ °³ ¹Û¿¡ ¾ø¾î Á÷Á¢ °æ·Î¸¦ ÁöÁ¤Çߴµ¥ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¼Ò½º°¡ ¿©·¯ °³ÀÌ´Ù. ÀÌ·² ¶§´Â --module ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇÒ ¸ðµâÀ» ÁöÁ¤Çϸé Æ÷ÇÔµÈ ¸ðµç ¼Ò½º¸¦ ÄÄÆÄÀÏÇÑ´Ù.

 

C:\JavaStudy\moduletest>javac --module-source-path src -d bin --module mod_main,mod_util

 

Æú´õ ±¸Á¶³ª Äڵ忡 ¿¡·¯°¡ ¾øÀ¸¸é ¾Æ¹«·± Ãâ·Â¾øÀÌ ÇÁ·ÒÇÁÆ®°¡ ´Ù½Ã ³ªÅ¸³­´Ù. ¿¡·¯ ¹ß»ý½Ã ¿¡·¯ ¸Þ½ÃÁöÀÇ ³»¿ë´ë·Î Äڵ带 ¼öÁ¤ÇÑ´Ù. bin Æú´õ¿¡ src Æú´õ¿Í ¶È°°Àº ±¸Á¶ÀÇ µð·ºÅ͸®°¡ »ý¼ºµÇ¸ç ¸ðµç *.java ÆÄÀÏÀº *.class°¡ µÈ´Ù. module-info.java ÆÄÀϵµ module-info.class°¡ µÇ´Âµ¥ ½ÇÇàÁß¿¡ °¡»ó ¸Ó½ÅÀÌ ÀÌ Á¤º¸¸¦ ÂüÁ¶ÇÑ´Ù.

¸ðµâÀ» ½ÇÇàÇÒ ¶§´Â --module-path ¿É¼Ç(¶Ç´Â -p)À¸·Î ¸ðµâÀÌ ÀúÀåµÈ Æú´õ¸¦ ¾Ë·ÁÁÖ°í -module ¿É¼Ç(¶Ç´Â -m)À¸·Î main ¸Þ¼­µå¸¦ °¡Áø Ŭ·¡½ºÀÇ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù. ¸ðµâÀÌ ¿©·¯ °³À̹ǷΠ¾î´À ¸ðµâ¿¡ ÀÖ´Â mainÀÌ ½ÃÀÛÁ¡ÀÎÁö ¾Ë·Á ÁÖ¾î¾ß ÇÑ´Ù.

 

C:\JavaStudy\moduletest>java --module-path bin --module mod_main/kr.soen.main.Main

46

 

12¿Í 34¸¦ ´õÇÑ 46ÀÌ Ãâ·ÂµÇ¸é ¸ðµç °ÍÀÌ Á¤»óÀûÀ¸·Î ÄÄÆÄÀÏµÈ °ÍÀÌ´Ù. mod_util¿¡¼­ kr.soen.util ÆÐÅ°Áö¸¦ °ø°³Çß°í mod_main¿¡¼­ ÀÌ ÆÐÅ°ÁöÀÇ Util Ŭ·¡½ºÀÇ add ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© µ¡¼ÀÀ» ¼öÇàÇß´Ù. mod_utilÀ» ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡ Àç»ç¿ëÇÏ·Á¸é ÀÌ ¸ðµâÀ» °¡Á®°¡¸é µÈ´Ù.

ÀÌ »óÅ¿¡¼­ ¼Ò½º¸¦ Á¶±Ý¾¿ ¼öÁ¤ÇÏ¿© ¹®Á¦¸¦ ¸¸µé¾î º¸¸é¼­ ¸ðµâÀÇ ±â´ÉÀ» Å×½ºÆ®ÇØ º¸ÀÚ. mod_utilÀÇ module-info.java ÆÄÀÏ¿¡¼­ exports ¹®ÀåÀ» »èÁ¦ÇÑ ÈÄ ÄÄÆÄÀÏÇÏ¸é ´ÙÀ½ ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµÈ´Ù.

 

src\mod_main\kr\soen\main\Main.java:2: error: package kr.soen.util is not visible

import kr.soen.util.Util;

              ^

  (package kr.soen.util is declared in module mod_util, which does not export it)

1 error

 

mod_util¿¡¼­ °ø°³ÇÏÁö ¾ÊÀº ÆÐÅ°ÁöÀÇ Å¬·¡½º´Â ÀÓÆ÷Æ®ÇÒ ¼ö ¾ø´Ù´Â ¶æÀÌ´Ù. mod_main¿¡¼­ Util Ŭ·¡½º¸¦ »ç¿ëÇϴµ¥ ºñ·Ï ÀÌ Å¬·¡½º°¡ publicÀÌÁö¸¸ exports¹®¿¡ ¸í½ÃÀûÀ¸·Î °ø°³ÇÏÁö ¾Ê¾Æ ¿ÜºÎ ¸ðµâ¿¡¼­ ÀÐÀ» ¼ö ¾ø´Ù. ¸ðµâ°£¿¡ ¿Ïº®ÇÑ Á¤º¸ ÀºÆó°¡ °¡´ÉÇÏ´Ù.

ÀÌ ¿¹Á¦¿¡´Â mod_util¿¡ Util Ŭ·¡½º Çϳª¹Û¿¡ ¾øÁö¸¸ ¸¸¾à UtilÀ» º¸Á¶ÇÏ´Â UtilSub ³»ºÎ Ŭ·¡½º°¡ ÀÖ´Ù¸é publicÀ¸·Î °ø°³Çصµ »ó°ü¾ø´Ù. ¸ðµâ ±â¼úÀÚÀÇ exports¹®¿¡ ¸í½ÃÀûÀ¸·Î ¼Ò¼Ó ÆÐÅ°Áö¸¦ °ø°³ÇÏÁö ¾Ê´Â ÇÑ ¸ðµâ ³»ºÎ¿¡¸¸ °ø°³µÇ¸ç ¿ÜºÎ¿¡¼­´Â ÀÌ Å¬·¡½º¸¦ ÀÐÀ» ¼ö ¾ø´Ù. ¿ÜºÎ¿¡¼­ ÂüÁ¶ÇÒ ¼ö ¾øÀ¸´Ï ÀÚÀ¯·Ó°Ô ¾÷±×·¹À̵åÇÒ ¼ö ÀÖ´Ù.

À̹ø¿¡´Â mod_main ¸ðµâÀÇ module-info.javaÀÇ requires ¹®À» »èÁ¦ÇØ º¸ÀÚ. mod_util¿¡¼­ °ø°³ÇØ ³õ¾ÒÁö¸¸ mod_mainÀÌ ¿äûÇÏÁö ¾Ê¾Ò´Ù´Â ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµÈ´Ù. ¸í½ÃÀûÀ¸·Î ¿äûÇÑ ¸ðµâ¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 

src\mod_main\kr\soen\main\Main.java:2: error: package kr.soen.util is not visible

import kr.soen.util.Util;

              ^

  (package kr.soen.util is declared in module mod_util, but module mod_main does not read it)

1 error

 

Util Ŭ·¡½º°¡ publicÀÌ ¾Æ´Ï°Å³ª add ¸Þ¼­µå°¡ publicÀÌ ¾Æ´Ï¾îµµ ºñ½ÁÇÑ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. °ø°³, ¿äû, ¾×¼¼½º ÁöÁ¤ÀÚ µîÀÌ ¿Ïº®ÇØ¾ß Á¦´ë·Î µ¿ÀÛÇÏ¸ç ¼û°Ü ³õÀº Ŭ·¡½º¸¦ ã¾Æ ¾µ ¹æ¹ýÀÌ ¾ø´Ù. ĸ½¶È­ÀÇ ¼öÁØÀÌ ÆÐÅ°Áöº¸´Ù ÈξÀ °­·ÂÇÏ´Ù.

´ÙÀ½Àº ÄÄÆÄÀÏµÈ bin Æú´õ¿¡¼­ Util.class ÆÄÀÏÀ» »èÁ¦ÇØ º¸ÀÚ. ±¸¼ºÀ̳ª ¹èÆ÷ °úÁ¤¿¡¼­ Ŭ·¡½º ÆÄÀÏ Çϳª¸¦ ´©¶ôÇÑ °æ¿ì¸¦ °¡Á¤ÇÑ °ÍÀε¥ ´ëÇü ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÌ·± »ç°í°¡ Á¾Á¾ ¹ß»ýÇÑ´Ù. ½ÇÇàÇÏÀÚ ¸¶ÀÚ ´ÙÀ½ ¿¡·¯ ¸Þ½ÃÁö°¡ Ãâ·ÂµÈ´Ù.

 

Error occurred during initialization of boot layer

java.lang.module.FindException: Error reading module: bin\mod_util

Caused by: java.lang.module.InvalidModuleDescriptorException: Package kr.soen.util not found in module

 

½ÇÇàÁß¿¡ ´Ù¿îµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ½ÇÇà Á÷ÈÄ¿¡ ´©¶ôµÈ ¸ðµâÀ» ¹Ù·Î ¾Ë ¼ö ÀÖ¾î ±¸¼º»óÀÇ ¹®Á¦¸¦ Áï½Ã ÆľÇÇÒ ¼ö ÀÖ´Ù. ¹èÆ÷ÇÒ ¶§ ±¸¼ºÀÇ ½Å·Ú¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ¾î ÀáÀçÀûÀÎ À§ÇèÀÌ ¾ø´Ù. Áö±Ý ´çÀå °³¹ßÀÚ ´«¾Õ¿¡¼­ Àß ½ÇÇàµÈ´Ù¸é °í°´ ´«¾Õ¿¡¼­µµ Àß ½ÇÇàµÉ °ÍÀÌ´Ù.

14-3-3.Á÷¼Ò ÇÁ·ÎÁ§Æ®

¹®¹ýÀÌ ¸ðµâÈ­¸¦ µµÀÔÇßÀ¸´Ï ÀÚ¹Ù Ç÷§ÆûÀÎ JDKµµ º¸Á¶¸¦ ¸ÂÃß¾î ¸ðµâÈ­ÇØ¾ß ÇÑ´Ù. 20³â°£ Àß »ç¿ëÇØ¿Â °Å´ëÇÑ Ç÷§ÆûÀ» ±â´É¿¡ µû¶ó ºÐ·ùÇÏ¿© ¸ðµâ·Î À籸¼ºÇÏ´Â °ÍÀº ¾öû³­ ÀÛ¾÷ÀÌ´Ù. ¸ðµâ°£ÀÇ ÀÇÁ¸¼ºÀ» Á¤ÀÇÇØ¾ß ÇÏ°í ÇÏÀ§ ȣȯ¼ºµµ È®º¸ÇÏ°í ¹Ì·¡ ÁöÇâÀûÀÎ ¼³°è±îÁö °í·ÁÇØ¾ß ÇÏ´Ï »ý°¢º¸´Ù ÈξÀ ±î´Ù·Î¿î ÀÛ¾÷ÀÌ´Ù.

ÀÚ¹Ù Ç÷§Æû ÀÚü¸¦ ¸ðµâÈ­ÇÏ´Â ÀÛ¾÷À» Á÷¼Ò(Jigsaw) ÇÁ·ÎÁ§Æ®¶ó°í ÇÑ´Ù. ±â´Éº°·Î ¸ðµâÀ» Àß°Ô ³ª´©¾î ³õÀ¸¸é ²À ÇÊ¿äÇÑ ¸ðµâ¸¸ Á÷¼Ò ÆÛÁñó·³ Â¥ ¸ÂÃß¾î ¿ëµµ¿¡ ²À ¸Â°Ô ·±Å¸ÀÓÀ» À籸¼ºÇÒ ¼ö ÀÖ´Ù. ¶Ç ¸ðµâÀÇ °­ÇÑ Ä¸½¶È­ ±â´ÉÀ¸·Î ³»ºÎ ÆÐÅ°Áö¸¦ ¿Ïº®ÇÏ°Ô ¼û°Ü Åõ¸íÇÑ ¾÷±×·¹À̵尡 °¡´ÉÇØÁø´Ù.

ÀÌ ¾î·Á¿î ºÐ·ù ÀÛ¾÷ÀÌ ÀÚ¹Ù9¿¡¼­ ¿Ï¼ºµÇ¾ú´Ù. ¸ðµâ ±¸Á¶´Â ¸í·ÉÇà¿¡¼­ java ¸í·ÉÀ¸·Î È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù. --list-modules ¸í·ÉÀ¸·Î ¸ðµâÀÇ ¸ñ·ÏÀ» Á¶»çÇϸç -d ¸í·ÉÀ¸·Î ¸ðµâÀÇ ³»ºÎ¸¦ µé¿©´Ù º»´Ù.

 

C:\JavaStudy>java --list-modules

java.activation@10.0.1

java.base@10.0.1

java.compiler@10.0.1

....

C:\JavaStudy\moduletest>java -d java.base

java.base@10.0.1

exports java.io

exports java.lang

....

 

ÀÌ Á¤º¸¸¦ ÅëÇØ Ç÷¡ÆûÀÌ ¾î¶»°Ô ºÐÇҵǾî ÀÖ°í °¢ ¸ðµâÀÌ ÂüÁ¶ÇÏ´Â ¸ðµâ°ú °ø°³ ÆÐÅ°Áö ¸ñ·ÏÀ» »ó¼¼È÷ ¾Ë ¼ö ÀÖ´Ù. Á÷Á¢ Á¶»çÇÏ´Â °ÍÀÌ ¹ø°Å·Ó´Ù¸é °ø½Ä µµ¿ò¸»¿¡¼­ ¸ðµâÀÇ ³»ºÎ ±¸Á¶¸¦ µé¿©´Ù º¸ÀÚ. API DocumentsÀÇ ¿ÞÂÊ »ó´Ü¿¡¼­ ¸ðµâÀ» ¼±ÅÃÇϸé Æ÷ÇÔµÈ ÆÐÅ°Áö ¸ñ·ÏÀ» º¸¿©ÁÖ°í ÆÐÅ°Áö¸¦ °í¸£¸é ³»ºÎÀÇ Å¬·¡½º ¸ñ·ÏÀÌ ³ªÅ¸³­´Ù.

ÀÚ¹Ù Ç÷§ÆûÀÇ ·çÆ® ¸ðµâÀº java.baseÀÌ¸ç ´ÙÀ½ ÁÖ¿ä ÆÐÅ°Áö°¡ Æ÷ÇԵǾî ÀÖ¾î ŸÀÔ Á¤ÀÇ, ÀÔÃâ·Â, ¼öÇÐ ¿¬»ê µîÀÇ ±âº» ±â´ÉÀ» Á¦°øÇÑ´Ù.

 

java.lang

java.util

java.math

java.io

 

¸ðµâÀÇ À̸§ÀÌ ÀǹÌÇϵíÀÌ ¾ð¾îÀÇ ±âº» ±â´ÉÀ» Á¦°øÇÏ¸ç ¸ðµç ¸ðµâÀº java.baseÀÇ ±â´ÉÀ» ÇÊ¿ä·Î ÇÏ´Â ÀÇÁ¸ °ü°èÀÌ´Ù. ¹Ý¸é java.base´Â ´Ù¸¥ ¸ðµâÀ» ÂüÁ¶ÇÏÁö ¾Ê°í È¥ÀÚ µ¿ÀÛÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¸ðµâÀÌ´Ù. ÀÚ¹ÙÀÇ ÁÖ¿ä ÆÐÅ°Áö°¡ Æ÷ÇԵǾî ÀÖ¾î java.base¸¸ Çصµ À¢¸¸ÇÑ Å¬·¡½º´Â ´Ù »ç¿ëÇÒ ¼ö ÀÖ´Ù.

java.lang ÆÐÅ°Áö´Â µû·Î ÀÓÆ÷Æ®ÇÏÁö ¾Ê¾Æµµ ¾µ ¼ö ÀÖ´Â °Íó·³ java.base ¸ðµâÀº requires ¹®¿¡ ¸í½ÃÇÏÁö ¾Ê¾Æµµ ÀÚµ¿À¸·Î ÀÇÁ¸ °ü°è°¡ ¼º¸³µÈ´Ù. ±âº» ¸ðµâÀÌ ¾øÀ¸¸é ¾Æ¹«°Íµµ ÇÒ ¼ö ¾øÀ¸´Ï ÀÌ ¸ðµâÀº Ç×»ó ¿äûÇÏ´Â °ÍÀ¸·Î °£ÁÖÇÑ´Ù. ¾Õ¼­ ¸¸µç ¿¹Á¦¿¡¼­ kr.soen.main ¸ðµâÀº java.base¸¦ Á÷Á¢ ¿äûÇÏÁö ¾Ê°íµµ println ¸Þ¼­µå¸¦ È£ÃâÇÏ¿´´Ù.

»ç¿ë ºóµµ°¡ ³·Àº ÆÐÅ°Áö´Â °¢ÀÚÀÇ ¸ðµâ¿¡ Æ÷ÇԵȴÙ. xml °ü·Ã ÆÐÅ°Áö´Â java.xml¿¡, sql °ü·Ã ÆÐÅ°Áö´Â java.sql¿¡ Æ÷ÇԵǸç rmi, corba, graphic, swing µî °¢°¢ÀÇ ¸ðµâ¾È¿¡ °ü·Ã ÆÐÅ°Áö¸¦ ¹èÄ¡Çß´Ù. ¸ðµâ³¢¸®´Â ÀÇÁ¸¼ºÀ» °¡Áö¸ç ÀÇÁ¸ °ü°è´Â ¸ðµâ ±×·¡ÇÁ·Î Ç¥ÇöÇÑ´Ù.

È­»ìÇ¥°¡ ÇâÇÏ´Â ÂÊÀ¸·Î ÀÇÁ¸ÀûÀÌ´Ù. ¿¹¸¦ µé¾î java.xmlÀ» »ç¿ëÇÏ·Á¸é java.base ¸ðµâÀÌ ÀÖ¾î¾ß Çϸç java.sqlÀº java.xmlÀ» ÇÊ¿ä·Î ÇÑ´Ù. ¸ðµç ¸ðµâÀº Á÷°£Á¢ÀûÀ¸·Î java.base¿¡ ÀÇÁ¸ÀûÀÌ´Ù. À§ ±×¸²Àº ÇÙ½É ¸ðµâ¸¸ ±×¸° °ÍÀ̸ç ÀÚ¹Ù Ç÷§ÆûÀÇ Àüü ¸ðµâ ±×·¡ÇÁ´Â À̺¸´Ù ÈξÀ º¹ÀâÇÏ´Ù.

java.base¿ÜÀÇ ¸ðµâÀ» »ç¿ëÇÏ·Á¸é ¸ðµâ ±â¼úÀÚ¿¡ requires ¹®À» ÀÛ¼ºÇÏ´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. ¿¹¸¦ µé¾î java.util.logging ÆÐÅ°ÁöÀÇ Logger Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ÀÌ ÆÐÅ°Áö°¡ Æ÷ÇÔµÈ java.logging ¸ðµâ¿¡ ´ëÇÑ requires ¹®ÀÌ ÀÖ¾î¾ß ÇÑ´Ù. xmlÀ̳ª sql °ü·Ã Ŭ·¡½ºµµ ¸¶Âù°¡ÁöÀÌ´Ù. moduletest ¿¹Á¦ÀÇ Main.java¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇØ º¸ÀÚ.

 

package kr.soen.main;

import kr.soen.util.Util;

import java.util.logging.Logger;

 

public class Main {

     public static void main(String[] args) {

          System.out.println(Util.add(12, 34));

        Logger log = Logger.getLogger(Main.class.getName());

        log.info("Program Start");

     }

}

 

Logger Ŭ·¡½º¸¦ ÀÓÆ÷Æ®ÇÏ°í °´Ã¼¸¦ »ý¼ºÇßÁö¸¸ ÀÌ Å¬·¡½º¸¦ ãÀ» ¼ö ¾ø´Ù´Â ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. Logger Ŭ·¡½º´Â java.base°¡ ¾Æ´Ñ º°µµÀÇ ¸ðµâ¿¡ Æ÷ÇԵǾî ÀÖ¾î ¿äûÇؾ߸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸ðµâ ±â¼úÀÚ¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¸é ¹®Á¦°¡ ÇØ°áµÈ´Ù.

 

module mod_main {

     requires mod_util;

    requires java.logging;

}

 

ÀÚ¹Ù 9 ÀÌÈÄÀÇ ÇÁ·ÎÁ§Æ®´Â ¾î¶² ±â´ÉÀÌ ¾î¶² ¸ðµâ¿¡ Æ÷ÇԵǾî ÀÖ´ÂÁö ¼÷ÁöÇÏ°í ÇÊ¿äÇÑ ¸ðµâÀ» ¿äûÇØ¾ß »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ½ÄÀ̶ó¸é ¸ðµâÀÌ ¾ø¾ú´ø ½ÃÀý¿¡ ÀÛ¼ºÇÑ ÄÚµå´Â ¾î¶»°Ô µÇ´Â°É±î? ½Ç½À¿ëÀ¸·Î ¸¸µç JavaTest ¿¹Á¦¿¡ Logger Ŭ·¡½º¸¦ »ç¿ëÇØ º¸ÀÚ.

 

defmodule

import java.util.logging.Logger;

 

class JavaTest {

     public static void main(String[] args) {

          Logger log = Logger.getLogger(JavaTest.class.getName());

          log.info("Program Start");

          log.warning("watch out");

     }

}

½ÇÇà°á°ú

5¿ù 23, 2018 8:13:35 ¿ÀÈÄ JavaTest main

Á¤º¸: Program Start

5¿ù 23, 2018 8:13:35 ¿ÀÈÄ JavaTest main

°æ°í: watch out

 

ÀÌ ÇÁ·ÎÁ§Æ®´Â ¸ðµâÀ» Á¤ÀÇÇÏÁö ¾Ê°í ¸ðµâ ±â¼úÀÚµµ ¾ø´Ù. Logger°¡ Æ÷ÇÔµÈ ¸ðµâÀ» requires ÇÏÁö ¾Ê¾ÒÁö¸¸ import¸¸ Çصµ Àß ½ÇÇàµÈ´Ù. ÀÌ·¸°Ô µÇ´Â ÀÌÀ¯´Â À̸§¾ø´Â ¸ðµâÀ» ÀÚµ¿À¸·Î »ý¼ºÇϸç ÀÌ ¸ðµâÀº ÀÚ¹Ù Ç÷§ÆûÀÇ ¸ðµç ¸ðµâÀ» ¿äûÇÑ °ÍÀ¸·Î °£ÁÖÇϱ⠶§¹®ÀÌ´Ù.

ÇÏÀ§ ȣȯ¼ºÀ» À¯ÁöÇϱâ À§ÇÑ Æ¯´ÜÀÇ Á¶Ä¡°¡ ÀÖ¾î ¸ðµâ µµÀÔ ÀÌÀüÀÇ Äڵ嵵 ÀÌ»ó ¾øÀÌ Àß ÄÄÆÄÀÏµÇ°í ½ÇÇàµÈ´Ù. ¸ðµâÈ­¶ó´Â Å« ±â´ÉÀÌ Ãß°¡µÇ¾úÁö¸¸ ÀÚ¹Ù´Â ¿©ÀüÈ÷ ÇÏÀ§ ȣȯ¼ºÀ» Àß ÁöÅ°°í ÀÖ´Ù. ¹°·Ð ¸ðµâÈ­¿¡ ÀÇÇÑ ÀÌÁ¡À» ´©¸± ¼ö´Â ¾ø´Ù.

¸ðµâÈ­´Â °á±¹ °¡¾ßÇÒ ±æÀÌÁö¸¸ ±âÁ¸ ÇÁ·ÎÁ§Æ®¸¦ ¸ðµâ·Î ¸¸µé ÇÊ¿ä±îÁö´Â ¾ø´Ù. ³Ê¹« ¾î·Æ°í ±ÍÂúÀº ÀÏÀ̸ç À¢¸¸ÇÑ ´ë±Ô¸ð ÇÁ·ÎÁ§Æ®°¡ ¾Æ´Ñ ÇÑ ¸ðµâÈ­·Î ÀÎÇØ ¾òÀ» ¼ö ÀÖ´Â °Íµµ ¸¹Áö ¾Ê´Ù. ¸ðµâÈ­´Â ¾ÆÁ÷µµ ÁøÇàÁßÀ̹ǷΠÀß µ¹¾Æ°¡´Â ±âÁ¸ ÇÁ·ÎÁ§Æ®´Â °¡±ÞÀû ±×³É µÎ°í »õ·Î ¸¸µå´Â ÇÁ·ÎÁ§Æ®¸¸ ¸ðµâÈ­¸¦ Àû¿ëÇÏ´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.