<!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.19 - New and Noteworthy</title>
</head>

<body>
<h2>Java development tools</h2>
<ul>
	<!--<li><a href="#JavaXX">Java&trade; XX Support</a></li>-->
	<li><a href="#JUnit">JUnit</a></li>
	<li><a href="#JavaEditor">Java Editor</a></li>
	<li><a href="#JavaViewsAndDialogs">Java Views and Dialogs</a></li>
	<li><a href="#JavaFormatter">Java Formatter</a></li>
	<li><a href="#Debug">Debug</a></li>
	<li><a href="#JDTDev">JDT Developers</a></li>
</ul>

<!-- ****************** START OF N&N TABLE ****************** -->
<table class="news">
<colgroup>
  <col class="title" />
  <col />
</colgroup>
<tbody>

  <!-- ******************* Java XX Support ************************************* -->
  <!--
  <tr>
    <td id="JavaXX" class="section" colspan="2">
    <h2>Java&trade; XX Support </h2>
    </td>
  </tr>
  -->
  <!-- ******************* End of Java XX Support ************************************* -->

  <!-- ******************* JUnit ************************************* -->
  <tr>
    <td id="JUnit" class="section" colspan="2">
    <h2>JUnit</h2>
    </td>
  </tr>
  <!-- ******************* End of JUnit ************************************* -->

  <!-- ******************* Java Editor ************************************* -->
  <tr>
    <td id="JavaEditor" class="section" colspan="2">
    <h2>Java Editor</h2>
    </td>
  </tr>

  <tr id="extract-increment"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570011 -->
    <td class="title"><a href="#extract-increment">Extract increment</a></td>
    <td class="content">
      A new clean up has been added that moves increment or decrement outside an expression.
      <p>
        It moves before the prefix expressions, it moves after the postfix expressions, it converts as postfix expressions, it does not move increments from loop condition and it does not cleanup several increments in the same statement.
      </p>
      <p>
        To apply the clean up, select <b>Extract increment/decrement from statement</b> check box on the <b>Code Style</b> tab in your clean up profile.
      </p>
      <p><img src="images/code-style-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/extract-increment-before.png" alt="Before"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/extract-increment-after.png" alt="After"/></p>
    </td>
  </tr>

  <tr id="java-feature"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569711 -->
    <td class="title"><a href="#java-feature">Java Feature Clean Ups</a></td>
    <td class="content">
      A new tab named <b>Java Feature</b> has been added to the clean up preferences. It lists the clean up options that introduce the use of language features from different Java versions. Relevant clean up options from other tabs have also been moved to this new tab. 
      <p>
        You can use these clean ups while upgrading the Java version in your code.
      </p>
      <p><img src="images/multi-catch-preferences.png" alt="Preferences" width="800 px"/></p>
    </td>
  </tr>

  <tr id="pattern-matching"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=566001 -->
    <td class="title"><a href="#pattern-matching">Pattern matching for instanceof</a></td>
    <td class="content">
      A new clean up has been added that uses pattern matching for the <code>instanceof</code> operator when possible.
      <p>
        It is only applicable for Java 15 or higher when preview features are enabled.
      </p>
      <p>
        To apply the clean up, select <b>Pattern matching for instanceof</b> check box on the <b>Java Feature</b> tab in your clean up profile.
      </p>
      <p>
        For the given code:
      </p>
      <p><img src="images/pattern-matching-before.png" alt="Before"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/pattern-matching-after.png" alt="After"/></p>
    </td>
  </tr>

  <tr id="multi-catch"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569879 -->
    <td class="title"><a href="#multi-catch">Multi-catch clean up</a></td>
    <td class="content">
      A new clean up has been added that converts catch clauses with same body to Java 7's multi-catch.
      <p>
        The feature is enabled only with Java 7 or higher.
      </p>
      <p>
        To apply the clean up, select <b>Use Multi-catch</b> check box on the <b>Java Feature</b> tab in your clean up profile.
      </p>
      <p><img src="images/multi-catch-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/multi-catch-before.png" alt="Before"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/multi-catch-after.png" alt="After"/></p>
    </td>
  </tr>

  <tr id="convert-fields"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570029 -->
    <td class="title"><a href="#convert-fields">Convert fields into local variables</a></td>
    <td class="content">
      A new clean up has been added that refactors a field into a local variable if its use is only local.
      <p>
        The previous value should not be read. The field should be <code>private</code>. The field should not be <code>final</code>. The field should be primitive. The field should not have annotations.
      </p>
      <p>
        To apply the clean up, select <b>Convert fields into local variables if the use is only local</b> check box on the <b>Optimization</b> tab in your clean up profile.
      </p>
      <p><img src="images/optimization-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/convert-fields-before.png" alt="Before cleaning similar tails of blocks"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/convert-fields-after.png" alt="After cleaning similar tails of blocks"/></p>
    </td>
  </tr>

  <tr id="static-inner-class"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569847 -->
    <td class="title"><a href="#static-inner-class">Static inner class</a></td>
    <td class="content">
      A new clean up has been added that makes inner class <code>static</code> if it doesn't use top level class members.
      <p>
        To apply the clean up, select <b>Make inner classes static where possible</b> check box on the <b>Optimization</b> tab in your clean up profile.
      </p>
      <p><img src="images/optimization-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/static-inner-class-before.png" alt="Before cleaning similar tails of blocks"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/static-inner-class-after.png" alt="After cleaning similar tails of blocks"/></p>
    </td>
  </tr>

  <tr id="control-flow-merge"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=568656 -->
    <td class="title"><a href="#control-flow-merge">Pull down common code from if/else statement</a></td>
    <td class="content">
      A new clean up has been added that extracts common code from the end of an <code>if</code> / <code>else if</code> / <code>else</code> control flow.
      <p>
        Ultimately it removes the empty and passive <code>if</code> conditions.
      </p>
      <p>
        The control flow should have an <code>else</code> clause and the duplicate code should not rely on variables declared in the block.
      </p>
      <p>
        The statement matching performs a deep analysis. All the blocks should end with the same set of statements, or the blocks with different code should fall through with a jump statement (<code>return</code>, <code>throw</code>, <code>continue</code> or <code>break</code>).
      </p>
      <p>
        To apply the clean up, select <b>Pull down common code from if/else statement</b> check box on the <b>Duplicate code</b> tab in your clean up profile.
      </p>
      <p><img src="images/control-flow-merge-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/control-flow-merge-before.png" alt="Before cleaning similar tails of blocks"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/control-flow-merge-after.png" alt="After cleaning similar tails of blocks"/></p>
      <p>
        And for the given code where all tails of blocks are identical except one block which falls through:
      </p>
      <p><img src="images/control-flow-merge-jump-statement-before.png" alt="Before cleaning jump statement"/></p>
      <p>
        The identical tails of blocks have been pulled down from the control flow and the falling through block has been left as it is:
      </p>
      <p><img src="images/control-flow-merge-jump-statement-after.png" alt="After cleaning jump statement"/></p>
    </td>
  </tr>

  <tr id="substring"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569800 -->
    <td class="title"><a href="#substring">String.substring()</a></td>
    <td class="content">
      A new clean up has been added that removes the second <code>substring()</code> parameter if this parameter is the length of the string. It's the default value.
      <p>
        It must reference the same expression.
      </p>
      <p>
        The expression must be passive.
      </p>
      <p>
        To apply the clean up, select <b>Redundant String.substring() parameter</b> check box on the <b>Unnecessary code</b> tab in your clean up profile.
      </p>
      <p><img src="images/unnecessary-code-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/substring-before.png" alt="Before cleaning similar tails of blocks"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/substring-after.png" alt="After cleaning similar tails of blocks"/></p>
    </td>
  </tr>

  <tr id="unreachable-block"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569845 -->
    <td class="title"><a href="#unreachable-block">Unreachable block</a></td>
    <td class="content">
      A new clean up has been added that detects two <code>if</code> conditions that are identical and removes the second one.
      <p>
        The conditions should be passive.
      </p>
      <p>
        No exceptions should be awaited.
      </p>
      <p>
        It doesn't create unreachable code below the <code>if</code> statement which would create a compile error.
        That is to say it avoids the case where only the removed block doesn't fall through, all the other cases fall through,
        there are an <code>else</code> clause (not only <code>if</code>/<code>else</code> clauses)
        and a statement after the control workflow.
      </p>
      <p>
        To apply the clean up, select <b>Unreachable block</b> check box on the <b>Unnecessary code</b> tab in your clean up profile.
      </p>
      <p><img src="images/unnecessary-code-preferences.png" alt="Preferences" width="800 px"/></p>
      <p>
        For the given code:
      </p>
      <p><img src="images/unreachable-block-before.png" alt="Before cleaning similar tails of blocks"/></p>
      <p>
        One gets:
      </p>
      <p><img src="images/unreachable-block-after.png" alt="After cleaning similar tails of blocks"/></p>
    </td>
  </tr>

  <tr id="source-fixing"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570773 -->
    <td class="title"><a href="#source-fixing">Source Fixing Clean Ups</a></td>
    <td class="content">
      A new tab named <b>Source Fixing</b> has been added to the clean up preferences. It lists the clean up options that fixes the behavior of the code. The <b>Compare with != 0 for bitwise expression</b> clean up option from <b>Code style</b> tab have also been moved to this new tab. 
      <p>
        ⚠️ Use it carefully. You may get an unexpected behavior. It may trigger zombie code. A zombie code is a dead code that is dead because an error occurs before. The day someone fixes the error, the zombie code comes back to life and alters the behavior. Although most of the cleanups need review, those ones need testing.
      </p>
      <p><img src="images/source-fixing-preferences.png" alt="Preferences" width="800 px"/></p>
    </td>
  </tr>

  <tr id="restricted-identifier-preference"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569759 -->
    <td class="title"><a href="#restricted-identifier-preference">Coloring restricted identifiers</a></td>
    <td class="content">
      A new option named <b>Restricted identifiers</b> has been added under Java category in Java &gt; Editor &gt; Syntax Coloring preferences.
      <p>
         Some identifiers (e.g. var, yield, record etc.) are restricted identifiers because they are not allowed in some contexts.
         Semantic highlighting options for such identifiers can be controlled by the element <strong>Restricted identifiers</strong> 
         under <strong>Java</strong> category in <strong>Java</strong> &gt; <strong>Editor</strong> &gt; <strong>Syntax Coloring</strong> preference page.
      </p>
      <p><img src="images/restricted-identifier-preference.png" alt=""/></p>
    </td>
  </tr>
  <tr id="annotate-for-source-folders"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=509397 -->
    <td class="title"><a href="#annotate-for-source-folders">Externally annotate sources</a></td>
    <td class="content">
      The concept of external null annotations has been extended to apply to source folders, too.
      <p>
        External annotations had been <a href="https://www.eclipse.org/eclipse/news/4.5/jdt.php#external-annotations">introduced in Eclipse 4.5</a>
        in order to overlay not-editable library classes with null annotations to specify the null contract
        against which library calls should be analysed.
        You can now apply the same concept for another kind of classes that should not be edited: generated source code.
      </p>
      <p>
        In the <strong>Java Build Path</strong> dialog, also source folders now have a node "External annotations"
        where a path to Eclipse External Annotation files (.eea) can be configured.
      </p>
      <p><img src="images/annotate-sources-config.png" alt="Configure Annotation Path"/></p>
      <p>
        Given a project that is configured for annotation based null analysis, and given a Java class
        inside a source folder configured for external annotations, the editor now offers a quick assist (<strong>Ctrl+1</strong>)
        for annotating individual type references in the signatures of methods and fields.
      </p>
      <p><img src="images/annotate-sources-assist.png" alt="Configure Annotation Path"/></p>
      <p>
        The selected option will record that the return type should be interpreted as <code>@NonNull List&lt;Attribute&gt;</code>
        (the popup to the right showing the internal format how this annotation will be stored in an .eea file).
        With this annotation in place, the annotated signature will be shown in hovers and will be used for null analysis:
      </p>
      <p><img src="images/annotate-sources-effect.png" alt="Configure Annotation Path"/></p>
    </td>
  </tr>
  <tr id="create-permitted-type-declaration"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570440 -->
    <td class="title"><a href="#create-permitted-type-declaration">Create permitted type declaration</a></td>
    <td class="content">
      You can use the following quick fixes (<strong>Ctrl+1</strong>) to create a new permitted class or interface declaration:
      <p><img src="images/create-permitted-type-declaration.png" alt=""/></p>
      <p>
      The created type will declare the sealed type as its super type and 
      it can be declared as final, non-sealed, or sealed with the available quick fixes for further inheritance control.
      </p>
    </td>
  </tr>
    <tr id="try-with-resources-quick-assist"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570184 -->
    <td class="title"><a href="#try-with-resources-quick-assist">Quick assist to create try-with-resources</a></td>
    <td class="content">
      For expressions returning a type that is <code>AutoClosable</code> there's a new quick assist (<b>Ctrl+1</b>) available: <b>Assign to new local variable in try-with-resources</b>.
      <p><img src="images/try-with-resources-before.png" alt="Bef"/></p>
      <p>
      It creates a new try-with-resources block with the expression assigned to a resource variable.
      The variable type and name can be selected from a few suggestions:
      </p>
      <p><img src="images/try-with-resources-after.png" alt=""/></p>
      <p>
      The default hotkey sequence for this quick assist is <b>Ctrl+2</b> followed by <b>T</b>.
      </p>
    </td>
  </tr>
  <tr id="add-catch-to-try-with-resources-assists"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570762 -->
    <td class="title"><a href="#add-catch-to-try-with-resources-assists">Add catch clause to try-with-resources assists</a></td>
    <td class="content">
      There are multiple assists to surround auto-closeable statements in a try-with-resources statement including <b>Surround with -> Try-with-resources Block</b>.  Now, all forms will add
      a <code>catch</code> clause for any exceptions (such as <code>IOException</code>) thrown by the auto-close if not already handled via an existing <code>catch</code> clause 
      or <code>throws</code> directive.  In the case where the existing code catches or throws an exception that sub-classes the exceptions of the new <code>catch</code> clause, an 
      additional <code>catch</code> clause will be added to rethrow the exception to ensure code logic remains consistent.
      <p><img src="images/add-catch-clause-to-try-with-resources-before.png" alt=""/></p>
      <p><img src="images/add-catch-clause-to-try-with-resources-after.png" alt=""/</p>
    </td>
  </tr>

  <!-- ******************* End of Java Editor ************************************* -->

  <!-- ******************* Java Views and Dialogs ************************************* -->
  <tr>
    <td id="JavaViewsAndDialogs" class="section" colspan="2">
    <h2>Java Views and Dialogs</h2>
    </td>
  </tr>
  
  <tr id="parallel-index-search"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=567521 -->
      <td class="title"><a href="#parallel-index-search">Parallel index search</a></td>
      <td class="content">
      	  A new preference option has been added and enabled by default:
      	  <b>Preferences &gt; Java &gt; Enable parallel index search</b>.  
      	  Depending on the available hardware, this option should improve performance 
      	  for all index based Java search operations, but could also lead to possible regressions. 
      	  To switch back to the old sequential index search, turn this option off: 
          <p>
            <img src="images/parallel-index-search.png" alt="" />
          </p>
      </td>
  </tr>
  
  <tr id="mockito-static-imports"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=562639 -->
      <td class="title"><a href="#mockito-static-imports">static import org.mockito.Mockito.*  available as favorite</a></td>
      <td class="content">
      	Imports for static org.mockito.Mockito.* are added to the Java favorites in the preferences under Java -> Editor -> Content Assists -> Favorites.
      	This way the organize imports action in the IDE will automatically add static imports to this class in your use the Mockito library in your tests.
       </td>
  </tr>
  
  <!-- ******************* End of Java Views and Dialogs ************************************* -->

  <!-- ******************* Java Compiler ************************************* -->
  <tr>
    <td id="JavaCompiler" class="section" colspan="2">
    <h2>Java Compiler</h2>
    </td>
  </tr>
  <!-- ******************* End of Java Compiler ************************************* -->

  <!-- ******************* Java Formatter ************************************* -->
  <tr>
    <td id="JavaFormatter" class="section" colspan="2">
    <h2>Java Formatter </h2>
    </td>
  </tr>
  <!-- ******************* End of Java Formatter ************************************* -->
  
  <!-- *********************** Debug ******************************** -->
  <tr>
    <td id="Debug" class="section" colspan="2">
    <h2>Debug</h2>
    </td>
  </tr>
 
  <tr id="toggle-tracepoints"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569135 -->
      <td class="title"><a href="#toggle-tracepoints">Toggle tracepoints in editor ruler</a></td>
      <td class="content">
          A new "Toggle Tracepoint" context-menu entry has been added to the Java editor line ruler.
          Both the "Toggle Tracepoint" options i.e. the new context-menu entry and the existing option under "Run" menu have a new icon 
          and are now available for Java class files also along with Java source files.
          <p>
            <img src="images/toggle-tracepoints.png" alt="screenshot showing new menu" />
          </p>
      </td>

  </tr>
     <tr id="toggle-breakpoints-works-onlistwithabstract"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=563208 -->
     <td class="title"><a href="#toggle-breakpoints-works-listofmethods-including-abstract">Toggle breakpoint on a list of methods including abstract method</a></td>
       <td class="content">
         You can now <b>Toggle Method Breakpoint</b> on a list of methods which includes an abstract method. 
          <p>
            <img src="images/debug-toggle-breakpoint.png" alt="screenshot showing enabled Toggle breakpoint" />
          </p>
      </td>
    </tr>
  
  <!--************************ End of Debug ******************************** -->

  <!-- *********************** JDT Developers ******************************** -->
  <tr>
    <td id="JDTDev" class="section" colspan="2">
    <h2>JDT Developers</h2>
    </td>
  </tr>
  <!-- *********************** End of JDT Developers ******************************** -->
</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>
