{"id":101268,"date":"2021-09-15T10:22:53","date_gmt":"2021-09-15T08:22:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-java-se-17"},"modified":"2021-09-15T10:22:53","modified_gmt":"2021-09-15T08:22:53","slug":"vypusk-java-se-17","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-java-se-17","title":{"rendered":"Release of Java SE 17","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>After six months of development, Oracle has released the Java SE 17 platform (Java Platform, Standard Edition 17), with the OpenJDK open-source project serving as its reference implementation. Except for the removal of some deprecated features, Java SE 17 maintains backward compatibility with previous versions of the Java platform \u2014 most previously written Java projects will run unchanged on the new version. Installable builds of Java SE 17 (JDK, JRE, and Server JRE) are prepared for Linux (x86_64, AArch64), Windows (x86_64), and macOS (x86_64, AArch64). The Java 17 reference implementation, developed under the OpenJDK project, is fully open under the GPLv2 license with exceptions from GNU ClassPath, allowing for dynamic linking with commercial products.     <\/p>\n<p>Java SE 17 is classified as a long-term support (LTS) release, with updates scheduled until 2029. Updates for the previous interim release, Java 16, have been discontinued. The previous LTS branch, Java 11, will be supported until 2026. The next LTS release is planned for September 2024. It is important to note that starting from Java 10, the project transitioned to a new development process that features a shorter cycle for creating new releases. New functionality is now developed in a continuously updated master branch, which includes completed changes and branches off every six months for stabilization of new releases.     <\/p>\n<p>New features in Java 17 include:  <\/p>\n<ul>\n<li class=\"l\"> An experimental implementation of pattern matching in 'switch' expressions has been proposed, allowing the use of flexible patterns in 'case' labels that cover a range of values for which cumbersome chains of 'if...else' statements were previously necessary. Moreover, handling of NULL values within 'switch' has been enabled.         Object o = 123L;     String formatted = switch (o) {         case Integer i -&gt; String.format('int %d', i);         case Long l    -&gt; String.format('long %d', l);         case Double d  -&gt; String.format('double %f', d);         case String s  -&gt; String.format('String %s', s);         default        -&gt; o.toString();     };\n<li class=\"l\"> The support for sealed classes and interfaces, which cannot be inherited, extended, or overridden by other classes and interfaces, has been stabilized. Sealed classes also offer a more declarative way to restrict the use of a superclass than access modifiers, based on explicitly listing subclasses that are allowed to extend.       package com.example.geometry;       public sealed class Shape          permits com.example.polar.Circle,                  com.example.quad.Rectangle,                  com.example.quad.simple.Square {\u2026}\n<li class=\"l\"> A second preview implementation of the Vector API has been proposed, providing functionalities for vector computations that are performed using x86_64 and AArch64 processor vector instructions, allowing operations to be applied simultaneously to multiple values (SIMD). Unlike the autovectorization capabilities for scalar operations provided by the HotSpot JIT compiler, the new API gives explicit control over vectorization for parallel data processing.\n<li class=\"l\"> A preliminary implementation of the Foreign Function &amp; Memory API has been added, allowing applications to interact with code and data outside of the Java runtime. The new API enables efficient calls to functions executed outside the JVM and access to memory not managed by the JVM. For example, it is possible to call functions from external shared libraries and access process data without using JNI.\n<li class=\"l\"> The rendering engine for macOS, which supports the Java 2D API that is used in the Swing API, has been adapted to utilize the Metal graphics API. By default, macOS still uses OpenGL, and to enable Metal support, the parameter '-Dsun.java2d.metal=true' must be set, along with having at least macOS version 10.14.x.\n<li class=\"l\"> A port for the macOS\/AArch64 platform (Apple computers based on the new Apple M1 chips) has been added. A feature of the port is support for the W^X (Write XOR Execute) memory protection mechanism, whereby memory pages cannot be simultaneously accessible for writing and executing. (Code can only be executed after write access is restricted, and writing to a memory page is only possible after execution access is restricted.)\n<li class=\"l\"> The use of strict (strictfp) semantics for floating-point expressions has been restored. Support for the 'default' semantics, available since Java 1.2 and including simplifications for operation on systems with very old x87 math coprocessors, has been discontinued (the need for additional semantics disappeared after the introduction of SSE2 instructions).\n<li class=\"l\"> New types of interfaces to pseudorandom number generators have been implemented, along with additional algorithms for better random number generation. Applications are now able to select the algorithm for pseudorandom number generation. Support for generating streams of random objects has been improved.\n<li class=\"l\"> Mandatory strict encapsulation of all internal JDK elements has been implemented, except for critical APIs such as sun.misc.Unsafe. Strict encapsulation blocks attempts to access internal classes, methods, and fields from code. Previously, strict encapsulation could be disabled using the option '--illegal-access=permit', but this has now been deprecated. Applications requiring access to internal classes, methods, and fields should explicitly define them using the '--add-opens' option or the Add-Opens attribute in the manifest file.\n<li class=\"l\"> Applications are provided with the capability to define filters for data deserialization, which can depend on context and be chosen dynamically in relation to specific deserialization operations. The specified filters apply across the entire <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/vps\/abuzoustojchivye-vps\/\"   title=\"virtual machine\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4313\">virtual machine<\/a>  (JVM-wide), meaning they cover not only the application itself but also third-party libraries used within the application.\n<li class=\"l\"> In Swing, the method javax.swing.filechooser.FileSystemView.getSystemIcon has been added for loading large-sized icons, enhancing interface rendering on high pixel density (HighDPI) screens.\n<li class=\"l\"> The API java.net.DatagramSocket has been enhanced to support connections to multicast groups without the need for a separate API java.net.MulticastSocket.\n<li class=\"l\"> The IGV (Ideal Graph Visualizer) utility has been upgraded, providing interactive visualization of the intermediate representation of code in the HotSpot VM C2 JIT compiler.\n<li class=\"l\"> In JavaDoc, similar to the javac compiler, when an error is reported, the problematic line number in the source file and the location of the error are now indicated.\n<li class=\"l\"> The property native.encoding has been added, reflecting the name of the system character encoding (UTF-8, koi8-r, cp1251, etc.).\n<li class=\"l\"> The interface java.time.InstantSource has been introduced, allowing manipulation of time without being tied to a time zone.\n<li class=\"l\"> The API java.util.HexFormat has been added for converting to and from hexadecimal representation.\n<li class=\"l\"> A blackhole mode has been added to the compiler, disabling dead-code elimination, which can be used for performance testing.\n<li class=\"l\"> An option '-Xlog:async' has been added to Runtime for logging in asynchronous mode.\n<li class=\"l\"> TLS 1.3 is now enabled by default for establishing secure connections (previously TLS 1.2 was used).\n<li class=\"l\">  The previously declared deprecated API Applet (java.applet.Applet*, javax.swing.JApplet), which was used to run Java applications in browsers, has been moved to the category of planned removals (no longer relevant after the discontinuation of Java plugin support for browsers).\n<li class=\"l\"> The Security Manager, which has long been outdated and became unnecessary after browser plugin support was discontinued, has been moved to the category of planned removals.\n<li class=\"l\"> The RMI Activation mechanism, which has been obsolete and was relegated to an option since Java 8, has been removed as it is rarely used in modern practice.\n<li class=\"l\"> The experimental compiler in the SDK that supported JIT (just-in-time) for dynamic Java code compilation for the HotSpot JVM, as well as AOT (ahead-of-time) compilation of classes to machine code before the virtual machine start, has been removed. The compiler was written in Java and based on the Graal project efforts. It has been noted that maintaining the compiler requires significant labor costs that do not justify themselves due to lack of interest from developers.    <\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=55802\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 17 (Java Platform, Standard Edition 17), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK. \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 Java SE 17 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u043e\u0448\u043b\u044b\u043c\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Java &#8212; \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-101268","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 17 (Java Platform, Standard Edition 17), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-java-se-17\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 17 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 17 (Java Platform, Standard Edition 17), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-java-se-17\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-09-15T08:22:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-09-15T08:22:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Release of Java SE 17 | ProHoster","description":"After six months of development, Oracle released the Java SE 17 platform (Java Platform, Standard Edition 17), with the open-source project OpenJDK being used as the reference implementation.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-java-se-17","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 17 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 17 (Java Platform, Standard Edition 17), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-java-se-17","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-09-15T08:22:53+00:00","article:modified_time":"2021-09-15T08:22:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"101268","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-09-15 08:34:15","updated":"2022-10-01 06:25:28","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/101268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=101268"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/101268\/revisions"}],"predecessor-version":[{"id":164188,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/101268\/revisions\/164188"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=101268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=101268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=101268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}