{"id":472759,"date":"2025-08-31T21:01:21","date_gmt":"2025-08-31T21:01:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=472759"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=472759","title":{"rendered":"<span>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0432 Java-\u043c\u0438\u0440\u0435<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00a0\u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 Java Rock Star Meetup, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440 \u0421\u0438\u0442\u043d\u0438\u043a\u043e\u0432 (<a href=\"https:\/\/habr.com\/ru\/users\/vladimirsitnikov\/\" rel=\"noopener noreferrer nofollow\">@vladimirsitnikov<\/a>)\u00a0\u2014 performance engineer, PgJDBC \u0438 JMeter committer, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u043b\u0435\u043d \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u0438\u0442\u0435\u0442\u043e\u0432 JPoint, Joker, Heisenbug, DevOops \u0438 SmartDara. \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u044e\u0431\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e, \u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=05ICwsJH1GM&amp;utm_source=habr&amp;utm_medium=article\" rel=\"noopener noreferrer nofollow\">YouTube<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/vkvideo.ru\/video-195063478_456239097?utm_source=habr&amp;utm_medium=article\" rel=\"noopener noreferrer nofollow\">VK \u0412\u0438\u0434\u0435\u043e<\/a>.<\/p>\n<hr\/>\n<p>\u041e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438. \u041c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u042d\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0434\u0430\u043a\u043e\u0439 \u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0432\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0432\u0438\u0436\u0435\u0442 Java \u0432\u043f\u0435\u0440\u0451\u0434, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0434\u0432\u0438\u0436\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c, \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e Java \u0438 \u0443\u043c\u0440\u0451\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e 30 \u043b\u0435\u0442 Java \u043f\u0440\u043e\u0436\u0438\u043b\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0438 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435.<\/p>\n<h2>\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f Java: \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/h2>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0435\u0433\u043e. \u0412\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0440\u0435\u043c\u044f, \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0440\u043e\u0433\u0430\u043b\u0438. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438?<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d08\/f8d\/6e0\/d08f8d6e0d4343291439ab9888a536d9.png\" alt=\"\" title=\"\" width=\"1024\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d08\/f8d\/6e0\/d08f8d6e0d4343291439ab9888a536d9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d08\/f8d\/6e0\/d08f8d6e0d4343291439ab9888a536d9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041d\u043e \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c? \u042d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0438\u043c\u043e\u0435. \u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><strong>\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438 jar \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/strong> \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0435\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/strong> \u0423\u0436\u0435 \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0433\u0434\u0435 \u0442\u043e\u0447\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435<\/strong>. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0442\u0435\u043c \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c<\/strong>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c. \u0412\u043e\u0442 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u044f \u043d\u0430\u0441, \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439, \u043a\u0430\u0440\u0442\u0438\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/strong>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a \u043f\u043e\u043b\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438 \u0435\u0433\u043e \u0432 Object, \u0430 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c (\u0431\u044b\u043b\u043e Object, \u0430 \u0441\u0442\u0430\u043b\u043e String), \u0442\u043e \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u042d\u0442\u043e \u043c\u0435\u043d\u0435\u0435 \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e\u0434 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430 30 \u043b\u0435\u0442 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p><code>int assert = 10;\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043b\u043e\u0432\u043e assert \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u0432 \u044f\u0437\u044b\u043a\u0435 \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u044f\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<ul>\n<li>\n<p><code>void process( int id, int _);\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0442\u043e-\u0442\u043e \u0432\u0437\u044f\u043b \u0438 \u0441\u043a\u0440\u044b\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u0412 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0435\u0432\u0430\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0438\u0436\u043d\u0435\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d\u0438. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439.<\/p>\n<ul>\n<li>\n<p><code>thread.stop();\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 <code>stop()<\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438. \u0427\u0435\u0440\u0435\u0437 \u0432\u0440\u0435\u043c\u044f Java \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c.\u00a0<\/p>\n<p>\u0411\u044b\u0432\u0430\u0435\u0442 \u0438 \u0445\u0443\u0436\u0435. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>java.sql.PreparedStatement<\/code> \u0438 \u0447\u0442\u043e \u0441 \u043d\u0438\u043c \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a? \u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u043e \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u043b\u0438, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p><code>interface java.sql.PreparedStatement() {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\/\/since 1.6<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void setBinaryStream(int parameterIndex, InputStream x);<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 Java 9 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0441 Java EE (<code>javax.<\/code>) \u043d\u0430 Jakarta EE (<code>jakarta.<\/code>).<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0435\u0441\u0442\u044c \u0438 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d. \u0427\u0442\u043e \u043d\u0430\u043c \u044d\u0442\u043e \u0434\u0430\u0435\u0442? \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u041d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c? \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439?<\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0431\u0430\u0439\u043a\u0430 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u201c\u041c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u043e\u0444\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438\u201d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043a \u0440\u0435\u043b\u0438\u0437\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e:<\/p>\n<p><code>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 10.17: \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 CPU \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u0435.<\/code><\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0448\u044c, \u0442\u043e CPU \u043d\u0435 \u0442\u0440\u0430\u0442\u044f\u0442\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435. \u041d\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043c\u0438\u0440\u0435 Java? \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><code><strong>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/strong>: \u0420\u0435\u0431\u044f\u0442\u0430, \u0432\u044b \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438? \u042f \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b. \u0423 \u043c\u0435\u043d\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u043e\u044f\u043b. \u041a\u043e\u0433\u0434\u0430 CPU \u0437\u0430\u0448\u043a\u0430\u043b\u0438\u0432\u0430\u043b, \u0442\u043e CD-ROM \u0432\u044b\u0435\u0437\u0436\u0430\u043b \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u043b \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443. \u041e\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0433\u0440\u0435\u0442\u044c\u0441\u044f. \u0412\u044b \u043c\u043d\u0435 \u0432\u0441\u0451 \u0441\u043b\u043e\u043c\u0430\u043b\u0438.<\/code><\/p>\n<p><code><strong>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/strong>: 0_0. \u041d\u0438\u043a\u0442\u043e \u0436\u0435 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0440\u0435\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/code><\/p>\n<p><code><strong>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/strong>: \u0410 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430?<\/code><\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f: SemVer (Semantic Version) \u0436\u0435? \u0421\u043e\u0444\u0442 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0415\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0447\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p><strong>MAJOR<\/strong>.<strong>MINOR<\/strong>.<strong>PATCH<\/strong>,<\/p>\n<p>\u0433\u0434\u0435:<\/p>\n<ul>\n<li>\n<p>MAJOR+1 \u2014 \u043d\u0430\u0440\u0443\u0448\u0438\u043b\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>MINOR+1 \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>PATCH+1 \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u044d\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u2014 \u0442\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u044b \u0441\u043b\u043e\u043c\u0430\u043b\u0438 \u043a\u043e\u0434.<\/p>\n<h3>\u0421\u043b\u043e\u043c\u0412\u0435\u0440 3.0: \u041c\u041d\u041e\u0413\u041e.\u041c\u0410\u041b\u041e.\u0427\u0423\u0422\u041e\u0427\u041a\u0423<\/h3>\n<p>\u0412 \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<p><strong>\u041c\u041d\u041e\u0413\u041e<\/strong>.<strong>\u041c\u0410\u041b\u041e<\/strong>.<strong>\u0427\u0423\u0422\u041e\u0427\u041a\u0423<\/strong><\/p>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 CPU \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043d\u0435\u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u044d\u0442\u043e \u2014 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c: \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0433\u0440\u0435\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u0443\u0434\u0438\u0442\u044c, \u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043b\u043e\u043c\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0441\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0438\u0440\u0435 Java. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043c\u0438\u0440\u0435 Linux \u0435\u0441\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0442 Red Hat \u0438 \u0431\u044b\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0442 Oracle (Oracle Enterprise Linux). \u0411\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 Oracle \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 Oracle Enterprise Linux \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f bug-to-bug compatible. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432 Oracle Linux \u0431\u044b\u043b\u0438 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0431\u0430\u0433\u0438, \u0447\u0442\u043e \u0438 \u0432 Red Hat Linux. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u044e\u0442 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u2014 \u043c\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u043c. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u044b \u0441\u043b\u043e\u043c\u0430\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u043f\u044b\u0442, \u0438 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u041c\u044b (\u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442.<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 Java.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 TreeSet<\/h4>\n<p>\u041a\u043b\u0430\u0441\u0441 TreeSet \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0433 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><code>var conferences = new TreeSet&lt;String&gt;();<\/code><\/p>\n<p><code>names.add(\"Java Rock Stars\");<\/code><\/p>\n<p><code>names.add(null);<\/code><\/p>\n<p>\u041c\u044b \u0431\u0435\u0440\u0451\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 TreeSet \u0437\u0430\u043f\u0438\u0441\u0438. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f null? \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e <code>NullPointerException<\/code> (NPE). \u0410 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435?<\/p>\n<p><code>var conferences2 = new TreeSet&lt;String&gt;();<\/code><\/p>\n<p><code>names.add(null);<\/code><\/p>\n<p><code>names.add(\"Java Rock Stars\");<\/code><\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u043e\u0442 \u0436\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 TreeSet. \u042d\u0442\u0430 \u0431\u0430\u0433\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-5045147\" rel=\"noopener noreferrer nofollow\">JDK-5045147: Adding null key to empty TreeMap .. should throw NPE<\/a>.<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438, \u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435, \u0442.\u0435. \u043d\u0430\u0448\u043b\u0438 \u0432 Java 6, \u0430 \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Java 7. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u0431\u044b \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u2014 \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0431\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u041f\u0430\u0440\u0430\u0434\u043e\u043a\u0441\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0431\u0430\u0433\u0438.<\/p>\n<h3>\u041a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u0430\u0433\u0438 \u0438 \u0444\u0438\u0447\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438\u0441\u044c<\/h3>\n<p>\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u044f\u0442 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438? \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 \u043e\u043d\u0438 \u0432\u0438\u0434\u044f\u0442, \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e API, \u0430 Public API. \u0422\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u0438 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 Public API.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434. \u0412 Java \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c default-\u043c\u0435\u0442\u043e\u0434 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p><code>interface java.sql.PreparedStatement{<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0default long executeLargeUpdate() throws SQLException {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw new UnsupportedOPerationException(\"executeLargeUpdate not implemented\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u043e \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f. \u0423\u0436\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u044f\u0437\u044b\u043a. \u0410 \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u0441\u0430\u043c\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e?<\/p>\n<p>\u0412 Java \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b public, private, package-private. \u0412\u0441\u0451 \u043b\u0438 \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f API? \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, public-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 Public API. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e Published API. \u042d\u0442\u043e\u0442 \u0442\u0435\u0440\u043c\u0438\u043d \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0451\u043d \u041c\u0430\u0440\u0442\u0438\u043d\u043e\u043c \u0424\u0430\u0443\u043b\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0441\u0430\u043c\u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. API \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u044f\u0432\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b. \u0410 \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c?\u00a0<\/p>\n<p>\u0412 Java \u2014 \u043d\u0438\u043a\u0430\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/apiguardian-team\/apiguardian\" rel=\"noopener noreferrer nofollow\">API Guardian<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0451\u0440\u0435\u043c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0418 \u0432\u0435\u0448\u0430\u0435\u043c \u043d\u0430 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043c\u0435\u0442\u043e\u0434, \u043f\u043e\u043b\u044f \u0438 \u0442.\u0434. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439:<\/p>\n<p><code>@API(status = STABLE)<\/code><\/p>\n<p><code>@API(status = MAINTAINED)<\/code><\/p>\n<p><code>@API(status = EXPERIMENTAL)<\/code><\/p>\n<p><code>@API(status = INTERNAL)<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0438\u0437\u0430\u0439\u043d\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442\u0435 \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u0432\u0432\u0435\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e API \u0438 \u043e\u043d \u0441\u0442\u0430\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u201c\u043f\u043e\u0432\u0435\u0440\u0445\u201d \u044d\u0442\u0438\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Private API \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0438 \u0442.\u043f.<\/p>\n<p>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043d\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u0432 Java. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043b\u0438 \u0435\u0449\u0451 \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0445\u0435\u043b\u043f\u0435\u0440\u044b, \u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 JUnit.<\/p>\n<p>\u0412 JUnit \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043a\u043e\u0434 JUnit (JUnit 5), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0438\u0445 API: maintained, experimental \u0438 \u043f\u0440.\u00a0<\/p>\n<p><code>package <\/code><a href=\"http:\/\/org.junit.platform.commons.support\" rel=\"noopener noreferrer nofollow\"><code>org.junit.platform.commons.support<\/code><\/a><code>;<\/code><\/p>\n<p><code>@API(status = MAINTAINED, since = \"1.0\")<\/code><\/p>\n<p><code>public final class AnnotationSupport<\/code><\/p>\n<h3>\u041a\u0430\u043a \u0432 \u0447\u0438\u0441\u0442\u043e\u0439 Java \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043a\u043e\u0434<\/h3>\n<p>\u0411\u044b\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 java.lang.Object, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b \u043c\u0435\u0442\u043e\u0434 <code>finalize()<\/code>. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u043c\u0435\u0442\u0438\u043b\u0438 \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 (deprecated), \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><code>public class Object {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Deprecated(since=\"9\", forRemoval=true)<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void finalize(){}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0410 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u041c\u0435\u0442\u043e\u0434 \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u043d\u043e \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c? \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0442\u0438\u043f\u0430 <code>@Hidden<\/code>:<\/p>\n<p><code>public class Object {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Hidden<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Deprecated(since=\"9\", forRemoval=true)<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void finalize(){}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0432 \u043d\u043e\u0432\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 Java \u043f\u043e\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>@JvmSynthetic<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a <code>@JvmSynthetic<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0438 \u0433\u0434\u0435 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0439\u0434\u0451\u043c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 Kotlin.<\/p>\n<h3>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432 Kotlin<\/h3>\n<p>\u0412 Kotlin \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>max()<\/code>. \u0412\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0442\u0438\u043f\u0435 \u043e\u0442\u0440\u0430\u0441\u0442\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Double \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0440\u0430\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0439 \u043c\u0435\u0442\u043e\u0434 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>Double<\/code>. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a? \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<p><code>public fun Sequence&lt;Double&gt;.max(): Double?<\/code><\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <code>Double<\/code>, \u043d\u0430 \u043d\u0435\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043b\u0438\u0431\u043e <code>Double<\/code>, \u043b\u0438\u0431\u043e <code>null<\/code>, \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043c\u0435\u0442\u043e\u0434 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c.\u00a0 \u041f\u043e\u0447\u0435\u043c\u0443? \u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0437\u0430\u043a\u043e\u043d\u043d\u043e \u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>null <\/code>\u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438?<\/p>\n<p>\u041a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c: \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0438\u043d\u0443\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 (Exception), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, <code>null <\/code>\u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u2014 \u044d\u0442\u043e \u0435\u0440\u0443\u043d\u0434\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e. \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442.\u00a0<\/p>\n<p>\u0418 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438? \u041e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043b\u0443\u0447\u0448\u0435 \u2014 <code>maxOrNull()<\/code>. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <code>max()<\/code> \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439: \u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0438\u0431\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0443. \u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438?<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u043c\u0435\u0442\u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043b\u0443\u0447\u0448\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 <code>max()<\/code>.<\/p>\n<p><code>@Deprecated(<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\"Use maxOrNull instead.\",<\/code><\/p>\n<p><code>)<\/code><\/p>\n<p><code>public fun Sequence&lt;Double&gt;.max(): Double?<\/code><\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432 Kotlin \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u043e hidden \u0434\u0435\u043f\u0440\u0435\u043a\u0430\u0446\u0438\u044f (<code>DeprecationLevel.HIDDEN<\/code>).\u00a0<\/p>\n<p><code>@Deprecated(\\<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\"Use maxOrNull instead.\",<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0level = DeprecationLevel.HIDDEN,<\/code><\/p>\n<p><code>)<\/code><\/p>\n<p><code>public fun Sequence&lt;Double&gt;.max(): Double?<\/code><\/p>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445, \u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0435 \u043c\u0435\u0442\u043e\u0434 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 max(), \u0442\u043e \u043a\u043e\u0434 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 IDE \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u043d\u0430 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c.<\/p>\n<p><code>@Deprecated(<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\"Use maxOrNull instead.\",<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0level = DeprecationLevel.HIDDEN,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0ReplaceWith(\"this.maxOrNull()\"),<\/code><\/p>\n<p><code>)<\/code><\/p>\n<p><code>public fun Sequence&lt;Double&gt;.max(): Double?<\/code><\/p>\n<p>\u0418\u043d\u0430\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e: \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u043d\u0430\u0434\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 <code>maxOrNull()<\/code>. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 \u0432 IDE \u0432\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u0430 \u0447\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Java \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 Java<\/h3>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, Java \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0434\u0430\u0451\u0442 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439. \u041d\u043e \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 <a href=\"https:\/\/errorprone.info\/index\" rel=\"noopener noreferrer nofollow\">Error Prone<\/a>. \u042d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430. \u0412 Error Prone \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/errorprone.info\/docs\/inlineme\" rel=\"noopener noreferrer nofollow\">@InlineMe<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p><code>@Deprecated<\/code><\/p>\n<p><code>@InlineMe(<\/code><\/p>\n<p><code>\u00a0replacement = \"this.setDeadline(Duration.ofMillis(deadlineMs))\",<\/code><\/p>\n<p><code>\u00a0imports = {\"java.time.Duration\"})<\/code><\/p>\n<p><code>public void setDeadline(long deadlineMs){<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0setDeadline(Duration.ofMillis(deadlineMs));<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0443\u044e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u043d\u0430\u0432\u0435\u0441\u0438\u0442\u0435 \u043d\u0430 \u0432\u0430\u0448 \u043c\u0435\u0442\u043e\u0434, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 Error Prone \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430. \u0412\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>setDeadline()<\/code> \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043c\u0435\u0441\u0442\u043e <code>long<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <code>Duration<\/code>.\u00a0<\/p>\n<p>\u0412\u044b \u0443\u0436\u0435 \u043d\u0435 \u043e\u0448\u0438\u0431\u0435\u0442\u0435\u0441\u044c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0438\u043b\u0438 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u043b\u0438 \u044d\u0442\u043e\u0442 <code>long<\/code>. \u041b\u0443\u0447\u0448\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441 <code>Duration<\/code>, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b. <code>@InlineMe<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0443\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043c\u0435\u0442\u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u0442\u043e \u043e\u043d \u043d\u0435 \u043f\u043e\u0439\u043c\u0451\u0442, \u0447\u0442\u043e \u0432\u044b \u0438\u043c\u0435\u043b\u0438 \u0432 \u0432\u0438\u0434\u0443. \u0415\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0438\u0434\u0442\u0438 \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u043e\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430 \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0442.\u0434., \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u2014 \u043d\u0430\u0448\u0435 \u0432\u0441\u0451.<\/p>\n<p>\u0418 \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 <a href=\"https:\/\/github.com\/dmlloyd\/bridger\" rel=\"noopener noreferrer nofollow\">bridger<\/a>. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0435 synthetic-\u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u043e\u0442 Java-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0418\u043d\u0430\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432 \u043a\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0435\u043b\u044c\u0437\u044f. \u042d\u0442\u043e <code>@Deprecated<\/code> \u0438 <code>@Hidden<\/code> \u0438\u0437 Kotlin, \u043d\u043e \u0434\u043b\u044f Java.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0434\u0435 \u0441\u0432\u044f\u0437\u043a\u0430 <code>@Deprecated<\/code> \u0438 <code>@Hidden<\/code> \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0432 Java.<\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>toLowerCase()<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e, \u0430 \u0441 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>Locale.getDefault()<\/code>:<\/p>\n<p><code>public String toLowerCase(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.getDefault());<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>Locale.getDefault()<\/code> \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>Locale.ROOT<\/code>, \u0447\u0442\u043e\u0431\u044b \u0443 \u043d\u0430\u0441 \u043c\u0435\u0442\u043e\u0434 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0432\u0441\u0435\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u0438 \u0442.\u0434.<\/p>\n<p><code>public String toLowerCase(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\/\/ return input.toLowerCase(Locale.getDefault());<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.ROOT);<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b <a href=\"https:\/\/github.com\/assertj\/assertj\/issues\/2666\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c<\/a> \u0441 <a href=\"https:\/\/github.com\/spockframework\/spock\/issues\/1414\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439<\/a> , \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 <a href=\"https:\/\/github.com\/gradle\/gradle\/issues\/19585\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435<\/a> <code>enum<\/code> \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (<code>info<\/code>, <code>debug<\/code> \u0438 \u0442.\u043f.). \u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>toUpperCase()<\/code> \u0438 \u0438\u0449\u0443\u0442 \u0432 <code>Enum.valueOf()<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432 \u0442\u0443\u0440\u0435\u0446\u043a\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u0438 <code>tr_TR<\/code> \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435 <code>toUpperCase()<\/code>, \u0442\u043e \u0431\u0443\u043a\u0432\u0430 i \u0432 <code>info<\/code> \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0442\u0430\u043d\u0435\u0442 \u0442\u0443\u0440\u0435\u0446\u043a\u043e\u0439 \u0130, \u0442.\u0435. \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 i \u0441 \u0442\u043e\u0447\u043a\u043e\u0439. \u0412 <code>enum<\/code> \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>enum<\/code> \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e <code>Locale.ROOT<\/code>.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 Java \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c 2 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0430\u0447\u0435. \u0421\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043c\u044b \u0441\u043a\u0440\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u043c. \u0412 \u044d\u0442\u043e\u043c \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.<\/p>\n<p><code>public String toLowerCase(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.getDefault());<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p><code>public String toLowerCaseRootLocale(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.ROOT);<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0422\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/dmlloyd\/bridger\" rel=\"noopener noreferrer nofollow\">bridger<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435. \u041e\u043d\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043d\u043e \u0441 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u0430 \u043d\u043e\u0432\u044b\u0439 \u0442\u0430\u043a, \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0430\u0434\u043e. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f:<\/p>\n<p><code>public String toLowerCase$$bridge(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.getDefault());<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p><code>public String toLowerCaseRootLocale(String input) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0return input.toLowerCase(Locale.ROOT);<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.\u00a0<\/p>\n<p>\u0411\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c, \u0430 \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0439 \u201c\u0434\u0435\u043b\u0438\u043a\u0430\u0442\u043d\u044b\u0439\u201d, \u044d\u0434\u0430\u043a\u0438\u0439 \u043a\u0443\u043d\u0433-\u0444\u0443 API: \u043d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0434\u043e\u043c\u0430.<\/p>\n<h3>\u041a\u0443\u043d\u0433-\u0444\u0443 API<\/h3>\n<p>\u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 Guava \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0445\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0438, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0430\u0431\u043e\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043b\u0430\u0441\u0441 <code>HashingInputStream<\/code>:<\/p>\n<p><code>package <\/code><a href=\"http:\/\/com.google\" rel=\"noopener noreferrer nofollow\"><code>com.google<\/code><\/a><code>.common.hash;<\/code><\/p>\n<p><code>public final class HashingInputStream extends FilterInputStream {<\/code><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u0438. \u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c \u0435\u0433\u043e \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c. \u0412 Guava \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@Beta<\/code>. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0438\u043a\u0442\u043e, \u043a\u0440\u043e\u043c\u0435 Guava \u043f\u0440\u043e \u043d\u0435\u0451 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u043e\u0440 (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 <code>@Beta<\/code> \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u2014 <a href=\"https:\/\/github.com\/google\/guava-beta-checker\" rel=\"noopener noreferrer nofollow\">Guava Beta Checker<\/a>.\u00a0<\/p>\n<p>src\/main\/java\/foo\/MyClass.java:14: error: [BetaApi] @Beta APIs should not be used in library code as they are subject to change.<\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0Files.copy(a, b);<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0^<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0(see <\/code><a href=\"https:\/\/github.com\/google\/guava\/wiki\/PhilosophyExplained#beta-apis\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/github.com\/google\/guava\/wiki\/PhilosophyExplained#beta-apis<\/code><\/a><code>)<\/code><\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0443 \u0441\u0435\u0431\u044f, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0433\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>@Beta<\/code> \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f.\u00a0<\/p>\n<p>\u042d\u0442\u043e \u043b\u0443\u0447\u0448\u0435\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Java-\u043c\u0438\u0440 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.<\/p>\n<h3>\u0411\u0435\u0442\u0430-\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432 Kotlin<\/h3>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0432 hex.<\/p>\n<p><code>public fun ByteArray.toHexString(<\/code><\/p>\n<p><code>\u00a0\u00a0format: HexFormat = HexFormat.Default): String = ...<\/code><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 Kotlin, \u0430\u0432\u0442\u043e\u0440\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@ExperimentalStdlibApi<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p><code>@ExperimentalStdlibApi<\/code><\/p>\n<p><code>public fun ByteArray.toHexString(<\/code><\/p>\n<p><code>\u00a0\u00a0format: HexFormat = HexFormat.Default): String = ...<\/code><\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0435\u043c \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438? \u041e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u0432 Kotlin \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u043e\u0442 \u044d\u0442\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 API \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u0432\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435\u00a0 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 API \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p><code>@ExperimentalStdlibApi<\/code><\/p>\n<p><code>public fun ByteArray.toHexString(<\/code><\/p>\n<p><code>\u00a0\u00a0format: HexFormat = HexFormat.Default): String = ...<\/code><\/p>\n<p><code>@OptIn(ExperimentalStdlibApi::class)<\/code><\/p>\n<p><code>fun usage() {<\/code><\/p>\n<p><code>\u00a0\u00a0println(byteArrayOf(1,2,3).toHexString());<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u0430\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u0435\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043b\u0438 \u043e\u043d\u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 API \u0438\u043b\u0438 \u0436\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435.\u00a0<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 kotlinx.coroutines API, \u0433\u0434\u0435 \u0442\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 API. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u0438\u0442\u0440\u043e\u0443\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b (coroutine). \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u044d\u0442\u0443 \u0441\u0430\u043c\u0443\u044e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@OptIn<\/code>, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u0422\u0430\u043a, \u0430\u0432\u0442\u043e\u0440\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0437\u0430\u0449\u0438\u0449\u0430\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0445 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h3>\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b<\/h3>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0412 Java \u0431\u044b\u043b \u043c\u0435\u0442\u043e\u0434 <code>position()<\/code> \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>java.nio.Buffer<\/code>. \u0422\u0430\u043a \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435.<\/p>\n<p><code>package java.nio;<\/code><\/p>\n<p><code>public abstract class Buffer {<\/code><\/p>\n<p><code>\u00a0\u00a0public Buffer position(int newPosition) {...}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0438\u043d\u0443\u0441. \u0423 \u043a\u043b\u0430\u0441\u0441\u0430 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>ByteBuffer<\/code>.<\/p>\n<p><code>public class ByteBuffer extends Buffer {<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439 \u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0430\u0432\u0442\u043e\u0440\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438: \u041f\u043e\u0447\u0435\u043c\u0443 <code>position()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>Buffer<\/code>? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 <code>position()<\/code> \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>ByteBuffer<\/code>. \u042d\u0442\u043e \u0434\u0430\u0441\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0438 \u0442\u0438\u043f <code>ByteBuffer<\/code> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0430\u0445. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0436\u0435, \u043f\u0440\u0430\u0432\u0434\u0430? \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442.<\/p>\n<p><code>public class ByteBuffer extends Buffer {<\/code><\/p>\n<p><code>\u00a0\u00a0public ByteBuffer position(int newPosition) {...}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0430\u0448 <code>ByteBuffer<\/code> \u0438 \u0432\u044b\u0437\u043e\u0432\u0435\u043c <code>position()<\/code> \u043d\u0430 \u043d\u0451\u043c:<\/p>\n<p><code>var buffer = ByteBuffer.allocate(8);<\/code><\/p>\n<p><code>buf.position(0);<\/code><\/p>\n<p>\u0412\u0441\u0451 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f, \u043d\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<p><code>java.lang.NoSuchMethodError:<\/code><\/p>\n<p><code>java.nio.ByteBuffer.position(I)Ljava\/nio\/ByteBuffer<\/code><\/p>\n<p>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u0434 \u0432 Java 8. \u041f\u043e\u0447\u0435\u043c\u0443? \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0430\u043c \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u044b\u0439, \u0442.\u0435. \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439, \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 9 \u0438 \u0432\u044b\u0448\u0435. \u0412 Java 8 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0442\u0430\u0440\u0430\u044f \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 <code>position()<\/code>. \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <code>position()<\/code> \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430, \u043d\u043e \u0438 \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c, \u0442\u043e \u0432 \u043a\u043e\u0434 \u0432\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0422\u0430\u043a, \u0435\u0441\u043b\u0438 \u043c\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u0434 \u043d\u0430 Java 9, \u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c target \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 Java 8 \u043c\u0430\u043b\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 Java 8.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/www.morling.dev\/blog\/bytebuffer-and-the-dreaded-nosuchmethoderror\/\" rel=\"noopener noreferrer nofollow\">ByteBuffer and the Dreaded NoSuchMethodError<\/a> \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u00a0 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0448\u044c \u044d\u0442\u043e \u043d\u0430 Java 8, \u0442\u043e \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0448\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b:<\/p>\n<ul>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 class-\u0444\u0430\u0439\u043b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 javac.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c<code> -source<\/code> \u0438 <code>-target<\/code>. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430. <code>NoSuchMethodError<\/code> \u0431\u044b\u043b\u0430 \u0432 PostgreSQL JDBC Driver, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0430\u043c \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d <code>-target<\/code>.\u00a0<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <code>--release<\/code>: <code>javac --release 11<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0440\u0430\u0437 \u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Java. \u0421\u0442\u0430\u0440\u044b\u0435 \u043e\u043f\u0446\u0438\u0438\u00a0<code>-source<\/code> \u0438 <code>-target<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.\u00a0<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 Java \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u00a0 Java 21: \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b Public API \u043e\u0442 Java 8 \u0438 \u0434\u043e Java 21. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Java 21 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 Java 8 \u043c\u0435\u0442\u043e\u0434 <code>position()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>ByteBuffer<\/code>, \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>--release 8<\/code> \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 Java 8.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Kotlin. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 Kotlin \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Java.<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e: <code>kotlinc -Xjdk-release=11<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043c\u0435\u0436\u0434\u0443 Java \u0438 Kotlin \u0435\u0441\u0442\u044c Gradle-\u043f\u043b\u0430\u0433\u0438\u043d <a href=\"https:\/\/github.com\/GradleUp\/compat-patrouille\" rel=\"noopener noreferrer nofollow\">GradleUp\/compat-patrouille<\/a>.<\/p>\n<h3>\u0414\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0438 \u0441\u0442\u0438\u0440\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432<\/h3>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u0442\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c?\u00a0<\/p>\n<p><code>public static Object max(Collection coll) {<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041a\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 Java 1.4? \u0410 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443, \u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d\u0430 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p><code>public static &lt;T extends Comparable&lt;? super T&gt;&gt;<\/code><\/p>\n<p><code>\u00a0T max(Collection &lt;? extends T&gt; coll) {<\/code><\/p>\n<p>\u0415\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u0430 \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441: \u0442\u0430\u043a \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0422\u043e\u0447\u043d\u0435\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0438 \u0437\u0430\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u043d\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0432\u044b \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c. \u041f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p><code>public static &lt;T extends Object &amp; Comparable&lt;? super T&gt;&gt;<\/code><\/p>\n<p><code>\u00a0T max(Collection &lt;? extends T&gt; coll) {<\/code><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 <code>T extends Comparable&lt;...&gt;<\/code> \u043d\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.\u00a0<\/p>\n<p><code>public static &lt;T extends Comparable&lt;? super T&gt;&gt;<\/code><\/p>\n<p><code>\u00a0T max(Collection &lt;? extends T&gt; coll) {<\/code><\/p>\n<p><code>\/\/ Comparable max(Collection)<\/code><\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0442\u0438\u043f\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>Comparable<\/code>. \u0410 \u0432 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u0434\u0430 (Java 1.4) \u0443 \u043d\u0430\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f <code>Object<\/code>. \u041a\u0430\u043a \u0440\u0430\u0437 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <code>ByteBuffer<\/code>, \u0433\u0434\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u0435\u043d, \u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0431\u0440\u0430\u0442\u044c \u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b <code>T<\/code> \u0432 <code>T max(Collection &lt;? extends T&gt; coll)<\/code> \u0441\u0442\u0451\u0440\u043b\u0430\u0441\u044c \u0432 <code>Object<\/code>.<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0443\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 <code>Object<\/code>, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se21\/html\/\" rel=\"noopener noreferrer nofollow\">Java language specification<\/a>, \u0442\u043e <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se21\/html\/jls-4.html#jls-4.6\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e<\/a> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u0421\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0438\u043f, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0432\u0430 <code>extends<\/code>. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e <code>T extends Comparable\u2026<\/code>. \u0417\u043d\u0430\u0447\u0438\u0442, <code>T<\/code> \u0441\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 <code>Comparable<\/code>. \u041d\u0430\u043c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0438\u0440\u0430\u043b\u043e\u0441\u044c \u0432 <code>Object<\/code>. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0445\u0438\u0442\u0440\u043e\u0443\u043c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <code>T extends Object &amp; Comparable<\/code>:<\/p>\n<p><code>public static &lt;T extends Object &amp; Comparable&lt;? super T&gt;&gt;<\/code><\/p>\n<p><code>\u00a0T max(Collection &lt;? extends T&gt; coll) {<\/code><\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0433\u0434\u0435, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043d\u0430\u0448\u0443 Java \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<h3>\u041a\u0430\u043a \u0437\u0430 \u044d\u0442\u0438\u043c \u0443\u0441\u043b\u0435\u0434\u0438\u0442\u044c?<\/h3>\n<p>\u0414\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440:<\/p>\n<ul>\n<li>\n<p>Java: <a href=\"https:\/\/revapi.org\/revapi-site\/main\/index.html\" rel=\"noopener noreferrer nofollow\">Revapi<\/a>, <a href=\"https:\/\/github.com\/openjdk\/sigtest\" rel=\"noopener noreferrer nofollow\">sigtest<\/a>.<\/p>\n<\/li>\n<li>\n<p>Kotlin: <a href=\"https:\/\/github.com\/Kotlin\/binary-compatibility-validator\" rel=\"noopener noreferrer nofollow\">Binary compatibility validator<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e API \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043b\u0438\u0431\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c (\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u043e\u0441\u044c public API).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u0442\u043e \u043e\u043d \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c. \u0415\u0433\u043e \u0445\u043e\u0442\u044c \u0438 \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438, \u043e\u043d \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0442\u0430\u0440\u044b\u0435 jar \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440. \u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/p>\n<p>\u0415\u0441\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043d\u043e\u043c\u0435\u0440\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><code>CA FE BA BE 00 00 00 34<\/code><\/p>\n<p>\u0422\u0430\u043a Java \u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u0438\u0434\u044f\u0442 \u0441 \u043a\u0430\u043a\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0411\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u0422\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0432 \u043d\u043e\u0432\u043e\u043c class-\u0444\u0430\u0439\u043b\u0435, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0435\u0433\u043e \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f.<\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0431\u0430\u0439\u0442 \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 ObjectWeb ASM. \u0422\u0430\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0441 \u0447\u0435\u043c \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p><code>public class ClassPrinter extends ClassVisitor {<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 ASM \u043f\u0430\u0440\u0441\u0438\u0442 \u043a\u043b\u0430\u0441\u0441, \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 <code>ClassVisitor<\/code>:\u00a0<\/p>\n<p><code>public class ClassPrinter extends ClassVisitor {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0public void visit(int version, int access, String name<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String superName, String[] interfaces) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u043a\u043b\u0430\u0441\u0441, \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u0443\u043f\u0435\u0440\u043a\u043b\u0430\u0441\u0441\u043e\u043c:<\/p>\n<p><code>public class ClassPrinter extends ClassVisitor {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0public void visit(int version, int access, String name,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String superName, String[] interfaces) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(name + \" extends \" + superName + \" {\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u0448\u043b\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Java, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438. \u0418 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u043f\u0435\u0440\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0430 \u0435\u0449\u0451 \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b.<\/p>\n<p><code>public class ClassPrinter extends ClassVisitor {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0public void visit(int version, int access, String name,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String signature,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String superName, String[] interfaces) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(name + \" extends \" + superName + \" {\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 ObjectWeb ASM?<\/p>\n<p>\u041e\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432 \u0432\u0430\u0448 <code>ClassVisitor<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044f\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u0430\u0436\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0432\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p><code>public class ClassPrinter extends ClassVisitor {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0public ClassPrinter(){<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0super(ASM6);<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0public void visit(int version, int access, String name,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String signature,<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String superName, String[] interfaces) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(name + \" extends \" + superName + \" {\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 \u0448\u0435\u0441\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 ASM, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 class-\u0444\u0430\u0439\u043b \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u043d\u043e\u0432\u044b\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c, \u0443\u043f\u0430\u0434\u0435\u0442\u0435 \u0441 NPE. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0434\u0435\u0442 \u043a\u043b\u0430\u0441\u0441, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u043d\u0435 \u0431\u044b\u043b\u043e, \u0442.\u0435. \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b.<\/p>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0430\u0443\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044f, \u0433\u0434\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0445 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438. \u041d\u043e \u0432 Java \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Class File API. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043a\u0430\u043a-\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u0432 \u0432\u0430\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u043e\u0441\u0438\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 API \u043e\u043d \u0441\u0430\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0441\u044f, \u0442.\u0435. \u043a\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u043d \u0433\u043e\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0438\u0437\u0430\u0439\u043d\u0438\u043c \u0442\u0430\u043a\u0438\u0435 API, \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442.<\/p>\n<h3>\u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u0434\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439<\/h3>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u21161<\/strong><\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0431\u044b\u043b\u0430 \u0443 \u043d\u0430\u0441 \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 2.13.0, \u043f\u043e\u0442\u043e\u043c 2.14.0. \u041f\u0440\u043e\u0448\u043b\u043e \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0438 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c CVE, \u043f\u0440\u0438\u0447\u0451\u043c 10 \u0443\u0440\u043e\u0432\u043d\u044f. \u0415\u0451 \u043b\u0435\u0433\u043a\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c. \u041c\u044b \u0435\u0451 \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2.17.0. \u041d\u043e \u0437\u0430\u043a\u043e\u043d\u043d\u043e \u043b\u0438 \u044d\u0442\u043e?<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 log4j2. \u041e\u0442\u0441\u044e\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441: \u0430 \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f 2.13.0? \u0418\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f. \u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0438, \u0447\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442.\u043f.?<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0442\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b \u0447\u0435\u0433\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0438 (log4j2 <strong>2.13.0<\/strong> \u2192 log4j2 <strong>2.13.1<\/strong>). \u042f \u2014 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0442\u0430\u043a\u0430\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c CVE, \u0438 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0451, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u044f\u0445.<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u21162<\/strong><\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0430\u0436\u043e\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.<\/p>\n<p><code>try (var ps = con.prepareStatement(\"select...\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0var rs = ps.executeQuery();<\/code><\/p>\n<p><code>) {<\/code><\/p>\n<p><code>\u00a0\u00a0while (<\/code><a href=\"http:\/\/rs.next\" rel=\"noopener noreferrer nofollow\"><code>rs.next<\/code><\/a><code>()) {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0rs.refreshRow();<\/code><\/p>\n<p><code>\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f SQL-\u0437\u0430\u043f\u0440\u043e\u0441, \u0437\u0430\u0442\u0435\u043c \u043e\u043d \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>refreshRow()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 20 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0435\u0433\u043e \u043d\u0430 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0441 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 c \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438, \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u043b\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0435.<\/p>\n<p><code>create table users(<\/code><\/p>\n<p><code>\u00a0id bigint primary key,<\/code><\/p>\n<p><code>\u00a0\"l from users;...; select *\" bigint<\/code><\/p>\n<p><code>);<\/code><\/p>\n<p>\u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0430\u0441 \u0441\u043f\u0430\u0441\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 Postgres \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 (64 \u0441\u0438\u043c\u0432\u043e\u043b\u0430). \u041d\u043e \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f \u0441 CVE \u044d\u0442\u043e \u043d\u0438 \u043d\u0430 \u0447\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0418, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0430 \u0437\u0430\u0447\u0435\u043c \u0437\u0430\u0449\u0438\u0449\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e? \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0410\u043c\u0430\u0437\u043e\u043d, \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0430 \u0438\u043b\u0438 \u0435\u0449\u0435 \u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c, \u043a\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0423 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043d\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433. \u0412\u043e\u0442 \u0438 \u043d\u0430\u0437\u043e\u0432\u0451\u0442 \u043e\u043d \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043a\u043e\u043b\u043e\u043d\u043a\u0443. \u0410 \u0447\u0442\u043e, \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0436\u0435.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0439 <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2022-31197\" rel=\"noopener noreferrer nofollow\">CVE-2022-31197<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u2014 7.1. \u0411\u044b\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u044f PgJDBC 42.3.6, \u0430 \u0441\u0442\u0430\u043b\u0430 \u2014 42.4.1. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0442\u0430\u043c \u043d\u043e\u043b\u044c, \u0442.\u0435. \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u0437 42.3.6 \u0432 42.4.1 \u043f\u0440\u0438\u0434\u0451\u0442 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0448\u043b\u0438 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043b\u044e\u0434\u0438 \u0438\u0437 \u0433\u0440\u0443\u043f\u043f\u044b Spring Boot \u0438 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 Spring Boot \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043c\u0438\u043d\u043e\u0440\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 PgJDBC \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0441 42.3.6 \u043d\u0430 42.4.1.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0430\u0447\u043a\u0443 \u043f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0439 PgJDBC:<\/p>\n<ul>\n<li>\n<p>PgJDBC 42.2.26 \u2192 42.2.27<\/p>\n<\/li>\n<li>\n<p>PgJDBC 42.3.6 \u2192 42.3.7<\/p>\n<\/li>\n<li>\n<p>PgJDBC 42.4.0 \u2192 42.4.1<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u21163<\/strong><\/p>\n<p>\u0414\u043b\u044f Log4j 1.2 \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2019-17571\" rel=\"noopener noreferrer nofollow\">CVE-2019-17571<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2020-9488\" rel=\"noopener noreferrer nofollow\">CVE-2020-9488<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2021-4104\" rel=\"noopener noreferrer nofollow\">CVE-2021-4104<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2022-23302\" rel=\"noopener noreferrer nofollow\">CVE-2022-23302<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2022-23305\" rel=\"noopener noreferrer nofollow\">CVE-2022-23305<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2022-23307\" rel=\"noopener noreferrer nofollow\">CVE-2022-23307<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Log4j \u2014 \u0432\u0435\u0440\u0441\u0438\u0438 1.x \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0427\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0430 Log4j 2.x \u2014 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<\/li>\n<li>\n<p>CVE \u0432 1.\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043b\u0435\u0433\u043a\u043e: <a href=\"https:\/\/github.com\/qos-ch\/reload4j\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/qos-ch\/reload4j<\/a><\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 Log4j \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c CVE.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f? \u0421\u0442\u0440\u0430\u0434\u0430\u0442\u044c)<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u21164<\/strong><\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u044b\u043a\u0430\u0442\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 0.\u0445, \u043e\u0431\u043a\u0430\u0442\u0430\u0442\u044c \u0438\u0445 \u0438 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c 1.\u0445?\u00a0<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 0.1.0. \u0417\u0430\u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 0.2.0, \u0434\u0430\u043b\u0435\u0435 0.3.0 \u0438 \u0442.\u0434. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u043d\u0435 \u0434\u043e\u0439\u0434\u0451\u0442 \u0434\u043e 1.\u0445.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0443\u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0442, \u043a\u0430\u043a ZeroVer: <strong>0<\/strong>.<strong>\u0447\u0442\u043e<\/strong>.<strong>\u0443\u0433\u043e\u0434\u043d\u043e<\/strong>. \u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f, \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043b\u043e\u043c\u0430\u0442\u044c. \u041e\u043d <a href=\"https:\/\/0ver.org\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d<\/a>. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438\u0441\u044c \u0441 0: Apache Kafka, Terraform \u0438 \u0434\u0440.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 0.\u0445 \u043a\u0430\u043a \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0434\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0435. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432, \u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c <a href=\"https:\/\/www.eclemma.org\/jacoco\/\" rel=\"noopener noreferrer nofollow\">JaCoCo<\/a> \u0434\u043b\u044f code coverage, \u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 0.8.13. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b Spring Boot 0.13?<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <a href=\"https:\/\/0ver.org\/about.html\" rel=\"noopener noreferrer nofollow\">About<\/a>, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0432\u043e\u0430\u043f\u0440\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0448\u0443\u0442\u043a\u0430 2018 \u0433\u043e\u0434\u0430. \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u0438\u0448\u0443\u0442: \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0440\u043e\u0441, \u0442\u043e \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0427\u0442\u043e \u044f \u0432\u0430\u043c \u0442\u043e\u0436\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e.<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 Terraform \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 0:<\/p>\n<ul>\n<li>\n<p>2014 \u0433.: v0.1,<\/p>\n<\/li>\n<li>\n<p>2017 \u0433.: v0.10,<\/p>\n<\/li>\n<li>\n<p>2020 \u0433.: v0.13,<\/p>\n<\/li>\n<li>\n<p>2020 \u0433.: v0.14,<\/p>\n<\/li>\n<li>\n<p>2021 \u0433.: v0.15.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 2020 \u0433\u043e\u0434\u0443 \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u042f \u0432\u0438\u0434\u0435\u043b \u0431\u0435\u0441\u0435\u0434\u0443 maintainer\u043e\u0432 Terraform \u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 maintainer\u043e\u0432 \u043e\u0431\u043b\u0430\u043a\u0430 Azure, \u0433\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u0432 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437\u0435 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 0.\u0445 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0441\u044f. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e. \u0412 2021 \u0433\u043e\u0434\u0443 Terraform \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044e v1.0.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c. \u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0434\u0443\u043c\u0430\u043b\u0438 \u043e\u0431 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043a\u043e\u0434, \u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u0435\u0433\u043e. \u0415\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043a\u043e\u0433\u0434\u0430 \u0432\u0440\u043e\u0434\u0435 \u0434\u0443\u043c\u0430\u043b\u0438, \u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0431\u0438\u0434\u043d\u044b\u0445 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h3>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <code>java.util.regex<\/code>. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 Java \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<p><code>java.util.regex.Pattern.compile(\"Java\")<\/code><\/p>\n<p><code>\u00a0\u00a0.matcher(\"Java, Python, JavaScript\")<\/code><\/p>\n<p><code>\u00a0\u00a0.results()<\/code><\/p>\n<p><code>\u00a0\u00a0.map(MatchResult::group)<\/code><\/p>\n<p><code>\u00a0\u00a0.toList()<\/code><\/p>\n<p>\u0412\u044b\u0432\u043e\u0434: <code>[Java, Java]<\/code>. \u0410 \u0447\u0442\u043e, \u043d\u0430\u0448\u043b\u0438 Java, JavaScript \u043d\u0435 \u043d\u0430\u0448\u043b\u0438)<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c:<\/p>\n<p><code>java.util.regex.Pattern.compile(\"\\\\bJava\\\\b\")<\/code><\/p>\n<p><code>\u00a0\u00a0.matcher(\"Java, Python, JavaScript\")<\/code><\/p>\n<p><code>\u00a0\u00a0.results()<\/code><\/p>\n<p><code>\u00a0\u00a0.map(MatchResult::group)<\/code><\/p>\n<p><code>\u00a0\u00a0.toList()<\/code><\/p>\n<p><code>\\\\b<\/code> \u2014 \u044d\u0442\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u043e\u0432\u0430. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0412\u044b\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e <code>[Java]<\/code>.<\/p>\n<p>\u0415\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441. \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0449\u0435\u043c:<\/p>\n<p><code>java.util.regex.Pattern.compile(\"\\\\bJava\\\\b\")<\/code><\/p>\n<p><code>\u00a0\u00a0.matcher(\"Java, Java\u0421\u043a\u0440\u0438\u043f\u0442\")<\/code><\/p>\n<p><code>\u00a0\u00a0.results()<\/code><\/p>\n<p><code>\u00a0\u00a0.map(MatchResult::group)<\/code><\/p>\n<p><code>\u00a0\u00a0.toList()<\/code><\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u2014 \u043d\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Java 17 \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c: <code>[Java]<\/code>, \u0430 \u0432 Java 21 \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u043c: <code>[Java, Java]<\/code>.<\/p>\n<p>\u042d\u0442\u0443 \u0431\u0430\u0433\u0443 \u043d\u0430\u0448\u043b\u0438 <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8282129\" rel=\"noopener noreferrer nofollow\">JDK-8282129<\/a>. <code>\\b<\/code> \u0431\u044b\u043b\u043e \u043d\u0435\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e \u0441 <code>\\w<\/code>, \u0442.\u0435. \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u0441\u0438\u043c\u0432\u043e\u043b\u044b Unicode, \u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0433\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430 \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b. \u0411\u0430\u0433\u0443 \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438, \u043d\u043e \u0443 \u043c\u043e\u0435\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438\u0441\u044c \u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 JUnit.<\/p>\n<h3>\u041a\u0430\u043a \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0440\u0443\u0448\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e: JUnit5<\/h3>\n<p>\u0412 JUnit5 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u0430\u044f \u0448\u0442\u0443\u043a\u0430: \u0442\u0435\u0441\u0442 \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441 <code>@BeforeEach<\/code> \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p><code>class ConnectionTest {<\/code><\/p>\n<p><code>\u00a0\u00a0private Connection con;<\/code><\/p>\n<p><code>\u00a0\u00a0@BeforeEach<\/code><\/p>\n<p><code>\u00a0\u00a0private<\/code><\/p>\n<p><code>\u00a0\u00a0void setUp() throws Exception {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0con = TestUtil.openDB();<\/code><\/p>\n<p>\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 JUnit \u043a \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <code>@BeforeEach<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u0435\u0442\u043e\u0434 private, \u0442\u043e \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f public-\u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 javadoc \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 private <code>@BeforeEach<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u043c private \u0441 <code>@BeforeEach<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043d\u043e \u043f\u0430\u0434\u0430\u043b\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0421\u0434\u0435\u043b\u0430\u043b\u0438. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u0432\u0430\u0440\u0438\u0449 \u0438\u0437 \u0410\u043c\u0430\u0437\u043e\u043d \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c 5 787 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0439 private \u0441 <code>@BeforeEach<\/code>. \u041a\u043e\u0434 JUnit \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0423 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u043b\u043e\u043c\u0430\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u044d\u0442\u043e \u0432\u0441\u0451 \u0447\u0438\u043d\u0438\u0442\u044c \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451 \u043d\u0430\u0437\u0430\u0434. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 private \u0441 <code>@BeforeEach<\/code> \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0438.<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 \u0441\u043f\u0435\u043a\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c private \u0441 <code>@BeforeEach<\/code>, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0431\u0435\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 JUnit, \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043b\u043e\u043c\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434: \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0412 Java regexp \u0441\u043b\u043e\u043c\u0430\u043b\u0438 \u0440\u0430\u0434\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u0410 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e?<\/p>\n<h3>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439<\/h3>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u0410 \u0437\u0430\u043a\u043e\u043d\u043d\u043e \u043b\u0438 5 787 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u043c\u0435\u043d\u044f\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c? \u041d\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0436\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0415\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0448\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u2014 <a href=\"https:\/\/docs.openrewrite.org\/\" rel=\"noopener noreferrer nofollow\">OpenRewrite<\/a>. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0447\u0442\u043e.<\/p>\n<ul>\n<li>\n<p>\u0421 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e Java \u043d\u0430 Java 17.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 JUnit 5 \u043d\u0430 JUnit 4.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 AsserJ \u043d\u0430 Hamcrest.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430. OpenRewrite \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 Spring \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenRewrite \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0445 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0432\u0430\u0448 \u0445\u043e\u0434 \u0447\u0438\u0449\u0435, \u043b\u0443\u0447\u0448\u0435 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c AssertJ, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u0438 assert`\u044b \u043b\u0443\u0447\u0448\u0435: <a href=\"https:\/\/docs.openrewrite.org\/recipes\/java\/testing\/assertj\/assertj-best-practices\" rel=\"noopener noreferrer nofollow\">AssertJ best practices<\/a>, <a href=\"https:\/\/docs.openrewrite.org\/recipes\/java\/testing\/assertj\/simplifychainedassertjassertions\" rel=\"noopener noreferrer nofollow\">Simplify AssertJ chained assertions<\/a> \u0438 \u0434\u0440.\u00a0<\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435 OpenRewrite \u0438\u043b\u0438 Error Prone \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Spring \u0438\u043b\u0438 JUnit. \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 API \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u0430\u0436\u043d\u043e \u043d\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0430 <strong>\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435<\/strong>. \u041d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u0432 \u0434\u043e\u043a\u0435, \u0430 \u043a\u0430\u043a \u043e\u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<p>\u0421\u0430\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043e\u0434 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u0442\u043e \u043c\u044b <strong>\u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c <\/strong>\u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 5 \u043b\u0435\u0442. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0447\u0442\u043e-\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u043c.<\/p>\n<p>\u041f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0447\u0438\u043d\u0438\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 <\/strong>\u0432\u0435\u0440\u0441\u0438\u0438, \u0430 security-\u043f\u0430\u0442\u0447\u0438 \u0432\u043e \u0432\u0441\u0435\u0445.<\/p>\n<ul>\n<li>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0438 \u043f\u0440\u043e\u0441\u0438\u0442\u0435 <strong>\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c <\/strong>API \u043e\u0442 \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u0430\u043c \u044d\u0442\u043e\u0442 API \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e <strong>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f<\/strong> \u0437\u0430 \u0432\u0430\u0448\u0438\u043c\u0438 API.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0438\u0445 API \u043d\u0430 \u043d\u043e\u0432\u044b\u0435.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/941808\/\"> https:\/\/habr.com\/ru\/articles\/941808\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00a0\u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 Java Rock Star Meetup, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440 \u0421\u0438\u0442\u043d\u0438\u043a\u043e\u0432 (<a href=\"https:\/\/habr.com\/ru\/users\/vladimirsitnikov\/\" rel=\"noopener noreferrer nofollow\">@vladimirsitnikov<\/a>)\u00a0\u2014 performance engineer, PgJDBC \u0438 JMeter committer, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u043b\u0435\u043d \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u0438\u0442\u0435\u0442\u043e\u0432 JPoint, Joker, Heisenbug, DevOops \u0438 SmartDara. \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u044e\u0431\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e, \u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=05ICwsJH1GM&amp;utm_source=habr&amp;utm_medium=article\" rel=\"noopener noreferrer nofollow\">YouTube<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/vkvideo.ru\/video-195063478_456239097?utm_source=habr&amp;utm_medium=article\" rel=\"noopener noreferrer nofollow\">VK \u0412\u0438\u0434\u0435\u043e<\/a>.<\/p>\n<hr\/>\n<p>\u041e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438. \u041c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u042d\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0434\u0430\u043a\u043e\u0439 \u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0432\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0432\u0438\u0436\u0435\u0442 Java \u0432\u043f\u0435\u0440\u0451\u0434, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0434\u0432\u0438\u0436\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c, \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e Java \u0438 \u0443\u043c\u0440\u0451\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e 30 \u043b\u0435\u0442 Java \u043f\u0440\u043e\u0436\u0438\u043b\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0438 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435.<\/p>\n<h2>\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f Java: \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/h2>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0435\u0433\u043e. \u0412\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0440\u0435\u043c\u044f, \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0440\u043e\u0433\u0430\u043b\u0438. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438?<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041d\u043e \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c? \u042d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0438\u043c\u043e\u0435. \u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><strong>\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438 jar \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/strong> \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0435\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/strong> \u0423\u0436\u0435 \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0433\u0434\u0435 \u0442\u043e\u0447\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435<\/strong>. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0442\u0435\u043c \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c<\/strong>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c. \u0412\u043e\u0442 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u044f \u043d\u0430\u0441, \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439, \u043a\u0430\u0440\u0442\u0438\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/strong>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a \u043f\u043e\u043b\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438 \u0435\u0433\u043e \u0432 Object, \u0430 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c (\u0431\u044b\u043b\u043e Object, \u0430 \u0441\u0442\u0430\u043b\u043e String), \u0442\u043e \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u042d\u0442\u043e \u043c\u0435\u043d\u0435\u0435 \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e\u0434 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430 30 \u043b\u0435\u0442 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p><code>int assert = 10;\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043b\u043e\u0432\u043e assert \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u0432 \u044f\u0437\u044b\u043a\u0435 \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u044f\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<ul>\n<li>\n<p><code>void process( int id, int _);\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0442\u043e-\u0442\u043e \u0432\u0437\u044f\u043b \u0438 \u0441\u043a\u0440\u044b\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u0412 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0435\u0432\u0430\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0438\u0436\u043d\u0435\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d\u0438. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439.<\/p>\n<ul>\n<li>\n<p><code>thread.stop();\u00a0<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 <code>stop()<\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438. \u0427\u0435\u0440\u0435\u0437 \u0432\u0440\u0435\u043c\u044f Java \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c.\u00a0<\/p>\n<p>\u0411\u044b\u0432\u0430\u0435\u0442 \u0438 \u0445\u0443\u0436\u0435. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>java.sql.PreparedStatement<\/code> \u0438 \u0447\u0442\u043e \u0441 \u043d\u0438\u043c \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a? \u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u043e \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u043b\u0438, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p><code>interface java.sql.PreparedStatement() {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\/\/since 1.6<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void setBinaryStream(int parameterIndex, InputStream x);<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 Java 9 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0441 Java EE (<code>javax.<\/code>) \u043d\u0430 Jakarta EE (<code>jakarta.<\/code>).<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0435\u0441\u0442\u044c \u0438 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d. \u0427\u0442\u043e \u043d\u0430\u043c \u044d\u0442\u043e \u0434\u0430\u0435\u0442? \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u041d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c \u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c? \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439?<\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0431\u0430\u0439\u043a\u0430 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u201c\u041c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u043e\u0444\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438\u201d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043a \u0440\u0435\u043b\u0438\u0437\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e:<\/p>\n<p><code>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 10.17: \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 CPU \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u0435.<\/code><\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0448\u044c, \u0442\u043e CPU \u043d\u0435 \u0442\u0440\u0430\u0442\u044f\u0442\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435. \u041d\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043c\u0438\u0440\u0435 Java? \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><code><strong>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/strong>: \u0420\u0435\u0431\u044f\u0442\u0430, \u0432\u044b \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438? \u042f \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b. \u0423 \u043c\u0435\u043d\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0442\u043e\u044f\u043b. \u041a\u043e\u0433\u0434\u0430 CPU \u0437\u0430\u0448\u043a\u0430\u043b\u0438\u0432\u0430\u043b, \u0442\u043e CD-ROM \u0432\u044b\u0435\u0437\u0436\u0430\u043b \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u043b \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443. \u041e\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0433\u0440\u0435\u0442\u044c\u0441\u044f. \u0412\u044b \u043c\u043d\u0435 \u0432\u0441\u0451 \u0441\u043b\u043e\u043c\u0430\u043b\u0438.<\/code><\/p>\n<p><code><strong>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/strong>: 0_0. \u041d\u0438\u043a\u0442\u043e \u0436\u0435 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0440\u0435\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/code><\/p>\n<p><code><strong>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/strong>: \u0410 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430?<\/code><\/p>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f: SemVer (Semantic Version) \u0436\u0435? \u0421\u043e\u0444\u0442 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0415\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0447\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p><strong>MAJOR<\/strong>.<strong>MINOR<\/strong>.<strong>PATCH<\/strong>,<\/p>\n<p>\u0433\u0434\u0435:<\/p>\n<ul>\n<li>\n<p>MAJOR+1 \u2014 \u043d\u0430\u0440\u0443\u0448\u0438\u043b\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>MINOR+1 \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>PATCH+1 \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u044d\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u2014 \u0442\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u044b \u0441\u043b\u043e\u043c\u0430\u043b\u0438 \u043a\u043e\u0434.<\/p>\n<h3>\u0421\u043b\u043e\u043c\u0412\u0435\u0440 3.0: \u041c\u041d\u041e\u0413\u041e.\u041c\u0410\u041b\u041e.\u0427\u0423\u0422\u041e\u0427\u041a\u0423<\/h3>\n<p>\u0412 \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<p><strong>\u041c\u041d\u041e\u0413\u041e<\/strong>.<strong>\u041c\u0410\u041b\u041e<\/strong>.<strong>\u0427\u0423\u0422\u041e\u0427\u041a\u0423<\/strong><\/p>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 CPU \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043d\u0435\u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u044d\u0442\u043e \u2014 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c: \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0433\u0440\u0435\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u0443\u0434\u0438\u0442\u044c, \u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043b\u043e\u043c\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0441\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0438\u0440\u0435 Java. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043c\u0438\u0440\u0435 Linux \u0435\u0441\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0442 Red Hat \u0438 \u0431\u044b\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0442 Oracle (Oracle Enterprise Linux). \u0411\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 Oracle \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 Oracle Enterprise Linux \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f bug-to-bug compatible. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432 Oracle Linux \u0431\u044b\u043b\u0438 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0431\u0430\u0433\u0438, \u0447\u0442\u043e \u0438 \u0432 Red Hat Linux. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u044e\u0442 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0421\u043b\u043e\u043c\u0412\u0435\u0440 \u2014 \u043c\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u043c. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u044b \u0441\u043b\u043e\u043c\u0430\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u043f\u044b\u0442, \u0438 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u041c\u044b (\u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442.<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b\u0442\u044c \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 Java.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 TreeSet<\/h4>\n<p>\u041a\u043b\u0430\u0441\u0441 TreeSet \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0433 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><code>var conferences = new TreeSet&lt;String&gt;();<\/code><\/p>\n<p><code>names.add(\"Java Rock Stars\");<\/code><\/p>\n<p><code>names.add(null);<\/code><\/p>\n<p>\u041c\u044b \u0431\u0435\u0440\u0451\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 TreeSet \u0437\u0430\u043f\u0438\u0441\u0438. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f null? \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e <code>NullPointerException<\/code> (NPE). \u0410 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435?<\/p>\n<p><code>var conferences2 = new TreeSet&lt;String&gt;();<\/code><\/p>\n<p><code>names.add(null);<\/code><\/p>\n<p><code>names.add(\"Java Rock Stars\");<\/code><\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u043e\u0442 \u0436\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 TreeSet. \u042d\u0442\u0430 \u0431\u0430\u0433\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-5045147\" rel=\"noopener noreferrer nofollow\">JDK-5045147: Adding null key to empty TreeMap .. should throw NPE<\/a>.<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438, \u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435, \u0442.\u0435. \u043d\u0430\u0448\u043b\u0438 \u0432 Java 6, \u0430 \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Java 7. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u0431\u044b \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u2014 \u0441\u043b\u043e\u043c\u0430\u043b\u043e \u0431\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u041f\u0430\u0440\u0430\u0434\u043e\u043a\u0441\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0431\u0430\u0433\u0438.<\/p>\n<h3>\u041a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u0430\u0433\u0438 \u0438 \u0444\u0438\u0447\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438\u0441\u044c<\/h3>\n<p>\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u044f\u0442 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438? \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 \u043e\u043d\u0438 \u0432\u0438\u0434\u044f\u0442, \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e API, \u0430 Public API. \u0422\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u0438 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 Public API.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434. \u0412 Java \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c default-\u043c\u0435\u0442\u043e\u0434 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p><code>interface java.sql.PreparedStatement{<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0default long executeLargeUpdate() throws SQLException {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw new UnsupportedOPerationException(\"executeLargeUpdate not implemented\");<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u043e \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f. \u0423\u0436\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u044f\u0437\u044b\u043a. \u0410 \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u0441\u0430\u043c\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e?<\/p>\n<p>\u0412 Java \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b public, private, package-private. \u0412\u0441\u0451 \u043b\u0438 \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f API? \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, public-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 Public API. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e Published API. \u042d\u0442\u043e\u0442 \u0442\u0435\u0440\u043c\u0438\u043d \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0451\u043d \u041c\u0430\u0440\u0442\u0438\u043d\u043e\u043c \u0424\u0430\u0443\u043b\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0441\u0430\u043c\u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. API \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u044f\u0432\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b. \u0410 \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c?\u00a0<\/p>\n<p>\u0412 Java \u2014 \u043d\u0438\u043a\u0430\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/apiguardian-team\/apiguardian\" rel=\"noopener noreferrer nofollow\">API Guardian<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0451\u0440\u0435\u043c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0418 \u0432\u0435\u0448\u0430\u0435\u043c \u043d\u0430 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043c\u0435\u0442\u043e\u0434, \u043f\u043e\u043b\u044f \u0438 \u0442.\u0434. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439:<\/p>\n<p><code>@API(status = STABLE)<\/code><\/p>\n<p><code>@API(status = MAINTAINED)<\/code><\/p>\n<p><code>@API(status = EXPERIMENTAL)<\/code><\/p>\n<p><code>@API(status = INTERNAL)<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u0438\u0437\u0430\u0439\u043d\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442\u0435 \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u0432\u0432\u0435\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e API \u0438 \u043e\u043d \u0441\u0442\u0430\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0436\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u201c\u043f\u043e\u0432\u0435\u0440\u0445\u201d \u044d\u0442\u0438\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Private API \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0438 \u0442.\u043f.<\/p>\n<p>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043d\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u0432 Java. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043b\u0438 \u0435\u0449\u0451 \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0445\u0435\u043b\u043f\u0435\u0440\u044b, \u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 JUnit.<\/p>\n<p>\u0412 JUnit \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043a\u043e\u0434 JUnit (JUnit 5), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0438\u0445 API: maintained, experimental \u0438 \u043f\u0440.\u00a0<\/p>\n<p><code>package <\/code><a href=\"http:\/\/org.junit.platform.commons.support\" rel=\"noopener noreferrer nofollow\"><code>org.junit.platform.commons.support<\/code><\/a><code>;<\/code><\/p>\n<p><code>@API(status = MAINTAINED, since = \"1.0\")<\/code><\/p>\n<p><code>public final class AnnotationSupport<\/code><\/p>\n<h3>\u041a\u0430\u043a \u0432 \u0447\u0438\u0441\u0442\u043e\u0439 Java \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043a\u043e\u0434<\/h3>\n<p>\u0411\u044b\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 java.lang.Object, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b \u043c\u0435\u0442\u043e\u0434 <code>finalize()<\/code>. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u043c\u0435\u0442\u0438\u043b\u0438 \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 (deprecated), \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p><code>public class Object {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Deprecated(since=\"9\", forRemoval=true)<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void finalize(){}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u0410 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u041c\u0435\u0442\u043e\u0434 \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u043d\u043e \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c? \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0442\u0438\u043f\u0430 <code>@Hidden<\/code>:<\/p>\n<p><code>public class Object {<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Hidden<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0@Deprecated(since=\"9\", forRemoval=true)<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0void finalize(){}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0432 \u043d\u043e\u0432\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 Java \u043f\u043e\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-472759","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472759","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=472759"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472759\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=472759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=472759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=472759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}