¿À¶óŬÀÌ ¼¼°èÀû ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌÀÚ °³¹ß Ç÷§ÆûÀÎ ÀÚ¹ÙÀÇ ÃֽйöÀü, ÀÚ¹Ù 18(Java 18)À» Ãâ½ÃÇß´Ù. ÃֽйöÀü¿¡´Â ¾ÈÀü¼º°ú º¸¾È¼ºÀÌ ´õ¿í Çâ»óµÈ ¼ö õ °¡Áö ±â´É°ú ÇÔ²² °³¹ßÀÚÀÇ »ý»ê¼ºÀ» ´õ¿í Çâ»ó½ÃÄÑ ÁÙ 9°¡Áö Ç÷§Æû ¾÷µ¥ÀÌÆ® »çÇ×ÀÌ Æ÷ÇԵǾú´Ù.

ƯÈ÷ À̹ø¿¡ ¾÷µ¥ÀÌÆ®µÈ 9°³ÀÇ JEP(JDK Enhancement Proposal, JDK °³¼± Á¦¾È) Áß JEP 413Àº ÀÚ¹Ù API ¼³¸í¼¿¡ ÄÚµå ½º´ÏÆê(Code Snippets)À» Ãß°¡ÇÏ´Â ±â´ÉÀ¸·Î, API ¼³¸í¼¿¡ »ùÇà ¼Ò½ºÄڵ带 Ãß°¡Çϰųª, ÇÁ·ÎÅäŸÀÔ »ý¼º ¶Ç´Â Å×½ºÆ®¿ë °£ÀÌ À¥ ¼¹ö(JEP 408)¸¦ Ãß°¡ÇÏ´Â ÀÛ¾÷ÀÌ ´ëÆø °£¼ÒȵƴÙ. ¶ÇÇÑ, °³¹ßÀÚµéÀº º¤ÅÍ API(JEP 417)¿Í ¿ÜºÎ ÇÔ¼ö ¹× API(JEP 419) µî µÎ °¡Áö ÀÎÅ¥º£ÀÌÆÃ ¸ðµâ°ú Switch ¹® ÆÐÅÏ ¸ÅĪ(JEP 420) µî ¹Ì¸®º¸±â ±â´Éµµ Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.
¿À¶óŬÀº ÃÖ±Ù ¿ÂÇÁ·¹¹Ì½º ȯ°æ ¶Ç´Â ¸ðµç Ŭ¶ó¿ìµå ȯ°æ¿¡¼ÀÇ ÀÚ¹Ù ·±Å¸ÀÓ ¹× ¾ÖÇø®ÄÉÀÌ¼Ç °ü¸®¸¦ µ½±â À§ÇØ ¿À¶óŬ Ŭ¶ó¿ìµå ÀÎÇÁ¶ó½ºÆ®·°Ã³(OCI)ÀÇ »õ·Î¿î ³×ÀÌÆ¼ºê ¼ºñ½ºÀÎ ÀÚ¹Ù ¸Å´ÏÁö¸ÕÆ® ¼ºñ½º(JMS)µµ °ø°³Çß´Ù. JMS´Â Àü»çÀûÀÎ ÀÚ¹Ù ¹èÆ÷ °ü¸®¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇϸç OCI ¿öÅ©·Îµå ¹× ÀÚ¹Ù SE ±¸µ¶ÀÚµéÀº ÇØ´ç ¼ºñ½º¸¦ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÚ¹Ù 18Àº OpenJDK ÇÁ·ÎÁ§Æ® ¹× ÀÚ¹Ù Ä¿¹Â´ÏƼ ÇÁ·Î¼¼½º(JCP)¸¦ ÅëÇÑ ¿À¶óŬ ¿£Áö´Ï¾îµé°ú Àü ¼¼°è ÀÚ¹Ù °³¹ßÀÚ °øµ¿Ã¼ ÀÏ¿øµéÀÇ Æø³ÐÀº Çù¾÷À» ¹ÙÅÁÀ¸·Î ź»ýÇß´Ù. À̸¦ ÅëÇØ Áö¼ÓÀûÀÎ Çõ½ÅÀÌ Á¦°øµÊ°ú µ¿½Ã¿¡ ¼º´É, ¾ÈÁ¤¼º ¹× º¸¾ÈÀÌ Áö¼ÓÀûÀ¸·Î °³¼±µÇ¸ç ¸ðµç ±Ô¸ðÀÇ Á¶Á÷°ú ¾÷°è¿¡ °ÉÃÄ ÀÚ¹ÙÀÇ µµÀÔ È°¿ëµµ´Â ´õ¿í È®´ëµÉ °ÍÀÌ´Ù. ÀÚ¹Ù 18ÀÇ ÁÖ¿ä ¾÷µ¥ÀÌÆ® »çÇ×Àº ´ÙÀ½°ú °°´Ù.
¶óÀ̺귯¸® ³» ¾÷µ¥ÀÌÆ® ¹× °³¼± »çÇ×
JEP 400: UTF-8 ±âº»°ª ÁöÁ¤ - UTF-8À» Ç¥ÁØ ÀÚ¹Ù APIÀÇ ±âº» ¹®ÀÚ¼Â(charset)À¸·Î ¼³Á¤ÇÑ´Ù. ÀÌ º¯È¸¦ ÅëÇØ ±âº» ij¸¯ÅÍ °ª¿¡ ÀÇÁ¸ÇÏ´Â APIµéÀÌ ¸ðµç ±¸Çö¹°µé, ¿î¿µÃ¼Á¦, ·ÎÄÉÀÏ, ±¸¼º Àü¹Ý¿¡¼ Àϰü¼º ÀÖ°Ô ÀÛµ¿ÇÏ°Ô µÈ´Ù.
JEP 408: °£ÀÌ À¥ ¼¹ö – Á¤Àû ÆÄÀϸ¸À» ó¸®ÇÏ´Â ¹Ì´Ï¸Ö À¥ ¼¹ö¸¦ ½ÃÀÛÇÏ´Â ¸í·ÉÁÙ µµ±¸ ¹× API´Ù. ÀÌ µµ±¸´Â ƯÈ÷ ±³À° ȯ°æ¿¡¼ ÇÁ·ÎÅäŸÀÔ »ý¼º, Àӽà ÄÚµù, Å×½ºÆ® ¸ñÀûÀ¸·Î »ç¿ëÇϱ⿡ ¾Ë¸Â´Ù.
JEP 416: ¸Þ¼Òµå ÇÚµé·Î ÄÚ¾î ¸®Ç÷¢¼Ç À籸Çö - java.lang.reflectÀÇ ¸Þ¼Òµå(Method) ¹× »ý¼ºÀÚ(Constructor), Çʵå(Field)¸¦ java.lang.invoke ¸Þ¼Òµå ÇÚµé À§¿¡ À籸ÇöÇÑ´Ù. ¸Þ¼Òµå ÇÚµéÀ» ¸®Ç÷¢¼ÇÀÇ ±âÀú ¸ÅÄ¿´ÏÁòÀ¸·Î Ȱ¿ëÇÔÀ¸·Î½á java.lang.reflect ¹× java.lang.invoke APIÀÇ À¯Áö ¹× °³¹ß ºñ¿ëÀ» Àý°¨ÇÒ ¼ö ÀÖ´Ù.
JEP 418: ÀÎÅÍ³Ý ÁÖ¼Ò Á¶Á¤ SPI - È£½ºÆ® À̸§ ¹× ÁÖ¼Ò È®ÀÎÀ» À§ÇÑ SPI¸¦ Á¤ÀÇÇÏ¿© java.net.InetAddress°¡ Ç÷§ÆûÀÇ ³»Àå È®ÀÎÀÚ ¿ÜÀÇ È®ÀÎÀÚµéÀ» Ȱ¿ë ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
µµ±¸
JEP 413: ÀÚ¹Ù API ¼³¸í¼ ³» JEP ÄÚµå ½º´ÏÆê - ÀÚ¹Ùµ¶(JavaDoc)ÀÇ Ç¥ÁØ Doclet¿¡ @snippetÀ̶ó´Â ű׸¦ ´Ù´Â ¹æ½ÄÀ¸·Î API ¼³¸í¼¿¡ ¿¹Á¦ Ãâó Äڵ带 ¼Õ½±°Ô Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù.
´ÙÀ½ JDK ¹öÀü ¹Ì¸®º¸±â ¹× ÀÎÅ¥º£ÀÌÅÍ
JEP 417: º¤ÅÍ API(¼¼ ¹øÂ° ÀÎÅ¥º£ÀÌÅÍ) – È®À强 ÀÖ´Â º¤ÅÍ È®ÀåÀ» Á¦°øÇÏ´Â CPU ¾ÆÅ°ÅØÃ³¸¦ ¾ÈÁ¤ÀûÀ¸·Î Ȱ¿ëÇÒ ¼ö ÀÖ´Â API¸¦ °³¹ßÀڵ鿡°Ô Á¦°øÇÑ´Ù. À̸¦ ÅëÇØ ºñÈ®Àå ÇÁ·Î¼¼¼»ó¿¡¼ÀÇ µ¿ÀÏ ¼öÁØ ¿¬»ê ÀÛ¾÷ ´ëºñ Ź¿ùÇÑ ¼º´ÉÀ» ¹ßÈÖÇÒ ¼ö ÀÖ´Ù.
JEP 419: ¿ÜºÎ ÇÔ¼ö ¹× ¸Þ¸ð¸® API(µÎ ¹øÂ° ÀÎÅ¥º£ÀÌÅÍ) - ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ÀÚ¹Ù ·±Å¸ÀÓ ¿ÜºÎÀÇ ÄÚµå ¹× µ¥ÀÌÅÍ¿Í »óÈ£ ¿î¿ë °¡´ÉÇÏ°Ô ÇØÁØ´Ù. JVM ¿ÜºÎÀÇ ÄÚµå¿Í °°Àº ¿ÜºÎ ÇÔ¼ö¸¦ È¿À²ÀûÀ¸·Î Àû¿ëÇϰí, ¿ÜºÎ ¸Þ¸ð¸®(JVMÀÌ °ü¸®ÇÏÁö ¾Ê´Â ¸Þ¸ð¸®)¿¡ º¸¾È Á¢±ÙÇÔÀ¸·Î½á, API´Â ÀÚ¹Ù ÇÁ·Î±×·¥ÀÌ ³×ÀÌÆ¼ºê ¶óÀ̺귯¸®¸¦ È£ÃâÇϰųª ³×ÀÌÆ¼ºê µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â °úÁ¤¿¡¼ ¹ß»ý °¡´ÉÇÑ ÀÚ¹Ù ³×ÀÌÆ¼ºê ÀÎÅÍÆäÀ̽º(Java Native Interface, JNI)ÀÇ ºÒ¾ÈÁ¤¼º°ú À§ÇèÀ» ¹æÁöÇÑ´Ù.
JEP 420: Switch ¹®À» À§ÇÑ ÆÐÅÏ ¸ÅĪ(µÎ ¹øÂ° ¹Ì¸®º¸±â) - Switch Ç¥Çö ¹× ¸í·É¹®À» À§ÇÑ ÆÐÅÏ ¸ÅĪÀ» ÅëÇØ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ °³¼±Çϰí, ÆÐÅÏ ¾ð¾î¸¦ È®ÀåÇÑ´Ù. Switch¸¦ À§ÇÑ ÆÐÅÏ ¸ÅĪ È®ÀåÀº ¼ö¸¹Àº ÆÐÅÏ¿¡ ´ëÇÑ °¢°¢ÀÇ Ç¥ÇöÀ» ƯÁ¤ÇÑ ÀÛ¾÷À» ÅëÇØ Å×½ºÆ®ÇÔÀ¸·Î½á º¹ÀâÇÑ µ¥ÀÌÅÍ Áß½ÉÀÇ Äõ¸®¸¦ °£°áÇϰí Á¤È®ÇÏ°Ô Ç¥ÇöÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
¹Ì·¡Çü ÀÚ¹Ù ÇÁ·Î±×·¥
JEP 421: Á¾·á ±â´É »ç¿ë Áß´Ü - ÇöÀç Á¾·á ±â´ÉÀÌ ±âº»À¸·Î Ȱ¼ºÈµÇ¾î ÀÖÁö¸¸ Å×½ºÆ®¸¦ À§ÇØ »ç¿ë Áß´ÜµÉ ¼ö ÀÖ´Ù. ÀÌÈÄ ¹öÀü¿¡¼´Â ºñȰ¼ºÈ°¡ ±âº»°ªÀ¸·Î ¼³Á¤µÈ ÈÄ ±× ´ÙÀ½¿¡´Â »èÁ¦µÉ ¿¹Á¤ÀÌ´Ù. Á¾·á ±â´É¿¡ ÀÇÁ¸ÇÏ´Â ¶óÀ̺귯¸® ¹× ¾ÖÇø®ÄÉÀÌ¼Ç À¯Áö°ü¸®ÀÚ´Â try-with-resources statement, cleaners µî Ÿ ¸®¼Ò½º °ü¸® ±â¼ú·ÎÀÇ ¸¶À̱׷¹À̼ÇÀ» °í·ÁÇØº¼ Çʿ䰡 ÀÖ´Ù.
»ç¿ë·®À» ±âÁØÀ¸·Î ¿ä±ÝÀÌ ºÎ°úµÇ±â ¶§¹®¿¡ ¿ä±Ý ¿¹ÃøÀÌ °¡´ÉÇÑ ¿À¶óŬ ÀÚ¹Ù SE ±¸µ¶ ¼ºñ½º´Â °í°´µé¿¡°Ô ¾÷°è ÃÖ°í ¼öÁØÀÇ Áö¿ø ¼ºñ½º¿Í GraalVM Enterprise ±ÇÇÑ, ÀÚ¹Ù ¸Å´ÏÁö¸ÕÆ® ¼ºñ½º¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑ, ºñÁî´Ï½º ¼ºÀå ¼Óµµ¿¡ ¸ÂÃá À¯¿¬ÇÑ ¾÷±×·¹ÀÌµå ¼ºñ½º¸¦ Á¦°øÇÑ´Ù. À̸¦ ÅëÇØ ¿À¶óŬÀº IT ±â¾÷µéÀÌ º¹À⼺°ú ºñ¿ëÀ» °ü¸®ÇÏ°í º¸¾È °ü·Ã À§ÇèÀ» ¹æÁöÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇϰí ÀÖ´Ù.