{"id":72985,"date":"2019-09-23T07:05:15","date_gmt":"2019-09-23T07:05:15","guid":{"rendered":"https:\/\/www.whizlabs.com\/blog\/?p=72985"},"modified":"2021-03-17T07:21:19","modified_gmt":"2021-03-17T07:21:19","slug":"java-11-features","status":"publish","type":"post","link":"https:\/\/www.whizlabs.com\/blog\/java-11-features\/","title":{"rendered":"11 New Features of Java 11"},"content":{"rendered":"<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">At an interval of every six months, Java introduces a new version release. On September 25, 2018, Oracle made JDK (Java Development Kit) 11 generally available. The <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/jdk11-downloads-5066655.html\" target=\"_blank\" rel=\"noopener noreferrer\">JDK 11<\/a> is the latest update of the reference implementation of the Java SE platform and the most effective one in the <a href=\"https:\/\/www.whizlabs.com\/blog\/java-version-history\/\" target=\"_blank\" rel=\"noopener\">Java version history<\/a>. Java SE 11 is also the first Long Term Support (LTS) update in the new six-month release schedule of Java. <\/span><\/p>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Many enthusiasts in the tech world were eagerly waiting for the new release and a look into the latest Java 11 features. The Java 11 comes as the second LTS release after Java 8, speaking enough for its importance. With the launch of Java 11, Oracle JDK is not available anymore for commercial use without any costs. Also, it should be noted that the validity of a <a href=\"https:\/\/www.whizlabs.com\/oracle-java-certifications\/\" target=\"_blank\" rel=\"noopener\">Java programming certification<\/a> is not affected by the new releases.<\/span><\/p>\n<blockquote><p>Check Now: <a href=\"https:\/\/www.whizlabs.com\/oracle-java-certifications\/\" target=\"_blank\" rel=\"noopener\">Oracle Java Certification Training Courses<\/a><\/p><\/blockquote>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">You can use Java 11 at different stages of development. However, commercial use of Java 11 new features would require a license. After the Java 11 release date, many important details came to the front. For instance, Oracle would not provide support for Java 8 after January 2019. You can continue to use Java 8 by paying for support. However, you would not receive any type of patches or security updates. <\/span><\/p>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">As you cannot use Oracle JDK any longer without any costs, you could download Open JDK builds. Many providers such as Red Hat, AdoptOpen JDK, IBM, Azul, and others provide flexible options in this regard. You could use Open JDK builds from these providers and also choose to upgrade them when required. Now, let us dive into a discussion on Java 11 new features for understanding what Java 11 brings to the table!<\/span><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ea7e02;color:#ea7e02\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ea7e02;color:#ea7e02\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#Understanding_the_New_Java_11_Features\" >Understanding the New Java 11 Features<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#1_Type_Inference_for_Lambda_Parameters\" >1. Type Inference for Lambda Parameters<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#2_String_lines\" >2. String::lines<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#3_New_Characters_Scripts_and_Blocks\" >3. New Characters, Scripts, and Blocks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#4_Standard_HTTP_Client\" >4. Standard HTTP Client<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#5_toArrayIntFunction_Default_Method\" >5. .toArray(IntFunction) Default Method<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#6_Epsilon_Garbage_Collector\" >6. Epsilon Garbage Collector<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#7_Low-overhead_Heap_Profiling\" >7. Low-overhead Heap Profiling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#8_Improved_KeyStore_Mechanisms\" >8. Improved KeyStore Mechanisms<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#9_Z_Garbage_Collector\" >9. Z Garbage Collector<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#10_Dynamic_Allocation_of_Compiler_Threads\" >10. Dynamic Allocation of Compiler Threads<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.whizlabs.com\/blog\/java-11-features\/#10_New_File_Methods\" >10. New File Methods<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Understanding_the_New_Java_11_Features\"><\/span><span class=\"s1\">Understanding the New Java 11 Features<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Before we take an overview of new Java 11 features with examples, let us look at the important changes first. No deployment stack is ideal for running applets and web applications. Unavailability of deployment stack also involves removal of a complete section of supported browsers from list of supported configurations. Java 11 presents Java Mission Control and JavaFX as separate downloads. There is no auto-update for JRE installations on macOS and Windows.<\/span><\/p>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Java 11 also excludes JRE or Server JRE, and users get only JDK. Java language translation for certain languages is unavailable in Java 11. The languages include French, Italian, Swedish, German, Spanish, Brazilian, Portuguese and Korean. Java 11 features also include changes in updated packaging format for Windows and macOS. The updated packaging format for Windows in Java 11 is .zip rather than tar.gz. The updated packaging format for macOS is .dmg rather than .app. So, let&#8217;s move to a detailed overview of the new Java features.<\/span><\/p>\n<blockquote>\n<p style=\"text-align: justify;\">Preparing to become an Oracle Certified Java SE 11 Developer? Check out the preparation guides for <a href=\"https:\/\/www.whizlabs.com\/blog\/ocpjp-java-se-11-programmer-i-preparation-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Java SE 11 Programmer I 1Z0-815<\/a> and <a href=\"https:\/\/www.whizlabs.com\/blog\/ocpjp-java-se-11-programmer-ii-preparation-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Java SE 11 Programmer II 1Z0-816<\/a> exams to give your preparation a new edge.<\/p>\n<\/blockquote>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"1_Type_Inference_for_Lambda_Parameters\"><\/span><span class=\"s1\">1. Type Inference for Lambda Parameters<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">The first mention among the latest Java 11 features with examples is type inference for lambda parameters. Now, you can choose to specify types of lambda parameters or omitting them when writing a lambda expression. The example can be shown as follows.<\/span><\/p>\n<pre class=\"p1\"><span class=\"s1\">Function&lt;String, String&gt; append = string -&gt; string + \" \";<\/span>\r\n\r\n<span class=\"s1\">Function&lt;String, String&gt; append = (String s) -&gt; s + \" \";<\/span>\r\n\r\n<span class=\"s1\">Java 10 came with \u2018var\u2019 albeit with the limitation of not using in lambdas. The error message can be shown as,<\/span>\r\n\r\n<span class=\"s1\">\/\/ compile error in Java 10<\/span>\r\n\r\n<span class=\"s1\">Function&lt;String, String&gt; append = (var string) -&gt; string + \" \";<\/span><\/pre>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">However, Java 11 features help you achieve it. Allowing \u2018var\u2019 provides two prominent advantages. First of all, it introduces uniformity in the mental model for \u2018var\u2019 through the removal of a special case. The second advantage is the facility for type annotations on lambda parameters without the need for a full type name. The example for the second advantage is shown as follows. <\/span><\/p>\n<pre class=\"p1\"><span class=\"s1\">List&lt;EnterpriseGradeType&lt;With, Generics&gt;&gt; types = \/*...*\/;<\/span>\r\n\r\n<span class=\"s1\">types.stream()<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>\/\/ this is fine, but we need @Nonnull on the type<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>.filter(type -&gt; check(type))<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>\/\/ in Java 10, we need to do this ~&gt; ugh!<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>.filter((@Nonnull EnterpriseGradeType&lt;With, Generics&gt; type) -&gt; check(type))<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>\/\/ in Java 11, we can do this ~&gt; better<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>.filter((@Nonnull var type) -&gt; check(type))<\/span><\/pre>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Java 11 supports mixing implicit types, explicit types and \u2018var\u2019 in lambdas albeit with complex implementation. However, you may have to add \u2018var\u2019 to all parameters for applying annotations. <\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"2_String_lines\"><\/span><span class=\"s1\">2. String::lines<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Another new feature in Java 11 is the \u2018String::lines\u2019 which helps in streaming lines. The Java 11 features of String::lines are ideal for situations where you have a multiline string. Take the following example.<\/span><\/p>\n<pre class=\"p1\"><span class=\"s1\">var multiline = \"This\\r\\nis a\\r\\nmultiline\\r\\nstring\";<\/span>\r\n\r\n<span class=\"s1\">multiline.lines()<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>\/\/ we now have a `Stream&lt;String&gt;`<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>.map(line -&gt; \"\/\/ \" + line)<\/span>\r\n\r\n<span class=\"s1\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>.forEach(System.out::println);<\/span>\r\n\r\n<span class=\"s1\">\/\/ OUTPUT:<\/span>\r\n\r\n<span class=\"s1\">\/\/ This<\/span>\r\n\r\n<span class=\"s1\">\/\/ is a<\/span>\r\n\r\n<span class=\"s1\">\/\/ multiline<\/span>\r\n\r\n<span class=\"s1\">\/\/ string<\/span><\/pre>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">You can note that the string uses Windows\u2019 \\r\\n and the \u201clines ()\u201d splits it. The method assumes \\r, \\n, and \\r\\n as line terminators even if they are mixed in the same string. Streamed lines do not contain a line terminator, and they could be empty such as \u201clike\\n\\nin this\\n\\ncase\u201d having five lines. However, the line at the end of the string is ignored if it is empty such as \u201clike\\nhere\\n\u201d with two lines. With the \u201cString::lines\u201d feature, search for new line terminators is faster, and performance improves considerably. <\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"3_New_Characters_Scripts_and_Blocks\"><\/span><span class=\"s1\">3. New Characters, Scripts, and Blocks<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">The notable difference between different versions of Java and Java 11 is the introduction of 16,018 new characters. Java 11 has added 128 emoji characters, 19 symbols ideal for the new 4K TV standard, and Bitcoin signs. Also, you can find ten new scripts and 18 new blocks. The ten new scripts in Java 11 include Adlam, Marchen, Tangut, Bhaiksuki, Newa, Soyombo, Masaram Gondi, Zanabazar Square, Osage and Nushu. <\/span><\/p>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Among the 18 new blocks, ten are specifically ideal for the ten new scripts. The remaining eight new blocks are ideal for existing scripts. The existing scripts include Cyrillic Extended-C, Mongolian Supplement, Tangut Components, Kana Extended-A, Ideographic Symbols and Punctuation, Syriac Supplement, CJK Extension F and Glagolitic Supplement. <\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"4_Standard_HTTP_Client\"><\/span><span class=\"s1\">4. Standard HTTP Client<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Another prominent difference between different versions of Java and Java 11 is the standardization of incubated HTTP client API. The HTTP Client API found an introduction in JDK 9 and has been updated in JDK 10 to JEP321 HTTP. Now, there is no incubating API in the \u201cjdk.incubator.http\u201d package as before. Code using types from the \u201cjdk.incubator.http\u201d package needs updates for importing HTTP types from \u201cjava.net.http\u201d standard package.<\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"5_toArrayIntFunction_Default_Method\"><\/span><span class=\"s1\">5. .toArray(IntFunction) Default Method<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">After the Java 11 release date, another new feature in Java 11 also comes to the front. The new feature is the .toArray(IntFunction) default method, which is now a part of the \u2018java.util.Collection\u2019 interface. The method helps in transferring elements in the collection to a newly created array having specific runtime type. You can assume it as an overload of the toArray (T[ ]) method used for taking array instance as an argument. <\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"6_Epsilon_Garbage_Collector\"><\/span><span class=\"s1\">6. Epsilon Garbage Collector<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">The addition of JEP 318 Epsilon to the top Java 11 features is also another notable highlight. The No-Op garbage collector is ideal for handling only memory allocation without implementing any memory reclamation apparatus. Epsilon GC is also helpful for cost-benefit comparison of other garbage collectors and performance testing.<\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"7_Low-overhead_Heap_Profiling\"><\/span><span class=\"s1\">7. Low-overhead Heap Profiling<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Java 11 provides the feature of a low-overhead approach to sampling of Java heap allocations through the JVMTI. The design of this approach is ideal for addressing certain goals. First of all, low-overhead is at a sufficient level for default activation. The next benefit is to obtain information about live and dead Java objects. The JVMTI is a well-defined and programmatic interface that provides ease of access. You would also find low-overhead heap profiling as one of the likely additions to Java 12 features.<\/span><\/p>\n<blockquote>\n<p style=\"text-align: justify;\">Also Read: <a href=\"https:\/\/www.whizlabs.com\/blog\/ocp-java-se-11-developer-certification\/\" target=\"_blank\" rel=\"noopener noreferrer\">How to achieve Oracle Certified Java SE 11 Developer certification?<\/a><\/p>\n<\/blockquote>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"8_Improved_KeyStore_Mechanisms\"><\/span><span class=\"s1\">8. Improved KeyStore Mechanisms<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Security precedents for Java 12 features can take inspiration from Java 11. The new and improved KeyStore mechanisms in Java 11 can surely provide valid proof for that. You can find a new security property with the name \u2018jceks.key.serialFilter\u2019 in Java 11. JCEKS KeyStore users this security filter at the time of deserialization of encrypted key object housed in a SecretKeyEntry. Without any configuration, the filter result renders an UNDECIDED value and obtains default configuration by \u2018jdk.serialFilter.\u2019 <\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"9_Z_Garbage_Collector\"><\/span><span class=\"s1\">9. Z Garbage Collector<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">One of the crucial new entries in top Java 11 features is the ZGC or Z garbage collector. It is a scalable low-latency garbage collected ideal for addressing specific objectives. The Z garbage collector ensures that pause times do not go beyond 10ms. It also ensures that pause times do not increase with the size of the heap or live-set. Finally, ZGC also manages heaps of varying sizes from 100 megabytes to multi terabytes.<\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"10_Dynamic_Allocation_of_Compiler_Threads\"><\/span><span class=\"s1\">10. Dynamic Allocation of Compiler Threads<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span class=\"s1\">Dynamic control of compiler threads is possible now in Java 11 with a new command line flag. The command-line flag is \u2018-XX: +UseDynamicNumberOfCompilerThreads.\u2019 The VM starts numerous compiler threads on systems with multiple CPUs in the tiered compilation mode. There is no concern for the number of compilation requests or available memory with this command line flag. However, this can lead to inefficient use of resources as idle threads could also consume memory. So, with the new command line flag, implementation has changed. Now, only one compiler thread of each type initiates at startup, and then the starting and shutdown of subsequent threats are subject to dynamic management.<\/span><\/p>\n<h3 class=\"p1\" style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"10_New_File_Methods\"><\/span><span class=\"s1\">10. New File Methods<\/span><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">New file methods among Java 11 features are also prominent attractions in the new Java release. The new file methods include \u2018writeString()\u2019, \u2018readString()\u2019 and \u2018isSameFile()\u2019. \u2018writeString()\u2019 is ideal for writing some content in a file while \u2018readString()\u2019 is ideal for reading contents in a file. The \u2018isSameFile()\u2019 method helps in knowing whether two paths identify the same file. <\/span><\/p>\n<h4 class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">Final Words<\/span><\/h4>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">An observation of the various new Java 11 features clearly shows the path for more improvements in future Java releases. Java 11 also has many new improvements in a place like other new releases. The most interesting highlight about Java 11 is that it is a stable Long-Term Support (LTS) release of Java. After Java 8, this is the second LTS release of Java. However, you may not discover any changes regarding the <a href=\"https:\/\/www.whizlabs.com\/blog\/ocajp-casting-java\/\" target=\"_blank\" rel=\"noopener\">casting in Java<\/a>.\u00a0<\/span><\/p>\n<p class=\"p1\" style=\"text-align: justify;\"><span class=\"s1\">This implies the foundation for Java 12 being another Long-Term Support release. As we took a tour of the new features in Java 11, we found that many old features are missing. For example, SNMP Agent and Java Deployment Technologies are not available in Java 11. Java 11 has surely brought some drastic changes to the Java landscape. So, if you want to try out new features in Java 11, then purchase your license and get started!\u00a0<\/span><\/p>\n<p style=\"text-align: justify;\">If you are well-versed with the Java SE 11 platform, it&#8217;s time to get recognition as Oracle Certified Java SE 11 Developer certification. You need to pass <a href=\"https:\/\/www.whizlabs.com\/ocpjd-java-se-11-developer-1z0-819\/\" target=\"_blank\" rel=\"noopener\">Java SE 11 Developer 1Z0-819 exam<\/a> to become an Oracle certified Java SE 11 Developer, check the <span data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;oracle certifications list&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:14337,&quot;3&quot;:{&quot;1&quot;:1},&quot;14&quot;:{&quot;1&quot;:3,&quot;3&quot;:1},&quot;15&quot;:&quot;Calibri&quot;,&quot;16&quot;:11}\"><a href=\"https:\/\/www.whizlabs.com\/oracle-java-certifications\/\" target=\"_blank\" rel=\"noopener\">Oracle Certifications List<\/a>, and <\/span>start your preparation now!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At an interval of every six months, Java introduces a new version release. On September 25, 2018, Oracle made JDK (Java Development Kit) 11 generally available. The JDK 11 is the latest update of the reference implementation of the Java SE platform and the most effective one in the Java version history. Java SE 11 is also the first Long Term Support (LTS) update in the new six-month release schedule of Java. Many enthusiasts in the tech world were eagerly waiting for the new release and a look into the latest Java 11 features. The Java 11 comes as the [&hellip;]<\/p>\n","protected":false},"author":220,"featured_media":72997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[13],"tags":[2407,2406,2405,2408,2409,3936,4013],"class_list":["post-72985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-difference-between-different-versions-of-java","tag-java-11-features-with-examples","tag-java-11-new-features","tag-java-11-release-date","tag-java-12-features","tag-java-programming-certification","tag-oracle-certifications-list"],"uagb_featured_image_src":{"full":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features-150x150.jpg",150,150,true],"medium":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features-300x158.jpg",300,158,true],"medium_large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"large":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"1536x1536":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"2048x2048":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"profile_24":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",24,13,false],"profile_48":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",48,25,false],"profile_96":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",96,50,false],"profile_150":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",150,79,false],"profile_300":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",300,158,false],"tptn_thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features-250x250.jpg",250,250,true],"web-stories-poster-portrait":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",600,315,false],"web-stories-publisher-logo":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",96,50,false],"web-stories-thumbnail":["https:\/\/www.whizlabs.com\/blog\/wp-content\/uploads\/2019\/09\/java-11-features.jpg",150,79,false]},"uagb_author_info":{"display_name":"Aditi Malhotra","author_link":"https:\/\/www.whizlabs.com\/blog\/author\/aditi\/"},"uagb_comment_info":4,"uagb_excerpt":"At an interval of every six months, Java introduces a new version release. On September 25, 2018, Oracle made JDK (Java Development Kit) 11 generally available. The JDK 11 is the latest update of the reference implementation of the Java SE platform and the most effective one in the Java version history. Java SE 11&hellip;","_links":{"self":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/72985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/users\/220"}],"replies":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/comments?post=72985"}],"version-history":[{"count":15,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/72985\/revisions"}],"predecessor-version":[{"id":77222,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/posts\/72985\/revisions\/77222"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media\/72997"}],"wp:attachment":[{"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/media?parent=72985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/categories?post=72985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.whizlabs.com\/blog\/wp-json\/wp\/v2\/tags?post=72985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}