blob: 0d2a9d0a0f962ecfcec1d95d29966cbdd5287b22 [file] [log] [blame]
<!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.14 - New and Noteworthy</title>
</head>
<body>
<h2>Java development tools</h2>
<ul>
<li><a href="#Java13">Java&trade; 13 Support</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="#JUnit">JUnit</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 13 Support ************************************* -->
<tr>
<td id="Java13" class="section" colspan="2">
<h2>Java&trade; 13 Support </h2></td>
</tr>
<tr id="Java_13"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=539066 -->
<td class="title">Java&trade; 13</td>
<td class="content">
<a href="https://jdk.java.net/13/">Java&trade; 13</a> is available and Eclipse JDT supports Java 13 for the Eclipse 4.14 release.
<p>
The release notably includes the following Java 13 features:
<br/>
<a href="https://openjdk.java.net/jeps/354"> JEP 354: Switch Expressions (Preview)</a>.
<br/>
<a href="https://openjdk.java.net/jeps/355"> JEP 355: Text Blocks (Preview)</a>.
</p>
<p>
Please note that these are <a href="https://openjdk.java.net/projects/jdk/13/"> preview language features</a>
and hence enable preview option should be on.
For an informal introduction of the support,
please refer to <a href="https://wiki.eclipse.org/Java13/Examples"> Java 13 Examples wiki</a>.
</p>
</td>
</tr>
<tr id="Text_Block_Creation_Keyboard_ShortCut"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=550113 -->
<td class="title">Keyboard shortcut for Text Block creation</td>
<td class="content">
A keyboard shortcut <b>Ctrl + Shift + ' </b>is added in the Java Editor for <b>text blocks</b>, which is a preview feature
added in Java 13.
<p>
Conditions under which this keyboard shortcut works are:
</p>
<ul>
<li>The Java Project should have a compliance of 13 or above and the preview features should be enabled.</li>
<li>The selection in the editor should not be part of a string or a comment or a text block.</li>
</ul>
<p> Examples: </p>
<p><img src="images/textblock-pre-creation1.png" alt=""/></p>
Pressing the shortcut gives:
<p><img src="images/textblock-post-creation1.png" alt=""/></p>
<p> You can also encompass a selected text in text block as below:</p>
<p><img src="images/textblock-pre-creation2.png" alt=""/></p>
On pressing the shortcut, you get this:
<p><img src="images/textblock-post-creation2.png" alt=""/></p>
</td>
</tr>
<!-- ******************* End of Java 13 Support ************************************* -->
<!-- ******************* Java Editor ************************************* -->
<tr>
<td id="JavaEditor" class="section" colspan="2">
<h2>Java Editor </h2>
</td>
</tr>
<tr id="unnecessary-array-creation"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=550129 -->
<td class="title">Remove unnecessary array creation</td>
<td class="content">
A new cleanup action <b>Remove unnecessary array creation</b> has been added. It will remove explicit array creation for <code>varargs</code> parameters.
<p><img src="images/unnecessary-array-creation-option.png" alt=""/></p>
For the given code:
<p><img src="images/unnecessary-array-creation-before.png" alt=""/></p>
After cleanup, you get this:
<p><img src="images/unnecessary-array-creation-after.png" alt=""/></p>
</td>
</tr>
<tr id="push-down-negation"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=550913 -->
<td class="title">Push negation down in expression</td>
<td class="content">
A new Java cleanup/save action <b>Push down negation</b> has been added. It reduces the double negation by reverting the arithmetic expressions.
<p>
For instance:
</p>
<p><code>!!isValid;</code> becomes <code>isValid;</code></p>
<p><code>!(a != b);</code> becomes <code>(a == b);</code></p>
<p><img src="images/push-down-negation.png" alt="Push negation down cleanup"/></p>
</td>
</tr>
<tr id="templates-empty-java-file"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=505610 -->
<td class="title">Provide templates for empty Java source files</td>
<td class="content">
When dealing with empty Java source files, some basic templates (class, interface, enum) will now be available from the content assist popup.
<p><img src="images/templates-empty-java-file.png" alt=""/></p>
</td>
</tr>
<tr id="postfix-completion"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=458804 -->
<td class="title">Postfix completion proposal category</td>
<td class="content">
Postfix completion allows certain kinds of language constructs to be applied to the previously entered text.
<p>For example: Entering <code>"input text".var</code> and selecting the <b>var - Creates a new variable</b> proposal, will result in <code>String name = "input text"</code>.</p>
<p><img src="images/postfix-completion.png" alt=""/></p>
</td>
</tr>
<tr id="try-with-resources"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=473276 -->
<td class="title">try-with-resources quickfix</td>
<td class="content">
A <b>quickfix</b> has been added to create a <code>try-with-resources</code> statement based on the selected lines. Lines that are selected
must start with declarations of objects that implement <code>AutoCloseable</code>. These declarations are added as
the resources of the <code>try-with-resources</code> statement.
<p>
If there are selected statements that are not eligible resources (such as Objects that don't implement <code>AutoCloseable</code>),
then the first such statement and all the following selected statements will be placed in the <code>try-with-resources</code> body.
</p>
Method before applying try-with-resources:
<p><img src="images/tryWithResource1.png" alt=""/></p>
Select all the lines inside the method, then use the short-cut <b>Ctrl+1</b> and click on <b>Surround with try-with-resources</b> from the list:
<p><img src="images/tryWithResource2.png" alt=""/></p>
This results in:
<p><img src="images/tryWithResource3.png" alt=""/></p>
</td>
</tr>
<tr id="module-javadoc-checking"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=549855 -->
<td class="title">Javadoc tag checking for modules</td>
<td class="content">
Support has been added to check the Javadoc of a module-info.java file to report
missing and duplicate <code>@uses</code> and <code>@provides</code> tags depending on
the compiler settings (<b>Preferences &gt; Java &gt; Compiler &gt; Javadoc</b>).
<p><img src="images/checkModuleJavadoc.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>
-->
<!-- ******************* 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>
<tr id="formatter-text-block"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=551984 -->
<td class="title">Formatting of text blocks</td>
<td class="content">
The code formatter can now handle <b>text blocks</b>, which is a preview feature added in Java 13.
It's controlled by the <b>Text block indentation</b> setting, found right in the <b>Indentation</b> section of the <b>Profile Editor</b> (<b>Preferences &gt; Java &gt; Code Style &gt; Formatter &gt; Edit...</b>).
<p>By default, text block lines are indented the same way as wrapped code lines, that is with two extra tabs relative
to the starting indentation (or whatever is set as <b>Default indentation for wrapped lines</b> in the <b>Line Wrapping</b> section).
You can also set it to use only one tab for indentation (<b>Indent by one</b>), align all lines to the position of the opening quotes
(<b>Indent on column</b>), or preserve the original formatting (<b>Do not touch</b>).
</p>
<p><img src="images/formatter-text-block.png" alt=""/></p>
</td>
</tr>
<tr id="formatter-javadoc-tags-blank-lines"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=54627 -->
<td class="title">Blank lines between Javadoc tags</td>
<td class="content">
The code formatter can now divide Javadoc tags into groups (by type, for example <code>@param</code>, <code>@throws</code>, <code>@returns</code>) and separate these groups with blank lines.
This feature can be turned on in the <b>Comments &gt; Javadocs</b> section by checking the <b>Blank lines between tags of different type</b> box.
<p><img src="images/formatter-javadoc-tags-blank-lines.png" alt=""/></p>
</td>
</tr>
<tr id="formatter-space-before-not"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=552919 -->
<td class="title">Space after not operator</td>
<td class="content">
A new setting has been added to control whether a space should be added <b>after not (<code>!</code>) operator</b>, independently from other unary operators.
To find it, expand sections <b>Whitespace &gt; Expressions &gt; Unary operators</b> and go to the last checkbox.
<p><img src="images/formatter-space-after-not.png" alt=""/></p>
</td>
</tr>
<!-- ******************* End of Java Formatter ************************************* -->
<!-- ******************* JUnit ************************************* -->
<tr>
<td id="JUnit" class="section" colspan="2">
<h2>JUnit</h2>
</td>
</tr>
<tr id="junit-runtime-bree"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=551728 -->
<td class="title">BREE update for org.eclipse.jdt.junit.runtime</td>
<td class="content">
The Bundle Required Execution Environment (BREE) for the <code>org.eclipse.jdt.junit.runtime</code> bundle is now J2SE-1.5.
</td>
</tr>
<!-- ******************* End of JUnit ************************************* -->
<!-- *********************** Debug ******************************** -->
<tr>
<td id="Debug" class="section" colspan="2">
<h2>Debug</h2>
</td>
</tr>
<tr id="exception-instance-recurrence"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=284158 -->
<td class="title">No suspending on exception recurrence</td>
<td class="content">
A new workspace preference has been added for exception breakpoints: <b>Suspend policy for recurring exception instances</b> controls
whether the same exception <em>instance</em> may cause the debugger to suspend more than once.
<p><img src="images/preference-exception-recurrence.png" alt="Preferences: Java > Debug"/></p>
<p>This option is relevant when debugging an application that has <code>try</code> blocks at several levels of the architecture.
In this situation an exception breakpoint may fire multiple times for the same actual exception <em>instance</em>:
A <code>throw</code> statement inside a <code>catch</code> block may re-throw the same exception.
The same holds for each <code>finally</code> block or <code>try-with-resources</code> block.
</p>
<p>When the debugger stops due to an exception breakpoint, you may want to continue your debug session by pressing
<b>Resume</b> (<b>F8</b>), but all that catching and re-throwing will force you to observe
all locations where the same exception will surface again and again. Suspending at all <code>try</code> blocks
on the call stack may also spoil your context of open Java editors, by opening more editors of classes that are
likely irrelevant for the debugging task at hand.</p>
<p>The <b>JDT Debugger</b> will now detect this situation, and the first time it notices the same exception instance
recurring at the surface, a new question dialog is shown:
</p>
<p><img src="images/dialog-exception-recurrence.png" alt="Dialog: Repeated exception occurrence"/></p>
<p>If you select <b>Skip</b> in this dialog, the current exception instance will be dismissed for good.
Still, new instances of the same exception type will cause suspending when they are thrown.
</p>
<p>If you check <b>Remember my decision</b> your choice will be stored in the mentioned workspace preference
to be effective for all exception breakpoints.
</p>
<p>Even after choosing <b>Skip</b> &mdash; resp. <b>Only once</b> in the preferences &mdash; you can have the old behavior
simply by pressing <b>Step Return</b> (<b>F7</b>) instead of <b>Resume</b>.</p>
</td>
</tr>
<!--************************ End of Debug ******************************** -->
<!-- *********************** JDT Developers ******************************** -->
<tr>
<td id="JDTDev" class="section" colspan="2">
<h2>JDT Developers</h2>
</td>
</tr>
<tr id="completion-ext-flag-uithread"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=538630 -->
<td class="title">Flag whether content assist extension needs to run in UI thread</td>
<td class="content">
The existing <code>org.eclipse.jdt.ui.javaCompletionProposalComputer</code>, <code>org.eclipse.jdt.ui.javadocCompletionProposalComputer</code>
and <code>org.eclipse.jdt.ui.javaCompletionProposalSorters</code> extension points now allow a new attribute <b>requiresUIThread</b> that allows
a developer to declare whether running in the UI thread is required or not.
<p>
This information will be used by the <b>Content Assist</b> operation to allow some optimizations and prevent UI freezes by reducing the amount of
work happening in the UI thread.
</p>
<p>
To preserve backward compatibility, the default value for this attribute (if unset) is <code>true</code>, meaning the extension is expected to
run in the UI thread.
</p>
</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>