°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼ ¼¼ºÎ ±¸ÇöÀ» ¼û±â´Â ĸ½¶È´Â ÇʼöÀûÀÎ ±â¹ýÀÌ´Ù. ÀÚ¹ÙÀÇ
ĸ½¶È¸¦ ±¸ÇöÇÏ´Â ÁÖü´Â Ŭ·¡½ºÀ̸ç Çʼö ±â´É¸¸ °ø°³ÇÏ¿© ÆíÀǼºÀ» ³ôÀÌ°í ³»ºÎ¸¦ °¨Ãß¾î ÀÚÀ¯·Î¿î ¾÷±×·¹À̵带 º¸ÀåÇÑ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥Àº ¼ö¸¹Àº Ŭ·¡½º°¡ °¢ÀÚÀÇ ¿ªÇÒÀ» ¼öÇàÇÏ°í »óÈ£ÀÛ¿ëÇÏ´Â ½ÄÀ¸·Î ±¸¼ºµÈ´Ù.
½¢ÇÏ°Ô ¸¹Àº Ŭ·¡½º´Â ±â´Éº°·Î ºÐ·ùÇÏ¿© ÆÐÅ°Áö¿¡ ´ã±ä´Ù. ÆÐÅ°Áö´Â
Ŭ·¡½º¸¦ ±×·ìÇÎÇÏ°í À̸§ Ãæµ¹À» ¹æÁöÇÏ¿© ´ë±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¸¦ Á¶Á÷ÀûÀ¸·Î ±¸¼ºÇÏ°í °ü¸®ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. Ŭ·¡½º¿Í
ÆÐÅ°Áö¸¸À¸·Îµµ ½Ç¹« ÇÁ·ÎÁ§Æ®¿¡ ºÎÁ·ÇÔÀÌ ¾ø¾ú°í ¿À·§µ¿¾È ¸ðµÎ Àß ÀûÀÀÇÏ¿´´Ù. ±×·¯³ª ÀÚ¹Ù°¡ Á¡Á¡ ´õ
´Ù¾çÇÑ °÷¿¡ »ç¿ëµÇ°í ±Ô¸ð°¡ Ä¿Áü¿¡ µû¶ó ¿©·¯ °¡Áö °ñÄ¡ ¾ÆÇ ¹®Á¦°¡ ¹ß»ýÇϱ⠽ÃÀÛÇß´Ù.
ù°, ÆÐÅ°ÁöÀÇ Ä¸½¶È´Â ¿Ïº®ÇÏÁö ¾Ê´Ù. Ŭ·¡½º´Â ¾×¼¼½º ÁöÁ¤ÀÚ·Î ¸â¹öÀÇ °ø°³ ¿©ºÎ¸¦ ¸¶À½´ë·Î ÁöÁ¤Çϴµ¥ ºñÇØ ÆÐÅ°ÁöÀÇ Á¤º¸ ÀºÆó´Â ¾àÇÏ´Ù. Ŭ·¡½º¸¦ ¼û±æ ¼ö´Â ÀÖÁö¸¸ °ø°³ ¶Ç´Â ºñ°ø°³ µÑ Áß Çϳª¸¸ ¼±ÅÃÇÒ ¼ö ÀÖ¾î ¿©·¯ ÆÐÅ°Áö¿¡¼ °ø¿ëÀ¸·Î »ç¿ëÇÒ
Ŭ·¡½º¸¦ ¿ÜºÎ¿¡ ´ëÇØ ¼û±æ ¼ö ¾ø´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.
ÀÌ ¶óÀ̺귯¸®´Â Á¤º¸¸¦ °ü¸®ÇÏ°í »ç¿ëÀÚ¸¦ ´ë¸éÇÏ°í ³×Æ®¿÷À¸·Î ÀÔÃâ·ÂÇÏ´Â ¿©·¯ °¡Áö ±â´ÉÀ» Á¦°øÇÏ¸ç °¢ ±â´Éº°·Î
ÆÐÅ°Áö¸¦ ±¸¼ºÇÑ´Ù. ¶óÀ̺귯¸® Àüü¿¡ °øÅëÀûÀ¸·Î »ç¿ëµÇ´Â ¾ÏÈ£È ±â´ÉÀ» 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¿¡¼ ºñ·Î¼Ò ½ÇÇöµÇ¾ú´Ù. ÃʾÈÀº
¸¶·ÃµÇ¾úÁö¸¸ ¹öÀü °ü¸® ¹®Á¦ µî ¾ÆÁ÷ ÇØ°áµÇÁö ¾ÊÀº ¹®Á¦°¡ ÀÖ¾î Àü¹®°¡µéµµ ³íÀïÁßÀÌ¸ç ¾ÕÀ¸·Îµµ °è¼Ó ¹Ù²ð ¿¹Á¤ÀÌ´Ù. ´ÙÇàÈ÷ »óÀ§ÀÇ ±¸Á¶°¡ ¹Ù²î¾úÀ» »Ó ÇÏÀ§ÀÇ ¹®¹ýÀÌ ±×´ë·Î¿©¼ ½ÇÁ¦ ÄÚµù¿¡´Â Å« ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.
¸ðµâÈÀÇ ÀÌÁ¡À» ¾òÀ¸·Á¸é ¸ðµç °ÍÀ» ¸ðµâ¾È¿¡ ³Ö¾î¾ß ÇÑ´Ù. ¿©±â¼´Â
¸ðµâÀ» »ý¼ºÇÏ°í »ç¿ëÇÏ´Â °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ¾È±×·¡µµ º¹ÀâÇѵ¥ ÄÚµå±îÁö º¹ÀâÇÒ ÇÊ¿ä´Â ¾øÀ¸´Ï
µ¡¼ÀÀ» ¼öÇàÇϴ Ŭ·¡½º¸¦ ¸¸µé¾î º»´Ù. ¾ÆÁ÷ °³¹ßÅøÀÇ Áö¿øÀÌ ¿Ïº®ÇÏÁö ¾Ê¾Æ Æú´õ ±¸Á¶¸¦ Á÷Á¢ ¸¸µé°í
¸í·ÉÇà¿¡¼ ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.
½Ç½ÀÀ» À§ÇØ 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
½ÇÇàÁß¿¡ ´Ù¿îµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ½ÇÇà Á÷ÈÄ¿¡ ´©¶ôµÈ ¸ðµâÀ» ¹Ù·Î ¾Ë ¼ö ÀÖ¾î ±¸¼º»óÀÇ ¹®Á¦¸¦ Áï½Ã ÆľÇÇÒ ¼ö ÀÖ´Ù. ¹èÆ÷ÇÒ ¶§ ±¸¼ºÀÇ ½Å·Ú¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ¾î ÀáÀçÀûÀÎ À§ÇèÀÌ ¾ø´Ù. Áö±Ý
´çÀå °³¹ßÀÚ ´«¾Õ¿¡¼ Àß ½ÇÇàµÈ´Ù¸é °í°´ ´«¾Õ¿¡¼µµ Àß ½ÇÇàµÉ °ÍÀÌ´Ù.
¹®¹ýÀÌ ¸ðµâȸ¦ µµÀÔÇßÀ¸´Ï ÀÚ¹Ù Ç÷§ÆûÀÎ 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¸¸
Çصµ Àß ½ÇÇàµÈ´Ù. ÀÌ·¸°Ô µÇ´Â ÀÌÀ¯´Â À̸§¾ø´Â ¸ðµâÀ» ÀÚµ¿À¸·Î »ý¼ºÇϸç ÀÌ ¸ðµâÀº ÀÚ¹Ù Ç÷§ÆûÀÇ ¸ðµç
¸ðµâÀ» ¿äûÇÑ °ÍÀ¸·Î °£ÁÖÇϱ⠶§¹®ÀÌ´Ù.
ÇÏÀ§ ȣȯ¼ºÀ» À¯ÁöÇϱâ À§ÇÑ Æ¯´ÜÀÇ Á¶Ä¡°¡ ÀÖ¾î ¸ðµâ µµÀÔ ÀÌÀüÀÇ Äڵ嵵 ÀÌ»ó ¾øÀÌ Àß ÄÄÆÄÀÏµÇ°í ½ÇÇàµÈ´Ù. ¸ðµâȶó´Â Å« ±â´ÉÀÌ Ãß°¡µÇ¾úÁö¸¸ ÀÚ¹Ù´Â ¿©ÀüÈ÷ ÇÏÀ§ ȣȯ¼ºÀ» Àß ÁöÅ°°í ÀÖ´Ù. ¹°·Ð ¸ðµâÈ¿¡ ÀÇÇÑ ÀÌÁ¡À» ´©¸± ¼ö´Â ¾ø´Ù.
¸ðµâÈ´Â °á±¹ °¡¾ßÇÒ ±æÀÌÁö¸¸ ±âÁ¸ ÇÁ·ÎÁ§Æ®¸¦ ¸ðµâ·Î ¸¸µé ÇÊ¿ä±îÁö´Â ¾ø´Ù. ³Ê¹«
¾î·Æ°í ±ÍÂúÀº ÀÏÀ̸ç À¢¸¸ÇÑ ´ë±Ô¸ð ÇÁ·ÎÁ§Æ®°¡ ¾Æ´Ñ ÇÑ ¸ðµâÈ·Î ÀÎÇØ ¾òÀ» ¼ö ÀÖ´Â °Íµµ ¸¹Áö ¾Ê´Ù. ¸ðµâÈ´Â
¾ÆÁ÷µµ ÁøÇàÁßÀ̹ǷΠÀß µ¹¾Æ°¡´Â ±âÁ¸ ÇÁ·ÎÁ§Æ®´Â °¡±ÞÀû ±×³É µÎ°í »õ·Î ¸¸µå´Â ÇÁ·ÎÁ§Æ®¸¸ ¸ðµâȸ¦ Àû¿ëÇÏ´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.