{"id":500370,"date":"2026-10-26T17:24:07","date_gmt":"2026-10-26T14:24:07","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500370"},"modified":"2026-10-26T17:24:07","modified_gmt":"2026-10-26T14:24:07","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500370","title":{"rendered":"\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430\u00a0JVM \u0431\u0435\u0437\u00a0\u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u0430: Jumper \u043f\u0440\u043e\u0442\u0438\u0432 LuaJ, Groovy, Jython \u0438 \u0434\u0440\u0443\u0433\u0438\u0445"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h3>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043d\u0435\u00a0\u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0Sun \u0438 Oracle \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u00a0Java, JavaScript \u0438 JSON. \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0410\u00a0\u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a. \u0412 1995\u00a0\u0433\u043e\u0434\u0443 Sun \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 Java \u0438 \u0430\u043f\u043f\u043b\u0435\u0442\u044b\u00a0\u2014 Java\u2011\u043a\u043e\u0434 \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0412\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u0433\u043e\u0434\u0443 Netscape \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u044f\u0437\u044b\u043a LiveScript \u0432\u00a0JavaScript: \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u0441\u0434\u0435\u043b\u043a\u0430 \u0441\u00a0Sun, \u0430\u00a0\u043d\u0435\u00a0\u0440\u043e\u0434\u0441\u0442\u0432\u043e \u044f\u0437\u044b\u043a\u043e\u0432. \u041e\u0431\u0449\u0435\u0433\u043e \u0443\u00a0\u043d\u0438\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u0438 \u0441\u043b\u043e\u0432\u043e \u0432\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438. \u0412 2001\u00a0\u0433\u043e\u0434\u0443 \u0414\u0443\u0433\u043b\u0430\u0441 \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0438\u0437\u00a0JavaScript \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432 \u0438 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e JSON\u00a0\u2014 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u00a0\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0447\u0438\u0441\u0442\u043e \u0434\u0436\u0430\u0432\u0430\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 Oracle \u043a\u0443\u043f\u0438\u043b\u0430 Sun (2010), \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0432\u044b\u043f\u0438\u043b\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b NPAPI (Chrome \u0432 2015, Firefox \u0432 2017), \u0438 Java \u0438\u0437\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0443\u0448\u043b\u0430: \u0430\u043f\u043f\u043b\u0435\u0442\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c\u0438 \u0432\u00a0Java 9\u00a0\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0432\u00a0Java 11. JavaScript \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043b\u0441\u044f, \u0430\u00a0\u0447\u0435\u0440\u0435\u0437 Node.js \u0437\u0430\u0435\u0445\u0430\u043b \u0435\u0449\u0451 \u0438 \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440. \u0422\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u043c\u0430\u0440\u043a\u0430 \u00abJavaScript\u00bb \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Oracle, \u0438 \u0432 2024\u00a0\u0433\u043e\u0434\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Deno \u043f\u043e\u0434\u0430\u043b\u043e \u0437\u0430\u044f\u0432\u043a\u0443 \u043d\u0430\u00a0\u0435\u0451 \u0430\u043d\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00a0\u2014 \u044d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e\u00a0\u044d\u0442\u0438 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0421\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u044f\u0437\u044b\u043a\u0438 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e\u00a0\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438. Java\u00a0\u2014 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u0435\u0440\u0432\u0435\u0440\u044b, Android, \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0431\u0430\u0437\u044b. JavaScript\u00a0\u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430, \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0449\u0438\u043d\u0430 \u0438 JSON \u043a\u0430\u043a\u00a0\u0440\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u0445\u043e\u0440\u043e\u0448\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u043e\u0434\u043d\u0443, \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u044f\u043d\u0435\u0442\u0441\u044f \u0441\u00a0\u043e\u0432\u0435\u0440\u0445\u0435\u0434\u043e\u043c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e\u00a0\u043d\u0438\u0436\u0435.<\/p>\n<h3>\u041a\u0430\u043a\u00a0\u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Jumper<\/h3>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u0435\u00a0\u0441\u00a0\u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u00a0\u0438\u0437\u2011\u0437\u0430 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u044f \u0443\u0432\u0438\u0434\u0435\u043b, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u044b Infinitode 2. \u0423\u0440\u043e\u0432\u043d\u0438 \u0442\u0430\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430\u00a0Lua, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u043b\u043e\u0433\u0438\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u043b\u0435\u0436\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0433\u0440\u044b. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u044f \u0440\u0430\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u043e\u0434 \u043d\u0430\u00a0Minecraft \u0441\u00a0\u0431\u0430\u0437\u043e\u0432\u044b\u043c Lua API \u043d\u0430\u00a0LuaJ, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043f\u043e\u043b\u044f\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u0438\u0433\u0440\u044b. \u0421\u043f\u0443\u0441\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0Lua \u043f\u0440\u043e\u043f\u0430\u043b\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e: ruby\u2011\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0441 <code>end<\/code>, \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u0434 \u043c\u043e\u0434\u0430 \u043f\u043e\u0434\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0432\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 API\u00a0\u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 Java.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u0431\u044b\u043b\u043e \u0437\u0430\u0442\u0438\u0448\u044c\u0435, \u043f\u043e\u043a\u0430 \u044f \u0441\u043d\u043e\u0432\u0430 \u043d\u0435\u00a0\u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0441\u00a0\u043c\u043e\u0434\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u00a0\u0438\u0433\u0440\u0435. \u0413\u0434\u0435\u2011\u0442\u043e JavaScript \u043d\u0430\u00a0Rhino, \u0433\u0434\u0435\u2011\u0442\u043e Python \u043d\u0430\u00a0Jython, \u0430\u00a0\u0433\u0434\u0435\u2011\u0442\u043e \u0438 \u0432\u043e\u0432\u0441\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u044f\u0437\u044b\u043a \u043d\u0430\u00a0yml \u0441\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0432\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u0445. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u044f\u0441\u043d\u043e, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: <strong>\u0434\u043b\u044f\u00a0JVM \u043d\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0434\u043b\u044f\u00a0\u043b\u0451\u0433\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.<\/strong> \u0415\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u00a0\u043d\u0438\u0445 \u0432\u00a0JVM \u043a\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u043e\u043c\u00a0\u2014 \u043d\u0430\u00a0\u0431\u043e\u043a\u0441\u0438\u043d\u0433\u0435 \u0447\u0438\u0441\u0435\u043b, \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 Java, \u043d\u0430\u00a0\u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438 \u043e\u0434\u0438\u043d Java\u2011\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435\u00a0\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0440\u043e\u0434\u043d\u044b\u043c.<\/p>\n<p>\u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u00a0Groovy \u0438 Kotlin Script. \u042d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u043e\u00a0\u043e\u043d\u0438 \u0445\u043e\u0440\u043e\u0448\u0438 \u0434\u043b\u044f\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438, \u0430\u00a0\u043d\u0435\u00a0\u0434\u043b\u044f\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. Kotlin Script \u0442\u044f\u043d\u0435\u0442 \u0437\u0430\u00a0\u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Kotlin (62\u00a0\u041c\u0411 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445) \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. Groovy \u043f\u043b\u0430\u0442\u0438\u0442 \u0437\u0430\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0430\u043d\u0431\u043e\u043a\u0441\u0438\u043d\u0433\u043e\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0438 \u043c\u0435\u0442\u0430\u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435, \u0430\u00a0\u0432\u00a0\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 <code>@CompileStatic<\/code> \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u00a0\u0441\u043a\u0440\u0438\u043f\u0442, \u0430\u00a0Java \u0441\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c\u0438. \u0426\u0438\u0444\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>\u0426\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: \u0431\u044b\u0442\u044c \u0434\u043b\u044f\u00a0JVM, \u043d\u043e\u00a0\u0441\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0422\u0430\u043a \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Jumper\u00a0\u2014 \u043b\u0451\u0433\u043a\u0438\u0439, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434 JVM, \u0441\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c Java, \u043d\u043e\u00a0\u0441\u00a0\u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043a\u0430\u043a\u00a0\u0432\u00a0Lua \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u00a0\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430.<\/p>\n<h3>\u0427\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 Jumper<\/h3>\n<p>Jumper\u00a0\u2014 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f\u00a0JVM: \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Java, \u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c Lua. \u041e\u0434\u0438\u043d jar \u043d\u0430 0.6\u00a0\u041c\u0411 \u0431\u0435\u0437\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, Java 21+, MIT. \u0422\u0440\u0438 \u0432\u0438\u0434\u0430 \u0444\u0430\u0439\u043b\u043e\u0432: <code>.jmp<\/code>\u00a0\u2014 \u0441\u043a\u0440\u0438\u043f\u0442, <code>.jmc<\/code>\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433, <code>.jma<\/code>\u00a0\u2014 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u0435\u0440\u0435\u0432\u0430 (Tier 0) \u0438 \u0441\u0432\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 JVM (Tier 1, \u0431\u0435\u0437\u00a0ASM), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u0430\u043a\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u044f\u0447\u0435\u0439.<\/p>\n<p>\u0412\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<pre><code class=\"javascript\">import java.util.ArrayList;dyn greet(name) { return \"Hello, \" + name; }dyn names = new ArrayList();names.add(\"Jumper\");names.add(\"Java\");dyn point = { x: 1, y: 2 };for (dyn n : names) println(greet(n) + \" \" + (point.x + point.y));<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430\u00a0Java, \u0442\u0443\u0442 \u043d\u0435\u0447\u0435\u043c\u0443 \u0443\u0447\u0438\u0442\u044c\u0441\u044f. <code>ArrayList<\/code>\u00a0\u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 <code>java.util.ArrayList<\/code>, <code>import<\/code>\u00a0\u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 Java\u2011\u043a\u043b\u0430\u0441\u0441\u0430, \u0446\u0438\u043a\u043b <code>for (: )<\/code> \u0442\u043e\u0442\u00a0\u0436\u0435. \u041d\u043e\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u0434\u0432\u0430: <code>dyn<\/code> \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u00a0\u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445.<\/p>\n<h4>\u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u0432\u044b\u0431\u043e\u0440\u0443<\/h4>\n<p><code>dyn<\/code>\u00a0\u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u0430\u043a <code>local<\/code> \u0432\u00a0Lua \u0438\u043b\u0438 <code>let<\/code> \u0432\u00a0JavaScript. \u0420\u044f\u0434\u043e\u043c \u0441\u00a0\u043d\u0435\u0439 \u0436\u0438\u0432\u0443\u0442 <code>int<\/code>, <code>long<\/code>, <code>double<\/code>, <code>boolean<\/code>, <code>String<\/code> \u0438 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0438 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0442\u0438\u043f\u044b: \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043d\u0435\u00a0\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 \u043b\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u0435.<\/p>\n<pre><code class=\"java\">dyn fib(n) {                    \/\/ \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430: n \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0435\u043c \u0443\u0433\u043e\u0434\u043d\u043e  return n &lt; 2 ? n : fib(n - 1) + fib(n - 2);}int fib(int n) {                \/\/ \u0441\u0442\u0430\u0442\u0438\u043a\u0430: Tier 1 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 (I)I  return n &lt; 2 ? n : fib(n - 1) + fib(n - 2);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0434\u043d\u043e: \u043f\u043b\u0430\u0442\u0438\u0448\u044c \u0437\u0430\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c. \u041b\u044e\u0431\u043e\u0439 <code>dyn<\/code> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <code>int<\/code> \u0438\u043b\u0438\u00a0\u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0442\u0440\u043e\u0433\u0430\u044f, \u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0Java. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0421\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a\u00a0\u0443\u0433\u043e\u0434\u043d\u043e: <code>double<\/code> \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 <code>dyn<\/code>\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f <code>double<\/code>, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u043c.<\/p>\n<p>\u0421\u043b\u043e\u0432\u043e <code>var<\/code> \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: \u0432\u00a0Java <code>var<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0442\u0438\u043f\u0430 \u0441\u00a0\u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439, \u0430 <code>dyn<\/code>\u00a0\u2014 \u043f\u043e\u2011\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u0420\u0430\u0437\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u00a0\u2014 \u0440\u0430\u0437\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e.<\/p>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u044b, \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u043a\u043b\u0430\u0441\u0441\u044b<\/h4>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430\u00a0\u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u00a0Lua \u0438\u043b\u0438\u00a0JavaScript: \u043a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443 \u0438\u043b\u0438\u00a0\u0441\u043a\u043e\u0431\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044f \u043d\u0430\u00a0\u0445\u043e\u0434\u0443.<\/p>\n<pre><code class=\"java\">dyn server = { host: \"0.0.0.0\", port: 25565, tags: [\"foo\", \"bar\"] };server.motd = \"A Jumper server\";println(server.port + 1);        \/\/ 25566println(server[\"host\"]);         \/\/ 0.0.0.0println(len(server.tags));       \/\/ 2<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u00a0\u043d\u0443\u043b\u044f, \u043a\u0430\u043a\u00a0\u0432\u00a0Java, \u0430\u00a0\u043d\u0435\u00a0\u0441\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043e\u00a0\u0444\u043e\u0440\u043c\u0430\u043c (shapes, \u043a\u0430\u043a\u00a0hidden classes \u0432\u00a0V8): \u043f\u043e\u043a\u0430 \u043a\u043b\u044e\u0447\u0438 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435\u00a0\u0436\u0435, \u043f\u043e\u043b\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u00a0\u0445\u0435\u0448\u0443 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b\u00a0\u2014 \u043a\u0430\u043a\u00a0\u0432\u00a0Java, \u043d\u043e\u00a0\u0431\u0435\u0437\u00a0\u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432: \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u00a0\u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0447\u043b\u0435\u043d \u0431\u0435\u0437\u00a0\u0442\u0438\u043f\u0430, \u043f\u043e\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<pre><code class=\"java\">class Vec {      double x, y;      Vec(double x, double y) { this.x = x; this.y = y; }      double len() { return Math.sqrt(x * x + y * y); }      Vec add(Vec o) { return new Vec(x + o.x, y + o.y); }}class Entity {      Vec pos = new Vec(0.0, 0.0);      dyn data = {};                \/\/ \u0430 \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435       void tick(double dt) {     pos = pos.add(new Vec(dt, 0));   }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u044b: \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430, Tier 1\u00a0\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f\u00a0\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 JVM\u2011\u043a\u043b\u0430\u0441\u0441 \u0441\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 <code>double x, y<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <code>e.pos.x<\/code> \u0432\u00a0\u0433\u043e\u0440\u044f\u0447\u0435\u043c \u0446\u0438\u043a\u043b\u0435\u00a0\u2014 \u044d\u0442\u043e <code>getfield<\/code>, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438. \u0415\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, <code>super<\/code>, <code>static<\/code>, \u043b\u044f\u043c\u0431\u0434\u044b <code>(x) -&gt; x * 2<\/code>, <code>switch<\/code> \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438, <code>try\/catch\/finally<\/code>, \u043c\u043e\u0434\u0443\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 <code>import \"utils.jmp\";<\/code>.<\/p>\n<h4>JVM\u00a0\u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/h4>\n<p>\u0421\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0443\u00a0\u044f\u0437\u044b\u043a\u0430 \u043d\u0435\u0442, \u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e. \u0421\u0442\u0440\u043e\u043a\u0438\u00a0\u2014 <code>java.lang.String<\/code>, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\u00a0\u2014 <code>java.util<\/code>, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430\u00a0\u2014 <code>Math<\/code>. Java\u2011\u043a\u043b\u0430\u0441\u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u043b\u044f\u043c\u0431\u0434\u044b \u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b:<\/p>\n<pre><code class=\"java\">import java.util.HashMap;import java.util.concurrent.TimeUnit;dyn m = new HashMap();m.put(\"a\", 1);dyn a = new int[]{3, 1, 2};  \/\/ \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 int[]java.util.Arrays.sort(a);dyn list = new java.util.ArrayList();list.add(5); list.add(3);list.sort((x, y) -&gt; x - y);           \/\/ Comparator \u0438\u0437 \u043b\u044f\u043c\u0431\u0434\u044blist.forEach((x) -&gt; println(x));      \/\/ Consumer \u0438\u0437 \u043b\u044f\u043c\u0431\u0434\u044bprintln(TimeUnit.SECONDS.toMillis(2));println(String.valueOf(42).length());<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432 Java\u2011\u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u0436\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u00a0Java: \u043f\u043e\u00a0\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c <code>ArrayList.get<\/code> \u0432\u00a0\u0446\u0438\u043a\u043b\u0435 \u043d\u0430 2\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u00a0\u2014 1.05\u00a0x \u043e\u0442\u00a0Java. \u0414\u043b\u044f\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e: \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u043a\u043e\u0434 \u0445\u043e\u0441\u0442\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u0440\u043e\u0433\u0430\u044f, \u0442\u043e \u0434\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451.<\/p>\n<h4>\u0427\u0435\u0433\u043e \u0432\u00a0\u044f\u0437\u044b\u043a\u0435 \u043d\u0435\u0442<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432: \u043d\u0435\u0442 generics (\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 <code>dyn<\/code>), \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0439 <code>(int) x<\/code>\u00a0\u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e <code>int(x)<\/code>, \u043d\u0435\u0442 <code>instanceof<\/code>\u00a0\u2014 \u0435\u0441\u0442\u044c <code>isa<\/code>, \u043d\u0435\u0442 <code>char<\/code> \u0438 <code>float<\/code>\u00a0\u2014 \u0435\u0441\u0442\u044c <code>int<\/code>, <code>long<\/code>, <code>double<\/code>. \u041a\u043b\u0430\u0441\u0441 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c Java\u2011\u043a\u043b\u0430\u0441\u0441, \u043d\u043e\u00a0\u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043b\u044f\u043c\u0431\u0434\u043e\u0439. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443\u2011\u0442\u043e \u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0443\u0436\u043d\u043e\u00a0\u2014 \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f\u00a0\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0430\u00a0\u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:.jmc<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0443\u00a0\u043c\u0435\u043d\u044f \u043f\u043e\u0434\u00a0\u043d\u043e\u0441\u043e\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0435\u0449\u0451 \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u044f \u0437\u0430\u043d\u044f\u043b\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438,\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0423\u00a0JVM \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u00a0\u2014 <code>java.util.Properties<\/code>, \u043e\u043d \u0441\u00a0JDK 1.0. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0441\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0438 \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430:<\/p>\n<ul>\n<li>\n<p><strong>XML<\/strong>\u00a0\u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 W3C 1998\u00a0\u0433\u043e\u0434\u0430 \u0434\u043b\u044f\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u00a0\u0432\u0435\u0431\u0435. \u0412\u00a0Java \u043f\u0440\u0438\u0436\u0438\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 J2EE, Ant \u0438 Maven, \u043d\u043e\u00a0\u043a\u0430\u043a\u00a0\u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>JSON<\/strong>\u00a0\u2014 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432 JavaScript (2001), \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0438 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c: \u0435\u0433\u043e \u043f\u0438\u0441\u0430\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f\u00a0\u043c\u0430\u0448\u0438\u043d.<\/p>\n<\/li>\n<li>\n<p><strong>YAML<\/strong>\u00a0\u2014 2001\u00a0\u0433\u043e\u0434, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Perl \u0438 Python, \u0430\u00a0\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043b Ruby on Rails. \u0412\u00a0\u043c\u0438\u0440 Java \u043f\u0440\u0438\u0448\u0451\u043b \u0447\u0435\u0440\u0435\u0437 Spring Boot \u0438 Bukkit.<\/p>\n<\/li>\n<li>\n<p><strong>HOCON<\/strong>\u00a0\u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u043a\u0442\u043e \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043d\u0430\u00a0JVM: Typesafe (\u043d\u044b\u043d\u0435 Lightbend) \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0435\u0433\u043e \u0434\u043b\u044f\u00a0Scala, Akka \u0438 Play. \u041d\u043e\u00a0\u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0437\u0430\u00a0\u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>TOML<\/strong>\u00a0\u2014 2013\u00a0\u0433\u043e\u0434, \u0422\u043e\u043c \u041f\u0440\u0435\u0441\u0442\u043e\u043d\u2011\u0412\u0435\u0440\u043d\u0435\u0440 \u0438\u0437\u00a0GitHub, \u00ab\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432\u00bb. \u0420\u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0Rust (Cargo) \u0438 Python (pyproject), \u0432\u00a0Java\u2011\u043c\u0438\u0440\u0435 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u00a0Forge\u2011\u043c\u043e\u0434\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437\u00a0\u043d\u0438\u0445 \u0432\u00a0JVM\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043f\u0443\u0442\u044c: \u0444\u0430\u0439\u043b \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u00a0\u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0436\u0438\u0432\u0451\u0442 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u00a0\u0432\u0438\u0434\u0435 <code>Map<\/code> \u0438 <code>List<\/code>. \u0410\u00a0\u0443\u00a0Jumper \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u00a0\u0436\u0435 \u0434\u0435\u0440\u0435\u0432\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438 \u0432\u00a0Java\u2011\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435. \u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443\u00a0\u0431\u044b \u043d\u0435\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438? \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442 <code>.jmc<\/code>. \u0412\u0441\u0451 \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u043e: \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0442\u00a0Java, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0442\u00a0Lua, \u043d\u043e\u00a0\u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0446\u0438\u043a\u043b\u043e\u0432, \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0Java. \u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043f\u043e\u00a0\u0444\u0430\u0439\u043b\u0443 \u0438 <code>if\/else<\/code>\u00a0\u2014 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u043d\u0438 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u0437\u00a0\u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0448\u0435.<\/p>\n<pre><code class=\"java\">\/\/ server.jmcboolean dev = false;int port = dev ? 25566 : 25565;dyn server = {      host: \"0.0.0.0\",      port: port,      maxPlayers: dev ? 5 : 100,      motd: \"A Jumper server\"};dyn database = {      url: \"jdbc:mysql:\/\/localhost:3306\/mc\",  pool: { min: 2, max: dev ? 2 : 10 }};dyn worlds = [\"world\", \"world_nether\", \"world_the_end\"];if (dev) {      server.motd = server.motd + \" [dev]\";}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u00a0\u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 dev \u0438 port \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0432\u00a0\u043d\u0435\u0451 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0server \u0438 database: \u0445\u043e\u0441\u0442 \u0431\u0435\u0440\u0451\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438, \u043b\u0438\u0448\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0438 \u0435\u043c\u0443 \u043d\u0435\u00a0\u043c\u0435\u0448\u0430\u044e\u0442. \u0421\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Java \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430: <code>Config.load(path)<\/code>. \u0424\u0430\u0439\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u043e\u0433\u043e\u2011\u043b\u0438\u0431\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0Java, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043a\u043e\u043d\u0444\u0438\u0433 \u043e\u0442\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a\u00a0\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u043b\u044f\u00a0\u0447\u0438\u0441\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0443\u0442\u044c\u00a0\u2014 \u043e\u0434\u043d\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0431\u0435\u0437\u00a0\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u0434\u0435\u0440\u0435\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u00a0\u0445\u043e\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f; \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u043e\u043d \u043d\u0435\u00a0\u0443\u043c\u0435\u0435\u0442, \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u00a0\u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441\u00a0\u0442\u0435\u043c\u00a0\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0426\u0438\u0444\u0440\u044b \u043f\u0440\u043e\u0442\u0438\u0432 Jackson, Gson, fastjson2, SnakeYAML \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445\u00a0\u2014 \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0447\u0435\u043c \u0443\u0434\u0438\u0432\u0438\u0442\u044c \u0438 \u0435\u0441\u0442\u044c \u0433\u0434\u0435 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u043f\u0430\u0440\u0438\u0442\u0435\u0442.<\/p>\n<h3>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c:.jma<\/h3>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 JVM \u043d\u0435\u043b\u044c\u0437\u044f. \u0421\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u0438\u0442 <code>Runtime.exec<\/code> \u0438 <code>ClassLoader<\/code>,\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u043f\u043b\u0430\u0433\u0438\u043d, \u0430\u00a0\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0441\u00a0\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043f\u043a\u0443 <code>plugins\/<\/code>.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435\u00a0\u2014 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0424\u0430\u0439\u043b <code>.jma<\/code> (Jumper Access) \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043b\u0430\u0441\u0441\u044b, \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043f\u043e\u043b\u044f Java \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u0432\u0438\u0434\u043d\u044b. \u0412\u0441\u0451, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043e, \u0437\u0430\u043a\u0440\u044b\u0442\u043e. \u0421\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0443\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435\u0442: \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 Jumper, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u00ab\u0432\u0438\u0434\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e <code>Policy<\/code>\u00bb. \u0412\u043e\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0438\u0437\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"java\">\/\/ scripts.jma - \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 scripts\/Policy.allowPackage(\"example.jumper.api\");          \/\/ API \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432: \u0441\u0435\u0440\u0432\u0435\u0440, \u0438\u0433\u0440\u043e\u043a\u0438, \u043c\u0438\u0440Policy.allowClass(\"example.jumper.api.ScriptPlayer\")      .denyMethod(\"kick\");                          \/\/ ...\u043a\u0440\u043e\u043c\u0435 \u043a\u0438\u043a\u0430: \u044d\u0442\u043e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432Policy.denyClass(\"example.jumper.api.Players\");     \/\/ \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043a\u0443\u0445\u043d\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430Policy.allowPackage(\"java.util\");                   \/\/ \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438Policy.allowPackage(\"java.lang\");                   \/\/ String, Math, Integer... \u043d\u043e \u043d\u0435 Class\/Runtime\/System\/ThreadPolicy.allowMethod(\"java.lang.System\", \"currentTimeMillis\");Policy.maxTableSize(100000);                        \/\/ while (true) list.add(x) \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u0430 \u043d\u0435 \u043d\u0430 -Xmx<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<ol>\n<li>\n<p><strong>\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0437\u0430\u0434\u0430\u0451\u0442 \u0445\u043e\u0441\u0442, \u0430\u00a0\u043d\u0435\u00a0\u0441\u043a\u0440\u0438\u043f\u0442.<\/strong> <code>Access.load(path)<\/code> \u0432\u00a0Java\u2011\u043a\u043e\u0434\u0435, \u0434\u0430\u043b\u044c\u0448\u0435 <code>new Interpreter().access(policy)<\/code>. \u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043d\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443, \u043d\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c. \u0411\u0435\u0437\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u0438\u0434\u0438\u0442 \u0432\u0441\u044e JVM\u00a0\u2014 \u044d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u00a0\u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0438\u0440\u0430\u0442\u044c, \u0447\u0443\u0436\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u00a0\u2014 \u043d\u0430\u0434\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u00a0\u043e\u0431\u0449\u0435\u0433\u043e \u043a\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u043c\u0443.<\/strong> \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u00a0\u043a\u043b\u0430\u0441\u0441 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0430\u00a0\u043f\u0430\u043a\u0435\u0442, \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u00a0\u043c\u0435\u0442\u043e\u0434 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0430\u00a0\u043a\u043b\u0430\u0441\u0441 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u00a0\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f: \u0437\u0430\u043a\u0440\u044b\u043b\u0438 <code>Entity.setHealth<\/code>\u00a0\u2014 \u0437\u0430\u043a\u0440\u044b\u0442 \u0438 <code>Zombie.setHealth<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430\u00a0\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0438, \u0430\u00a0\u043d\u0435\u00a0\u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435.<\/strong> \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u0435: \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 <code>import java.lang.reflect.Method;<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u00a0\u2014 \u0432\u00a0\u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 <code>invokedynamic<\/code> \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u043a\u00a0\u043c\u0435\u0441\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430. \u0413\u043e\u0440\u044f\u0447\u0438\u0439 \u0446\u0438\u043a\u043b \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u0435\u0436\u0438\u0442 \u0431\u0435\u0437\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430 \u043d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435\u00a0\u2014 <code>SecurityException<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u043c <code>catch<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0443\u0442\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437\u00a0\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c.<\/strong> <code>allowPackage(\"java.lang\")<\/code> \u0434\u0430\u0451\u0442 <code>String<\/code> \u0438 <code>Math<\/code>, \u043d\u043e\u00a0\u043d\u0435 <code>Class<\/code>, <code>ClassLoader<\/code>, <code>Runtime<\/code>, <code>System<\/code>, <code>Thread<\/code>, \u043d\u0435 <code>java.lang.reflect<\/code>, <code>java.lang.invoke<\/code>, <code>java.lang.foreign<\/code>, \u043d\u0435\u00a0\u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438\u0437 <code>java.util.concurrent<\/code>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0434\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u043e, \u0430\u00a0\u0443 <code>Class<\/code> \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0435 <code>getName<\/code> \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435: \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u043e\u0435\u0442 <code>forName<\/code> \u0438\u043b\u0438 <code>getClassLoader<\/code>. <code>getClass()<\/code> \u0437\u0430\u043a\u0440\u044b\u0442 \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0445\u043e\u0441\u0442\u0430 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0439\u00a0\u0436\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435.<\/strong> \u0415\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043b \u0432\u00a0\u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u044a\u0435\u043a\u0442, \u0430\u00a0\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441 \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u044b\u0442, \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435\u00a0\u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443\u00a0\u043d\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e. \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f: \u043c\u0435\u0442\u043e\u0434\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435 <code>ClassLoader<\/code>, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u0436\u0451\u0441\u0442\u043a\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u0430\u0442\u0430\u043a\u0430.<\/strong> <code>Interpreter.cancellable(true)<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430\u00a0\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0440\u0451\u0431\u0440\u0430\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0438 \u043d\u0430\u00a0\u0432\u0445\u043e\u0434\u0435 \u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0441\u0442\u043e\u0440\u043e\u0436 \u0445\u043e\u0441\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0447\u0435\u0440\u0435\u0437 <code>cancel()<\/code>. \u0411\u0435\u0437\u00a0\u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0432\u00a0\u0446\u0438\u043a\u043b\u0430\u0445 \u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c. <code>maxTableSize<\/code> \u0441\u0442\u0440\u0430\u0445\u0443\u0435\u0442 \u043e\u0442\u00a0\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0410\u00a0\u0432\u043e\u0442 \u043b\u0438\u043c\u0438\u0442\u0430 \u043d\u0430\u00a0\u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435\u0442 \u0438 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442: \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 <code>-Xmx<\/code> \u0438 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u044b.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u0442\u0435\u0441\u0442 \u043d\u0430\u00a0\u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0451\u043b \u0432\u044b\u0445\u043e\u0434 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 <code>allowPackage(\"java.lang\")<\/code> + <code>allowPackage(\"java.util\")<\/code>: \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u043e \u0438 \u043f\u043e\u0434\u043f\u0430\u043a\u0435\u0442\u044b (<code>java.lang.foreign<\/code>, <code>java.lang.management<\/code>, <code>java.util.logging<\/code>), \u0430 <code>new java.util.Formatter(\"\/path\")<\/code> \u043f\u0438\u0441\u0430\u043b \u0432\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u0435\u0437\u00a0\u0432\u0441\u044f\u043a\u043e\u0433\u043e <code>java.io<\/code>. \u0412\u0441\u0435 \u043f\u044f\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u043e\u043a \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u0432 0.11.1\u00a0\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u044b \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u043d\u0435\u00a0\u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u0433\u043e\u0440\u0436\u0443\u0441\u044c \u0434\u044b\u0440\u043e\u0439, \u0430\u00a0\u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435\u00a0\u043b\u043e\u043c\u0430\u043b, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442.<\/p>\n<h3>\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f<\/h3>\n<p>\u0414\u0432\u0430 \u043f\u0443\u0442\u0438. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <code>javax.script<\/code>, \u0435\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u0434 \u043f\u043e\u0434\u00a0JSR-223\u00a0(\u0438\u043c\u0435\u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0430 <code>jumper<\/code> \u0438 <code>jmp<\/code>):<\/p>\n<pre><code class=\"java\">ScriptEngine jumper = new ScriptEngineManager().getEngineByName(\"jumper\");jumper.put(\"name\", \"world\");jumper.eval(\"println(\\\"Hello, \\\" + name);\");<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418 \u0441\u0432\u043e\u0439 API, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430, \u043e\u0442\u043c\u0435\u043d\u0430 \u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u0437\u00a0Java. \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code class=\"java\">Access policy = Access.load(serverFolder.resolve(\"scripts.jma\"));Interpreter jj = new Interpreter()           .access(policy)            \/\/ \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u0438\u0434\u0438\u0442 \u0432\u0441\u044e JVM    .cancellable(true);        \/\/ \u0441\u0442\u043e\u0440\u043e\u0436 \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u043d\u044f\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0448\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442jj.define(\"server\", new ScriptServer(ctx));   \/\/ \u043e\u0431\u044a\u0435\u043a\u0442 \u0445\u043e\u0441\u0442\u0430, \u0432\u0438\u0434\u0435\u043d \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u043a\u0430\u043a `server`Script script = jj.script(Files.readString(file)); \/\/ \u0440\u0430\u0437\u0431\u043e\u0440: \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u0430script.run();                                      \/\/ \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044cif (script.has(\"onTick\")) {      script.invoke(\"onTick\", tick);  \/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u0437 Java}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410\u00a0\u0441\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u00a0\u2014 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 <code>welcome.jmp<\/code> \u0438\u0437\u00a0\u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u00a0\u0436\u0438\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"java\">import java.util.HashMap;dyn visits = new HashMap();  \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0436\u0438\u0432\u0451\u0442 \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438void onJoin(dyn p) {      int n = visits.getOrDefault(p.name(), 0) + 1;  visits.put(p.name(), n);  p.send(n == 1 ? \"Welcome, \" + p.name() + \"!\" : \"Welcome back, \" + p.name() + \" (visit \" + n + \")\");  server.broadcast(p.name() + \" joined, \" + server.players().size() + \" online\");}void onQuit(dyn p) {      server.log(p.name() + \" left after \" + visits.get(p.name()) + \" visit(s)\");}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c: \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 (LSP) \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432\u00a0\u0442\u043e\u0442\u00a0\u0436\u0435 <code>jmp.jar<\/code>, \u043d\u0430\u00a0\u043d\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f\u00a0VS Code \u0438 Neovim, \u0430\u00a0\u0434\u043b\u044f\u00a0IntelliJ IDEA \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d. \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430, \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0Java\u2011\u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0445\u043e\u0441\u0442\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e, \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0437\u043d\u0430\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443: \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u0434\u043e\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 JitPack: <code>com.github.jumper-lang:jumper:&lt;\u0442\u0435\u0433&gt;<\/code>. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0432\u0438\u043a\u0438 \u0438 \u0441\u0430\u0439\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\u00a0\u2014 \u0432\u00a0\u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 Jumper<\/h3>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e\u00a0\u0432\u044b\u0448\u0435,\u00a0\u2014 \u0441\u043b\u043e\u0432\u0430. \u0414\u0430\u043b\u044c\u0448\u0435 \u0446\u0438\u0444\u0440\u044b, \u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u00a0\u0442\u043e\u043c, \u043a\u0430\u043a\u00a0\u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0431\u0435\u0437\u00a0\u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438\u00a0\u2014 \u044d\u0442\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0430.<\/p>\n<h4>\u041a\u0430\u043a\u00a0\u043c\u0435\u0440\u0438\u043b\u0438<\/h4>\n<ul>\n<li>\n<p>28\u00a0\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0432\u00a0\u0432\u043e\u0441\u044c\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u0430\u0445: \u0446\u0438\u043a\u043b\u044b \u0438 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430, \u0432\u044b\u0437\u043e\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043c\u043e\u043d\u043e\u2011, \u043f\u043e\u043b\u0438\u2011 \u0438 \u043c\u0435\u0433\u0430\u043c\u043e\u0440\u0444\u043d\u044b\u0435), \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u0442\u0440\u043e\u043a\u0438, \u041e\u041e\u041f, \u0438\u043d\u0442\u0435\u0440\u043e\u043f \u0441\u00a0Java, \u00ab\u043a\u0430\u043a \u0432\u00a0\u0436\u0438\u0437\u043d\u0438\u00bb (nbody, binary_trees, game_tick).<\/p>\n<\/li>\n<li>\n<p>14\u00a0\u0434\u0432\u0438\u0436\u043a\u043e\u0432: Java \u0438 Kotlin \u043a\u0430\u043a\u00a0\u043f\u043e\u0442\u043e\u043b\u043e\u043a, Kotlin Script, \u0442\u0440\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 Jumper (\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u0435\u0437\u00a0JIT), Groovy \u0432\u00a0\u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445, LuaJ \u0432\u00a0\u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445, Nashorn, Rhino, JRuby, Jython. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u0441\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435: LuaJ \u0441\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434, Rhino \u0432\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435, Nashorn \u0441\u00a0optimistic types, JRuby \u0441\u00a0JIT \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 invokedynamic.<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430\u00a0\u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 JVM, \u043f\u0440\u043e\u0433\u0440\u0435\u0432 \u0434\u043e\u00a0\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 9\u00a0\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439. \u0420\u0430\u0437\u0431\u043e\u0440 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u00a0\u0437\u0430\u043c\u0435\u0440 \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u044f\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u0435\u043d\u0447 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0435\u043a\u2011\u0441\u0443\u043c\u043c\u0443, \u0438 \u043e\u043d\u0430 \u0441\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u00a0Java. \u0412\u0441\u0435 392\u00a0\u044f\u0447\u0435\u0439\u043a\u0438 \u0441\u043e\u0448\u043b\u0438\u0441\u044c: \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0435\u00a0\u0442\u043e.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0435\u043d\u0434: Windows, Amazon Corretto 21.0.4, <code>-Xms2g -Xmx2g -XX:+UseParallelGC -Xss16m<\/code>. JDK 21, \u0430\u00a0\u043d\u0435 25, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0Groovy 4\u00a0\u043d\u0435\u00a0\u0447\u0438\u0442\u0430\u0435\u0442 class\u2011\u0444\u0430\u0439\u043b\u044b JDK 25. Graal.js \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435\u0442: \u0431\u0435\u0437\u00a0GraalVM \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c, \u0430\u00a0\u043d\u0430\u00a0GraalVM\u00a0\u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434, \u043f\u0440\u043e\u00a0\u043d\u0435\u0433\u043e \u043d\u0438\u0436\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043b\u0435\u0436\u0438\u0442 \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0435\u043d\u0447\u00a0\u2014 \u044d\u0442\u043e 14\u00a0\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 14\u00a0\u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u043b\u044e\u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u0434\u0432\u0438\u0436\u043e\u043a \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0435\u00a0\u0432\u00a0\u043b\u0443\u0447\u0448\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u043b\u0438\u00a0\u0431\u0435\u043d\u0447 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0435\u00a0\u0438\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e\u00a0\u2014 pull request \u0441\u00a0\u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h4>\u0421\u043a\u0440\u0438\u043f\u0442\u044b: \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u00a0Java<\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/c7\/f1\/98\/c7f1989f31ef564735799ec9a643e4b7.png\" width=\"1600\" height=\"920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/c7\/f1\/98\/c7f1989f31ef564735799ec9a643e4b7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/c7\/f1\/98\/c7f1989f31ef564735799ec9a643e4b7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<div class=\"floating-image\">\n<p>\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a\u00a0Java \u043f\u043e 28\u00a0\u0431\u0435\u043d\u0447\u0430\u043c (1.00\u00a0x = \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c Java, \u043c\u0435\u043d\u044c\u0448\u0435\u00a0\u2014 \u0431\u044b\u0441\u0442\u0440\u0435\u0435):<\/p>\n<\/div>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0434\u0432\u0438\u0436\u043e\u043a<\/p>\n<\/th>\n<th>\n<p>geomean<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Java<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.00\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Kotlin<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.02\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Kotlin Script (\u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0442\u044b\u0439)<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.02\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Jumper, \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>1.03\u00a0x<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Jumper, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>1.15\u00a0x<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Groovy @CompileStatic<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.80\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Nashorn<\/p>\n<\/td>\n<td>\n<p align=\"left\">4.15\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">JRuby<\/p>\n<\/td>\n<td>\n<p align=\"left\">10.95\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Groovy \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.50\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">LuaJ (luajc)<\/p>\n<\/td>\n<td>\n<p align=\"left\">14.84\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Rhino<\/p>\n<\/td>\n<td>\n<p align=\"left\">14.95\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jumper, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">22.29\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jython<\/p>\n<\/td>\n<td>\n<p align=\"left\">43.01\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">LuaJ \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">44.18\u00a0x<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Jumper \u043d\u0435\u043e\u0442\u043b\u0438\u0447\u0438\u043c \u043e\u0442\u00a0Java \u0432\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0435\u043d\u0434\u0430 (\u043e\u043d\u0430 \u043e\u043a\u043e\u043b\u043e 13% \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435). \u041d\u0430 21\u00a0\u0431\u0435\u043d\u0447\u0435 \u0438\u0437 28\u00a0\u043e\u043d \u0432\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 1.15\u00a0x, \u0430\u00a0\u043d\u0430\u00a0\u043f\u044f\u0442\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 Java: \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0447\u0435\u0442\u044b\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 0.68\u00a0x, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0432\u00a0\u0442\u0440\u0451\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 0.79\u00a0x, <code>switch<\/code> 0.89\u00a0x. \u042d\u0442\u043e \u043d\u0435\u00a0\u043c\u0430\u0433\u0438\u044f: \u043a\u043b\u0430\u0441\u0441\u044b Jumper \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u044b, \u0438 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0437\u043d\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0446\u0435\u043b\u0438, \u0430\u00a0javac \u0442\u0430\u043a\u043e\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0434\u0430\u0442\u044c \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>\u0413\u0434\u0435 \u043e\u0442\u0441\u0442\u0430\u0451\u0442: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (<code>object_alloc_churn<\/code> 1.31\u00a0x, <code>oop_construct<\/code> 1.27\u00a0x) \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0438\u0437\u00a0Java \u0432\u00a0\u0441\u043a\u0440\u0438\u043f\u0442 (<code>interop_callback<\/code> 1.21\u00a0x). \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 Jumper \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0435\u0441\u0451\u0442 24\u00a0\u0431\u0430\u0439\u0442\u0430 \u0431\u0430\u0437\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0432\u0435\u0440\u0445 \u043f\u043e\u043b\u0435\u0439, \u0438 \u043d\u0430 15\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e.<\/p>\n<p>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Jumper\u00a0\u2014 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043a\u043e\u0434 \u0441 <code>dyn<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0438\u043f\u043e\u0432 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u00a0\u2014 \u0432 1.15\u00a0x \u043e\u0442\u00a0Java. \u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, Nashorn, \u0432 3.6\u00a0\u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0435\u0433\u043e; JRuby \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Groovy\u00a0\u2014 \u0432\u00a0\u0434\u0435\u0441\u044f\u0442\u044c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0446\u0435\u043d\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043f\u043b\u0430\u0442\u0438\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0441\u0430\u043c\u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 <code>dyn<\/code>.<\/p>\n<h4>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 Java<\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/ba\/ed\/43\/baed4306ce8a9985c4533aae37af17b1.png\" width=\"1600\" height=\"740\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/ba\/ed\/43\/baed4306ce8a9985c4533aae37af17b1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/ba\/ed\/43\/baed4306ce8a9985c4533aae37af17b1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043b\u044f\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u00ab\u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u0438\u0431\u043e\u043d\u0430\u0447\u0447\u0438\u00bb, \u0430 \u00ab\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0445\u043e\u0441\u0442\u0430\u00bb. <code>ArrayList.add<\/code> \u0438 <code>get<\/code> \u0432\u00a0\u0446\u0438\u043a\u043b\u0435 \u043d\u0430 2\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 15\u00a0\u043f\u0440\u043e\u0445\u043e\u0434\u0430\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0434\u0432\u0438\u0436\u043e\u043a<\/p>\n<\/th>\n<th>\n<p><code>interop_method<\/code><\/p>\n<\/th>\n<th>\n<p><code>interop_collections<\/code> (HashMap)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jumper, \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.05\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.53\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jumper, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.18\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.08\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Nashorn<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.12\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">6.63\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Groovy @CompileStatic<\/p>\n<\/td>\n<td>\n<p align=\"left\">3.31\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.73\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Groovy \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">6.29\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.94\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">JRuby<\/p>\n<\/td>\n<td>\n<p align=\"left\">18.0\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">7.95\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">LuaJ (luajc)<\/p>\n<\/td>\n<td>\n<p align=\"left\">36.2\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">19.6\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jython<\/p>\n<\/td>\n<td>\n<p align=\"left\">91.6\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.0\u00a0x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Rhino<\/p>\n<\/td>\n<td>\n<p align=\"left\">242\u00a0x<\/p>\n<\/td>\n<td>\n<p align=\"left\">91.7\u00a0x<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0423\u00a0LuaJ \u0432\u044b\u0437\u043e\u0432 Java\u2011\u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044e \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u00a0\u2014 \u043e\u0442\u0441\u044e\u0434\u0430 36\u00a0\u0440\u0430\u0437. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u044f \u0438 \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u043c\u043e\u0434\u0435: \u043b\u044e\u0431\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043a\u00a0\u0438\u0433\u0440\u0435 \u0441\u0442\u043e\u0438\u043b\u043e \u0434\u043e\u0440\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. Jumper \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 Java \u0447\u0435\u0440\u0435\u0437 <code>invokedynamic<\/code> \u0441\u00a0inline\u2011\u043a\u0435\u0448\u0435\u043c \u043f\u043e\u00a0\u043a\u043b\u0430\u0441\u0441\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f, \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 C2\u00a0\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u0442.<\/p>\n<h4>\u0410\u043d\u0442\u0438\u0440\u0435\u043a\u043e\u0440\u0434\u044b<\/h4>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f\u0447\u0435\u0435\u043a, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0\u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u00ab\u0431\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00bb, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0443\u0447\u0448\u0435 \u0437\u043d\u0430\u0442\u044c \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0432\u044b \u0435\u0433\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>Groovy, <code>switch<\/code> \u043f\u043e\u00a0\u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u043b\u043e\u0442\u043d\u044b\u043c \u043c\u0435\u0442\u043a\u0430\u043c: <strong>71\u00a0x<\/strong> \u0434\u0430\u0436\u0435 \u0441 <code>@CompileStatic<\/code>, 91\u00a0x \u0431\u0435\u0437. Groovy \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 <code>switch<\/code> \u0447\u0435\u0440\u0435\u0437 <code>isCase<\/code> \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0435\u0442\u043a\u0443, \u0430\u00a0\u043d\u0435\u00a0\u0447\u0435\u0440\u0435\u0437 <code>tableswitch<\/code>.<\/p>\n<\/li>\n<li>\n<p>Groovy \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0432\u044b\u0437\u043e\u0432\u0430: <strong>552\u00a0x<\/strong>, 28\u00a0\u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0442\u0438\u0432 51\u00a0\u043c\u0441 \u0443\u00a0Java. \u0418\u043d\u043b\u0430\u0439\u043d\u2011\u043a\u0435\u0448 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u0430\u043a\u043b\u0430\u0441\u0441. \u0423\u00a0Jumper \u0442\u0430\u00a0\u0436\u0435 \u044f\u0447\u0435\u0439\u043a\u0430\u00a0\u2014 0.99\u00a0x.<\/p>\n<\/li>\n<li>\n<p>Rhino, <code>HashMap<\/code> \u0438\u0437\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430: 92\u00a0x; \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0430 15\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0447\u0438\u0441\u0435\u043b \u043d\u0435\u00a0\u0432\u043b\u0435\u0437 \u0432 2\u00a0\u0413\u0411, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d.<\/p>\n<\/li>\n<li>\n<p>Nashorn, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438: 78\u00a0x. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u00a0\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u0430\u0445 Nashorn \u0440\u043e\u0432\u043d\u043e 1.0\u00a0x\u00a0\u2014 \u043e\u043d \u0431\u044b\u043b \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0434\u0432\u0438\u0436\u043a\u043e\u043c, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043d\u0435\u00a0\u0432\u044b\u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0438\u0437\u00a0JDK.<\/p>\n<\/li>\n<li>\n<p>Jython: \u043d\u0435\u0442 JIT \u0441\u043e\u0432\u0441\u0435\u043c, 43\u00a0x \u0432\u00a0\u0441\u0440\u0435\u0434\u043d\u0435\u043c, 262\u00a0x \u043d\u0430\u00a0\u043f\u043e\u043b\u044f\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0438 \u044d\u0442\u043e Python 2.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0410\u00a0\u043d\u0430 GraalVM?<\/h4>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u041d\u0430\u00a0GraalVM CE 25\u00a0\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Jumper\u00a0\u2014 2.21\u00a0x \u043e\u0442\u00a0Java, Graal.js\u00a0\u2014 2.30\u00a0x, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Jumper\u00a0\u2014 2.61\u00a0x. \u0426\u0438\u043a\u043b\u044b, \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430, \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f \u0442\u0430\u043c \u0442\u0435\u00a0\u0436\u0435 1.0\u20131.3\u00a0x, \u0430\u00a0\u0432\u043e\u0442 \u043c\u0435\u0441\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 Java \u0434\u043e\u0440\u043e\u0436\u0430\u044e\u0442 \u0432 10\u201345\u00a0\u0440\u0430\u0437: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Graal \u043d\u0435\u00a0\u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 <code>MethodHandle<\/code>, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d Tier 1, \u0442\u0430\u043a, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 C2. Jumper \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043f\u043e\u0434\u00a0HotSpot. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0436\u0438\u0432\u0451\u0442 \u043d\u0430\u00a0GraalVM, \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0432\u044b \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u0435.<\/p>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0438<\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/1c\/fd\/d2\/1cfdd20b0980caf9914d27042f343686.png\" width=\"1600\" height=\"1050\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/1c\/fd\/d2\/1cfdd20b0980caf9914d27042f343686.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/1c\/fd\/d2\/1cfdd20b0980caf9914d27042f343686.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (114\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u0441\u0435\u043a\u0446\u0438\u0438, \u0441\u043f\u0438\u0441\u043a\u0438, 40\u00a0\u0441\u0442\u0440\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439) \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0447\u0435\u043a\u2011\u0441\u0443\u043c\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0443\u00a0\u0432\u0441\u0435\u0445 21\u00a0\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432. \u0425\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\u00a0\u2014 \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u00a0\u0441\u0432\u0435\u0436\u0435\u0439 JVM \u0441\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0430\u0437\u0431\u043e\u0440\u00a0\u2014 \u0442\u0435\u043a\u0441\u0442 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u00a0\u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0442\u043e\u0439 JVM:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/p>\n<\/th>\n<th>\n<p>\u0444\u043e\u0440\u043c\u0430\u0442<\/p>\n<\/th>\n<th>\n<p>\u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442, \u043c\u0441<\/p>\n<\/th>\n<th>\n<p>\u0440\u0430\u0437\u0431\u043e\u0440, \u043c\u043a\u0441<\/p>\n<\/th>\n<th>\n<p>\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f, \u041a\u0411<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Jumper<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">jmc<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>25.0<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">7.1<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>1.8<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">java.util.Properties<\/p>\n<\/td>\n<td>\n<p align=\"left\">properties<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.8<\/p>\n<\/td>\n<td>\n<p align=\"left\">22.1<\/p>\n<\/td>\n<td>\n<p align=\"left\">37.7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">fastjson2\u00a0(POJO)<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">214<\/p>\n<\/td>\n<td>\n<p align=\"left\">6.4<\/p>\n<\/td>\n<td>\n<p align=\"left\">9.4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">fastjson2<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">177<\/p>\n<\/td>\n<td>\n<p align=\"left\">8.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DSL\u2011JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">93<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.4<\/p>\n<\/td>\n<td>\n<p align=\"left\">15.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jackson<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">224<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.6<\/p>\n<\/td>\n<td>\n<p align=\"left\">14.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">kotlinx.serialization<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">95<\/p>\n<\/td>\n<td>\n<p align=\"left\">14.7<\/p>\n<\/td>\n<td>\n<p align=\"left\">19.6<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Gson<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">71<\/p>\n<\/td>\n<td>\n<p align=\"left\">18.8<\/p>\n<\/td>\n<td>\n<p align=\"left\">20.6<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Moshi<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON<\/p>\n<\/td>\n<td>\n<p align=\"left\">59<\/p>\n<\/td>\n<td>\n<p align=\"left\">27.2<\/p>\n<\/td>\n<td>\n<p align=\"left\">27.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NightConfig<\/p>\n<\/td>\n<td>\n<p align=\"left\">TOML<\/p>\n<\/td>\n<td>\n<p align=\"left\">56<\/p>\n<\/td>\n<td>\n<p align=\"left\">31.7<\/p>\n<\/td>\n<td>\n<p align=\"left\">76<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jackson TOML<\/p>\n<\/td>\n<td>\n<p align=\"left\">TOML<\/p>\n<\/td>\n<td>\n<p align=\"left\">235<\/p>\n<\/td>\n<td>\n<p align=\"left\">31.7<\/p>\n<\/td>\n<td>\n<p align=\"left\">31.3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">XML DOM (JDK)<\/p>\n<\/td>\n<td>\n<p align=\"left\">XML<\/p>\n<\/td>\n<td>\n<p align=\"left\">60<\/p>\n<\/td>\n<td>\n<p align=\"left\">79.3<\/p>\n<\/td>\n<td>\n<p align=\"left\">101<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jackson YAML<\/p>\n<\/td>\n<td>\n<p align=\"left\">YAML<\/p>\n<\/td>\n<td>\n<p align=\"left\">253<\/p>\n<\/td>\n<td>\n<p align=\"left\">133<\/p>\n<\/td>\n<td>\n<p align=\"left\">260<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Typesafe Config<\/p>\n<\/td>\n<td>\n<p align=\"left\">HOCON<\/p>\n<\/td>\n<td>\n<p align=\"left\">75<\/p>\n<\/td>\n<td>\n<p align=\"left\">151<\/p>\n<\/td>\n<td>\n<p align=\"left\">233<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SnakeYAML<\/p>\n<\/td>\n<td>\n<p align=\"left\">YAML<\/p>\n<\/td>\n<td>\n<p align=\"left\">103<\/p>\n<\/td>\n<td>\n<p align=\"left\">186<\/p>\n<\/td>\n<td>\n<p align=\"left\">377<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Jankson<\/p>\n<\/td>\n<td>\n<p align=\"left\">JSON5<\/p>\n<\/td>\n<td>\n<p align=\"left\">64<\/p>\n<\/td>\n<td>\n<p align=\"left\">189<\/p>\n<\/td>\n<td>\n<p align=\"left\">219<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Configurate<\/p>\n<\/td>\n<td>\n<p align=\"left\">YAML<\/p>\n<\/td>\n<td>\n<p align=\"left\">276<\/p>\n<\/td>\n<td>\n<p align=\"left\">229<\/p>\n<\/td>\n<td>\n<p align=\"left\">340<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">tomlj<\/p>\n<\/td>\n<td>\n<p align=\"left\">TOML<\/p>\n<\/td>\n<td>\n<p align=\"left\">145<\/p>\n<\/td>\n<td>\n<p align=\"left\">657<\/p>\n<\/td>\n<td>\n<p align=\"left\">1252<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0430\u0440\u0438\u0442\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c: \u043f\u043e\u00a0\u0447\u0438\u0441\u0442\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 Jumper \u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0441\u00a0fastjson2, \u0430\u00a0\u043d\u0435\u00a0\u0432\u043f\u0435\u0440\u0435\u0434\u0438: 7.1\u00a0\u043c\u043a\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 6.4\u20138.0. Jackson \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1.8\u00a0\u0440\u0430\u0437\u0430, Gson \u0432 2.6, YAML \u0432 20\u201330, tomlj \u0432 90. \u041d\u043e\u00a0\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0440\u0430\u0437\u0431\u043e\u0440\u0430\u00a0\u2014 \u043d\u0435\u00a0\u0442\u043e, \u0437\u0430\u00a0\u0447\u0442\u043e\u00a0\u043f\u043b\u0430\u0442\u0438\u0442 \u0441\u0435\u0440\u0432\u0435\u0440. \u041e\u043d \u043f\u043b\u0430\u0442\u0438\u0442 \u0437\u0430\u00a0\u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0438 \u0437\u0430\u00a0\u043c\u0443\u0441\u043e\u0440 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c <code>reload<\/code>, \u0438 \u0442\u0443\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f: 25\u00a0\u043c\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 177\u2013261\u00a0\u0443\u00a0Jackson \u0438 fastjson2\u00a0(\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <code>Properties<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432\u00a0CDS\u2011\u0430\u0440\u0445\u0438\u0432\u0435 JDK) \u0438 1.8\u00a0\u041a\u0411 \u043c\u0443\u0441\u043e\u0440\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 9\u201315\u00a0\u0443\u00a0JSON\u2011\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 260\u2013380\u00a0\u0443\u00a0YAML. \u0412\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 Jumper \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437; \u0443\u00a0\u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0438 \u0440\u0435\u0436\u0438\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 (0.7\u00a0\u043c\u043a\u0441 \u043d\u0430\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435), \u043d\u043e\u00a0\u044d\u0442\u043e \u043a\u0435\u0448 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u00a0\u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c\u0438 \u043d\u0435\u0447\u0435\u0441\u0442\u043d\u043e.<\/p>\n<h4>\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430<\/h4>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/58\/e1\/1a\/58e11a7efd62a6044f6401233ebd7eb2.png\" width=\"1600\" height=\"640\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/58\/e1\/1a\/58e11a7efd62a6044f6401233ebd7eb2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/58\/e1\/1a\/58e11a7efd62a6044f6401233ebd7eb2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0443\u043c\u043c\u0430 jar\u2011\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c: Jumper 0.6\u00a0\u041c\u0411 (\u043e\u0434\u0438\u043d jar, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0434\u043b\u044f\u00a0\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432), Rhino 1.2, LuaJ 1.7, Nashorn 2.4, Groovy 7.4, JRuby 34, Jython 48, Graal.js 62, Kotlin Script 62.<\/p>\n<h4>\u0427\u0435\u0442\u044b\u0440\u0435 \u0442\u0435\u0437\u0438\u0441\u0430<\/h4>\n<p><strong>\u0412\u044b \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/strong> Jumper \u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0438\u0442 \u043b\u043e\u043c\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0432\u00a0\u0441\u0440\u043e\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041b\u0435\u0433\u0430\u0441\u0438 \u043f\u0443\u0441\u0442\u044c \u0436\u0438\u0432\u0451\u0442 \u043d\u0430\u00a0\u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0442\u0435\u043a\u0435. \u041d\u043e\u00a0\u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434, \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u00a0\u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0430\u00a0\u043d\u043e\u0432\u043e\u043c, \u0438 \u043e\u0431\u0430 \u0441\u0442\u0435\u043a\u0430 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0436\u0438\u0432\u0443\u0442 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p><strong>\u041d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043c\u043e\u0437\u0433.<\/strong> \u0421\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435, \u0438 \u044d\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u041d\u0438 Lua \u0441\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043d\u0438 Python 2, \u043d\u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u044b YAML, \u043d\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u044f\u0437\u044b\u043a \u0432\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u0445 JSON. \u0418 \u0432\u00a0\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043e\u0434\u043d\u0430 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430, \u043e\u0434\u043d\u043e \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u0442\u0435\u043c\u00a0\u0436\u0435 Java\u2011\u043a\u043b\u0430\u0441\u0441\u0430\u043c.<\/p>\n<p><strong>\u0417\u0430\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u0435 \u0432\u044b.<\/strong> \u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f\u00a0\u2014 \u044d\u0442\u043e \u0440\u0443\u0447\u043a\u0430, \u0430\u00a0\u043d\u0435\u00a0\u0440\u0435\u0436\u0438\u043c \u0434\u0432\u0438\u0436\u043a\u0430. \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 <code>dyn<\/code>\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 1.15\u00a0x. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 <code>int<\/code> \u0438 <code>double<\/code> \u0432\u00a0\u0433\u043e\u0440\u044f\u0447\u0435\u043c \u0446\u0438\u043a\u043b\u0435\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 Java. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439, \u043e\u0434\u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0430 \u0441\u043b\u043e\u0432\u0430 \u0432\u00a0\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n<p><strong>\u0417\u0430\u00a0\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u0435 \u0432\u044b.<\/strong> \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u00a0\u2014 \u044d\u0442\u043e \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u0445\u043e\u0441\u0442, \u0430\u00a0\u043d\u0435\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u00ab\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0432\u043a\u043b\/\u0432\u044b\u043a\u043b\u00bb. \u0421\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0438 \u0432\u0438\u0434\u0438\u0442 \u0432\u0441\u044e JVM. \u0427\u0443\u0436\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043b\u0438 \u0432 <code>.jma<\/code>, \u0438 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0435\u0436\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u043d\u0438\u043c \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435, \u0447\u0442\u043e\u00a0\u0438 \u0441\u0430\u043c \u043f\u043b\u0430\u0433\u0438\u043d.<\/p>\n<h4>FAQ<\/h4>\n<p><strong>\u0417\u0430\u0447\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044f\u0437\u044b\u043a, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c Groovy?<\/strong> Groovy\u00a0\u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u043d\u043e\u00a0\u043a\u0430\u043a\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u043d \u043b\u0438\u0431\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 (\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, 8% \u043e\u0442\u00a0Java), \u043b\u0438\u0431\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>switch<\/code> \u0438 \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 Java. \u041f\u043b\u044e\u0441 7\u00a0\u041c\u0411 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043d\u0435\u0442 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438. Jumper \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043f\u043e\u0434\u00a0\u043e\u0434\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0443\u00a0\u2014 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 Java\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u00a0\u2014 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438 \u043f\u043e\u0434\u00a0\u0447\u0442\u043e.<\/p>\n<p><strong>\u042d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b?<\/strong> \u0421\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 <code>.jma<\/code>\u00a0\u2014 \u0434\u0430, \u0432\u00a0\u0442\u0435\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u044b\u0448\u0435: \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0437\u0430\u043a\u0440\u044b\u0442\u0430\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438, \u043e\u0442\u043c\u0435\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0448\u0435\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043b\u0438\u043c\u0438\u0442 \u043d\u0430\u00a0\u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0427\u0435\u0433\u043e \u043d\u0435\u0442: \u043b\u0438\u043c\u0438\u0442\u0430 \u043d\u0430\u00a0\u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0445 Java\u2011\u0432\u044b\u0437\u043e\u0432\u043e\u0432 (\u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0443 <code>CountDownLatch.await<\/code>, \u044d\u0442\u043e \u0432\u0430\u0448 \u0432\u044b\u0431\u043e\u0440). \u0411\u0435\u0437\u00a0\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0432\u0435\u043d Java\u2011\u043a\u043e\u0434\u0443 \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0442 generics \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043e\u0432?<\/strong> \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442. Generics \u0432\u00a0Java \u0441\u0442\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438; \u0432\u00a0Jumper \u0438\u0445 \u0440\u043e\u043b\u044c \u0438\u0433\u0440\u0430\u0435\u0442 <code>dyn<\/code>, \u0430\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u00a0\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e. \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b \u0435\u0441\u0442\u044c, \u043d\u043e\u00a0\u0432\u00a0\u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <code>int(x)<\/code>, <code>long(x)<\/code>, <code>double(x)<\/code>\u00a0\u2014 \u044f\u0432\u043d\u043e \u0438 \u0431\u0435\u0437\u00a0\u0441\u043a\u043e\u0431\u043e\u0447\u043d\u043e\u0439 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u00a0\u043f\u0430\u0440\u0441\u0435\u0440\u0435.<\/p>\n<p><strong>\u041c\u043e\u0436\u043d\u043e\u00a0\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c Java\u2011\u043a\u043b\u0430\u0441\u0441 \u0438\u0437\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430?<\/strong> \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442, \u0438 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441\u043a\u0430\u0436\u0435\u0442 \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u044f\u043c\u0431\u0434\u043e\u0439, \u0430\u00a0\u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0430\u0451\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u0441\u0432\u043e\u0439 API\u2011\u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u0430\u043a\u00a0\u0432\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 <code>server<\/code>. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e Java\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u00a0\u2014 \u0432\u00a0\u043f\u043b\u0430\u043d\u0430\u0445.<\/p>\n<p><strong>\u0410\u00a0\u043e\u0442\u043b\u0430\u0434\u043a\u0430?<\/strong> \u041e\u0448\u0438\u0431\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u0443\u0442 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0430\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0443, \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0434\u043e\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043d\u0435\u0442: \u043a\u043e\u0434 Tier 1\u00a0\u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 JVM\u2011\u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0438\u0441\u043a (<code>JMP_DUMP<\/code>) \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <code>javap<\/code>, \u043d\u043e\u00a0\u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0432\u00a0IDE \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f.<\/p>\n<p><strong>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u0442\u0430\u0440\u0442?<\/strong> \u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u00a0\u2014 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0438\u0434\u0451\u0442 \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0438\u043b\u0438\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0445 \u0441\u0440\u0430\u0437\u0443 (<code>Jit.compileAll<\/code>), \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0438\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u00a0\u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0438\u0442\u044c. \u0414\u043b\u044f\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: Kotlin Script \u043d\u0430\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u0442\u0440\u0430\u0442\u0438\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<p><strong>\u041a\u0430\u043a\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c?<\/strong> JitPack: <code>com.github.jumper-lang:jumper:&lt;\u0442\u0435\u0433&gt;<\/code> \u0432\u00a0Gradle \u0438\u043b\u0438\u00a0Maven, Java 21+. \u0418\u043b\u0438\u00a0\u043f\u0440\u043e\u0441\u0442\u043e <code>jmp.jar<\/code> \u0438\u0437\u00a0\u0440\u0435\u043b\u0438\u0437\u043e\u0432\u00a0\u2014 \u0432\u00a0\u043d\u0451\u043c CLI, REPL, \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0434\u0432\u0438\u0436\u043e\u043a <code>javax.script<\/code>.<\/p>\n<p><strong>\u0427\u0442\u043e\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0438\u0437\u00a0\u043d\u0435\u0434\u043e\u0434\u0435\u043b\u043e\u043a?<\/strong> \u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0446\u0438\u043a\u043b\u0430, \u0430\u00a0\u043d\u0435\u00a0\u0435\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 (\u043a\u0430\u043a <code>var<\/code> \u0432\u00a0JavaScript, \u0430\u00a0\u043d\u0435 <code>let<\/code>); \u043e\u0431\u0445\u043e\u0434\u00a0\u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u2011\u043e\u0431\u0451\u0440\u0442\u043a\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 20\u201330% \u0434\u043e\u0440\u043e\u0436\u0435 Java. \u041d\u0430\u00a0GraalVM \u0432\u044b\u0437\u043e\u0432\u044b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0434\u043e\u0440\u043e\u0436\u0435, \u0447\u0435\u043c \u043d\u0430\u00a0HotSpot. \u0412\u0441\u0451 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u0442\u0440\u0435\u043a\u0435\u0440\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0438 \u0442\u0443\u0434\u0430\u00a0\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h4>\u0421\u0441\u044b\u043b\u043a\u0438<\/h4>\n<ul>\n<li>\n<p>\u042f\u0437\u044b\u043a, CLI \u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a: <a href=\"https:\/\/github.com\/jumper-lang\/jumper\" rel=\"noopener nofollow\">https:\/\/github.com\/jumper-lang\/jumper<\/a><\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: <a href=\"https:\/\/jumper-lang.github.io\/getting-started\" rel=\"noopener nofollow\">https:\/\/jumper-lang.github.io\/getting-started<\/a><\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b: jumper\u2011intellij, jumper\u2011vscode, jumper.nvim \u0432\u00a0\u0442\u043e\u0439\u00a0\u0436\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1099650\/\">https:\/\/habr.com\/ru\/articles\/1099650\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043d\u0435\u00a0\u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0Sun \u0438 Oracle \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u00a0Java, JavaScript \u0438 JSON. \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c.\u0410\u00a0\u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a. \u0412 1995\u00a0\u0433\u043e\u0434\u0443 Sun \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 Java \u0438 \u0430\u043f\u043f\u043b\u0435\u0442\u044b\u00a0\u2014 Java\u2011\u043a\u043e\u0434 \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0412\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u0433\u043e\u0434\u0443 Netscape \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u044f\u0437\u044b\u043a LiveScript \u0432\u00a0JavaScript: \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u0441\u0434\u0435\u043b\u043a\u0430 \u0441\u00a0Sun, \u0430\u00a0\u043d\u0435\u00a0\u0440\u043e\u0434\u0441\u0442\u0432\u043e \u044f\u0437\u044b\u043a\u043e\u0432. \u041e\u0431\u0449\u0435\u0433\u043e \u0443\u00a0\u043d\u0438\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u0438 \u0441\u043b\u043e\u0432\u043e \u0432\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438. \u0412 2001\u00a0\u0433\u043e\u0434\u0443 \u0414\u0443\u0433\u043b\u0430\u0441 \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434 \u0432\u044b\u0442\u0430\u0449\u0438\u043b \u0438\u0437\u00a0JavaScript \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432 \u0438 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e JSON\u00a0\u2014 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u00a0\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0447\u0438\u0441\u0442\u043e \u0434\u0436\u0430\u0432\u0430\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439.\u0414\u0430\u043b\u044c\u0448\u0435 Oracle \u043a\u0443\u043f\u0438\u043b\u0430 Sun (2010), \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0432\u044b\u043f\u0438\u043b\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b NPAPI (Chrome \u0432 2015, Firefox \u0432 2017), \u0438 Java \u0438\u0437\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0443\u0448\u043b\u0430: \u0430\u043f\u043f\u043b\u0435\u0442\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c\u0438 \u0432\u00a0Java 9\u00a0\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0432\u00a0Java 11. JavaScript \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043b\u0441\u044f, \u0430\u00a0\u0447\u0435\u0440\u0435\u0437 Node.js \u0437\u0430\u0435\u0445\u0430\u043b \u0435\u0449\u0451 \u0438 \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440. \u0422\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u043c\u0430\u0440\u043a\u0430 \u00abJavaScript\u00bb \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Oracle, \u0438 \u0432 2024\u00a0\u0433\u043e\u0434\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Deno \u043f\u043e\u0434\u0430\u043b\u043e \u0437\u0430\u044f\u0432\u043a\u0443 \u043d\u0430\u00a0\u0435\u0451 \u0430\u043d\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00a0\u2014 \u044d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e\u00a0\u044d\u0442\u0438 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442.\u0421\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u044f\u0437\u044b\u043a\u0438 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e\u00a0\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438. Java\u00a0\u2014 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u0435\u0440\u0432\u0435\u0440\u044b, Android, \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0431\u0430\u0437\u044b. JavaScript\u00a0\u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430, \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0449\u0438\u043d\u0430 \u0438 JSON \u043a\u0430\u043a\u00a0\u0440\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u0445\u043e\u0440\u043e\u0448\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u043e\u0434\u043d\u0443, \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u044f\u043d\u0435\u0442\u0441\u044f \u0441\u00a0\u043e\u0432\u0435\u0440\u0445\u0435\u0434\u043e\u043c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e\u00a0\u043d\u0438\u0436\u0435.\u041a\u0430\u043a\u00a0\u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Jumper\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u0435\u00a0\u0441\u00a0\u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u00a0\u0438\u0437\u2011\u0437\u0430 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u044f \u0443\u0432\u0438\u0434\u0435\u043b, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u044b Infinitode 2. \u0423\u0440\u043e\u0432\u043d\u0438 \u0442\u0430\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430\u00a0Lua, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430: \u043b\u043e\u0433\u0438\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u043b\u0435\u0436\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0433\u0440\u044b. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u044f \u0440\u0430\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u043e\u0434 \u043d\u0430\u00a0Minecraft \u0441\u00a0\u0431\u0430\u0437\u043e\u0432\u044b\u043c Lua API \u043d\u0430\u00a0LuaJ, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043f\u043e\u043b\u044f\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u0438\u0433\u0440\u044b. \u0421\u043f\u0443\u0441\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0Lua \u043f\u0440\u043e\u043f\u0430\u043b\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e: ruby\u2011\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0441 end, \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u0434 \u043c\u043e\u0434\u0430 \u043f\u043e\u0434\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0432\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 API\u00a0\u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 Java.\u041f\u043e\u0442\u043e\u043c \u0431\u044b\u043b\u043e \u0437\u0430\u0442\u0438\u0448\u044c\u0435, \u043f\u043e\u043a\u0430 \u044f \u0441\u043d\u043e\u0432\u0430 \u043d\u0435\u00a0\u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0441\u00a0\u043c\u043e\u0434\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u00a0\u0438\u0433\u0440\u0435. \u0413\u0434\u0435\u2011\u0442\u043e JavaScript \u043d\u0430\u00a0Rhino, \u0433\u0434\u0435\u2011\u0442\u043e Python \u043d\u0430\u00a0Jython, \u0430\u00a0\u0433\u0434\u0435\u2011\u0442\u043e \u0438 \u0432\u043e\u0432\u0441\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u044f\u0437\u044b\u043a \u043d\u0430\u00a0yml \u0441\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0432\u00a0\u0441\u0442\u0440\u043e\u043a\u0430\u0445. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u044f\u0441\u043d\u043e, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0434\u043b\u044f\u00a0JVM \u043d\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0434\u043b\u044f\u00a0\u043b\u0451\u0433\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u0415\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u00a0\u043d\u0438\u0445 \u0432\u00a0JVM \u043a\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u043e\u043c\u00a0\u2014 \u043d\u0430\u00a0\u0431\u043e\u043a\u0441\u0438\u043d\u0433\u0435 \u0447\u0438\u0441\u0435\u043b, \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 Java, \u043d\u0430\u00a0\u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438 \u043e\u0434\u0438\u043d Java\u2011\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435\u00a0\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0440\u043e\u0434\u043d\u044b\u043c.\u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u00a0Groovy \u0438 Kotlin Script. \u042d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u043e\u00a0\u043e\u043d\u0438 \u0445\u043e\u0440\u043e\u0448\u0438 \u0434\u043b\u044f\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438, \u0430\u00a0\u043d\u0435\u00a0\u0434\u043b\u044f\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. Kotlin Script \u0442\u044f\u043d\u0435\u0442 \u0437\u0430\u00a0\u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Kotlin (62\u00a0\u041c\u0411 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445) \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. Groovy \u043f\u043b\u0430\u0442\u0438\u0442 \u0437\u0430\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0430\u043d\u0431\u043e\u043a\u0441\u0438\u043d\u0433\u043e\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0438 \u043c\u0435\u0442\u0430\u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435, \u0430\u00a0\u0432\u00a0\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 @CompileStatic \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u00a0\u0441\u043a\u0440\u0438\u043f\u0442, \u0430\u00a0Java \u0441\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c\u0438. \u0426\u0438\u0444\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.\u0426\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: \u0431\u044b\u0442\u044c \u0434\u043b\u044f\u00a0JVM, \u043d\u043e\u00a0\u0441\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0422\u0430\u043a \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Jumper\u00a0\u2014 \u043b\u0451\u0433\u043a\u0438\u0439, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434 JVM, \u0441\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c Java, \u043d\u043e\u00a0\u0441\u00a0\u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043a\u0430\u043a\u00a0\u0432\u00a0Lua \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u00a0\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430.\u0427\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 JumperJumper\u00a0\u2014 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f\u00a0JVM: \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Java, \u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c Lua. \u041e\u0434\u0438\u043d jar \u043d\u0430 0.6\u00a0\u041c\u0411 \u0431\u0435\u0437\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, Java 21+, MIT. \u0422\u0440\u0438 \u0432\u0438\u0434\u0430 \u0444\u0430\u0439\u043b\u043e\u0432: .jmp\u00a0\u2014 \u0441\u043a\u0440\u0438\u043f\u0442, .jmc\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433, .jma\u00a0\u2014 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u0435\u0440\u0435\u0432\u0430 (Tier 0) \u0438 \u0441\u0432\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 JVM (Tier 1, \u0431\u0435\u0437\u00a0ASM), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u0430\u043a\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u044f\u0447\u0435\u0439.\u0412\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:import java.util.ArrayList;dyn greet(name) { return &#171;Hello, &#187; + name; }dyn names = new ArrayList();names.add(&#171;Jumper&#187;);names.add(&#171;Java&#187;);dyn point = { x: 1, y: 2 };for (dyn n : names) println(greet(n) + &#187; &#187; + (point.x + point.y));\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430\u00a0Java, \u0442\u0443\u0442 \u043d\u0435\u0447\u0435\u043c\u0443 \u0443\u0447\u0438\u0442\u044c\u0441\u044f. ArrayList\u00a0\u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 java.util.ArrayList, import\u00a0\u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 Java\u2011\u043a\u043b\u0430\u0441\u0441\u0430, \u0446\u0438\u043a\u043b for (: ) \u0442\u043e\u0442\u00a0\u0436\u0435. \u041d\u043e\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u0434\u0432\u0430: dyn \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u00a0\u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445.\u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u00a0\u0432\u044b\u0431\u043e\u0440\u0443dyn\u00a0\u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u0430\u043a local \u0432\u00a0Lua \u0438\u043b\u0438 let \u0432\u00a0JavaScript. \u0420\u044f\u0434\u043e\u043c \u0441\u00a0\u043d\u0435\u0439 \u0436\u0438\u0432\u0443\u0442 int, long, double, boolean, String \u0438 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0438 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0442\u0438\u043f\u044b: \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043d\u0435\u00a0\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 \u043b\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u0435.dyn fib(n) {                    \/\/ \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430: n \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0435\u043c \u0443\u0433\u043e\u0434\u043d\u043e  return n &lt; 2 ? n : fib(n &#8212; 1) + fib(n &#8212; 2);}int fib(int n) {                \/\/ \u0441\u0442\u0430\u0442\u0438\u043a\u0430: Tier 1 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 (I)I  return n &lt; 2 ? n : fib(n &#8212; 1) + fib(n &#8212; 2);}\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0434\u043d\u043e: \u043f\u043b\u0430\u0442\u0438\u0448\u044c \u0437\u0430\u00a0\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c. \u041b\u044e\u0431\u043e\u0439 dyn \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 int \u0438\u043b\u0438\u00a0\u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0442\u0440\u043e\u0433\u0430\u044f, \u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0Java. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0421\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a\u00a0\u0443\u0433\u043e\u0434\u043d\u043e: double \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 dyn\u00a0\u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f double, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u043c.\u0421\u043b\u043e\u0432\u043e var \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: \u0432\u00a0Java var\u00a0\u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0442\u0438\u043f\u0430 \u0441\u00a0\u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439, \u0430 dyn\u00a0\u2014 \u043f\u043e\u2011\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u0420\u0430\u0437\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u00a0\u2014 \u0440\u0430\u0437\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e.\u0422\u0430\u0431\u043b\u0438\u0446\u044b, \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u043a\u043b\u0430\u0441\u0441\u044b\u0422\u0430\u0431\u043b\u0438\u0446\u0430\u00a0\u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u00a0Lua \u0438\u043b\u0438\u00a0JavaScript: \u043a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443 \u0438\u043b\u0438\u00a0\u0441\u043a\u043e\u0431\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044f \u043d\u0430\u00a0\u0445\u043e\u0434\u0443.dyn server = { host: &#171;0.0.0.0&#187;, port: 25565, tags: [&#171;foo&#187;, &#171;bar&#187;] };server.motd = &#171;A Jumper server&#187;;println(server.port + 1);        \/\/ 25566println(server[&#171;host&#187;]);         \/\/ 0.0.0.0println(len(server.tags));       \/\/ 2\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u00a0\u043d\u0443\u043b\u044f, \u043a\u0430\u043a\u00a0\u0432\u00a0Java, \u0430\u00a0\u043d\u0435\u00a0\u0441\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043e\u00a0\u0444\u043e\u0440\u043c\u0430\u043c (shapes, \u043a\u0430\u043a\u00a0hidden classes \u0432\u00a0V8): \u043f\u043e\u043a\u0430 \u043a\u043b\u044e\u0447\u0438 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435\u00a0\u0436\u0435, \u043f\u043e\u043b\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u00a0\u0445\u0435\u0448\u0443 \u0441\u0442\u0440\u043e\u043a\u0438.\u041a\u043b\u0430\u0441\u0441\u044b\u00a0\u2014 \u043a\u0430\u043a\u00a0\u0432\u00a0Java, \u043d\u043e\u00a0\u0431\u0435\u0437\u00a0\u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432: \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u00a0\u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0447\u043b\u0435\u043d \u0431\u0435\u0437\u00a0\u0442\u0438\u043f\u0430, \u043f\u043e\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.class Vec {      double x, y;      Vec(double x, double y) { this.x = x; this.y = y; }      double len() { return Math.sqrt(x * x + y * y); }      Vec add(Vec o) { return new Vec(x + o.x, y + o.y); }}class Entity {      Vec pos = new Vec(0.0, 0.0);      dyn data = {};                \/\/ \u0430 \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435       void tick(double dt) {     pos = pos.add(new Vec(dt, 0));   }}\u041a\u043b\u0430\u0441\u0441\u044b \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u044b: \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430, Tier 1\u00a0\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f\u00a0\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 JVM\u2011\u043a\u043b\u0430\u0441\u0441 \u0441\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 double x, y. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 e.pos.x \u0432\u00a0\u0433\u043e\u0440\u044f\u0447\u0435\u043c \u0446\u0438\u043a\u043b\u0435\u00a0\u2014 \u044d\u0442\u043e getfield, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438. \u0415\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, super, static, \u043b\u044f\u043c\u0431\u0434\u044b (x) -&gt; x * 2, switch \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438, try\/catch\/finally, \u043c\u043e\u0434\u0443\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 import &#171;utils.jmp&#187;;.JVM\u00a0\u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0421\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0443\u00a0\u044f\u0437\u044b\u043a\u0430 \u043d\u0435\u0442, \u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e. \u0421\u0442\u0440\u043e\u043a\u0438\u00a0\u2014 java.lang.String, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\u00a0\u2014 java.util, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430\u00a0\u2014 Math. Java\u2011\u043a\u043b\u0430\u0441\u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u043b\u044f\u043c\u0431\u0434\u044b \u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b:import java.util.HashMap;import java.util.concurrent.TimeUnit;dyn m = new HashMap();m.put(&#171;a&#187;, 1);dyn a = new int[]{3, 1, 2};  \/\/ \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 int[]java.util.Arrays.sort(a);dyn list = new java.util.ArrayList();list.add(5); list.add(3);list.sort((x, y) -&gt; x &#8212; y);           \/\/ Comparator \u0438\u0437 \u043b\u044f\u043c\u0431\u0434\u044blist.forEach((x) -&gt; println(x));      \/\/ Consumer \u0438\u0437 \u043b\u044f\u043c\u0431\u0434\u044bprintln(TimeUnit.SECONDS.toMillis(2));println(String.valueOf(42).length());\u0412\u044b\u0437\u043e\u0432 Java\u2011\u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u0436\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u00a0Java: \u043f\u043e\u00a0\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c ArrayList.get \u0432\u00a0\u0446\u0438\u043a\u043b\u0435 \u043d\u0430 2\u00a0\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u00a0\u2014 1.05\u00a0x \u043e\u0442\u00a0Java. \u0414\u043b\u044f\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e: \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u043a\u043e\u0434 \u0445\u043e\u0441\u0442\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u0440\u043e\u0433\u0430\u044f, \u0442\u043e \u0434\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0451.\u0427\u0435\u0433\u043e \u0432\u00a0\u044f\u0437\u044b\u043a\u0435 \u043d\u0435\u0442\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432: \u043d\u0435\u0442 generics (\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 dyn), \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0439 (int) x\u00a0\u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e int(x), \u043d\u0435\u0442 instanceof\u00a0\u2014 \u0435\u0441\u0442\u044c isa, \u043d\u0435\u0442 char \u0438 float\u00a0\u2014 \u0435\u0441\u0442\u044c int, long, double. \u041a\u043b\u0430\u0441\u0441 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c Java\u2011\u043a\u043b\u0430\u0441\u0441, \u043d\u043e\u00a0\u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043b\u044f\u043c\u0431\u0434\u043e\u0439. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443\u2011\u0442\u043e \u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0443\u0436\u043d\u043e\u00a0\u2014 \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f\u00a0\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0430\u00a0\u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:.jmc\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0443\u00a0\u043c\u0435\u043d\u044f \u043f\u043e\u0434\u00a0\u043d\u043e\u0441\u043e\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0435\u0449\u0451 \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u044f \u0437\u0430\u043d\u044f\u043b\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438,\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0423\u00a0JVM \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u00a0\u2014 java.util.Properties, \u043e\u043d \u0441\u00a0JDK 1.0. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0441\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0438 \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430:XML\u00a0\u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 W3C 1998\u00a0\u0433\u043e\u0434\u0430 \u0434\u043b\u044f\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u00a0\u0432\u0435\u0431\u0435. \u0412\u00a0Java \u043f\u0440\u0438\u0436\u0438\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 J2EE, Ant \u0438 Maven, \u043d\u043e\u00a0\u043a\u0430\u043a\u00a0\u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f.JSON\u00a0\u2014 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432 JavaScript (2001), \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0438 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c: \u0435\u0433\u043e \u043f\u0438\u0441\u0430\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f\u00a0\u043c\u0430\u0448\u0438\u043d.YAML\u00a0\u2014 2001\u00a0\u0433\u043e\u0434, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Perl \u0438 Python, \u0430\u00a0\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043b Ruby on Rails. \u0412\u00a0\u043c\u0438\u0440 Java \u043f\u0440\u0438\u0448\u0451\u043b \u0447\u0435\u0440\u0435\u0437 Spring Boot \u0438 Bukkit.HOCON\u00a0\u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u043a\u0442\u043e \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043d\u0430\u00a0JVM: Typesafe (\u043d\u044b\u043d\u0435 Lightbend) \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0435\u0433\u043e \u0434\u043b\u044f\u00a0Scala, Akka \u0438 Play. \u041d\u043e\u00a0\u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0437\u0430\u00a0\u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442.TOML\u00a0\u2014 2013\u00a0\u0433\u043e\u0434, \u0422\u043e\u043c \u041f\u0440\u0435\u0441\u0442\u043e\u043d\u2011\u0412\u0435\u0440\u043d\u0435\u0440 \u0438\u0437\u00a0GitHub, \u00ab\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432\u00bb. \u0420\u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0Rust (Cargo) \u0438 Python (pyproject), \u0432\u00a0Java\u2011\u043c\u0438\u0440\u0435 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u00a0Forge\u2011\u043c\u043e\u0434\u0430\u0445.\u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437\u00a0\u043d\u0438\u0445 \u0432\u00a0JVM\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u043f\u0443\u0442\u044c: \u0444\u0430\u0439\u043b \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u00a0\u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0436\u0438\u0432\u0451\u0442 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u00a0\u0432\u0438\u0434\u0435 Map \u0438 List. \u0410\u00a0\u0443\u00a0Jumper \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u00a0\u0436\u0435 \u0434\u0435\u0440\u0435\u0432\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u00a0\u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438 \u0432\u00a0Java\u2011\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435. \u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443\u00a0\u0431\u044b \u043d\u0435\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438? \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442 .jmc. \u0412\u0441\u0451 \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u043e: \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043e\u0442\u00a0Java, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0442\u00a0Lua, \u043d\u043e\u00a0\u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0446\u0438\u043a\u043b\u043e\u0432, \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0Java. \u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u00a0\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043f\u043e\u00a0\u0444\u0430\u0439\u043b\u0443 \u0438 if\/else\u00a0\u2014 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u043d\u0438 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u0437\u00a0\u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0448\u0435.\/\/ server.jmcboolean dev = false;int port = dev ? 25566 : 25565;dyn server = {      host: &#171;0.0.0.0&#187;,      port: port,      maxPlayers: dev ? 5 : 100, &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500370","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=500370"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500370\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}