{"id":27,"date":"2014-05-25T15:01:03","date_gmt":"2014-05-25T06:01:03","guid":{"rendered":"http:\/\/blog.fupfin.com\/?p=27"},"modified":"2014-05-27T09:34:40","modified_gmt":"2014-05-27T00:34:40","slug":"java-8-%ea%b0%9c%ec%84%a0-%ec%82%ac%ed%95%ad-%ea%b4%80%eb%a0%a8-%ea%b8%80-%eb%aa%a8%ec%9d%8c","status":"publish","type":"post","link":"https:\/\/blog.fupfin.com\/?p=27","title":{"rendered":"Java 8 \uac1c\uc120 \uc0ac\ud56d \uad00\ub828 \uae00 \ubaa8\uc74c"},"content":{"rendered":"<p>\uc644\ubcbd\ud55c \uc124\uacc4\uc5d0 \uc774\ub974\ub800\ub2e4 \ud568\uc740,<br \/>\n\ub354\ud560 \uac83\uc774 \uc5c6\uc744 \ub54c\uac00 \uc544\ub2cc,<br \/>\n\ube84 \uac83\uc774 \uc5c6\uc744 \ub54c\ub97c \ub9d0\ud55c\ub2e4.<br \/>\n&#8211; \uc559\ud22c\uc548 \ub4dc \uc0dd\ud14d\uc950\ud398\ub9ac<\/p>\n<p>\ubaa8 \ub4e0 \uae30\uc220\uc740 \uc138 \ub2e8\uacc4\ub97c \uac70\uce5c\ub2e4. \ucc98\uc74c\uc5d4 \uc870\uc7a1\ud558\uac8c \ub2e8\uc21c\ud558\uace0 \ub9e4\uc6b0 \ubd88\ub9cc\uc871\ud55c \uae30\uacc4, \ub450\ubc88\uc9f8\ub294 \ub9e4\uc6b0 \ubcf5\uc7a1\ud55c \uc870\uc728\uc744 \uac70\uccd0 \uc6d0\ud615\uc758 \uacb0\uc810\uc744 \uadf9\ubcf5\ud558\uace0 \uadf8\ub85c\uc778\ud574 \uc5b4\ub290\uc815\ub3c4 \ub9cc\uc871\uc2a4\ub7ec\uc6b4 \uc131\ub2a5\uc744 \ub0b4\ub3c4\ub85d \uc124\uacc4\ub41c \ud130\ubb34\ub2c8\uc5c6\uc774 \ubcf5\uc7a1\ud55c \uae30\uacc4 \ubb49\uce58, \uc138\ubc88\uc9f8\ub294 \uac70\uae30\uc5d0\uc11c \ub098\uc628 \uad81\uadf9\uc758 \ud0c0\ub2f9\ud55c \uc124\uacc4.<br \/>\n&#8211; \ub85c\ubc84\ud2b8 A \ud558\uc778\ub77c\uc778<\/p>\n<p>\uc774 \ub2e8\uc21c\uc131\uacfc \uc801\uc808\uc131\uc744 \uac15\uc870\ud558\ub294 \ub450 \uba85\uc5b8\uc740 1996\ub144 5\uc6d4 \uc81c\uc784\uc2a4 \uace0\uc2ac\ub9c1\uacfc \ud5e8\ub9ac \ub9e5\uae38\ud134\uc774 \uc791\uc131\ud55c \ubc31\uc11c, \uc790\ubc14 \uc5b8\uc5b4 \ud658\uacbd(The Java Language Environment)\uc5d0\uc11c \uc790\ubc14 \uc5b8\uc5b4\uc758 \ud2b9\uc9d5\uc744 \uac15\uc870\ud558\uba74\uc11c \uc778\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc790\ubc14\ub294 \ucc98\uc74c\ubd80\ud130 \ube84 \uac83\uc774 \ub9ce\uc544 \ubd88\uc644\uc804\ud558\uace0 \ubcf5\uc7a1\ud55c 2\ub2e8\uacc4 \uae30\uacc4\uc778 C++\uc560\uc11c \uce5c\uadfc\ud568\uc740 \uc720\uc9c0\ud558\uba74\uc11c \ubd88\ud544\uc694\ud55c \ubcf5\uc7a1\uc131\uc740 \uc81c\uac70\ud558\ub294 \uac83\uc744 \ubaa9\ud45c\ub85c \uac1c\ubc1c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \ub2e8\uc21c(\uc644\ubcbd)\uc744 \ucd94\uad6c\ud588\ub358 \ub9cc\ud07c \uc5ec\ub7ec \ubc84\uc804\uc744 \uac70\uce58\uba74\uc11c \ub300\ubd80\ubd84 SDK\uac00 \ubc14\ub00c\uace0 JVM\uc774 \uac1c\uc120\ub418\uc5c8\uc744 \ubfd0 \uc5b8\uc5b4 \uc790\uccb4\uc5d0\ub294 \ubcc4\ub2e4\ub978 \ubcc0\ud654\uac00 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub7f0 \uc790\ubc14\uac00 \uc9c0\uae08\uae4c\uc9c0 \uc5b8\uc5b4 \uce21\uba74\uc5d0\uc11c \ub450 \ubc88 \ud070 \ubcc0\ud654\ub97c \uacaa\uc5c8\ub294\ub370 \uccab \ubcc0\ud654\uac00 \uc790\ubc14 5\uc600\uace0 \uadf8\ub2e4\uc74c\uc774 \uc774\ubc88\uc5d0 \ucd9c\uc2dc\ub41c \uc790\ubc14 8\uc785\ub2c8\ub2e4. (\uc790\ubc14 7\uc5d0\uc11c\ub3c4 \uc5b8\uc5b4\uac00 \uc5ec\ub7ec \uac00\uc9c0\ub85c \uac1c\uc120\ub418\uc5c8\uc9c0\ub9cc \ud070 \uc8fc\ubaa9\uc744 \ubc1b\uc9c0\ub294 \ubabb\ud588\uc2b5\ub2c8\ub2e4.)<\/p>\n<p><!--more--><\/p>\n<p>\uc0ac\uc2e4 \uc790\ubc14 8\uc740 \ub78c\ub2e4\uc2dd\uc5d0 \ub300\ud55c \ub17c\uc758\uac00 \uc815\ub9ac\ub418\uc9c0 \uc54a\uc544\uc11c \uc790\ubc14 7 \ucd9c\uc2dc \uc77c\uc815\uc774 \uacc4\uc18d \uc5f0\uae30\ub418\uc790\u00a0<a class=\"external-link\" href=\"http:\/\/mreinhold.org\/blog\/rethinking-jdk7\" rel=\"nofollow\">\uc790\ubc14 7 \ucd9c\uc2dc\ub97c \ubbf8\ub8e8\uc790\ub294 \uc548(Plan A)\uacfc \ub78c\ub2e4\uc2dd\uacfc \uba87 \uac00\uc9c0 \uc7c1\uc810\uc744 \uc81c\uc678\ud55c \uc0c1\ud0dc\ub85c \uc790\ubc14 7\uc744 \ucd9c\uc2dc\ud55c \ud6c4 \uace7\uc774\uc5b4 \ub2e4\uc74c \ubc84\uc804\uc744 \ucd9c\uc2dc\ud558\uc790\ub294 \uc548(Plan B)<\/a>\uc744 \uac00\uc9c0\uace0 \ud1a0\ub860\ud574\u00a0<a class=\"external-link\" href=\"http:\/\/mreinhold.org\/blog\/plan-b\" rel=\"nofollow\">\ud6c4\uc790(Plan B)\ub85c \uacb0\uc815\ub418\uc5c8\uace0<\/a>\u00a0\uadf8 \uc790\ubc14 7\uc5d0\uc11c \ube60\uc84c\ub358\u00a0<a class=\"external-link\" href=\"http:\/\/mreinhold.org\/blog\/plan-b-details\" rel=\"nofollow\">Plan B\uc758 \ub450 \ubc88\uc9f8 \ubd80\ubd84<\/a>\uc744 \uc911\uc2ec\uc73c\ub85c \ucd9c\uc2dc\ud55c \uac83\uc774\ub77c\uc11c \uc0ac\ub78c\ub4e4\uc740 \uad00\uc2ec\uc740 \ub78c\ub2e4\uc2dd\uc5d0 \uc9d1\uc911\ub418\uc5b4 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \uc790\ubc14 8\uc758 \ucd5c\ub300 \ubcc0\uacbd \uc0ac\ud56d\uc740 \ub78c\ub2e4\uc2dd\uc774 \ud655\uc2e4\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uadf8 \uc678\uc5d0\ub3c4 (\uc560\ucd08 \uacc4\ud68d\uacfc \ub2ec\ub9ac) \uc6cc\ub099 \uad11\ubc94\uc704\ud558\uace0 \ub300\uaddc\ubaa8\ub85c \uac1c\uc120\ub418\uc5c8\uae30\uc5d0 \uc790\ubc14 8\uc758 \ubcc0\uacbd \uc0ac\ud56d\ub9cc \uc124\uba85\ud574\ub3c4 \ucc45 \ud55c \uad8c\uc740 \ub420 \uac83 \uac19\uc2b5\ub2c8\ub2e4. (\uadf8\ub7f0\ub370\u00a0<a class=\"external-link\" href=\"http:\/\/skpla.net\/kHle\" rel=\"nofollow\">\uadf8\uac83\uc774 \uc2e4\uc81c\ub85c \uc77c\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4<\/a>. \uc774 \ucc45\uc740 \uc815\ub9d0 \uc694\uc810\ub9cc \uc815\ub9ac\ud588\uc744 \ubfd0\uc778\ub370 240\ud398\uc774\uc9c0\ub098 \ub429\ub2c8\ub2e4.)<\/p>\n<p>\uc790\ubc14 8\uc758 \ubaa8\ub4e0 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc790\uc138\ud788 \ub2e4\ub8e8\uae30\ub294 \ud798\ub4e4\uace0 \ub78c\ub2e4\ub9cc \ub2e4\ub8e8\ub354\ub77c\ub3c4 \ub9ce\uc740 \ubd84\ub7c9\uc774 \ub420 \uac83\uc774\ub2c8 &#8220;\uad6c\uae00\ub9c1 \ub300\uc2e0\ud574\uc8fc\ub294 \ub0a8\uc790&#8221; \ucee8\uc149\uc73c\ub85c \uad6c\uae00\uc758 \uc5ec\ub7ec \uad00\ub828 \uae00\uc744 \ud55c\ubc88 \ubaa8\uc544 \ubcf4\uc558\uc2b5\ub2c8\ub2e4. (\ucc38\uace0\ub85c \uc774 \uae00\uc740 \uc0ac\ub0b4 \uacf5\uc720\uc6a9\uc73c\ub85c \uc791\uc131\ud588\ub358 \uae00\uc744 \uc870\uae08 \ub2e4\ub4ec\uc5c8\uc2b5\ub2c8\ub2e4.)<\/p>\n<p>\uc77c\ub2e8\u00a0<a class=\"external-link\" href=\"http:\/\/openjdk.java.net\/projects\/jdk8\/features\" rel=\"nofollow\">\uc790\ubc14 8\uc758 \ud2b9\uc9d5<\/a>\u00a0\uc911 (\uc81c \uc0dd\uac01\uc5d0) \uc8fc\ubaa9\ud560\ub9cc\ud55c \uac83\ub4e4\ub9cc \ub098\uc5f4\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ub78c\ub2e4\uc2dd(Lambda Expression)\n<ul>\n<li>\uc2a4\ud2b8\ub9bc(Stream) API<\/li>\n<li>\uae30\ubcf8 \uba54\uc11c\ub4dc(Default Method)<\/li>\n<\/ul>\n<\/li>\n<li>\uc0c8 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc5d4\uc9c4, \ub098\uc988\ud63c(Nashorn)<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.joda.org\/joda-time\/\" rel=\"nofollow\">Joda Time<\/a>\u00a0\ubc29\uc2dd\uc758 \uc0c8 \ub0a0\uc9dc API \ubcc0\uacbd (JSR 310)<\/li>\n<li>\uc790\ubc14 FX 8<\/li>\n<li>\uba54\ud0c0 \ub370\uc774\ud130 \uc9c0\uc6d0 \ubcf4\uc644<\/li>\n<li>\ub3d9\uc2dc\uc131 API \uac1c\uc120<\/li>\n<li>IO\/NIO \ud655\uc7a5<\/li>\n<li>Heap\uc5d0\uc11c \uc601\uc18d \uc138\ub300(Permanent Generation) \uc81c\uac70<\/li>\n<\/ul>\n<p>\uadf8\ub7fc \ud558\ub098\uc529 \uac74\ub4dc\ub824 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ub78c\ub2e4\uc2dd(LambdaExpression)\">\ub78c\ub2e4\uc2dd(Lambda Expression)<\/h1>\n<p>\uadf8\ub807\uc2b5\ub2c8\ub2e4. \uac00\uc7a5 \uba3c\uc800\ub294 \ub78c\ub2e4\uc785\ub2c8\ub2e4.<\/p>\n<p>\uac04\ub2e8\ud55c \ucf54\ub4dc\ub97c \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. MyClass\ub77c\ub294 \uac1d\uccb4\uc758 \ub9ac\uc2a4\ud2b8\ub97c value \ud504\ub85c\ud37c\ud2f0\uc5d0 \ub530\ub77c \uc5ed\uc21c\uc73c\ub85c \uc815\ub82c\ud558\ub294 \uc790\ubc14 \ucf54\ub4dc\uc785\ub2c8\ub2e4. \uc5ed\uc21c\uc73c\ub85c \uc815\ub82c\ud558\ub824\uace0 Comparator \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc775\uba85 \ud074\ub798\uc2a4\ub85c \uad6c\ud604\ud574 \uc804\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc790\ubc14\ub294 \uc21c\uc218 OOP\ub97c \ud45c\ubc29\ud55c \uc5b8\uc5b4\ub85c\uc11c \ucd94\uc0c1\ud654\ub97c \ud074\ub798\uc2a4 \uc0c1\uc18d\uc774\ub098 \uac1d\uccb4 \uc704\uc784\uc73c\ub85c \ucc98\ub9ac\ud558\ub294 \ud3b8\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc Collections\uc758 sort(&#8230;) \uba54\uc11c\ub4dc\ub294 \ube44\uad50\ud558\ub294 \uc54c\uace0\ub9ac\ub4ec\uc744 \ud638\ucd9c\ud558\ub294 \ucabd\uc5d0\uc11c \uc778\uc790\ub85c \uc804\ub2ec\ubc1b\uc544 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uad73\uc774 \ub530\uc9c0\uc790\uba74 \uc774 \ubc29\ubc95\ub3c4 \uac1d\uccb4 \uc704\uc784\uc774\ub77c\uace0 \ubcfc \uc218 \uc788\uc73c\ub098 \uc77c\ubc18\uc801\uc778 \uac1d\uccb4 \uc704\uc784\uc778 \uc804\ub7b5 \ud328\ud134(Strategy Pattern)\ubcf4\ub2e4 \uac04\ub2e8\ud569\ub2c8\ub2e4. \ubb3c\ub860 \ud074\ub798\uc2a4 \uc0c1\uc18d\ubcf4\ub2e4\ub3c4 \ubc88\uac70\ub86d\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc775\uba85 \ud074\ub798\uc2a4\ub97c \uc778\ub77c\uc778\uc73c\ub85c \uc0ac\uc6a9\ud588\uc73c\ubbc0\ub85c \ub354\uc6b1 \uac04\ub2e8\ud574\uc84c\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">Collections.sort(theListOfMyClasses, new Comparator&lt;MyClass&gt;() {\r\n    public int compare(MyClass a, MyClass b) {\r\n        return b.getValue() - a.getValue();\r\n    }\r\n});<\/pre>\n<p>\ud558\uc9c0\ub9cc sort(&#8230;) \uba54\uc11c\ub4dc\uac00 \uc815\ub9d0 \ud544\uc694\ub85c \ud558\ub294 \ucf54\ub4dc\ub294 return b.getValue() &#8211; a.getValue() \ubfd0\uc778\ub370 \uc774 \ucf54\ub4dc \ud55c \uc904\uc744 \uc778\uc790\ub85c \ub118\uae30\ub824\uace0 \uc8fc\uc808\uc8fc\uc808 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ud55c \uc904 \ubfd0\uc778 \ub85c\uc9c1\uc744 \uac1d\uccb4\uc5d0 \ub2f4\uc544 \ub118\uae30\ub294 \uc774\uc720\ub294 \uc790\ubc14\uac00 \uae30\ubcf8(Primitive) \ud0c0\uc785\uc774\ub098 \uac1d\uccb4\ub9cc \uba54\uc11c\ub4dc\uc758 \uc778\uc790\ub85c \ub118\uae38 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc775\uba85 \ud074\ub798\uc2a4\uac00 \ub2e4\ub978 \ud074\ub798\uc2a4 \ubcf4\ub2e4\ub294 \ub35c \ubc88\uac70\ub86d\uc9c0\ub9cc \uc774\ub807\uac8c \uac04\ub2e8\ud55c \ub85c\uc9c1\ub3c4 \ubc18\ub4dc\uc2dc \ud074\ub798\uc2a4 \uc548\uc5d0 \ub450\uc5b4\uc57c \ud55c\ub2e4\ub294 \uc810\uc740 \uc790\ubc14\uc758 \uacb0\ud568\uc774\ub098 \uc138\ub828\ub418\uc9c0 \ubabb\ud55c \uba74\uc73c\ub85c \uc9c0\uc801\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub78c\ub2e4 \ub355\uc5d0 \uc790\ubc14 8\uc5d0\uc11c\ub294 \uc774\ub97c \ub354 \uac04\ub2e8\ud788 \ud45c\ud604\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub97c \ubcf4\uba74, \uc870\uae08 \uc0dd\uc18c\ud558\uae30\ub294 \ud558\uc9c0\ub9cc, \uaf2d \ud544\uc694\ud55c \ubd80\ubd84\ub9cc \ub0a8\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">theListOfMyClasses.sort((MyClass a, MyClass b) -&gt; {\r\n    return a.getValue() - b.getValue();\r\n});<\/pre>\n<p>\uc774\uc804\uacfc \ub2ec\ub9ac \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud558\uace0 \uac1d\uccb4\ub97c \uc0dd\uc131\ud574\uc11c \uc778\uc790\ub85c \ub118\uae30\uc9c0 \uc54a\uace0 \ub9c8\uce58 \uaf2d \ud544\uc694\ud55c \ub85c\uc9c1\ub9cc \uc804\ub2ec\ud558\ub294 \uac83\ucc98\ub7fc \ubcf4\uc785\ub2c8\ub2e4. \uc774\ub807\uac8c \ud074\ub798\uc2a4 \uc5c6\uc774 \uba54\uc11c\ub4dc \uc815\uc758 \uc218\uc900\uc73c\ub85c \uc778\uc790\ub85c \uc804\ub2ec\ud560 \ub85c\uc9c1\uc744 \ud45c\ud604\ud560 \uc218 \uc788\ub294 \ud45c\uae30\ubc95\uc744 \ub78c\ub2e4\uc2dd \ub610\ub294 \ub78c\ub2e4\ud45c\ud604\uc774\ub77c\uace0 \ub9d0\ud569\ub2c8\ub2e4. \uc870\uae08 \ub354 \uc790\ubc14\uc5d0 \uc5b4\uc6b8\ub9ac\ub294 \uc775\uba85 \uba54\uc11c\ub4dc\ub780 \uc6a9\uc5b4\ub3c4 \uc0ac\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub2e4\ub978 \uc5b8\uc5b4\uc5d0\uc11c\ub294 \uc870\uae08\uc529 \uac1c\ub150\uc744 \ub2ec\ub9ac\ud558\uba74\uc11c \ud074\ub85c\uc800, \ube14\ub7ed \ub4f1\uc73c\ub85c \ubd80\ub974\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc790\ubc14 8\uc758 \ub78c\ub2e4\uc2dd \ubb38\ubc95\uc740 \uc774\ub807\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"margin-left: 30.0px;\"><em>\ub78c\ub2e4 \ub9e4\uac1c\ubcc0\uc218\u00a0 -&gt;\u00a0 \ub78c\ub2e4 \ubcf8\ubb38<\/em><\/p>\n<p>\uc704 \uc608\uc640 \ube44\uad50\ud574\uc11c \ubcf4\uba74 \uc5b4\ub5a4 \uad6c\uc870\uc778\uc9c0 \uc27d\uac8c \ud30c\uc545\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub78c\ub2e4\uc2dd\uc740 \uc5ec\ub7ec \ubc29\ud3b8\uc73c\ub85c \uac04\ub7b5\ud558\uac8c \ud45c\ud604\ud558\ub294 \uc7a5\uce58\ub4e4\uc744 \uc81c\uacf5\ud558\ub294\ub370 \uc704 \ucf54\ub4dc\ub294 \uc0ac\uc2e4 \uc774\ub807\uac8c \uc57d\uc2dd\uc73c\ub85c \ud45c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">theListOfMyClasses.sort((a, b) -&gt; a.getValue() - b.getValue());<\/pre>\n<p>\uc774\ub807\uac8c \uc57d\uc2dd\uc73c\ub85c \ud45c\ud604\ud560 \uc218 \uc788\ub294 \uc774\uc720\ub294 \ub78c\ub2e4\uc2dd\uc774 \ub9e4\uac1c\ubcc0\uc218\uc758 \ud0c0\uc785\uc744 \ucd94\ub860\ud560 \uc218 \uc788\uace0, \uac04\ub7b5\ud55c \ucf54\ub4dc\ub294 (\uc790\ubc14\uc758 if, for \ubb38 \ub4f1 \ucc98\ub7fc) \ube14\ub7ed\uc744 \uc0dd\ub7b5\ud560 \uc218 \uc788\uc744 \ubfd0 \uc544\ub2c8\ub77c return \uad6c\ubb38\ub3c4 \uc81c\uac70 \uac00\ub2a5\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. \uc2ec\uc9c0\uc5b4 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud558\ub098 \ubfd0\uc774\ub77c\uba74 \uad04\ud638\ub3c4 \uc0dd\ub7b5 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uaddc\uc57d\uc11c\uc5d0 \uc788\ub294 \ub2e4\uc591\ud55c \ub78c\ub2e4\uc2dd\uc758 \uc608\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">() -&gt; {}                     \/\/ No parameters; result is void\r\n() -&gt; 42                     \/\/ No parameters, expression body\r\n() -&gt; null                   \/\/ No parameters, expression body\r\n() -&gt; { return 42; }         \/\/ No parameters, block body with return\r\n() -&gt; { System.gc(); }       \/\/ No parameters, void block body\r\n() -&gt; {\r\n  if (true) return 12;\r\n  else {\r\n    int result = 15;\r\n    for (int i = 1; i &lt; 10; i++)\r\n      result *= i;\r\n    return result;\r\n  }\r\n}                          \/\/ Complex block body with returns\r\n(int x) -&gt; x+1             \/\/ Single declared-type parameter\r\n(int x) -&gt; { return x+1; } \/\/ Single declared-type parameter\r\n(x) -&gt; x+1                 \/\/ Single inferred-type parameter\r\nx -&gt; x+1                   \/\/ Parens optional for single inferred-type case\r\n(String s) -&gt; s.length()   \/\/ Single declared-type parameter\r\n(Thread t) -&gt; { t.start(); } \/\/ Single declared-type parameter\r\ns -&gt; s.length()              \/\/ Single inferred-type parameter\r\nt -&gt; { t.start(); }          \/\/ Single inferred-type parameter\r\n(int x, int y) -&gt; x+y      \/\/ Multiple declared-type parameters\r\n(x,y) -&gt; x+y               \/\/ Multiple inferred-type parameters\r\n(final int x) -&gt; x+1       \/\/ Modified declared-type parameter\r\n(x, final y) -&gt; x+y        \/\/ Illegal: can't modify inferred-type parameters\r\n(x, int y) -&gt; x+y          \/\/ Illegal: can't mix inferred and declared types<\/pre>\n<p>\ub78c\ub2e4\uc2dd\uc740 \ub9c8\uce58 \uba54\uc11c\ub4dc\ub97c \uba54\uc11c\ub4dc\uc758 \uc778\uc790\ub85c \ub118\uae30\ub294 \uac83\ucc98\ub7fc \ubcf4\uc774\uac8c \ud574\uc8fc\ub294\ub370, \uc0ac\uc2e4\uc740 \ucef4\ud30c\uc77c\ub7ec\uac00 \ub78c\ub2e4\uc2dd\uc73c\ub85c \ud45c\ud604\ub41c \ub85c\uc9c1\uc744 \uc790\ub3d9\uc73c\ub85c \uc775\uba85 \ud074\ub798\uc2a4\ub85c \ubc14\uafb8\uc5b4 \uc804\ub2ec\ud558\ubbc0\ub85c \ubc1b\ub294 \uce21\uc5d0\uc11c\ub294 \ud2b9\uc815 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uad6c\ud604 \uac1d\uccb4\ub97c \ub118\uaca8\ubc1b\uac8c \ub429\ub2c8\ub2e4. \uc790\ubc14 8\uc5d0\uc11c\ub294 \uc608\uc81c\uc758 Comparator\uac19\uc774 \uba54\uc11c\ub4dc\uac00 \ud558\ub098\ubfd0\uc778 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud2b9\ubcc4\ud788\u00a0<strong>\ud568\uc218\ud615 \uc778\ud130\ud398\uc774\uc2a4(Functional Interface)<\/strong>\ub77c\uace0 \uad6c\ubd84\ud574 \ubd80\ub974\uba70, \ub78c\ub2e4\uc2dd\uc73c\ub85c \ud45c\ud604\ub41c \ub85c\uc9c1\uc744 \uc774 \ud568\uc218\ud615 \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc790\ub3d9\uc73c\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>Comparator \ub098 Observer\ub098\u00a0Callable\uac19\uc774 \uc790\ubc14 8 \uc774\uc804\ubd80\ud130 \uc788\uc5c8\uac70\ub098 \uc9c1\uc811 \ub9cc\ub4e0, \uba54\uc11c\ub4dc\uac00 \ud558\ub098\uc778 \uc778\ud130\ud398\uc774\uc2a4\ub3c4 \ud568\uc218\ud615 \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc720\ud6a8\ud558\uba70, \uc774 \uc678\uc5d0\ub3c4 \uc790\ubc14 8\uc5d0\uc11c\ub294 \ubc94\uc6a9\uc73c\ub85c \uc4f8 \uc218 \uc788\ub294 \ub2e4\uc591\ud55c \ud568\uc218\ud615 \uc778\ud130\ud398\uc774\uc2a4\ub97c java.util.function \ud328\ud0a4\uc9c0 \uc548\uc5d0 \uc900\ube44 \ub450\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub78c\ub2e4\uc640 \uad00\ub828\ub41c \uae00\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/java\/javaOO\/lambdaexpressions.html\" rel=\"nofollow\">The Java Tutorials: Lambda Expressions<\/a>: \uc790\ubc14 \uacf5\uc2dd \ud29c\ud1a0\ub9ac\uc5bc\uc758 \ub78c\ub2e4\uc2dd \ubd80\ubd84\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/java\/Lambda-QuickStart\/index.html\" rel=\"nofollow\">Java SE 8: Lambda Quick Start<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/jinson.tistory.com\/entry\/%ED%95%9C%EA%B8%80%ED%99%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B85%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EB%9E%8C%EB%8B%A4-%EC%8B%9D%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0-1\" rel=\"nofollow\">\uc790\ubc14\uc5d0\uc11c \ub78c\ub2e4\uc2dd\uc774 \ud544\uc694\ud55c \uc774\uc720 1<\/a><a class=\"external-link\" href=\"http:\/\/jinson.tistory.com\/entry\/%ED%95%9C%EA%B8%80%ED%99%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-5-%EB%9E%8C%EB%8B%A4%EA%B0%80-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0-2\" rel=\"nofollow\">, \uc790\ubc14\uc5d0\uc11c \ub78c\ub2e4\uc2dd\uc774 \ud544\uc694\ud55c \uc774\uc720 2<\/a><\/li>\n<li>David Hartveld\ub77c\ub294 \ubd84\uc774 \ube14\ub85c\uadf8\uc5d0 \ub78c\ub2e4\ub97c \uae30\ubcf8 \uba54\uc11c\ub4dc\uc5d0\uc11c \uc2a4\ud2b8\ub9bc\uae4c\uc9c0 \ucc29\uc2e4\ud558\uba74\uc11c\ub3c4 \uc694\uc810\ub9cc \uac04\ub2e8\ud788 \uc798 \uc815\ub9ac\ud574 \uc124\uba85\ud569\ub2c8\ub2e4. \uc544\uc8fc \uc88b\uc2b5\ub2c8\ub2e4. \uc790\ubc14 \uace0\uc720\uc758 \ub78c\ub2e4\uac00 \ubb34\uc5c7\uc778\uc9c0 \uc815\ud655\ud788 \uc774\ud574\ud558\uace0 \uc37c\uc2b5\ub2c8\ub2e4.\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/blog.hartveld.com\/2013\/03\/jdk-8-13-interface-default-method.html\" rel=\"nofollow\">Interface default method implementations:<\/a>\u00a0\uc5f0\uc7ac \uccab\ubc88\uc9f8 \uae00\ub85c \uae30\ubcf8 \uba54\uc11c\ub4dc\ub97c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/blog.hartveld.com\/2013\/03\/jdk-8-23-lambda-expressions.html\" rel=\"nofollow\">Lambda expressions<\/a>: \ub450 \ubc88\uc9f8\ub85c \ub78c\ub2e4\ub97c \uc124\uba85\ud569\ub2c8\ub2e4. \ud568\uc218\ud615 \uc5b8\uc5b4\uc758 \ub78c\ub2e4\uc640 \ub2e4\ub978, OOP \uc5b8\uc5b4\uc778 \uc790\ubc14\uc758 \ub78c\ub2e4\ub97c \ubd84\uba85\ud558\uace0 \uac04\ub2e8\ud558\uac8c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/blog.hartveld.com\/2013\/03\/jdk-8-33-stream-api.html\" rel=\"nofollow\">The Stream API<\/a>: \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc2a4\ud2b8\ub9bc API\ub97c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.drdobbs.com\/jvm\/lambda-expressions-in-java-8\/240166764\" rel=\"nofollow\">Lambda Expressions in Java 8<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/zeroturnaround.com\/rebellabs\/java-8-the-first-taste-of-lambdas\/\" rel=\"nofollow\">Java 8: The First Taste of Lambdas<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/javarevisited.blogspot.kr\/2014\/02\/10-example-of-lambda-expressions-in-java8.html\" rel=\"nofollow\">10 Example of Lambda Expressions and Streams in Java 8<\/a><\/li>\n<li><a class=\"external-link\" href=\"https:\/\/blogs.atlassian.com\/2014\/03\/miss-java-8-lambda-functions\/\" rel=\"nofollow\">What I miss in Java 8 lambda functions<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.takipiblog.com\/2014\/03\/25\/the-dark-side-of-lambda-expressions-in-java-8\/\" rel=\"nofollow\">The dark side of lambda expressions in Java 8<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.dzone.com\/articles\/whats-wrong-java-8-currying-vs\" rel=\"nofollow\">What&#8217;s Wrong with Java 8: Currying vs Closures<\/a><\/li>\n<\/ul>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc2a4\ud2b8\ub9bc(Stream)\">\uc2a4\ud2b8\ub9bc(Stream)<\/h2>\n<p>\uc790 \ubc14 8\uc740 \ub2e8\uc21c\ud788 \ub78c\ub2e4\ub97c \ub3c4\uc785\ud560 \ubfd0 \uc544\ub2c8\ub77c \ub78c\ub2e4\uc2dd\uc758 \ud6a8\uacfc\uc801\uc778 \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc548\ub0b4\ud558\uace0 \ucd09\uc9c4\ud560 \uc218 \uc788\ub3c4\ub85d \uae30\uc874 API\uc5d0 \ub78c\ub2e4\ub97c \ub300\ud3ed \uc801\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uadf8 \ub300\ud45c\uc801\uc778 \uc778\ud130\ud398\uc774\uc2a4\uac00 Stream\uc785\ub2c8\ub2e4. Stream \uc778\ud130\ud398\uc774\uc2a4\ub294 \uceec\ub799\uc158(Collection)\uc744 \ub2e4\ub8e8\ub294 \uc0c8\ub85c\uc6b4 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc2a4\ud2b8\ub9bc\uc740 \uceec\ub799\uc158\uc744 \ud30c\uc774\ud504\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud558\ub3c4\ub85d \ud558\uba74\uc11c \uace0\ucc28\ud568\uc218\ub85c \uadf8 \uad6c\uc870\ub97c \ucd94\uc0c1\ud654\ud569\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc9c0\uc5f0 \uc5f0\uc0b0\uc774\ub098 \ubcd1\ub82c \ucc98\ub9ac \ub4f1\uc774 \ub3d9\uc77c \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4. \ud754\ud788 \uc774\ub7f0 \ubc29\uc2dd\uc758 API\ub97c \ud568\uc218\ud615\uc774\ub77c\uace0 \ubd80\ub985\ub2c8\ub2e4.<\/p>\n<ul>\n<li>Amit Phaltanar\ub77c\ub294 \ube14\ub85c\uac70\uac00 4\ud68c\uc5d0 \uac78\uccd0 \uc2a4\ud2b8\ub9bc API\ub97c \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.\n<ul>\n<li><a href=\"http:\/\/wiki.skplanet.co.kr\/java.amitph.com\/2014\/01\/understanding-java-8-streams-api.html\" rel=\"nofollow\">Understanding Java 8 Streams API<\/a>: \uc2a4\ud2b8\ub9bc\uc758 \uac1c\uc694\ub97c \uac04\ub2e8\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.amitph.com\/2014\/01\/java-8-streams-api-laziness.html\" rel=\"nofollow\">Java 8 Streams API &#8211; Laziness and Performance Optimization:<\/a>\u00a0\uc2a4\ud2b8\ub9bd\uc758 \uc131\ub2a5 \ucd5c\uc801\ud654 \ub9c8\ubc95\uc778 \uc9c0\uc5f0 \uc5f0\uc0b0\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.amitph.com\/2014\/02\/java-8-streams-api-intermediate.html\" rel=\"nofollow\">Java 8 Streams API &#8211; Intermediate Operations:<\/a>\u00a0\uc2a4\ud2b8\ub9bc\uc758 \uba54\uc11c\ub4dc \uc911\uc5d0 \ucc98\ub9ac \ud6c4 \ub610 \ub2e4\ub978 \uc2a4\ud2b8\ub9bc\uc744 \ubc18\ud658\ud574\uc11c \ud30c\uc774\ud504 \ud615\ud0dc\ub85c \uc774\uc5b4\uc11c \ub610 \ub2e4\ub978 \uc2a4\ud2b8\ub9bc \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \uba54\uc11c\ub4dc\ub4e4\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.amitph.com\/2014\/02\/java-8-streams-api-terminal-operations.html\" rel=\"nofollow\">Java 8 Streams API &#8211; Terminal Operations:<\/a>\u00a0\ubc18\ud658 \uac12\uc774 \uc2a4\ud2b8\ub9bc\uc774 \uc544\ub2cc \uba54\uc11c\ub4dc\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.drdobbs.com\/jvm\/lambdas-and-streams-in-java-8-libraries\/240166818\" rel=\"nofollow\">Lambdas and Streams in Java 8 Libraries<\/a>:\u00a0<a class=\"external-link\" href=\"http:\/\/www.drdobbs.com\/jvm\/lambda-expressions-in-java-8\/240166764\" rel=\"nofollow\">Lambda Expressions in Java 8<\/a>\uc758 \ud6c4\uc18d \uae00\ub85c\uc11c API \uc0ac\uc6a9\ubc95 \ub300\uc2e0 \uc2a4\ud2b8\ub9bc\uc758 \ud2b9\uc9d5\uacfc \uc774\uc810\uc744 \uc790\uc138\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.javacodegeeks.com\/2014\/05\/the-effects-of-programming-with-java-8-streams-on-algorithm-performance.html\" rel=\"nofollow\">The effects of programming with Java 8 Streams on algorithm performance<\/a>: \uae30\uc874 \uc790\ubc14\uc758 \uba85\ub839\ud615 \ubc29\uc2dd\uacfc \uc2a4\ud2b8\ub9bc\uc744 \uac04\ub2e8\ud788 \ube44\uad50\ud558\uba74\uc11c \uc131\ub2a5 \ubd80\ubd84\uc744 \ub17c\uc758\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/blog.hartveld.com\/2013\/03\/jdk-8-33-stream-api.html\" rel=\"nofollow\">Uses and limitations of the Stream API in Java 8:<\/a>\u00a0\uc2a4 \ud2b8\ub9bc API\ub97c \ub300\ub7b5 \uc124\uba85\ud558\uace0\uc11c\ub294 \ub2e4\ub978 (\ud568\uc218\ud615) \uc5b8\uc5b4\uc640 \ube44\uad50\ud574\uc11c \uc790\ubc14 8\uc758 \uc2a4\ud2b8\ub9bc\uc774 \uac16\ub294 \ud55c\uacc4(\ub610\ub294 \ud2b9\uc9d5)\ub97c \ud558\ub098\uc529 \uac70\ub860\ud569\ub2c8\ub2e4. \uc774\ubbf8 \ud568\uc218\ud615 \uc5b8\uc5b4\ub97c \uc544\ub294 \uc0ac\ub78c\uc774 \uc790\ubc14 8\uc744 \ud568\uc218\ud615\uc73c\ub85c \uc811\uadfc\ud558\ub824\uace0 \ud560 \ub54c\uc5d0 \uc8fc\uc758\ud574\uc57c \ud558\ub294 \ubd80\ubd84\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uae30\ubcf8\uba54\uc11c\ub4dc(DefaultMethod)\">\uae30\ubcf8 \uba54\uc11c\ub4dc(Default Method)<\/h2>\n<p>\uc790\ubc14\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud558\uba74 \ud558\uc704 \ud638\ud658\uc131\uc774 \uae68\uc9c0\uae30 \ub54c\ubb38\uc5d0 \ud574\ub2f9 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud55c \ubaa8\ub4e0 \ud074\ub798\uc2a4\uc5d0 \uc0c8\ub85c \ucd94\uac00\ub41c \uba54\uc11c\ub4dc\ub97c \uad6c\ud604\ud558\uace0 \uc774 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \ubaa8\ub4e0 \ucf54\ub4dc\uac00 \uc0c8\ub85c \ucef4\ud30c\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub7f0 \ubb38\uc81c \ub54c\ubb38\uc5d0\u00a0<a class=\"external-link\" href=\"http:\/\/blog.jooq.org\/2013\/02\/01\/defensive-api-evolution-with-java-interfaces\/\" rel=\"nofollow\">\uc778\ud130\ud398\uc774\uc2a4 \uac1c\uc120\uacfc \uad00\ub828\ub41c \uc5ec\ub7ec \uac00\uc9c0 \uc758\uacac<\/a>\uc774 \ud63c\uc7ac\ud588\uc2b5\ub2c8\ub2e4. \uc790\ubc14 8\uc5d0\uc11c\ub294 \uae30\ubcf8 \uba54\uc11c\ub4dc\ub780 \uac1c\ub150\uc774 \ucd94\uac00\ub418\uc5b4 \ud558\uc704\ud638\ud658\uc131 \ubb38\uc81c\uc5c6\uc774 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc0c8\ub85c\uc6b4 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 \uba54\uc11c\ub4dc\ub780 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uad6c\ud604\ub41c \uba54\uc11c\ub4dc\ub85c\uc11c \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\ub294 \ud074\ub798\uc2a4\uac00 \uc624\ubc84\ub77c\uc774\ub4dc \ud558\uc9c0 \uc54a\uc744 \uacbd\uc6b0 \uae30\ubcf8 \uad6c\ud604\ubb3c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. \ucd08\uae30\uc5d0\ub294 \uac00\uc0c1 \ud655\uc7a5 \uba54\uc11c\ub4dc(Virtual Extension Methods) \ub610\ub294 \ubc29\uc5b4 \uba54\uc11c\ub4dc(defender methods)\ub85c \ubd80\ub974\uae30\ub3c4 \ud574\uc11c \ud63c\uc6a9\ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/java\/IandI\/defaultmethods.html\" rel=\"nofollow\">The Java Tutorials: Default Methods<\/a>: \uc790\ubc14 \uacf5\uc2dd \ud29c\ud1a0\ub9ac\uc5bc\uc758 \uae30\ubcf8 \uba54\uc11c\ub4dc \uc124\uba85\uc73c\ub85c \ub9e4\uc6b0 \ucda9\uc2e4\ud55c \ud3b8\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/zeroturnaround.com\/rebellabs\/java-8-explained-default-methods\/\" rel=\"nofollow\">Java 8 explained: Default Methods<\/a>: \uc790\ubc14 8\uc5d0 \ub78c\ub2e4\uac00 \ub3c4\uc785\ub418\uba74\uc11c \uae30\ubcf8 \uba54\uc11c\ub4dc(\ub610\ub294 \uac00\uc0c1 \ud655\uc7a5 \uba54\uc11c\ub4dc)\uac00 \ub3c4\uc785\ub420 \uc218\ubc16\uc5d0 \uc5c6\uc5c8\ub358 \uc774\uc720\ub97c \uc124\uba85\ud558\uba74\uc11c \uae30\ubcf8 \uba54\uc11c\ub4dc\uc758 \ud2b9\uc9d5\uacfc \uc791\ub3d9 \ubc29\uc2dd\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. \uc2e4\uc81c\ub85c \uae30\ubcf8 \uba54\uc11c\ub4dc\ub294 \ub78c\ub2e4 \ud504\ub85c\uc81d\ud2b8\uc758 \uc77c\ubd80\ub85c \uc9c4\ud589\ub41c \uc8fc\uc694 \uac1c\uc120\ub41c \uc0ac\ud56d \uc911 \ud558\ub098\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.javacodegeeks.com\/2014\/04\/handy-new-map-default-methods-in-jdk-8.html\" rel=\"nofollow\">Handy New Map Default Methods in JDK 8<\/a>: \uae30\ubcf8 \uba54\uc11c\ub4dc\ub97c \ud65c\uc6a9 \uc0ac\ub840\ub85c\uc11c \uc790\ubc14 8\uc5d0\uc11c Map \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ucd94\uac00\ub41c \uba54\uc11c\ub4dc\ub4e4\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. \uc790\ubc14 SDK\uc758 API\ub294 \uadf8\ub3d9\uc548 \uc218\uc815\ud558\uc9c0 \uc54a\ub294 \uac83\uc774 \uc6d0\uce59\uc774\uc5c8\ub294\ub370 \uc790\ubc14 8\uc5d0\ub294 \uc5ec\ub7ec \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc0c8\ub85c\uc6b4 \uba54\uc11c\ub4dc\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.journaldev.com\/2752\/java-8-interface-changes-static-methods-default-methods-functional-interfaces\" rel=\"nofollow\">Java 8 Interface Changes \u2013 static methods, default methods, functional Interfaces<\/a>: \uc790\ubc14 8\uc5d0\uc11c \uc778\ud130\ud398\uc774\uc2a4\uc758 \ubcc0\uacbd \uc0ac\ud56d\ub9cc \uac04\ub2e8\ud788 \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 \uba54\uc11c\ub4dc\uc640 \ud568\uaed8 \uc790\ubc14 8\uc5d0\uc11c\ub294 \uc815\uc801 \uba54\uc11c\ub4dc\ub3c4 \uc815\uc758\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub85c\uc368 \uc815\uc801 \uba54\uc11c\ub4dc\ub97c \ubcf4\ub2e4 \ud3ed\ub113\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ub098\uc988\ud63c(Nashorn):\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\uc5d4\uc9c4\">\ub098\uc988\ud63c(Nashorn): \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc5d4\uc9c4<\/h1>\n<p>\uc9c0 \uae08\uae4c\uc9c0\ub294 \ubaa8\uc9c8\ub77c\uc758 \ub9ac\ub178(Rhino)\uac00 \uc790\ubc14\uc758 \uae30\ubcf8 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc5d4\uc9c4\uc73c\ub85c \ubc30\ud3ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub9ac\ub178\ub294 \ud6cc\ub96d\ud55c \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc5d4\uc9c4\uc774\uc5c8\uc9c0\ub9cc \ub108\ubb34 \uc624\ub798\ub41c \ud504\ub85c\uc81d\ud2b8\ub77c\uc11c \ucd5c\uc2e0\uc758 \uc790\ubc14 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc2ed\ubd84 \ud65c\uc6a9\ud558\uc9c0 \ubabb\ud558\ub294 \ubb38\uc81c\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub098\uc988\ud63c\uc740 \ucd5c\uadfc JVM\uc744 \ub2e4\uc5b8\uc5b4 \uc9c0\uc6d0 \uac00\uc0c1 \uae30\uacc4\ub85c \uac1c\uc120\ud558\uba74\uc11c \ub3c4\uc785\ub41c \uae30\ub2a5\uc744 \ucda9\ubd84\ud788 \ud65c\uc6a9\ud558\ub3c4\ub85d \uac1c\ubc1c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/www.oracle.com\/technetwork\/articles\/java\/jf14-nashorn-2126515.html\" rel=\"nofollow\">Oracle Nashorn: A Next-Generation JavaScript Engine for the JVM<\/a>: \ub098\uc988\ud63c\uc744 \uc18c\uac1c\ud558\ub294 OTN\uc758 \uae30\uace0\ubb38\uc785\ub2c8\ub2e4. \ub098\uc988\ud63c\uc744 \ub2e4\uc591\ud558\uac8c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc608\uc81c\uc640 \ud568\uaed8 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.javaworld.com\/article\/2144908\/scripting-jvm-languages\/nashorn--javascript-made-great-in-java-8.html\" rel=\"nofollow\">A first look at Java&#8217;s sleeker JavaScript compiler and command-line tools<\/a>: \ub098\uc988\ud63c\uc744 \ub9cc\ub4e4\uac8c \ub41c \uacc4\uae30\uc640 \ubaa9\ud45c\uc640 \uac04\ub2e8\ud55c \uc0ac\uc6a9\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/download.java.net\/jdk8u20\/docs\/technotes\/guides\/scripting\/nashorn\/\" rel=\"nofollow\">Nashorn User&#8217;s Guide<\/a>: \uc624\ub77c\ud074\uc758 \uacf5\uc2dd \ub098\uc988\ud63c \uc0ac\uc6a9\uc790 \uc124\uba85\uc11c\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/wnameless.wordpress.com\/2013\/12\/10\/javascript-engine-benchmarks-nashorn-vs-v8-vs-spidermonkey\/\" rel=\"nofollow\">JavaScript engine benchmarks: Nashorn vs V8 vs Spidermonkey<\/a>: \ub098\uc988\ud63c\uacfc \uad6c\uae00\uc758 V8\uacfc \ubaa8\uc9c8\ub77c\uc758 \uc2a4\ud30c\uc774\ub354\ubabd\ud0a4\uc758 \uc131\ub2a5\uc744 \uac04\ub2e8\ud788 \ube44\uad50\ud588\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\ub294 \uadf8\ub9ac \ub098\uc058\uc9c0 \uc54a\uc740 \uac78\ub85c \ub098\uc654\uc2b5\ub2c8\ub2e4. \ub9ac\ub178\uc5d0 \ube44\ud558\uba74 \uc5c4\uccad\ub09c \uc131\ub2a5 \ud5a5\uc0c1\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc0c8\ub0a0\uc9dcAPI\">\uc0c8 \ub0a0\uc9dc API<\/h1>\n<p>\uc790 \ubc14\ub97c \ucc98\uc74c \uacf5\ubd80\ud560 \ub54c, \uc815\ub9d0 \ud669\ub2f9\ud558\uac8c \uc0dd\uac01\ub418\uc5c8\ub358 \ud074\ub798\uc2a4\uac00 Date\uc600\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uadf8 \ud6c4\uc5d0 \ub300\uccb4\ub41c Calendar\ub3c4 \uadf8\ub9ac \uc815\uc774 \uac00\uc9c0\ub294 \uc54a\uc558\uc2b5\ub2c8\ub2e4. API \uc2a4\ud0c0\uc77c \uc678\uc5d0\ub3c4 \uae30\uc874 \uc790\ubc14\uc758 \ub0a0\uc9dc API\ub294 \ub9ce\uc740 \ubb38\uc81c\ub97c \uac00\uc9c0\uace0 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c\u00a0<a class=\"external-link\" href=\"http:\/\/www.joda.org\/joda-time\/\" rel=\"nofollow\">Joda Time<\/a>\u00a0\uc774\ub77c\ub294 \ubcc4\ub3c4 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ub300\uc548\uc73c\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ubc88 \uc790\ubc14 8\uc5d0 Joda Time\uc774 \ud1b5\ud569\ub41c\ub2e4\ub294 \uc18c\ubb38\uc774 \uc788\uc5c8\uc9c0\ub9cc, \ucd5c\uc885\uc801\uc73c\ub85c\ub294 Joda Time\uc744 \ucc38\uace0\ud55c \uc0c8 API\ub97c \ub9cc\ub4dc\ub294 \ud615\ud0dc\ub85c \uc9c4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/helloworld.naver.com\/helloworld\/645609\" rel=\"nofollow\">Java\uc758 \ub0a0\uc9dc\uc640 \uc2dc\uac04 API:<\/a>\u00a0\ub0a0\uc9dc\uc640 \uad00\ub828\ub41c \uc774\uc288\uc640 \uc790\ubc14 \ub0a0\uc9dc \uad00\ub828 API \ubb38\uc81c, \ub2e4\uc591\ud55c \ud574\uacb0\ucc45, \uc790\ubc14 8\uc758 \uc0c8\ub85c\uc6b4 \ub0a0\uc9dc API\ub97c \ud3ed\ub113\uace0\ub3c4 \uae4a\uc774 \uc788\uac8c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.oracle.com\/technetwork\/articles\/java\/jf14-date-time-2125367.html\" rel=\"nofollow\">Java SE 8 Date and Time<\/a>: OTN\uc758 \uae30\uace0\ubb38\uc785\ub2c8\ub2e4. \uc790\ubc14 8\uc758 \ub0a0\uc9dc API\ub97c \uc608\uc81c\uc640 \ud568\uaed8 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/datetime\/\" rel=\"nofollow\">The Java Tutorials: Date Time<\/a>: \uacf5\uc2dd \uc790\ubc14 \ud29c\ud1a0\ub9ac\uc5bc\uc758 \ub0a0\uc9dc \uc2dc\uac04 \ubd80\ubd84\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc790\ubc14FX8\">\uc790\ubc14FX 8<\/h1>\n<p>\uc790 \ubc14FX 1.0\uc740 \uba85\ubc31\ud788 RIA \uc2dc\uc7a5\uc758 \uc120\ub450\uba74\uc11c \ub370\uc2a4\ud06c\ud1b1\uae4c\uc9c0 \uc9c4\ucd9c\ud558\ub824\uace0 \ud558\ub358 \ud50c\ub798\uc2dc\uc758 \ub300\uc548\uc73c\ub85c \uc18c\uac1c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\ubbf8 \uc2dc\uc7a5\uc740 \ud50c\ub798\uc2dc\uc5d0 \uc810\ub839\ub418\uc5c8\uace0 \uc790\ubc14\ub77c\ub294 \uc774\ub984\uc744 \uac00\uc9c0\uace0 \uc788\uc9c0\ub9cc \uc0c8\ub85c\uc6b4 \uc5b8\uc5b4\ub97c \ubc30\uc6cc\uc57c \ud588\uae30\uc5d0 \uc2dc\uc7a5\uc758 \ubc18\uc751\uc740 \uc2f8\ub298\ud588\uc2b5\ub2c8\ub2e4. \uc790\ubc14FX 2.0\uc740 1.0\uc758 \uad50\ud6c8\uc744 \ubc1c\ud310\uc0bc\uc544 \uc790\ubc14\ub85c \ud504\ub85c\uadf8\ub798\ubc0d\ud560 \uc218 \uc788\ub3c4\ub85d API\ub97c \uc81c\uacf5\ud588\uc9c0\ub9cc, \uc0ac\ub78c\ub4e4\uc740 \uc628\ud1b5 HTML5\ub9cc \uc598\uae30\ud560 \ubfd0 \uc790\ubc14FX\uac00 \ubaa9\ud45c\ub85c \ud588\ub358 \ud50c\ub798\uc2dc\uc870\ucc28 \uc0ac\ub78c\ub4e4\uc758 \uad00\uc2ec \ubc16\uc73c\ub85c \ubc00\ub824\ub09c \uc0c1\ud0dc\uc600\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0\ub370 \uc790\ubc14 8\uc5d0\uc11c \uc624\ub77c\ud074\uc740 \ubaa8\ud5d8\uc744 \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. \ubaa8\ub450 \uc790\ubc14FX\ub97c \ubc84\ub9b4 \uac83\uc73c\ub85c \uc0dd\uac01\ud588\ub294\ub370 \uc624\ub77c\ud074\uc740 \uc624\ud788\ub824 \uc2a4\uc719\uc744 \ubc84\ub9ac\uace0 \uc790\ubc14FX\ub97c \uacf5\uc2dd \uc790\ubc14 GUI \uac1c\ubc1c \uae30\uc220\ub85c \uc81c\uc548\ud569\ub2c8\ub2e4. \ub370\uc2a4\ud06c\ud1b1\uacfc \ubaa8\ubc14\uc77c \uae30\uae30\ub97c \ud1b5\ud569\ud558\ub294 GUI \uae30\uc220\uc774 \ub300\uc138\uc774\uae30\ub294 \ud558\uc9c0\ub9cc \uc774 \uc2dc\ub3c4\uac00 \uc5bc\ub9c8\ub098 \ud6a8\uacfc\ub97c \uc5bb\uc744\uc9c0 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4. \uc624\ub77c\ud074\uc740 \uc790\ubc14 5\uc5d0\uc11c \uacf5\ub4e4\uc600\ub358 \uc2a4\uc719\uc744 \ubc84\ub9b4 \uc815\ub3c4\ub85c \uc790\uc2e0 \uc788\ub294 \ubaa8\uc591\uc785\ub2c8\ub2e4. \uc0ac\uc2e4 \uc2a4\uc719\uc740 \ucd5c\uc2e0 GUI \uacbd\ud5a5\uc744 \ubc18\uc601\ud558\uae30\uc5d4 \uad6c\uc2dd\uc774 \ubd84\uba85\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/javafx\/get-started-tutorial\/\" rel=\"nofollow\">JavaFX: Getting Started with JavaFX<\/a>: \uacf5\uc2dd \uc624\ub77c\ud074 \uc790\ubc14FX \uae30\ubcf8 \uc0ac\uc6a9 \uc124\uba85\uc11c<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/overview\/javafx-overview-2158620.html\" rel=\"nofollow\">JavaFX &#8211; The Rich Client Platform<\/a>: \uc624\ub77c\ud074 \uc790\ubc14FX \ud648\ud398\uc774\uc9c0, \ub2e4\uc591\ud55c \uc790\ub8cc\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.infoworld.com\/t\/java-programming\/sorry-javafx-java-8-wont-help-you-matter-239613\" rel=\"nofollow\">Sorry, JavaFX &#8212; Java 8 won&#8217;t help you matter<\/a>: \uc790\ubc14FX 8\uc744 \ube44\ud310\ud558\ub294 \uae00\uc785\ub2c8\ub2e4. \uc624\ub77c\ud074\uc740 \uc790\ubc14FX\ub97c \ud50c\ub798\uc2dc\uac00 \uc544\ub2cc \uc2a4\uc719\uc758 \ub300\uccb4 \uae30\uc220\ub85c \uc790\ub9ac\ub9e4\uae40\ud558\uace0 \uc2f6\uc5b4 \ud558\uc9c0\ub9cc \uc5ec\uc804\ud788 \uc0ac\ub78c\ub4e4\uc740 \ud50c\ub798\uc2dc\ub098 \uc2e4\ubc84\ub77c\uc774\ud2b8\uc758 \uc720\uc0ac \uae30\uc220\ub85c \uc5ec\uae30\ub294 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/justmy2bits.com\/2014\/04\/21\/javafx-why-it-matters-even-more-with-java-8\/\" rel=\"nofollow\">JavaFX: Why it matters even more with Java 8<\/a>: \uc717\uae00\uc5d0 \ub300\ud55c \ubc18\ubc15\uc785\ub2c8\ub2e4. \ub300\ubd80\ubd84 \uc790\ubc14FX\ub97c \uc624\ud574\ud558\uace0 \uc788\ub2e4\ub294 \ub0b4\uc6a9\uc785\ub2c8\ub2e4. \uadf8\ub7f0\ub370 \uc774 \uae00\ucc98\ub7fc \ub420\uc9c0 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4. \ub124\uc774\ud2f0\ube0c API\ub098 \uc6f9\uc774 \uc544\ub2cc, \ubc94\uc6a9 \uae30\uc220\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\uc6a9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud558\ub294 \uc0ac\ub78c\ub4e4\uc774 \ub9ce\uc774 \uc904\uc5b4\ub4e0 \ub4ef\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.dzone.com\/articles\/javafx-and-java-8-version-2048\" rel=\"nofollow\">JavaFX and Java 8 version of the 2048 game<\/a>: \uc694\uc998 \uc720\ud589\ud558\ub294 2048 \uac8c\uc784\uc744 \uc790\ubc14FX\ub85c \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"https:\/\/github.com\/brunoborges\/fx2048\" rel=\"nofollow\">\uae43\ud5d9\uc5d0 \uc18c\uc2a4\uac00 \uacf5\uac1c<\/a>\ub418\uc5b4 \uc790\ubc14FX 8\uacfc \ub2e4\uc591\ud55c \uc790\ubc14 8\uc758 \uac1c\uc120 \uc0ac\ud56d\uc744 \uc775\ud788\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uba54\ud0c0\ub370\uc774\ud130\uc9c0\uc6d0\ubcf4\uc644\">\uba54\ud0c0 \ub370\uc774\ud130 \uc9c0\uc6d0 \ubcf4\uc644<\/h1>\n<p>\uac01\uc885 \ud504\ub808\uc784\uc6cc\ud06c\uac00 \ubc1c\ub2ec\ud558\uba74\uc11c \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc774 \uac1c\ubc1c \ud3b8\uc758\uc131\uacfc \uc0dd\uc0b0\uc131\uc5d0 \ubbf8\uce58\ub294 \uc601\ud5a5\uc774 \ucee4\uc9c0\uace0 \uc788\ub294\ub370 \uc790\ubc14 8\uc5d0\uc11c\ub294 \uc774\ub97c \uc704\ud55c \uba54\ud0c0 \ub370\uc774\ud130 \uc9c0\uc6d0 \uae30\ub2a5\uc774 \ubcf4\uac15\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Devoxx 2012\uc5d0\uc11c \ubc1c\ud45c\ub41c\u00a0<a class=\"external-link\" href=\"http:\/\/parleys.com\/play\/5148922b0364bc17fc56c953\/chapter44\/about\" rel=\"nofollow\">Annotation Features in JDK 8<\/a>\uc740 \uba54\ud0c0 \ub370\uc774\ud130 \uc911 \uc5b4\ub178\ud14c\uc774\uc158\uacfc \uad00\ub828\ub41c \ubd80\ubd84\uc744 \uae4a\uc774 \uc788\uac8c \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc790\ubc14\ud0c0\uc785\uc5b4\ub178\ud14c\uc774\uc158(JSR308)\">\uc790\ubc14 \ud0c0\uc785 \uc5b4\ub178\ud14c\uc774\uc158(<a class=\"external-link\" href=\"https:\/\/jcp.org\/en\/jsr\/detail?id=308\" rel=\"nofollow\">JSR 308<\/a>)<\/h2>\n<p>\uc790 \ubc14 8\uc5d0\uc11c\ub294 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ub2ec \uc218 \uc788\ub294 \ub300\uc0c1\uc774 \ub300\ud3ed \ub113\uc5b4\uc84c\ub294\ub370 \uadf8\uc911\uc5d0 \ud0c0\uc785\ub3c4 \ud574\ub2f9\ud569\ub2c8\ub2e4. \uc5ec\ub7ec \ud0c0\uc785\uc744 \uc9c0\uc815\ud558\ub294 \uacf3\uc5d0 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ub2ec\uc544\uc11c \uc790\ubc14\uc758 \uae30\ubcf8 \ud0c0\uc785 \uc2dc\uc2a4\ud15c\uc774 \uc81c\uacf5\ud558\uc9c0 \uc54a\ub294 \uc815\ubcf4\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc774\uc640 \ud568\uaed8 \ud0c0\uc785 \ud655\uc778 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \ud1b5\ud574 \uc5b4\ub178\ud14c\uc774\uc158\uc73c\ub85c \ub367\ubd99\uc778 \uc815\ubcf4\ub97c \ucef4\ud30c\uc77c\ub7ec\uac00 \ucc98\ub9ac\ud560 \uc218 \uc788\ub3c4\ub85d \ud655\uc7a5\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc790\ubc14 \ud0c0\uc785 \uc5b4\ub178\ud14c\uc774\uc158\uc740\u00a0<a class=\"external-link\" href=\"https:\/\/jcp.org\/en\/jsr\/detail?id=308\" rel=\"nofollow\">JSR 308<\/a>\ub85c \uc9c4\ud589\ub418\uc5c8\uace0 \uc790\ubc14 5\uc5d0\uc11c \uc9c0\ub124\ub9ad\uc2a4\ub85c \uac15\ud654\ub41c \uc790\ubc14\uc758 \ud0c0\uc785 \uc2dc\uc2a4\ud15c\uc744 \ud55c\uce35 \ubcf4\uc644\ud558\uae30 \uc704\ud574 2006\ub144\ubd80\ud130 \uc9c4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>JSR 308\uc740 \uc9c0\ub125\ub9ad\uc2a4\uc640 \ud568\uaed8\u00a0<a class=\"external-link\" href=\"http:\/\/www.infoq.com\/news\/2008\/05\/JSR-308\" rel=\"nofollow\">\uc790\ubc14\ub97c \ub108\ubb34 \ubcf5\uc7a1\ud558\uac8c \ub9cc\ub4e0\ub2e4\uace0 \ube44\ub09c<\/a>\ubc1b\ub358 \uac1c\uc120 \ud504\ub85c\uc81d\ud2b8\uc600\uc2b5\ub2c8\ub2e4. \uc55e\uc73c\ub85c \uc5bc\ub9c8\ub098 \ub110\ub9ac \uc0ac\uc6a9\ub420\uc9c0 \ubaa8\ub974\uaca0\uc9c0\ub9cc, \uad00\uc2ec \uc788\ub294 \ubd84\uc740 OTN\uc758\u00a0<a class=\"external-link\" href=\"http:\/\/www.oracle.com\/technetwork\/articles\/java\/ma14-architect-annotations-2177655.html\" rel=\"nofollow\">JSR 308 Explained: Java Type Annotations<\/a>\ub97c \uc77d\uc5b4 \ubcf4\ub3c4\ub85d \ud558\uc2ed\uc2dc\uc624. \ud0c0\uc5c5 \uc5b4\ub178\ud14c\uc774\uc158\uacfc \ud0c0\uc785 \ud655\uc778 \ud504\ub85c\uc138\uc11c \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc608\uc81c\uc640 \ud568\uaed8 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p>JSR 308\uacfc \uad00\ub828\ub418\uc5b4, \uc790\ubc14\uc5d0 \ubc94\uc790\uc5f0\uc218(0\uc744 \ud3ec\ud568\ud55c \uc790\uc5f0\uc218), \uc989\u00a0<a class=\"external-link\" href=\"https:\/\/blogs.oracle.com\/darcy\/entry\/unsigned_api\" rel=\"nofollow\">unsigned integer \uc9c0\uc6d0 \uae30\ub2a5\uc774 \ucd94\uac00\ub41c\ub2e4\ub294 \uc18c\uc2dd<\/a>\uc774 \uc0ac\ub78c\ub4e4\uc758 \uc774\ubaa9\uc744 \ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uc815\ub9d0\ub85c \ud574\ub2f9 API\uac00 \uc790\ubc14 8\uc5d0 \ucd94\uac00\ub418\uae30\ub294 \ud588\uc9c0\ub9cc \uc544\uc27d\uac8c JSR 308\uc744 \ud1b5\ud55c \ubc94\uc790\uc5f0\uc218 \uc9c0\uc6d0\uc740 \uacf5\uc2dd\uc73c\ub85c \uc790\ubc14 8\uc5d0 \ud3ec\ud568\ub418\uc9c0\ub294 \ubabb\ud588\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/blog.jooq.org\/2013\/05\/10\/subtle-changes-in-java-8-repeatable-annotations\/\" rel=\"nofollow\">Subtle Changes in Java 8: Repeatable Annotations<\/a>\uc5d0\uc11c\ub294 \uc544\uc8fc \uac04\ub2e8\ud55c \uc18c\uac1c\uc640 \uacf5\uc2dd\uc801\uc778 \ucc38\uace0 \ubb38\ud5cc\uc744 \uc811\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc5b4\ub178\ud14c\uc774\uc158\uc911\ubcf5\uc9c0\uc815\">\uc5b4\ub178\ud14c\uc774\uc158 \uc911\ubcf5 \uc9c0\uc815<\/h2>\n<p>\ub2e8\uc77c \uc5b8\uc5b4 \uc694\uc18c\uc5d0 \ub3d9\uc77c \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ud558\ub098 \uc774\uc0c1 \uc9c0\uc815\ud560 \uc218 \uc5c6\ub294 \uc81c\uc57d\uc740 \uc790\ubc14 \uc5b4\ub178\ud14c\uc774\uc158\uc758 \ubb38\uc81c\ub85c \uc9c0\ubaa9\ub418\ub358 \uac83 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \uc790\ubc14 8\uc5d0\uc11c\ub294 \uc774 \uc81c\uc57d\uc774 \ud480\ub838\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/java\/annotations\/repeating.html\" rel=\"nofollow\">\uacf5\uc2dd \ud29c\ud1a0\ub9ac\uc5bc\uc5d0 \uc0ac\uc6a9 \ubc29\ubc95\uacfc \uc911\ubcf5 \uc9c0\uc815 \uac00\ub2a5\ud55c \ucee4\uc2a4\ud140 \uc5b4\ub178\ud14c\uc774\uc158 \uc81c\uc791\ubc95\uc774 \uce5c\uc808\ud558\uac8c \uc124\uba85<\/a>\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/blog.functr.com\/2012\/09\/java-8-features-discover-repeating.html\" rel=\"nofollow\">Java 8 Features: Discover Repeating Annotations\ub294<\/a> \ud575\uc2ec\ub9cc \uc694\uc57d\ud574\uc11c \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ub9e4\uac1c\ubcc0\uc218\uba54\ud0c0\ub370\uc774\ud130\ub9ac\ud50c\ub799\uc158\uc9c0\uc6d0\">\ub9e4\uac1c\ubcc0\uc218 \uba54\ud0c0\ub370\uc774\ud130 \ub9ac\ud50c\ub799\uc158 \uc9c0\uc6d0<\/h2>\n<p>\uc790 \ubc14\ub294 \ucef4\ud30c\uc77c \ud6c4\uc5d0\ub3c4 \ub9ce\uc740 \uba54\ud0c0 \ub370\uc774\ud130 \uc815\ubcf4\ub97c \ubc14\uc774\ud2b8 \ucf54\ub4dc\uc5d0 \ub0a8\uae30\uc9c0\ub9cc \uba54\uc11c\ub4dc\uc758 \ub9e4\uac1c\ubcc0\uc218 \uc774\ub984\uc744 \uc9c0\uc6b0\uae30 \ub54c\ubb38\uc5d0 \uc790\ubc14 \ub9ac\ud50c\ub799\uc158\uc73c\ub85c \uba54\uc11c\ub4dc\uc758 \ud0c0\uc785\ub9cc \ud655\uc778\ud560 \ubfd0 \uc774\ub984\uc740 \uc54c \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uba54\uc11c\ub4dc\uc758 \ub9e4\uac1c\ubcc0\uc218\uc640 \uc678\ubd80 \uac12\uc744 \uc0ac\uc0c1\ud558\ub294 \uacbd\uc6b0 \uc5b4\ub178\ud14c\uc774\uc158\uc5d0 \uc77c\uc77c\uc774 \ub300\uc751\ud558\ub294 \uac12\uc758 \uc774\ub984\uc744 \uc9c0\uc815\ud588\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc2a4\ud504\ub9c1 MVC\uc758\u00a0@RequestParam\uc758 \uacbd\uc6b0 \ub2e4\uc74c\uacfc \uac19\uc774 \ud574\uc57c \ud569\ub2c8\ub2e4. \uc678\ubd80\uc5d0\uc11c \uc804\ub2ec\ub418\ub294 \uac12\uc758 \uc774\ub984\uacfc \ub9e4\uac1c\ubcc0\uc218\uc758 \uc774\ub984\uc774 \uac19\ub354\ub77c\ub3c4 \uc77c\uc77c\uc774 \uc5b4\ub178\ud14c\uc774\uc158\uc5d0 \uc774\ub984\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. (\uc790\ubc14 \ucef4\ud30c\uc77c\ub7ec\uc5d0 -debug \uc635\uc158\uc744 \uc8fc\uc5b4 \ubc14\uc774\ud2b8 \ucf54\ub4dc\uc5d0 \ub514\ubc84\uae45\uc6a9 \uc18c\uc2a4\ub97c \ub0a8\uae30\uba74 \uc774 \uc18c\uc2a4 \ucf54\ub4dc\ub97c \ud65c\uc6a9\ud574\uc11c \uc790\ub3d9\uc73c\ub85c \ub9e4\uac1c\ubcc0\uc218 \uc774\ub984\uc744 \uc778\uc2dd\ud558\ub294 \uae30\ub2a5\uc774 \uc2a4\ud504\ub9c1\uc5d0 \uc788\uc5c8\uae30\ub294 \ud558\uc9c0\ub9cc \ub9ac\ud50c\ub799\uc158\uc73c\ub85c\ub294 \ub9e4\uac1c\ubcc0\uc218 \uc774\ub984\uc744 \uc54c \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4.)<\/p>\n<div class=\"code panel pdl\" style=\"border-width: 1px;\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_741491\" class=\"syntaxhighlighter nogutter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">public<\/code> <code class=\"java plain\">String foo(<\/code><code class=\"java color1\">@RequestParam<\/code><code class=\"java plain\">(<\/code><code class=\"java string\">&quot;name&quot;<\/code><code class=\"java plain\">) String name, <\/code><code class=\"java color1\">@RequestParam<\/code><code class=\"java plain\">(<\/code><code class=\"java string\">&quot;file&quot;<\/code><code class=\"java plain\">) MultipartFile file) { ... }<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>\uc790\ubc14 8\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\ub7b5\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"code panel pdl\" style=\"border-width: 1px;\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_756643\" class=\"syntaxhighlighter nogutter  java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">public<\/code> <code class=\"java plain\">String foo(<\/code><code class=\"java color1\">@RequestParam<\/code> <code class=\"java plain\">String name, <\/code><code class=\"java color1\">@RequestParam<\/code> <code class=\"java plain\">MultipartFile file) { ... }<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>\uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc790\ubc14 \ud29c\ud1a0\ub9ac\uc5bc\uc758\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/reflect\/member\/methodparameterreflection.html\" rel=\"nofollow\">Obtaining Names of Method Parameters<\/a>\u00a0\ubd80\ubd84\uc744 \ucc38\uace0\ud558\uc2ed\uc2dc\uc624.<\/p>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uae30\ud0c0\">\uae30\ud0c0<\/h1>\n<p>\uc9c0\uae08\ubd80\ud130\ub294 \uc0c1\ub300\uc801\uc73c\ub85c \uc790\uc798\ud558\uc9c0\ub9cc \ub193\uce58\uae30 \uc544\uae4c\uc6b4 \ubd80\ubd84\uc744 \uc18c\uac1c\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ub3d9\uc2dc\uc131API\uac1c\uc120\">\ub3d9\uc2dc\uc131 API \uac1c\uc120<\/h2>\n<p>\ubb34\uc5b4\uc758 \ubc95\uce59\uc774 \uae68\uc9c0\uace0 \uba40\ud2f0\ucf54\uc5b4 CPU \uc2dc\ub300\ub85c \uc811\uc5b4\ub4e4\uc790 \uc790\ubc14\ub3c4 \uc790\ubc14 5 \uc774\ud6c4\ub85c \ub3d9\uc2dc\uc131\uacfc \uad00\ub828\ud574\uc11c \uafb8\uc900\ud788 \uae30\ub2a5\uc744 \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub3c4\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/concurrency\/changes8.html\" rel=\"nofollow\">\uc5ec\ub7ec \uc720\uc6a9\ud55c \uae30\ub2a5\uc744 \ucd94\uac00<\/a>\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c \uc800\ub294 \uc790\ubc14 5 \uc774\ud6c4 \uc804\ud1b5\uc801\uc73c\ub85c \uac00\uc7a5 \uc778\uae30 \uc788\ub358 HashMap\uc758 \uc790\ub9ac\ub97c \ucc28\uc9c0\ud55c ConcurrentHaspMap\uc5d0 \uc0c8\ub85c\uc6b4 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud574 \uc0ac\uc6a9\uc131\uc744 \uac1c\uc120\ud588\uc2b5\ub2c8\ub2e4. \ub78c\ub2e4\uc640 \uc2a4\ud2b8\ub9bc \ubc29\uc2dd\uc774 \uad11\ubc94\uc704\ud558\uac8c \uc801\uc6a9\ub418\uc5c8\uace0, \uadf8 \uc678\uc5d0\ub3c4 \uba87 \uac00\uc9c0 \ud3b8\uc758 \uba54\uc11c\ub4dc\ub85c \uce90\uc2dc\ub85c \uc4f0\uae30 \uc88b\uac8c \uac1c\uc120\ub418\uc5c8\ub294\ub370\u00a0<a class=\"external-link\" href=\"http:\/\/www.java8.org\/caching-with-ConcurrentHashMap-in-java-8.html\" rel=\"nofollow\">Caching with ConcurrentHashMap and computeIfAbsent<\/a>\uc5d0\uc11c \uadf8 \ud55c \uc608\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610 \ud55c \uac1c\uc120\uc810\uc740 \uacc4\uc218\ub098 \ub204\uc0b0 \uac19\uc740 \uc791\uc5c5\uc744 \uc6d0\uc790\uc801\uc73c\ub85c \ud560 \uc218 \uc788\ub3c4\ub85d \ub3d5\ub294 \ud074\ub798\uc2a4\uac00 java.util.concurrent.atomic\uc5d0 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/blog.palominolabs.com\/2014\/02\/10\/java-8-performance-improvements-longadder-vs-atomiclong\/\" rel=\"nofollow\">Java 8 Performance Improvements: LongAdder vs AtomicLong<\/a>\uc5d0\uc11c \uc0c8\ub85c \ucd94\uac00\ub41c LongAdder\uac00 \uae30\uc874\uc758 AtomicLong\uc5d0 \ube44\ud574 \uc5bc\ub9c8\ub098 \ube60\ub978\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/minddotout.wordpress.com\/2013\/05\/11\/java-8-concurrency-longadder\/\" rel=\"nofollow\">Java 8 Concurrency: LongAdder<\/a>\ub294 LongAdder\uc758 \uad6c\ud604 \ubc29\uc2dd\uc744 \uc0b4\ud3b4\ubcf4\uba70 \uc774\ud1a0\ub85d \ube60\ub978 \uc774\uc720\ub97c \uc124\uba85\ud569\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/www.takipiblog.com\/2014\/03\/18\/5-features-in-java-8-that-will-change-how-you-code\/\" rel=\"nofollow\">5 Features In Java 8 That WILL Change How You Code<\/a>\uc5d0\uc11c\ub294 \uc0c8\ub85c \ucd94\uac00\ub41c LongAccumulator\uc640 DoubleAccumulator\uac00 \ucf54\ub4dc\ub97c \ubc14\uafc0 \ub2e4\uc12f \uac00\uc9c0 \uc790\ubc14 8\uc758 \uac1c\uc120 \uc0ac\ud56d \uc911 \ud558\ub098\ub85c \uaf3d\ud614\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 ForkJoinPool\uc785\ub2c8\ub2e4. \uba40\ud2f0 \ucf54\uc5b4 \ub300\uc751 ExecutorService \uad6c\ud604\uc778 ForkJoinPool\uc740 \uc790\ubc14 7\uc758 \uc2a4\ud0c0 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \uc774\ubc88\uc5d4\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/concurrent\/ForkJoinPool.html#commonPool--\" rel=\"nofollow\">commonPool()\uc774\ub780 \uc815\uc801 \uba54\uc11c\ub4dc<\/a>\uac00 \ucd94\uac00\ub418\uc5b4 \ud2b9\ubcc4\ud788 ForJoinPool\uc744 \ub530\ub85c \uc0dd\uc131\ud558\uc9c0 \uc54a\uace0 \uacf5\ud1b5\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 ForkJoinPool\uc744 \uc5bb\uc744 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc131\ub2a5\ub3c4 \uac1c\uc120\ub418\uc5c8\ub294\ub370\u00a0<a class=\"external-link\" href=\"http:\/\/zeroturnaround.com\/rebellabs\/is-java-8-the-fastest-jvm-ever-performance-benchmarking-of-fork-join\/\" rel=\"nofollow\">Is Java 8 the fastest JVM ever? Performance benchmarking of Fork-Join<\/a>\uc740 7\uacfc 8\uc758 ForkJoinPool \uc131\ub2a5\uc744 \ube44\uad50\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc790\ubc14 8\uc5d0\uc11c\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub824\uace0 \uc0c8\ub85c Lock \uac1d\uccb4\ub97c \ub9cc\ub4e4\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4. \uae30\uc874\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/concurrent\/locks\/ReadWriteLock.html\" rel=\"nofollow\">ReadWriteLock<\/a>\uac00 \uae30\ub300\uc640 \ub2ec\ub9ac \ub108\ubb34 \uc131\ub2a5\uc774 \ub290\ub9ac\uc790 \uc774\ub97c \uac1c\uc120\ud55c\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/index.html?java\/util\/concurrent\/locks\/StampedLock.html\" rel=\"nofollow\">StampledLock<\/a>\uc744 \uc0c8\ub85c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4. StampedLock\uc740 \uadf8 \uc790\uccb4\ub85c \uc18d\ub3c4\uac00 \ube60\ub97c \ubfd0 \uc544\ub2c8\ub77c \ub099\uad00\uc801 \ub77d(Optimistic Lock)\uc744 \uc81c\uacf5\ud574 \ub354\uc6b1 \ube60\ub974\uac8c \ub3d9\uc791\ud569\ub2c8\ub2e4. \uc790\ubc14\uc6d0\uc758\u00a0<a class=\"external-link\" href=\"http:\/\/vimeo.com\/74553130\" rel=\"nofollow\">Phaser and StampedLock Concurrency Synchronizers<\/a>\u00a0(<a class=\"external-link\" href=\"http:\/\/javaspecialists.eu\/talks\/jfokus13\/PhaserAndStampedLock.pdf\" rel=\"nofollow\">\ubc1c\ud45c\uc790\ub8cc<\/a>) \uc138\uc158\uc5d0\uc11c \uae30\uc874 \ub77d\uc758 \ubb38\uc81c\uc640 StampedLock\uc5d0 \ub300\ud574\uc11c \uc790\uc138\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc790\ubc14 8 \uc804\ubc18\uc758 \ub3d9\uc2dc\uc131 \uce21\uba74 \uac1c\uc120\uc810\uc740\u00a0<a class=\"external-link\" href=\"http:\/\/www.ibm.com\/developerworks\/library\/j-jvmc2\/index.html\" rel=\"nofollow\">JVM concurrency: Java 8 concurrency basics<\/a>\uc744 \ucc38\uace0\ud558\uc2ed\uc2dc\uc624.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-IO\/NIO\ud655\uc7a5\">IO\/NIO \ud655\uc7a5<\/h2>\n<p>Files\uc5d0 \uc2a4\ud2b8\ub9bc\uc744 \ubc18\ud658\ud558\ub294 \uba54\uc11c\ub4dc\uac00 \uba87\uac00\uc9c0 \ucd94\uac00\ub418\uc5b4 \ub514\ub809\ud130\ub9ac\ub098 \ud30c\uc77c\uc744 \ud3b8\ud558\uac8c \ud0d0\uc0c9\ud558\uac70\ub098 \uc77d\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<a class=\"external-link\" href=\"http:\/\/blog.jooq.org\/2014\/01\/24\/java-8-friday-goodies-the-new-new-io-apis\/\" rel=\"nofollow\">\u00a0Java 8 Friday Goodies: The New New I\/O APIs<\/a>\uc5d0\uc11c\u00a0 \uac04\ub2e8\ud55c \uc608\uc81c\uc640 \uc124\uba85\uc744 \uc77d\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub9ac\uace0 \ub4dc\ub514\uc5b4! Base64 \uc778\ucf54\ub529\uacfc \ub514\ucf54\ub529\uc744\u00a0<a class=\"external-link\" href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/Base64.html\" rel=\"nofollow\">\uc790\ubc14 \ud45c\uc900 API<\/a>\ub85c \ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/java.dzone.com\/articles\/base64-encoding-java-8\" rel=\"nofollow\">Base64 Encoding in Java 8<\/a>\uc5d0 API \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uc601\uc18d\uc138\ub300(PermanentGeneration)\uc81c\uac70\">\uc601\uc18d \uc138\ub300(Permanent Generation) \uc81c\uac70<\/h2>\n<p>\uadf8 \ub3d9\uc548 java.lang.OutOfMemoryError: PermGen \uc624\ub958\uc758 \uc6d0\ud749\uc774\ub358 \uc601\uc18d \uc138\ub300\uac00 \uc790\ubc14 \ud799\uc5d0\uc11c \uc0ac\ub77c\uc84c\uc2b5\ub2c8\ub2e4. \uc9c0\uae08\uae4c\uc9c0 \ud799\uc758 \uc774 \uc601\uc5ed\uc740 \uae30\ubcf8\uc801\uc73c\ub85c GC\uac00 \ub418\uc9c0 \uc54a\uc73c\uba70 \ud074\ub798\uc2a4 \uba54\ud0c0 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc810\uc810 \uc790\ubc14 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc0ac\uc6a9\ub418\ub294 \ud504\ub808\uc784\uc6cc\ud06c\uc640 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc218\uc640 \uaddc\ubaa8\uac00 \ucee4\uc9c0\uae30\ub3c4 \ud558\uace0 \ucd5c\uadfc\uc5d4 \ub3d9\uc801 \ud074\ub798\uc2a4 \uc0dd\uc131 \uae30\ubc95\ub3c4 \uad11\ubc94\uc704\ud558\uac8c \uc0ac\uc6a9\ub418\uc5b4 \uc601\uc18d \uc138\ub300\uac00 \ubd80\uc871\ud574 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\ub294 \uc77c\uc774 \ube48\ubc88\ud588\uc2b5\ub2c8\ub2e4.\u00a0<a class=\"external-link\" href=\"http:\/\/java.dzone.com\/articles\/java-8-permgen-metaspace\" rel=\"nofollow\">Java 8: From PermGen to Metaspace<\/a>\ub294 \uc601\uc18d \uc138\ub300\uc5d0\uc11c \uba54\ud0c0\uc2a4\ud398\uc774\uc2a4\ub85c \uc62e\uae34 \ub0b4\uc6a9\uacfc \ub458 \uac04\uc758 \ube44\uad50\ub97c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<h1 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ucd94\uac00\ucc38\uace0\uc790\ub8cc\">\ucd94\uac00 \ucc38\uace0 \uc790\ub8cc<\/h1>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\uae30\uc0ac\/\ube14\ub85c\uadf8\uae00\">\uae30\uc0ac\/\ube14\ub85c\uadf8 \uae00<\/h2>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/www.oracle.com\/events\/us\/en\/java8\/index.html\" rel=\"nofollow\">Java 8 Launch<\/a>: \uacf5\uc2dd \uc790\ubc14 8 \ub79c\ub529 \ud398\uc774\uc9c0\ub85c\uc11c \uc5ec\ub7ec \uc18c\uac1c \ub3d9\uc601\uc0c1\ub4e4\uacfc \uac01\uc885 \uc790\ub8cc\uac00 \ubaa8\uc5ec \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/info.michael-simons.eu\/2014\/02\/20\/developing-a-web-application-with-spring-boot-angularjs-and-java-8\/\" rel=\"nofollow\">Developing a web application with Spring Boot, AngularJS and Java 8<\/a>: 4\ud68c\uc5d0 \uac78\uccd0 \uc2a4\ud504\ub9c1 \ubd80\ud2b8(Spring Boot), \uc790\ubc14 8, \uc2a4\ud504\ub9c1 4.0, Angular.JS\ub97c \uc0ac\uc6a9\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.takipiblog.com\/2014\/03\/18\/5-features-in-java-8-that-will-change-how-you-code\/\" rel=\"nofollow\">5 Features In Java 8 That WILL Change How You Code<\/a>: \uc790\ubc14\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \ubc29\uc2dd\uc744 \ubc14\uafc0 \uc815\ub3c4\ub85c \uc601\ud5a5\uc744 \uc904 \ub2e4\uc12f \uac00\uc9c0 \uc790\ubc14 8\uc758 \uac1c\uc120\uc810\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/li>\n<li>\u00a0<a class=\"external-link\" href=\"http:\/\/www.youtube.com\/watch?v=Rd-sqHjmfB0\" rel=\"nofollow\">First-class functions in Java 8<\/a>: Java 8 in Action \uc800\uc790\ub4e4\uc774 \uc790\ubc14 8\uc758 \ub78c\ub2e4\ub97c \uc18c\uac1c\ud558\ub294 \ub3d9\uc601\uc0c1\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.infoq.com\/articles\/javaone2013-roundup\" rel=\"nofollow\">JavaOne 2013 Roundup: Java 8 is Revolutionary, Java is back<\/a>\u00a0: JavaOne 2013 \ud0a4\ub178\ud2b8 \uc694\uc57d\uc785\ub2c8\ub2e4. \uc790\ubc14 8\uc744 \ubc18\uae30\ub294 \uc5c5\uacc4\uc758 \ubd84\uc704\uae30\ub97c \uc798 \uadf8\ub9ac\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\u00a0<a class=\"external-link\" href=\"http:\/\/www.infoq.com\/news\/2013\/08\/everything-about-java-8\" rel=\"nofollow\">Everything About Java 8<\/a>: Java 8\uc758 \uac1c\uc120 \uc0ac\ud56d\uc744 \uac04\ub2e8\ud558\uac8c \uc694\uc810\ub9cc \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \ud55c\ub208\uc5d0 \ud30c\uc545\ud558\uae30 \uc88b\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\u00a0<a class=\"external-link\" href=\"http:\/\/www.oracle.com\/kr\/corporate\/magazines\/winter-tech2-1429486-ko.pdf\" rel=\"nofollow\">Java Moving Forward: Java 8 \uc758 \uc0c8\ub86d\uac8c \ub2ec\ub77c\uc9c0\ub294 \uc810<\/a>(PDF): \uc790\ubc14 8\uc744 \ubbf8\ub9ac \uc18c\uac1c\ud55c \ud55c\uae00 \uc790\ub8cc\uc785\ub2c8\ub2e4. jigsaw\uac00 \ube60\uc9c0\ub294 \ub4f1 \ucd5c\uc885 \ubc1c\ud45c\ub41c \uc790\ubc14 8\uacfc \ucc28\uc774\uac00 \uc788\uc9c0\ub9cc \ub78c\ub2e4 \ubd80\ubd84\uc740 \uc720\ud6a8\ud558\ub2c8 \ud55c\uae00 \ubb38\uc11c\uac00 \ud544\uc694\ud55c \uc0ac\ub78c\uc5d0\ub294 \uc77d\uc744\ub9cc\ud55c \uc790\ub8cc\uc785\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.baeldung.com\/java8\" rel=\"nofollow\">Java 8<\/a>: \uc790\ubc14 8 \uad00\ub828 \uae00\uc744 \ud2b9\uc9d5\ubcc4\ub85c \ubaa8\uc558\uc2b5\ub2c8\ub2e4. \uc815\ub9d0 \ubc29\ub300\ud569\ub2c8\ub2e4. \ubbf8\ub9ac \uc54c\uc558\ub354\ub77c\uba74 \uc81c\uac00 \uc774 \uae00\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc5c8\uc744 \ud150\ub370 \uc544\uc27d\uc2b5\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/java.dzone.com\/articles\/10-features-java-8-you-havent\" rel=\"nofollow\">10 Features in Java 8 You Haven&#8217;t Heard Of<\/a>: \uc790\ubc14 8\uc758 \ud070 \uc8fc\uc81c\uc5d0 \uac00\ub824\uc11c \uc18c\ud640\ud558\uac8c \ucde8\uae09\ub418\uc9c0\ub9cc \uc54c\uba74 \uc720\uc6a9\ud55c \ud2b9\uc9d5 10\uac00\uc9c0\ub97c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2 id=\"id-\uc790\ubc148\uc758\ubcc0\ud654-\ucc45\">\ucc45<\/h2>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/shop.oreilly.com\/product\/0636920030713.do?intcmp=il-prog-books-videos-product_promo_bwidget482_0636920030713_programming\" rel=\"nofollow\">Java 8 Lambdas<\/a>\u00a0(<a class=\"external-link\" href=\"http:\/\/techbus.safaribooksonline.com\/book\/programming\/java\/9781449370831\" rel=\"nofollow\">\uc0ac\ud30c\ub9ac \uc628\ub77c\uc778<\/a>): \uc790\ubc14 8\uc758 \ub78c\ub2e4\ub97c \uc801\uc808\ud55c \uc608\uc81c\uc640 \ud568\uaed8 \uc798 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4. \ub78c\ub2e4 \uc790\uccb4\ubfd0 \uc544\ub2c8\ub77c \ub78c\ub2e4\ub85c \uc778\ud574 \ubc14\ub010 Collection, \ub3d9\uc2dc\uc131 \ucc98\ub9ac\uc640 \ud14c\uc2a4\ud2b8, \ub514\ubc84\uae45, \uc124\uacc4 \uae30\ubc95\uae4c\uc9c0 \ub2e4\ub8f9\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/www.manning.com\/urma\/\" rel=\"nofollow\">Java 8 in Action<\/a>\u00a0(MEAP): \uc790\ubc14 8\uc744 \uc124\uba85\ud55c \ucc45\uc778\ub370 \uc544\uc9c1 \uc791\uc131 \uc911\uc774\uace0 50% \uc815\ub3c4 \uc644\uc131\ub41c \uac83 \uac19\uc2b5\ub2c8\ub2e4. \ubaa9\ucc28\ub97c \ubcf4\uba74 \uae09\ud558\uac8c \uc791\uc131\ud558\ub294 \uac83 \uac19\uc544 \ubcc4 \uae30\ub300\ub294 \uc548 \ub429\ub2c8\ub2e4.<\/li>\n<li><a class=\"external-link\" href=\"http:\/\/skpla.net\/kHle\" rel=\"nofollow\">Java SE 8 for the Really Impatient\u00a0<\/a>: \uc790\ubc14 8\uc758 \ubcc0\uacbd\uc0ac\ud56d \uc804\uccb4\ub97c \uac04\ub2e8\ud788 \uc694\uc57d\ud588\uc2b5\ub2c8\ub2e4. \uc774\ubbf8 \ubc88\uc5ed\ubcf8\uae4c\uc9c0 \ub098\uc654\uc73c\ub098 \uc815\ub9d0 \ub2f4\ubc31\ud558\uac8c \uc694\uc57d\ub9cc \ud588\uae30 \ub54c\ubb38\uc5d0 \uc124\uba85\uc774 \ubd88\uce5c\uc808\ud558\uace0 \uc774\ud574\ud558\uae30 \uc5b4\ub835\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc644\ubcbd\ud55c \uc124\uacc4\uc5d0 \uc774\ub974\ub800\ub2e4 \ud568\uc740, \ub354\ud560 \uac83\uc774 \uc5c6\uc744 \ub54c\uac00 \uc544\ub2cc, \ube84 \uac83\uc774 \uc5c6\uc744 \ub54c\ub97c \ub9d0\ud55c\ub2e4. &#8211; \uc559\ud22c\uc548 \ub4dc \uc0dd\ud14d\uc950\ud398\ub9ac \ubaa8 \ub4e0 \uae30\uc220\uc740 \uc138 \ub2e8\uacc4\ub97c \uac70\uce5c\ub2e4. \ucc98\uc74c\uc5d4 \uc870\uc7a1\ud558\uac8c \ub2e8\uc21c\ud558\uace0 \ub9e4\uc6b0 \ubd88\ub9cc\uc871\ud55c \uae30\uacc4, \ub450\ubc88\uc9f8\ub294 \ub9e4\uc6b0 \ubcf5\uc7a1\ud55c \uc870\uc728\uc744 \uac70\uccd0 \uc6d0\ud615\uc758 \uacb0\uc810\uc744 \uadf9\ubcf5\ud558\uace0 \uadf8\ub85c\uc778\ud574 \uc5b4\ub290\uc815\ub3c4 \ub9cc\uc871\uc2a4\ub7ec\uc6b4 \uc131\ub2a5\uc744 \ub0b4\ub3c4\ub85d \uc124\uacc4\ub41c \ud130\ubb34\ub2c8\uc5c6\uc774 \ubcf5\uc7a1\ud55c \uae30\uacc4 \ubb49\uce58, \uc138\ubc88\uc9f8\ub294 \uac70\uae30\uc5d0\uc11c \ub098\uc628 \uad81\uadf9\uc758 \ud0c0\ub2f9\ud55c \uc124\uacc4. &#8211; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[3],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4FJ1B-r","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/27"}],"collection":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=27"}],"version-history":[{"count":2,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":33,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/27\/revisions\/33"}],"wp:attachment":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}