﻿{"id":2357,"date":"2017-05-21T20:52:02","date_gmt":"2017-05-21T11:52:02","guid":{"rendered":"http:\/\/yucchi.jp\/blog\/?p=2357"},"modified":"2017-05-21T20:53:18","modified_gmt":"2017-05-21T11:53:18","slug":"java-se-9-%e3%81%ae%e4%ba%88%e7%bf%92-%e3%81%9d%e3%81%ae%ef%bc%94","status":"publish","type":"post","link":"http:\/\/yucchi.jp\/blog\/?p=2357","title":{"rendered":"Java SE 9 \u306e\u4e88\u7fd2 \u305d\u306e\uff14"},"content":{"rendered":"<p>Java SE 9 \u306e\u4e88\u7fd2 \u305d\u306e\uff14\u3067\u3059\u3002<\/p>\n<p><font color=\"#ff0000\" size=\"4\"><strong>\u524d\u56de\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306e\u7d9a\u304d\u3067\u304a\u305d\u3089\u304f\u4eca\u56de\u3082\u5fc5\u8981\u3068\u3055\u308c\u306a\u3044\u7121\u99c4\u306a\u304a\u904a\u3073\u3068\u306a\u308a\u307e\u3059\u3002<\/strong><\/font><\/p>\n<p>\u4eca\u56de\u306f JShell API \u3092\u5229\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u8a55\u4fa1\u3084\u5b9f\u884c\u3092\u8a66\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>\u306a\u304a\u3001\u4eca\u56de\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306b\u306f \u300c<a href=\"http:\/\/itpro.nikkeibp.co.jp\/atcl\/column\/15\/120700278\/031900034\/?ST=upper&amp;P=3\" target=\"_blank\">Java SE 9\u306eProject Kulla\u3001JShell\u306e\u52d5\u4f5c\u3068JShell API \uff083\/4\uff09(JShell API)<\/a>\u300d\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u307b\u3068\u3093\u3069\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u4e38\u5199\u3057\u72b6\u614b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u306e\u3067\u5143\u8a18\u4e8b\u3092\u307e\u305a\u8aad\u3093\u3067\u7406\u89e3\u3057\u3066\u3053\u306e\u304a\u904a\u3073\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u582a\u80fd\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n<p>\u4e0b\u8a18\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u666e\u901a\u306b19\u884c\u76ee\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u5185\u3067 JShell.create() \u30e1\u30bd\u30c3\u30c9\u306b\u3088\u308a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"1\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"1\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/1_thumb.png\" width=\"981\" height=\"1188\"><\/a><\/p>\n<p>\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u8a55\u4fa1\u5b9f\u884c\u306f29\u884c\u76ee\u306e eval(String snipetSource) \u30e1\u30bd\u30c3\u30c9\u3067\u304a\u3053\u306a\u308f\u308c\u307e\u3059\u3002\uff08\u6298\u308a\u7573\u3093\u3067\u3044\u308b\u306e\u3067\u96a0\u308c\u3066\u307e\u3059\u3002\uff09<\/p>\n<p><font color=\"#0000ff\">( \u6700\u5f8c\u306b\u3044\u308d\u3044\u308d\u30b4\u30cb\u30e7\u30b4\u30cb\u30e7\u904a\u3093\u3060\u30b3\u30fc\u30c9\u3092\u8f09\u305b\u307e\u3059\u306e\u3067\u884c\u756a\u53f7\u306f\u305a\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u304c\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u307e\u305b\u3002)<\/font><\/p>\n<p>List&lt;SnippetEvent&gt; eval(String snipetSource) \u30e1\u30bd\u30c3\u30c9\u3067 SnippetEvent \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<p>JavaDoc \u3067\u306f <font color=\"#666666\">\u623b\u308a\u5024\uff1a\u3053\u306e\u8a55\u4fa1\u306b\u3088\u3063\u3066\u76f4\u63a5\u7684\u307e\u305f\u306f\u9593\u63a5\u7684\u306b\u767a\u751f\u3057\u305f\u30a4\u30d9\u30f3\u30c8\u306e\u30ea\u30b9\u30c8 <\/font>\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3064\u307e\u308a\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u3084\u5024\u3067\u3059\u3002<\/p>\n<p>\u7a2e\u985e\u306f\u3001jdk.\u200bjshell.\u200bSnippet \u30af\u30e9\u30b9\u306e public Kind kind() \u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<p>\u623b\u308a\u5024\u3067\u3042\u308b jdk.jshell.Snippet.Kind \u306f jdk.\u200bjshell.\u200bSnippet \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<p>jdk.jshell.Snippet.Kind \u306f jdk.\u200bjshell.\u200bSnippet \u30af\u30e9\u30b9\u306e public static enum Kind extends Enum&lt;Kind&gt; \u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3064\u307e\u308a\u7a2e\u985e\u306f jdk.\u200bjshell.\u200bSnippet \u30af\u30e9\u30b9\u306e\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u3059\u3002<\/p>\n<p>jdk.\u200bjshell.\u200bSnippet\u30af\u30e9\u30b9\u306b\u306f \u7a2e\u985e\u3092\u88dc\u8db3\u3059\u308b\u305f\u3081\u306e&nbsp; public SubKind subKind() \u30e1\u30bd\u30c3\u30c9\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f jdk.\u200bjshell.\u200bSnippet \u30af\u30e9\u30b9\u306e&nbsp; public static enum SubKind extends Enum&lt;SubKind&gt; \u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f\u7a2e\u985e\u306e\u8a73\u7d30\u306a\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u306e\u306b\u5229\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u53d6\u5f97\u306b\u306f jdk.\u200bjshell.\u200bSnippetEvent \u30af\u30e9\u30b9\u306e public Status status() \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u623b\u308a\u5024\u306f jdk.\u200bjshell.\u200bSnippet \u30af\u30e9\u30b9\u306e public static enum Status extends Enum&lt;Status&gt; \u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f JShell \u30b9\u30c6\u30fc\u30c8\u5185\u306e\u52d5\u7684\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u3059\u3002<\/p>\n<p>\u3057\u305f\u304c\u3063\u3066 JShell \u30af\u30a8\u30ea\u3067\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30b9\u30c6\u30fc\u30bf\u30b9\u306b\u306f\u6b21\u306e7\u3064\u306e\u72b6\u614b\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p><font color=\"#666666\">DROPPED\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001JShell.drop\uff08Snippet\uff09\u3078\u306e\u660e\u793a\u7684\u306a\u547c\u3073\u51fa\u3057\u306e\u305f\u3081\u306b\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">NONEXISTENT\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u307e\u3060\u5b58\u5728\u3057\u306a\u3044\u305f\u3081\u3001\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">OVERWRITTEN : \u65b0\u3057\u3044\u30b9\u30cb\u30da\u30c3\u30c8\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u7121\u52b9\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">RECOVERABLE_DEFINED\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001\uff08\u73fe\u5728\u306eJShell\u72b6\u614b\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\uff09\u56de\u5fa9\u53ef\u80fd\u306a\u672a\u89e3\u6c7a\u306e\u53c2\u7167\u3084\u305d\u306e\u4ed6\u306e\u554f\u984c\u304c\u672c\u4f53\u5185\u306b\u3042\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u5ba3\u8a00\u30b9\u30cb\u30da\u30c3\u30c8\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">RECOVERABLE_NOT_DEFINED\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001\uff08\u73fe\u5728\u306eJShell\u72b6\u614b\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\uff09\u56de\u5fa9\u53ef\u80fd\u306a\u672a\u89e3\u6c7a\u306e\u53c2\u7167\u3084\u305d\u306e\u4ed6\u306e\u554f\u984c\u304c\u3042\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u5ba3\u8a00\u30b9\u30cb\u30da\u30c3\u30c8\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">REJECTED\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001\u521d\u671f\u8a55\u4fa1\u6642\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u5931\u6557\u3057\u3001JShell\u72b6\u614b\u306e\u3055\u3089\u306a\u308b\u5909\u66f4\u3067\u6709\u52b9\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3059\u3002<\/font><\/p>\n<p><font color=\"#666666\">VALID\uff1a\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u6709\u52b9\u306a\u30b9\u30cb\u30da\u30c3\u30c8\uff08\u73fe\u5728\u306eJShell\u72b6\u614b\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5185\uff09\u3067\u3059\u3002<\/font><\/p>\n<p>\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u30b9\u30c6\u30fc\u30bf\u30b9\u304c VALID \u3067\u306a\u3051\u308c\u3070 jdk.\u200bjshell.\u200bJShell \u30af\u30e9\u30b9\u306e public Stream&lt;Diag&gt; diagnostics(Snippet snippet) \u30e1\u30bd\u30c3\u30c9\u3067\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u6700\u65b0\u8a55\u4fa1\u306e\u8a3a\u65ad\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<p>\u305d\u3057\u3066 jdk.\u200bjshell.\u200bDiag \u30af\u30e9\u30b9\u306e public abstract String getMessage(Locale locale) \u30e1\u30bd\u30c3\u30c9\u3067\u6307\u5b9a\u3055\u308c\u305f\u30ed\u30b1\u30fc\u30eb\u306e\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u969b\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u5b9f\u88c5\u4f9d\u5b58\u3067\u3059\u3002 \u30ed\u30b1\u30fc\u30eb\u304cnull\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ed\u30b1\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u5024\u306e\u53d6\u5f97\u306b\u306f\u3001jdk.\u200bjshell.\u200bSnippetEvent \u30af\u30e9\u30b9\u306e public String value() \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3044\u307e\u3059\u3002<\/p>\n<p>\u623b\u308a\u5024\u306f\u6210\u529f\u3057\u305f\u5b9f\u884c\u306e\u7d50\u679c\u5024\u3002<\/p>\n<p>\u5b9f\u884c\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u307e\u305f\u306f\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u305f\u5834\u5408\u3001\u5024\u306fnull\u3067\u3059\u3002<\/p>\n<p>\u4ee5\u4e0a\u3001\u3060\u3044\u305f\u3044\u3053\u3093\u306a\u611f\u3058\u3067 JShell API \u3092\u697d\u3057\u3093\u3067\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u52d5\u304b\u3059\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u4f8b\u306e\u300c<a href=\"http:\/\/yucchi.jp\/blog\/?p=2131\" target=\"_blank\">\u3088\u304f\u898b\u304b\u3051\u308b\u30cd\u30bf IntegerCache \u554f\u984c<\/a>\u300d\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3060\u3051\u3060\u3068\u3055\u307f\u3057\u3044\u306e\u3067 FunctionalInterface \u3092\u5229\u7528\u3057\u305f\u6328\u62f6\u30d7\u30ed\u30b0\u30e9\u30e0\u3082 JShell API \u3067\u52d5\u304b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u306a\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u5b9f\u884c\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>Import statement\u3001FunctionalInterface\u3001\u306a\u3069\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3001\u5024\u3001\u7a2e\u985e\u306a\u3069\u306e\u60c5\u5831\u3092\u6b63\u78ba\u306b\u53d6\u5f97\u3067\u304d\u308c\u3070 OK \u3067\u3059\u3002<\/p>\n<p>\u3067\u306f\u3001\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u7d50\u679c\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>FunctionalInterface \u306f\u3001\u305f\u3060\u306e Interface \u3068\u3057\u3066\u8b58\u5225\u3055\u308c\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>IntegerCache \u554f\u984c \u3082\u3061\u3083\u3093\u3068 false \u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/3.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"3\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"3\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/3_thumb.png\" width=\"791\" height=\"904\"><\/a><\/p>\n<p>\u3053\u308c\u3060\u3068\u666e\u901a\u3059\u304e\u3066\u9762\u767d\u304f\u306a\u3044\u3067\u3059\u3088\u306d\u3002<\/p>\n<p>\u65e5\u672c\u3067\u306f\u3082\u3046\u3059\u3050 Java SE 9 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3088\u3046\u3068\u3044\u3046\u6642\u4ee3\u306b End Of Life \u3068\u306a\u3063\u305f Java SE 7 \u3067\u30d7\u30ed\u30d5\u30e9\u30e0\u3092\u7d44\u307e\u306a\u3051\u308c\u3070\u3044\u3051\u306a\u3044<\/p>\n<p><strike><font color=\"#ff0000\"><strong>\u6d99\u7121\u304f\u3057\u3066\u306f\u8a9e\u308c\u306a\u3044\u975e\u5e38\u306b\u904e\u9177\u306a\u74b0\u5883\u306b\u7f6e\u304b\u308c\u3066\u3044\u308b<\/strong><\/font><\/strike>\u30d7\u30ed\u30b0\u30e9\u30de\u304c\u591a\u304f\u5b58\u5728\u3059\u308b\u3089\u3057\u3044\u3002<\/p>\n<p>\u305d\u3053\u3067\u305d\u3046\u3044\u3046<strike><font color=\"#9b00d3\"><strong>\u53ef\u611b\u305d\u3046\u306a<\/strong><\/font><\/strike>\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u305f\u3081\u306b\u30b3\u30f3\u30d1\u30a4\u30e9\u30aa\u30d7\u30b7\u30e7\u30f3\u3092 JDK7 \u306b\u3057\u3001<\/p>\n<p>IntegerCache \u554f\u984c\u3067\u904a\u3076\u305f\u3081\u306b JVM \u30aa\u30d7\u30b7\u30e7\u30f3\u306b -XX:AutoBoxCacheMax=128 \u3092\u8a2d\u5b9a\u3057\u3066\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>JShell \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u751f\u6210\u3092 JShell.create() \u30e1\u30bd\u30c3\u30c9\u304b\u3089 JShell.builder() \u30e1\u30bd\u30c3\u30c9\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/4.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"4\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"4\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/4_thumb.png\" width=\"356\" height=\"72\"><\/a><\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/5.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"5\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"5\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/5_thumb.png\" width=\"752\" height=\"230\"><\/a><\/p>\n<p>\u30b3\u30f3\u30d1\u30a4\u30e9\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u306f<\/p>\n<p>jdk.\u200bjshell.\u200bJShell.\u200bBuilder \u30af\u30e9\u30b9\u306e public Builder compilerOptions(String&#8230; options) \u30e1\u30bd\u30c3\u30c9\u3068\u4f7f\u3044\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<p>\u53ef\u5909\u9577\u5f15\u6570\u306e\u4f7f\u3044\u65b9\u304c\u72ec\u7279\u3067\u601d\u3044\u3063\u304d\u308a\u30c9\u30c4\u30dc\u306b\u306f\u307e\u3063\u305f\u306e\u306f\u5185\u7dd2\u3067\u3059\u3002<\/p>\n<p>JVM \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u306f<\/p>\n<p>jdk.\u200bjshell.\u200bJShell.\u200bBuilder \u30af\u30e9\u30b9\u306e public Builder remoteVMOptions(String&#8230; options) \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3044\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<p>\u5f8c\u306f\u5165\u51fa\u529b\u306e\u8a2d\u5b9a\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3089\u306f\u9023\u9396\u521d\u671f\u5316\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081 Builder\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u5f8c\u306b jdk.\u200bjshell.\u200bJShell.\u200bBuilder \u30af\u30e9\u30b9\u306e public JShell build() \u30e1\u30bd\u30c3\u30c9\u3067 JShell \u30b9\u30c6\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f\u3059\u3079\u3066\u306eJShell\u6a5f\u80fd\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u5b9f\u884c\u306e\u305f\u3081\u306e\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u305d\u308c\u3067\u306f\u30b3\u30f3\u30d1\u30a4\u30e9\u30aa\u30d7\u30b7\u30e7\u30f3\u3068 JVM \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u304b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u8d70\u3089\u305b\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/6.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"6\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"6\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/6_thumb.png\" width=\"762\" height=\"1296\"><\/a><\/p>\n<p>\u3046\u308f\u3041\u3041\uff01\uff01<\/p>\n<p><font color=\"#ff0000\" size=\"4\"><strong>\u6b63\u3057\u304f\u671f\u5f85\u901a\u308a\u306e\u52d5\u4f5c\u3068\u306a\u3063\u305f\u304c\u4f55\u6545\u304b\u76ee\u304b\u3089\u6d99\u304c\u3053\u307c\u308c\u305d\u3046\u306b\u30fb\u30fb\u30fb<\/strong><\/font><\/p>\n<p>IntegerCache \u554f\u984c\u306e\u5b9f\u884c\u7d50\u679c\u3082 true \u3068\u306a\u308a\u6b63\u3057\u304f JVM \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u8a2d\u5b9a\u3055\u308c\u305f\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3060\u3051\u3067\u5929\u306e\u90aa\u9b3c\u306a\u79c1\u306e\u304a\u904a\u3073\u306f\u7d42\u4e86\u3067\u3059\u3002<\/p>\n<p>\u3053\u3053\u304b\u3089\u5148\u306f\u601d\u3044\u8fbc\u307f\u3067\u30b5\u30d7\u30e9\u30a4\u30ba\u3055\u305b\u3066\u3082\u3089\u3063\u305f\u304a\u8a71\u3057\u3067\u3059\u3002<\/p>\n<p>\u5148\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u30b3\u30f3\u30d1\u30a4\u30e9\u30aa\u30d7\u30b7\u30e7\u30f3\u3068 JVM \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u5143\u306e\u72b6\u614b\u306b\u623b\u3057\u3066\u4e0b\u8a18\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u5b9f\u884c\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<p>JShell \u3067\u306f import \u6587\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u4f55\u6545\u304b\u5b58\u5728\u3057\u307e\u3059\u3002<\/p>\n<p>java.util.Arrays \u3082\u305d\u306e\u4e00\u3064\u3060\u304b\u3089\u7121\u4e8b\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u5b9f\u884c\u3055\u308c\u308b\u3060\u308d\u3046\u3068\u601d\u3063\u3066\u3044\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/7.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"7\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"7\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/7_thumb.png\" width=\"978\" height=\"173\"><\/a><\/p>\n<p>((((\uff1b\u309c\u0414\u309c)))))))\u3000\u3000\u306a\u3093\u3068\uff01\u3000ERROR! EXPRESSION [ \u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u30fb\u30fb\u30fb ]<\/p>\n<p>JShell API \u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306f<font color=\"#ffc000\" size=\"5\"><strong>\u304a\u3082\u3066\u306a\u3057<\/strong><\/font>\u306f\u7121\u3057\u306a\u306e\u304b\uff01\uff1f<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/8.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"8\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"8\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/8_thumb.png\" width=\"569\" height=\"390\"><\/a><\/p>\n<p>\u3057\u304b\u305f\u306a\u3044\u304b\u3089 import \u6587\u3092\u8ffd\u8a18\u3057\u3066\u307f\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/9.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"9\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"9\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/9_thumb.png\" width=\"976\" height=\"190\"><\/a><\/p>\n<p>\u4eca\u5ea6\u306f\u671f\u5f85\u901a\u308a\u306e\u52d5\u4f5c\u3067\u5b9f\u884c\u3055\u308c\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/10.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"10\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"10\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/10_thumb.png\" width=\"747\" height=\"406\"><\/a><\/p>\n<p>\u3064\u3044\u3067\u3060\u304b\u3089 enum \u3082\u8a66\u3057\u3066\u307f\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/11.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"11\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"11\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/11_thumb.png\" width=\"981\" height=\"497\"><\/a><\/p>\n<p>\u3061\u3083\u3093\u3068 enum \u8a8d\u8b58\u3057\u3066\u3044\u305f\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/12.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"12\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"12\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/12_thumb.png\" width=\"819\" height=\"630\"><\/a><\/p>\n<p>\u5b9f\u306f Linux \u74b0\u5883\u306e NetBeans IDE \u3060\u304b\u3089\u3061\u3083\u3093\u3068\u65e5\u672c\u8a9e\u5bfe\u5fdc\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u304c<\/p>\n<p>Windows \u74b0\u5883\u3060\u3068\u65e5\u672c\u8a9e\u306f\u6587\u5b57\u5316\u3051\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/13.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"13\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"13\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/13_thumb.png\" width=\"853\" height=\"722\"><\/a><\/p>\n<p>\u30bb\u30ec\u30d6\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u3054\u611b\u7528\u306e IntelliJ IDEA (2017.2 EAP)\u3067\u3082 Windows\u74b0\u5883\u3067\u306e JShellAPI \u3067\u65e5\u672c\u8a9e\u306f\u6587\u5b57\u5316\u3051\u3057\u3066\u3057\u307e\u3046\u3002<\/p>\n<p>\u3053\u308c\u306f Java SE 9 \u30ea\u30ea\u30fc\u30b9\u307e\u3067\u306b\u4fee\u6b63\u3055\u308c\u308b\u306e\u3060\u308d\u3046\u304b\uff1f<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/14.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"14\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"14\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/14_thumb.jpg\" width=\"756\" height=\"225\"><\/a><\/p>\n<p>\u3061\u306a\u307f\u306b Windows \u306e\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u304b\u3089\u306e\u5b9f\u884c\u306f\u6587\u5b57\u5316\u3051\u3057\u307e\u305b\u3093\u3002<\/p>\n<p><a href=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/15.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"15\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"15\" src=\"http:\/\/yucchi.jp\/blog\/wp-content\/uploads\/2017\/05\/15_thumb.jpg\" width=\"1035\" height=\"643\"><\/a><\/p>\n<p>\u4ee5\u4e0a\u3001JShell API \u3092\u7121\u99c4\u306b\u4f7f\u3063\u3066\u904a\u3093\u3067\u307f\u305f\u30a8\u30f3\u30c8\u30ea\u30fc\u3067\u3057\u305f\u3002<\/p>\n<p>\u304a\u7d42\u3044\uff01<\/p>\n<p>\u304a\u3063\u3068\uff01JShell API \u3068\u622f\u308c\u305f\u8a18\u5ff5\u30b3\u30fc\u30c9\u3092\u8f09\u305b\u3066\u304a\u304d\u307e\u3059\u306d\u3002<\/p>\n<pre title=\"JShellAPIExample.java\">package jp.yucchi.jshellapiexample;\r\n\r\nimport java.util.List;\r\nimport java.util.Locale;\r\nimport jdk.jshell.ErroneousSnippet;\r\nimport jdk.jshell.ExpressionSnippet;\r\nimport jdk.jshell.JShell;\r\nimport jdk.jshell.MethodSnippet;\r\nimport jdk.jshell.Snippet;\r\nimport jdk.jshell.Snippet.Status;\r\nimport jdk.jshell.SnippetEvent;\r\nimport jdk.jshell.TypeDeclSnippet;\r\nimport jdk.jshell.VarSnippet;\r\n\r\npublic class JShellAPIExample {\r\n\r\n    private final JShell shell;\r\n\r\n    public JShellAPIExample() {\r\n\tshell = JShell.create();\r\n\/\/        shell = JShell.builder()\r\n\/\/                .compilerOptions(\"-source\", \"1.7\", \"-target\", \"1.7\",\r\n\/\/                        \"-bootclasspath\", \"\/home\/yucchi\/Sun\/jdk1.7.0_80\/jre\/lib\/rt.jar\",\r\n\/\/                        \"-extdirs\", \"\")\r\n\/\/                .remoteVMOptions(\"-XX:AutoBoxCacheMax=128\")\r\n\/\/                .in(System.in)\r\n\/\/                .err(System.err)\r\n\/\/                .out(System.out)\r\n\/\/                .build();\r\n    }\r\n\r\n    public void close() {\r\n        if (shell != null) {\r\n            shell.close();\r\n        }\r\n    }\r\n\r\n    public void eval(String snippetSource) {\r\n\r\n        System.out.println(snippetSource);\r\n\r\n        List&lt;SnippetEvent&gt; se = shell.eval(snippetSource);\r\n\r\n        se.forEach(e -&gt; {\r\n            if (e.causeSnippet() == null) {\r\n                Snippet snippet = e.snippet();\r\n                switch (snippet.kind()) {\r\n                    case IMPORT:\r\n                        switch (snippet.subKind()) {\r\n                            case SINGLE_TYPE_IMPORT_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; Single-Type-Import Declaration. &gt;&gt;\");\r\n                                break;\r\n                            case SINGLE_STATIC_IMPORT_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; Single-Static-Import Declaration. &gt;&gt;\");\r\n                                break;\r\n                            case TYPE_IMPORT_ON_DEMAND_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; Type-Import-on-Demand Declaration. &gt;&gt;\");\r\n                                break;\r\n                            case STATIC_IMPORT_ON_DEMAND_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; Static-Import-on-Demand Declaration. &gt;&gt;\");\r\n                                break;\r\n                            default:\r\n                                break;\r\n                        }\r\n                        break;\r\n\r\n                    case ERRONEOUS:\r\n                        System.out.println(\"ERROR! \" + ((ErroneousSnippet) snippet).probableKind() + \":\");\r\n                        break;\r\n                    case TYPE_DECL:\r\n                        TypeDeclSnippet type = (TypeDeclSnippet) snippet;\r\n                        System.out.print(\"&lt;&lt; Created \");\r\n\r\n                        switch (snippet.subKind()) {\r\n                            case CLASS_SUBKIND:\r\n                                System.out.print(\"Class: \");\r\n                                break;\r\n                            case INTERFACE_SUBKIND:\r\n                                System.out.print(\"Interface: \");\r\n                                break;\r\n                            case ENUM_SUBKIND:\r\n                                System.out.print(\"Enum: \");\r\n                                break;\r\n                            case ANNOTATION_TYPE_SUBKIND:\r\n                                System.out.print(\"Annotation: \");\r\n                                break;\r\n                            default:\r\n                                break;\r\n                        }\r\n                        System.out.println(type.name() + \" &gt;&gt;\");\r\n                        break;\r\n                    case METHOD:\r\n                        MethodSnippet method = (MethodSnippet) snippet;\r\n                        System.out.println(\"&lt;&lt; Created Method: \"\r\n                                + method.name() + \"(\"\r\n                                + method.parameterTypes() + \")\" + \" &gt;&gt;\");\r\n                        break;\r\n                    case VAR:\r\n                        switch (snippet.subKind()) {\r\n                            case VAR_DECLARATION_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; A variable declaration without initializer. &gt;&gt;\");\r\n                                System.out.println(((VarSnippet) snippet).name() + \" ==&gt; \" + e.value());\r\n                                break;\r\n                            case TEMP_VAR_EXPRESSION_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; An expression whose value has been stored in a temporary variable. &gt;&gt;\");\r\n                                System.out.println(((VarSnippet) snippet).name() + \" ==&gt; \" + e.value());\r\n                                break;\r\n                            case VAR_DECLARATION_WITH_INITIALIZER_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;\");\r\n                                System.out.println(((VarSnippet) snippet).name() + \" ==&gt; \" + e.value());\r\n                                break;\r\n                            default:\r\n                                break;\r\n                        }\r\n                        break;\r\n                    case EXPRESSION:\r\n                        switch (snippet.subKind()) {\r\n                            case VAR_VALUE_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; A simple variable reference expression. &gt;&gt;\");\r\n                                System.out.println(((ExpressionSnippet) snippet).name() + \" ==&gt; \" + e.value());\r\n                                break;\r\n                            case ASSIGNMENT_SUBKIND:\r\n                                System.out.println(\"&lt;&lt; An assignment expression. &gt;&gt;\");\r\n                                System.out.println(((ExpressionSnippet) snippet).name() + \" ==&gt; \" + e.value());\r\n                                break;\r\n                            default:\r\n                                break;\r\n                        }\r\n                        break;\r\n                    case STATEMENT:\r\n                        System.out.println(\"&lt;&lt; \" + \"Statement: \" + e.snippet() + \" &gt;&gt;\");\r\n                        break;\r\n                    default:\r\n                        System.out.println(\"&lt;&lt; \" + e.getClass().getCanonicalName() + \" &gt;&gt;\");\r\n                        break;\r\n                }\r\n\r\n                if (e.status() != Status.VALID) {\r\n                    this.shell.diagnostics(e.snippet()).forEach(i -&gt; {\r\n                        System.out.println(\"[ \" + i.getMessage(Locale.getDefault()) + \" ]\");\r\n                    });\r\n                }\r\n\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    public static void main(String[] args) throws Exception {\r\n\r\n        JShellAPIExample example = new JShellAPIExample();\r\n\r\n        example.eval(\"import java.time.LocalTime;\");\r\n        example.eval(\"@FunctionalInterface \\n\"\r\n                + \"interface Greeting&lt;T, R&gt; {\\n\"\r\n                + \"R apply(T time, R message);\\n\"\r\n                + \"\\n\"\r\n                + \"        default void sayGreeting(String greeting) {\\n\"\r\n                + \"            greeting(greeting);\\n\"\r\n                + \"        }\\n\"\r\n                + \"\\n\"\r\n                + \"        private void greeting(String greeting) {\\n\"\r\n                + \"            System.out.println(greeting + \\\" from JShellAPI.\\\");\\n\"\r\n                + \"        };\\n\"\r\n                + \"}\");\r\n        example.eval(\"LocalTime now = LocalTime.now();\");\r\n        example.eval(\"int hour = now.getHour();\");\r\n        example.eval(\"Greeting&lt;Integer, String&gt; greeting\\n\"\r\n                + \"                = (time, message) -&gt; 4 &lt;= time &amp;&amp; time &lt; 11 ? \\\"Good morning!\\\"\\n\"\r\n                + \"                        : 11 &lt;= time &amp;&amp; time &lt; 18 ? \\\"Good afternoon!\\\"\\n\"\r\n                + \"                                : \\\"Good evening!\\\";\");\r\n        example.eval(\"String message = null;\");\r\n        example.eval(\"greeting.sayGreeting(greeting.apply(hour, message));\");\r\n        example.eval(\"\");\r\n        System.out.println(\"(\u25cb\uff65\u03c9\uff65)\uff89----------------------------------------------------------)\\n\");\r\n\r\n        example.eval(\"Integer x = 128;\");\r\n        example.eval(\"Integer y = 128;\");\r\n        example.eval(\"void equivalenceTest(Integer x, Integer y) { System.out.println(x == y); }\");\r\n        example.eval(\"equivalenceTest(x, y);\");\r\n        System.out.println(\"(\u25cb\uff65\u03c9\uff65)\uff89----------------------------------------------------------)\\n\");\r\n\r\n        example.eval(\"import java.util.Arrays;\"); \/\/ \u7701\u7565\u4e0d\u53ef\r\n        example.eval(\"String str;\");\r\n        example.eval(\"str = \\\"Java\\\";\");\r\n        example.eval(\"String[] elems = str.split(\\\"\\\");\");\r\n        example.eval(\"System.out.println(Arrays.toString(elems));\");\r\n        example.eval(\"Arrays.stream(elems).forEach(System.out::println);\");\r\n        System.out.println(\"(\u25cb\uff65\u03c9\uff65)\uff89----------------------------------------------------------)\\n\");\r\n\r\n        example.eval(\"public enum JavaPlusYou {\\n\"\r\n                + \"\\n\"\r\n                + \"    Japanese(\\\"\u3042\u306a\u305f\u3068JAVA,\u4eca\u3059\u3050\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\\\"),\\n\"\r\n                + \"    English(\\\"JAVA+YOU, DOWNLOAD TODAY!\\\");\\n\"\r\n                + \"\\n\"\r\n                + \"    private final String downloadNow;\\n\"\r\n                + \"\\n\"\r\n                + \"    private JavaPlusYou(final String downloadNow) {\\n\"\r\n                + \"        this.downloadNow = downloadNow;\\n\"\r\n                + \"    }\\n\"\r\n                + \"\\n\"\r\n                + \"    public String getDownloadNow() {\\n\"\r\n                + \"        return downloadNow;\\n\"\r\n                + \"    }\\n\"\r\n                + \"\\n\"\r\n                + \"}\");\r\n        example.eval(\"for (JavaPlusYou jpy : JavaPlusYou.values()) {\\n\"\r\n                + \"            System.out.println(jpy + \\\": \\\" + jpy.getDownloadNow());\\n\"\r\n                + \"        }\");\r\n        System.out.println(\"(\u25cb\uff65\u03c9\uff65)\uff89----------------------------------------------------------)\\n\");\r\n\r\n        example.eval(\"System.out.println(System.getProperty(\\\"java.vm.version\\\"));\");\r\n        example.eval(\"System.out.println(System.getProperty(\\\"java.class.version\\\"));\");\r\n        System.out.println(\"(\u25cb\uff65\u03c9\uff65)\uff89----------------------------------------------------------)\\n\");\r\n\r\n        example.close();\r\n\r\n    }\r\n\r\n}\r\n\r\n<\/pre>\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>run:<br \/>import java.time.LocalTime;<br \/>&lt;&lt; Single-Type-Import Declaration. &gt;&gt;<br \/>@FunctionalInterface <br \/>interface Greeting&lt;T, R&gt; {<br \/>R apply(T time, R message);<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default void sayGreeting(String greeting) {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; greeting(greeting);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void greeting(String greeting) {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(greeting + &#8221; from JShellAPI.&#8221;);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br \/>}<br \/>&lt;&lt; Created Interface: Greeting &gt;&gt;<br \/>LocalTime now = LocalTime.now();<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>now ==&gt; 17:28:24.474604<br \/>int hour = now.getHour();<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>hour ==&gt; 17<br \/>Greeting&lt;Integer, String&gt; greeting<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = (time, message) -&gt; 4 &lt;= time &amp;&amp; time &lt; 11 ? &#8220;Good morning!&#8221;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 11 &lt;= time &amp;&amp; time &lt; 18 ? &#8220;Good afternoon!&#8221;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &#8220;Good evening!&#8221;;<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>greeting ==&gt; $Lambda$17\/555826066@a67c67e<br \/>String message = null;<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>message ==&gt; null<br \/>greeting.sayGreeting(greeting.apply(hour, message));<br \/>Good afternoon! from JShellAPI.<br \/>&lt;&lt; Statement: Snippet:StatementKey#7-greeting.sayGreeting(greeting.apply(hour, message)); &gt;&gt;<\/p>\n<p>(\u25cb\uff65\u03c9\uff65)\uff89&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-)<\/p>\n<p>Integer x = 128;<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>x ==&gt; 128<br \/>Integer y = 128;<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>y ==&gt; 128<br \/>void equivalenceTest(Integer x, Integer y) { System.out.println(x == y); }<br \/>&lt;&lt; Created Method: equivalenceTest(Integer,Integer) &gt;&gt;<br \/>equivalenceTest(x, y);<br \/>false<br \/>&lt;&lt; Statement: Snippet:StatementKey#11-equivalenceTest(x, y); &gt;&gt;<br \/>(\u25cb\uff65\u03c9\uff65)\uff89&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-)<\/p>\n<p>import java.util.Arrays;<br \/>&lt;&lt; Single-Type-Import Declaration. &gt;&gt;<br \/>String str;<br \/>&lt;&lt; A variable declaration without initializer. &gt;&gt;<br \/>str ==&gt; null<br \/>str = &#8220;Java&#8221;;<br \/>&lt;&lt; An assignment expression. &gt;&gt;<br \/>str ==&gt; &#8220;Java&#8221;<br \/>String[] elems = str.split(&#8220;&#8221;);<br \/>&lt;&lt; A variable declaration with an initializer expression. &gt;&gt;<br \/>elems ==&gt; String[4] { &#8220;J&#8221;, &#8220;a&#8221;, &#8220;v&#8221;, &#8220;a&#8221; }<br \/>System.out.println(Arrays.toString(elems));<br \/>[J, a, v, a]<br \/>&lt;&lt; Statement: Snippet:StatementKey#16-System.out.println(Arrays.toString(elems)); &gt;&gt;<br \/>Arrays.stream(elems).forEach(System.out::println);<br \/>J<br \/>a<br \/>v<br \/>a<br \/>&lt;&lt; Statement: Snippet:StatementKey#17-Arrays.stream(elems).forEach(System.out::println); &gt;&gt;<br \/>(\u25cb\uff65\u03c9\uff65)\uff89&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-)<\/p>\n<p>public enum JavaPlusYou {<\/p>\n<p>&nbsp;&nbsp;&nbsp; Japanese(&#8220;\u3042\u306a\u305f\u3068JAVA,\u4eca\u3059\u3050\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9&#8221;),<br \/>&nbsp;&nbsp;&nbsp; English(&#8220;JAVA+YOU, DOWNLOAD TODAY!&#8221;);<\/p>\n<p>&nbsp;&nbsp;&nbsp; private final String downloadNow;<\/p>\n<p>&nbsp;&nbsp;&nbsp; private JavaPlusYou(final String downloadNow) {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.downloadNow = downloadNow;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; public String getDownloadNow() {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return downloadNow;<br \/>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>}<br \/>&lt;&lt; Created Enum: JavaPlusYou &gt;&gt;<br \/>for (JavaPlusYou jpy : JavaPlusYou.values()) {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(jpy + &#8220;: &#8221; + jpy.getDownloadNow());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>Japanese: \u3042\u306a\u305f\u3068JAVA,\u4eca\u3059\u3050\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<br \/>English: JAVA+YOU, DOWNLOAD TODAY!<br \/>&lt;&lt; Statement: Snippet:StatementKey#19-for (JavaPlusYou jpy : JavaPlusYou.values()) {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(jpy + &#8220;: &#8221; + jpy.getDownloadNow());<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &gt;&gt;<br \/>(\u25cb\uff65\u03c9\uff65)\uff89&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-)<\/p>\n<p>System.out.println(System.getProperty(&#8220;java.vm.version&#8221;));<br \/>9-ea+169<br \/>&lt;&lt; Statement: Snippet:StatementKey#20-System.out.println(System.getProperty(&#8220;java.vm.version&#8221;)); &gt;&gt;<br \/>System.out.println(System.getProperty(&#8220;java.class.version&#8221;));<br \/>53.0<br \/>&lt;&lt; Statement: Snippet:StatementKey#21-System.out.println(System.getProperty(&#8220;java.class.version&#8221;)); &gt;&gt;<br \/>(\u25cb\uff65\u03c9\uff65)\uff89&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-)<\/p>\n<p>\u30d3\u30eb\u30c9\u6210\u529f(\u5408\u8a08\u6642\u9593: 4\u79d2)<\/p>\n<div id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a8eea23d-f484-4804-93e1-f747f39d4910\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">Hatena \u30bf\u30b0: <a href=\"http:\/\/b.hatena.ne.jp\/t\/Java\" rel=\"tag\">Java<\/a>,<a href=\"http:\/\/b.hatena.ne.jp\/t\/NetBeans\" rel=\"tag\">NetBeans<\/a><\/div>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_hatena\"><a href='\/\/b.hatena.ne.jp\/add?mode=confirm&url=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D2357&title=Java%20SE%209%20%E3%81%AE%E4%BA%88%E7%BF%92%20%E3%81%9D%E3%81%AE%EF%BC%94' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/hatena.gif' alt='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' width='16' height='12' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D2357&t=Java%20SE%209%20%E3%81%AE%E4%BA%88%E7%BF%92%20%E3%81%9D%E3%81%AE%EF%BC%94' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"http:\/\/yucchi.jp\/blog\/?p=2357\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"http:\/\/yucchi.jp\/blog\/?p=2357\" data-text=\"Java SE 9 \u306e\u4e88\u7fd2 \u305d\u306e\uff14\" data-lang=\"ja\">Tweet<\/a><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>Java SE 9 \u306e\u4e88\u7fd2 \u305d\u306e\uff14\u3067\u3059\u3002 \u524d\u56de\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306e\u7d9a\u304d\u3067\u304a\u305d\u3089\u304f\u4eca\u56de\u3082\u5fc5\u8981\u3068\u3055\u308c\u306a\u3044\u7121\u99c4\u306a\u304a\u904a\u3073\u3068\u306a\u308a\u307e\u3059\u3002 \u4eca\u56de\u306f JShell API \u3092\u5229\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u8a55\u4fa1\u3084\u5b9f\u884c\u3092\u8a66\u3057\u3066\u307f\u307e\u3059\u3002 \u306a\u304a\u3001\u4eca\u56de\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306b\u306f \u300cJava SE 9\u306eProject Kulla\u3001JShell\u306e\u52d5\u4f5c\u3068JShell API \uff083\/4\uff09(JShell API)\u300d\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002 \u307b\u3068\u3093\u3069\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u4e38\u5199\u3057\u72b6\u614b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u306e\u3067\u5143\u8a18\u4e8b\u3092\u307e\u305a\u8aad\u3093\u3067\u7406\u89e3\u3057\u3066\u3053\u306e\u304a\u904a\u3073\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u582a\u80fd\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002 \u4e0b\u8a18\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u666e\u901a\u306b19\u884c\u76ee\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u5185\u3067 JSh\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[17,19],"class_list":["post-2357","post","type-post","status-publish","format-standard","hentry","category-java","category-netbeans","tag-java","tag-netbeans"],"_links":{"self":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2357"}],"version-history":[{"count":1,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2357\/revisions"}],"predecessor-version":[{"id":2358,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2357\/revisions\/2358"}],"wp:attachment":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2357"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}