| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018, 2019. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/> |
| <meta http-equiv="Content-Language" content="en-us"/> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <link rel="STYLESHEET" href="news.css" type="text/css"/> |
| <style type="text/css"> |
| body {max-width: 900px;} |
| table.news col.title {width: 30%;} |
| /*img {max-width: 520px;}*/ |
| table.news {table-layout: fixed; border-collapse: collapse; width: 100%;} |
| table.news td {border-top: solid thin black; padding: 10px; overflow: visible;} |
| table.news tr {vertical-align: top;} |
| table.news tr td.section {font-size: 20px; font-weight: bold;} |
| table.news tr td.title {vertical-align: top; font-weight: bold;} |
| table.news tr td.content {vertical-align: top;} |
| ul {padding-left: 13px;} |
| </style> |
| <title>Eclipse Project 4.16 - New and Noteworthy</title> |
| </head> |
| |
| <body> |
| <h2>Java development tools</h2> |
| <ul> |
| <li><a href="#Java14">Java™ 14 Support</a></li> |
| <li><a href="#JavaEditor">Java Editor</a></li> |
| <li><a href="#JavaFormatter">Java Formatter</a></li> |
| <li><a href="#Debug">Debug</a></li> |
| <li><a href="#Preferences">Preferences</a></li> |
| </ul> |
| |
| <!-- ****************** START OF N&N TABLE ****************** --> |
| <table class="news"> |
| <colgroup> |
| <col class="title" /> |
| <col /> |
| </colgroup> |
| <tbody> |
| |
| <!-- ******************* Java 14 Support ************************************* --> |
| <tr> |
| <td id="Java14" class="section" colspan="2"> |
| <h2>Java™ 14 Support </h2></td> |
| </tr> |
| <tr id="Java_14"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=549808 --> |
| <td class="title">Java 14</td> |
| <td class="content"> |
| <a href="http://jdk.java.net/14/">Java 14</a> is out and Eclipse JDT supports Java 14 for 4.16. |
| <p> |
| </p> |
| |
| The release notably includes the following Java 14 features: |
| <ul> |
| <li><a href="http://openjdk.java.net/jeps/361">JEP 361: Switch Expressions (Standard)</a></li> |
| <li><a href="http://openjdk.java.net/jeps/359">JEP 359: Records (Preview)</a></li> |
| <li><a href="http://openjdk.java.net/jeps/368">JEP 368: Text Blocks (Second Preview)</a></li> |
| <li><a href="http://openjdk.java.net/jeps/305">JEP 305: Pattern Matching for Instanceof (Preview)</a></li> |
| </ul> |
| |
| <p> |
| Please note that the <a href="#enable-preview">enable preview features</a> option should be on for <a href="http://openjdk.java.net/projects/jdk/14/">preview language features</a>. |
| For an informal introduction of the support, |
| please refer to the <a href="https://wiki.eclipse.org/Java14/Examples">Java 14 Examples wiki</a>. |
| </p> |
| </td> |
| </tr> |
| <tr id="jdk-compliance-14"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=551493 --> |
| <td class="title">Set JDK Compliance to 14</td> |
| <td class="content"> |
| You can set the JDK compliance to 14 and enable the preview features in <b>Preferences > Java > Compiler:</b> |
| <p><img src="images/jdk-compliance-14.png" alt=""/></p> |
| </td> |
| </tr> |
| <tr id="new-record-template"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=553479 --> |
| <td class="title">Template to create new record</td> |
| <td class="content"> |
| You can use the <code>new_record</code> template to create a record in an empty <code>.java</code> file: |
| <p><img src="images/newrecord.png" alt=""/></p> |
| </td> |
| </tr> |
| <tr id="new-record-creation-wizard"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=553473 --> |
| <td class="title">Record Creation Wizard</td> |
| <td class="content"> |
| You can create a new record using the Record creation wizard that can be opened by: |
| <ul> |
| <li>Right Click on the <b>Project > New > Record</b></li> |
| <li>Right Click on the <b>Project > New > Other and search for Record</b></li> |
| <li>Right Click on the <b>Project > New > Other > Java > Record</b></li> |
| </ul> |
| The Record creation wizard comes up as shown below. |
| <p><img src="images/fileAddJ14RecordCreation.png" alt=""/></p> |
| <em>Note: In older workspaces the "Record" entry may not appear directly under the "New" menu in the Java perspective. To resolve this, either use a new workspace or launch eclipse with the option <code>-clearPersistedState</code> for your existing workspace.</em> |
| </td> |
| </tr> |
| <tr id="enable-preview"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=560576 --> |
| <td class="title">Enable preview features</td> |
| <td class="content"> |
| You can now quickly enable the preview features on an applicable Java project by right-clicking on it and selecting <b>Configure > Enable preview features</b>: |
| <p><img src="images/enable-preview.png" alt=""/></p> |
| You can also change the default severity (warning) of the preview features compile problem in the opened <b>Project properties</b> dialog: |
| <p><img src="images/preview-severity.png" alt=""/></p> |
| </td> |
| </tr> |
| <!-- ******************* End of Java 14 Support ************************************* --> |
| |
| <!-- ******************* Java Editor ************************************* --> |
| <tr> |
| <td id="JavaEditor" class="section" colspan="2"> |
| <h2>Java Editor </h2> |
| </td> |
| </tr> |
| |
| <tr id="default-non-blocking-completion"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=558893 --> |
| <td class="title">Non-blocking Java code completion</td> |
| <td class="content"> |
| By default, code completions in the <b>Java editor</b> are now configured to be computed (when possible) in a separate non-UI thread |
| in order to prevent UI freezes in case of long computations. |
| <p>Users can restore the legacy behavior in <b>Preferences > Java > Editor > Content Assist > Advanced</b> by unchecking the |
| <b>enable non-blocking completion</b> checkbox; integrators |
| can change the value of the <code>org.eclipse.jdt.ui.content_assist_noUIThread_computation</code> to <code>false</code>.</p> |
| <p><img src="images/jdtNonBlockingCompletionPref.png" alt=""/></p> |
| </td> |
| </tr> |
| |
| <tr id="merge-conditional"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=562592 --> |
| <td class="title">Merge control workflows</td> |
| <td class="content"> |
| A new clean up has been added that merges conditions of if/else if/else that have the same blocks when it is possible. |
| <p> |
| The code in the blocks should be the same. |
| An else block may be different and won't be merged. |
| One condition may be made opposite to allow the merge. |
| The conditions are merged with <code>||</code> to keep the control workflow the same. |
| Parenthesis is added to avoid priority issue. |
| Most of the brackets, formatting and comments are kept. |
| </p> |
| <p> |
| To select the clean up, invoke <b>Source > Clean Up...</b>, use a custom profile, and on the <b>Configure...</b> dialog select <b>Merge conditions of if/else if/else that have the same blocks</b> on the <b>Unnecessary Code</b> tab. |
| </p> |
| <p><img src="images/merge-control-workflows-preferences.png" alt="Preferences"/></p> |
| For the given code: |
| <p><img src="images/merge-control-workflows-before.png" alt="Before"/></p> |
| You get this after the clean up: |
| <p><img src="images/merge-control-workflows-after.png" alt="After"/></p> |
| </td> |
| </tr> |
| |
| <tr id="variable-type-inference"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=553025 --> |
| <td class="title">Local variable type inference</td> |
| <td class="content"> |
| A new clean up has been added that makes use of the <code>var</code> keyword for the local variable when it is possible and is enabled only for Java 10 and higher. |
| <p> |
| The clean up replaces the explicit variable type by <code>var</code> when this type can be known by the variable initialization. |
| It also replaces the diamond operator in instance creation by a parameterized type. |
| Eventually, it adds a suffix to initialization number literal to match the variable type. |
| In any case, the variable type is still exactly the same. |
| </p> |
| <p> |
| To select the clean up, invoke <b>Source > Clean Up...</b>, use a custom profile, and on the <b>Configure...</b> dialog select <b>Use the local variable type inference</b> on the <b>Code Style</b> tab. |
| </p> |
| <p><img src="images/var-preferences.png" alt="Preferences"/></p> |
| For the given code: |
| <p><img src="images/var-before.png" alt="Before"/></p> |
| You get this after the clean up: |
| <p><img src="images/var-after.png" alt="After"/></p> |
| </td> |
| </tr> |
| |
| <tr id="lazy-logical"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=551600 --> |
| <td class="title">Prefer lazy logical operators</td> |
| <td class="content"> |
| A new clean up has been added that replaces eager logical operators by lazy operators when it is possible. |
| <p> |
| The clean up respectively replaces <code>|</code> and <code>&</code> by <code>||</code> and <code>&&</code> when the following operands can't make side effect. |
| Any assignments, increments, decrements, object creations or method call may cause side effect. |
| So, in such case, it will keep the eager operator. |
| It also leaves the binary operations as it is. |
| </p> |
| <p> |
| To select the clean up, invoke <b>Source > Clean Up...</b>, use a custom profile, and on the <b>Configure...</b> dialog select <b>Use the lazy logical operator</b> on the <b>Code Style</b> tab. |
| </p> |
| <p><img src="images/lazy-logical-preferences.png" alt="Preferences"/></p> |
| For the given code: |
| <p><img src="images/lazy-logical-before.png" alt="Before"/></p> |
| You get this after the clean up: |
| <p><img src="images/lazy-logical-after.png" alt="After"/></p> |
| </td> |
| </tr> |
| |
| <tr id="quickfix-switch-expression-return-to-yield"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=563209 --> |
| <td class="title">Quick fix to change return statement to yield statement in Switch Expression</td> |
| <td class="content"> |
| A quick fix has been added to convert a <code>return</code> statement in a <code>Switch Expression</code> to <code>yield</code> statement. |
| <p><img src="images/quickfix-switch-expression-return-to-yield.png" alt=""/></p> |
| </td> |
| </tr> |
| <!-- ******************* End of Java Editor ************************************* --> |
| |
| <!-- ******************* Java Formatter ************************************* --> |
| <tr> |
| <td id="JavaFormatter" class="section" colspan="2"> |
| <h2>Java Formatter </h2> |
| </td> |
| </tr> |
| <tr id="formatter-records"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=559954 --> |
| <td class="title">Record declarations support</td> |
| <td class="content"> |
| A lot of new settings have appeared in the formatter profile to control the formatting of <b>record declarations</b>. |
| They are very similar to existing settings related to other type declarations. |
| To see them all, you can use the filter field and type in the keyword <code>record</code>. |
| <p><img src="images/formatter-records.png" alt=""/></p> |
| </td> |
| </tr> |
| <!-- ******************* End of Java Formatter ************************************* --> |
| |
| <!-- *********************** Debug ******************************** --> |
| <tr> |
| <td id="Debug" class="section" colspan="2"> |
| <h2>Debug</h2> |
| </td> |
| </tr> |
| |
| <tr id="synthetic-variables-inspection"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=562795 --> |
| <td class="title">Synthetic variables inspection</td> |
| <td class="content"> |
| The <b>JDT debugger</b> is now capable of inspecting synthetic variables which are generated by the Java compilers. |
| One such example is debugging the following method <code>java.util.stream.ReferencePipeline.filter(Predicate<? super P_OUT>)</code> |
| and inspecting the <code>predicate</code> variable. |
| <p>Before:</p> |
| <p><img src="images/synthetic_var_without_fix.png" alt=""/></p> |
| <p>Now:</p> |
| <p><img src="images/synthetic_var_with_fix.png" alt=""/></p> |
| </td> |
| </tr> |
| <!--************************ End of Debug ******************************** --> |
| |
| <!-- ****************** Preferences ************************************* --> |
| <tr> |
| <td id="Preferences" class="section" colspan="2"> |
| <h2>Preferences </h2> |
| </td> |
| </tr> |
| |
| <tr id="substring-matching-default"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=561264 --> |
| <td class="title">Substring Matching</td> |
| <td class="content"> |
| The content assist preference option <b>Show Substring Matches</b> has been removed and the feature is now always enabled. |
| <p> |
| Any application or user can still disable it using the VM property: |
| <b><span style="white-space: nowrap;">-Djdt.codeCompleteSubstringMatch=false</span></b> |
| </p> |
| </td> |
| </tr> |
| <!-- ****************** End of Preferences ************************************* --> |
| |
| </tbody> |
| </table> |
| <!-- ****************** END OF N&N TABLE ****************** --> |
| |
| <script type="text/javascript" src="scripts.js"></script> |
| <p style="text-align:center"> |
| <a href="platform.php">Previous</a> <a style="margin:1em" href=".">Up</a> <a href="platform_isv.php">Next</a> |
| </p> |
| </body> |
| </html> |