blob: 2d0d6145135e4773e12ed3255c86b90a2300c8d2 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.4">
<title>Eclipse IDE, Photon Edition New and Noteworthy</title>
<style>
@CHARSET "UTF-8";
div.paragraph, div.ulist {
margin-left: 2em;
}
div.paragraph span.image img {
max-width: 100%;
}
div.paragraph code {
white-space: nowrap;
}
div.sect3 {
margin-left: 2em;
margin-bottom: 3em;
}
div.ulist p {
margin-bottom: 0;
}
div.imageblock {
margin-left: 6em;
}
div.admonitionblock {
margin: 1em;
padding: 0px;
border-radius: 8px;
border-style: solid;
border-width: 1px;
}
div.admonitionblock td {
padding: 10px;
}
div.admonitionblock .icon {
font-weight: bold;
}
div.imageblock img {
box-shadow: 10px 10px 5px #888888;
margin-bottom: 15px;
max-width: 100%;
}
</style>
<style>
/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
/*pre.CodeRay {background-color:#f7f7f8;}*/
.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
.CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
table.CodeRay td{vertical-align: top;line-height:1.45}
table.CodeRay td.line-numbers{text-align:right}
table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
table.CodeRay td.code{padding:0 0 0 .5em}
table.CodeRay td.code>pre{padding:0}
.CodeRay .debug{color:#fff !important;background:#000080 !important}
.CodeRay .annotation{color:#007}
.CodeRay .attribute-name{color:#000080}
.CodeRay .attribute-value{color:#700}
.CodeRay .binary{color:#509}
.CodeRay .comment{color:#998;font-style:italic}
.CodeRay .char{color:#04d}
.CodeRay .char .content{color:#04d}
.CodeRay .char .delimiter{color:#039}
.CodeRay .class{color:#458;font-weight:bold}
.CodeRay .complex{color:#a08}
.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
.CodeRay .color{color:#099}
.CodeRay .class-variable{color:#369}
.CodeRay .decorator{color:#b0b}
.CodeRay .definition{color:#099}
.CodeRay .delimiter{color:#000}
.CodeRay .doc{color:#970}
.CodeRay .doctype{color:#34b}
.CodeRay .doc-string{color:#d42}
.CodeRay .escape{color:#666}
.CodeRay .entity{color:#800}
.CodeRay .error{color:#808}
.CodeRay .exception{color:inherit}
.CodeRay .filename{color:#099}
.CodeRay .function{color:#900;font-weight:bold}
.CodeRay .global-variable{color:#008080}
.CodeRay .hex{color:#058}
.CodeRay .integer,.CodeRay .float{color:#099}
.CodeRay .include{color:#555}
.CodeRay .inline{color:#000}
.CodeRay .inline .inline{background:#ccc}
.CodeRay .inline .inline .inline{background:#bbb}
.CodeRay .inline .inline-delimiter{color:#d14}
.CodeRay .inline-delimiter{color:#d14}
.CodeRay .important{color:#555;font-weight:bold}
.CodeRay .interpreted{color:#b2b}
.CodeRay .instance-variable{color:#008080}
.CodeRay .label{color:#970}
.CodeRay .local-variable{color:#963}
.CodeRay .octal{color:#40e}
.CodeRay .predefined{color:#369}
.CodeRay .preprocessor{color:#579}
.CodeRay .pseudo-class{color:#555}
.CodeRay .directive{font-weight:bold}
.CodeRay .type{font-weight:bold}
.CodeRay .predefined-type{color:inherit}
.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
.CodeRay .key{color:#808}
.CodeRay .key .delimiter{color:#606}
.CodeRay .key .char{color:#80f}
.CodeRay .value{color:#088}
.CodeRay .regexp .delimiter{color:#808}
.CodeRay .regexp .content{color:#808}
.CodeRay .regexp .modifier{color:#808}
.CodeRay .regexp .char{color:#d14}
.CodeRay .regexp .function{color:#404;font-weight:bold}
.CodeRay .string{color:#d20}
.CodeRay .string .string .string{background:#ffd0d0}
.CodeRay .string .content{color:#d14}
.CodeRay .string .char{color:#d14}
.CodeRay .string .delimiter{color:#d14}
.CodeRay .shell{color:#d14}
.CodeRay .shell .delimiter{color:#d14}
.CodeRay .symbol{color:#990073}
.CodeRay .symbol .content{color:#a60}
.CodeRay .symbol .delimiter{color:#630}
.CodeRay .tag{color:#008080}
.CodeRay .tag-special{color:#d70}
.CodeRay .variable{color:#036}
.CodeRay .insert{background:#afa}
.CodeRay .delete{background:#faa}
.CodeRay .change{color:#aaf;background:#007}
.CodeRay .head{color:#f8f;background:#505}
.CodeRay .insert .insert{color:#080}
.CodeRay .delete .delete{color:#800}
.CodeRay .change .change{color:#66f}
.CodeRay .head .head{color:#f4f}
</style>
</head>
<body class="book toc2 toc-left">
<div id="header">
<h1>Eclipse IDE, Photon Edition New and Noteworthy</h1>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#platform">Platform</a>
<ul class="sectlevel2">
<li><a href="#windows">Windows</a></li>
<li><a href="#macos">MacOS</a></li>
<li><a href="#gtk3">GTK3</a></li>
<li><a href="#gtk_theme-override-support-for-swt-gtk3">GTK_THEME override support for SWT-GTK3</a></li>
<li><a href="#editors">Editors</a></li>
<li><a href="#dark-theme">Dark Theme</a></li>
<li><a href="#other">Other</a></li>
</ul>
</li>
<li><a href="#jdt">Java&#8482; development tools</a>
<ul class="sectlevel2">
<li><a href="#java-10-support">Javaâ„¢ 10 Support</a></li>
<li><a href="#java-9-support">Javaâ„¢ 9 Support</a></li>
<li><a href="#junit">JUnit</a></li>
<li><a href="#java-editor">Java Editor</a></li>
<li><a href="#java-views-and-dialogs">Java Views and Dialogs</a></li>
<li><a href="#java-compiler">Java Compiler</a></li>
<li><a href="#java-formatter">Java Formatter</a></li>
<li><a href="#debug">Debug</a></li>
<li><a href="#jdt-developers">JDT Developers</a></li>
</ul>
</li>
<li><a href="#open-source-projects">Open Source Projects</a></li>
<li><a href="#sources">Sources</a></li>
<li><a href="#notices">Notices</a></li>
</ul>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="platform"><a class="anchor" href="#platform"></a>Platform</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="windows"><a class="anchor" href="#windows"></a>Windows</h3>
<div class="sect3">
<h4 id="improved-tree-and-table-widget-scaling-at-high-dpi-on-windows"><a class="anchor" href="#improved-tree-and-table-widget-scaling-at-high-dpi-on-windows"></a>Improved Tree and Table widget scaling at high DPI on Windows</h4>
<div class="paragraph">
<p>Trees and Tables scale Checkboxes and expand/collapse buttons properly.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/tree-table-scaling.png" alt="Tree widget image before and after">
</div>
</div>
</div>
<div class="sect3">
<h4 id="dropped-support-for-windows-xp"><a class="anchor" href="#dropped-support-for-windows-xp"></a>Dropped support for Windows XP</h4>
<div class="paragraph">
<p>Eclipse/SWT has dropped support for the Windows XP Operating System and other Windows versions older than Windows Vista. Microsoft support for Windows XP, including security updates, ended in April 2014 and Windows XP has not been listed as a target environment for the Eclipse Platform for several years.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="macos"><a class="anchor" href="#macos"></a>MacOS</h3>
<div class="sect3">
<h4 id="improved-readability-of-default-text-font-on-macos"><a class="anchor" href="#improved-readability-of-default-text-font-on-macos"></a>Improved readability of default text font on macOS</h4>
<div class="paragraph">
<p>Reading the source code is the task developers perform the most during coding. So text editors must assist the user as good as possible with that.</p>
</div>
<div class="paragraph">
<p>On macOS Eclipse Photon now uses the "Menlo" font as the default text font, which does also contain bold font faces. This increases readability in source code editors using bold font faces:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/Menlo.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="dark-buttons-on-mac"><a class="anchor" href="#dark-buttons-on-mac"></a>Dark buttons on Mac</h4>
<div class="paragraph">
<p>The background color of a button can now be styled on the Mac. This is used to style the buttons in the dark theme.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/dark-mac-buttons.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="animated-waiting-cursor-on-macos"><a class="anchor" href="#animated-waiting-cursor-on-macos"></a>Animated waiting cursor on macOS</h4>
<div class="paragraph">
<p>During long taking UI actions the cursor switches to a waiting cursor. On macOS this used to be a static black/white circle. From Eclipse Photon the macOS system&#8217;s busy cursor is changed to a spinning blue ball (also called beach ball).</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/macos-wait-cursor.png" alt="image">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="gtk3"><a class="anchor" href="#gtk3"></a>GTK3</h3>
<div class="sect3">
<h4 id="improved-caret-performance-on-gtk3"><a class="anchor" href="#improved-caret-performance-on-gtk3"></a>Improved caret performance on GTK3</h4>
<div class="paragraph">
<p>Caret performance on the SWT GTK3 port has been enhanced to allow for smoother drawing. Previously the caret stuttered when moved or when other controls in the same shell were manipulated. Now the caret moves smoothly and blinks at a consistent rate.</p>
</div>
</div>
<div class="sect3">
<h4 id="accessibility-support-on-gtk3"><a class="anchor" href="#accessibility-support-on-gtk3"></a>Accessibility support on GTK3</h4>
<div class="paragraph">
<p>Significant improvements have been made in the <strong>Accessibility</strong> support on the SWT Linux/GTK3 port. Users are able to use assistive technologies seamlessly with SWT GTK3, just as they were able to with GTK2, and without any hangs or crashes.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="gtk_theme-override-support-for-swt-gtk3"><a class="anchor" href="#gtk_theme-override-support-for-swt-gtk3"></a>GTK_THEME override support for SWT-GTK3</h3>
<div class="paragraph">
<p>Eclipse SWT on GTK3.14+ now supports the use of GTK_THEME as an environment variable. SWT applications are correctly styled when using the GTK_THEME environment variable to override the system theme, and/or specify a dark variant. Below are the before and after screenshots of ControlExample running with GTK_THEME=Adwaita:dark set.</p>
</div>
<div class="paragraph">
<p>Before:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/gtk3-theme-override-support-before.png" alt="before">
</div>
</div>
<div class="paragraph">
<p>After:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/gtk3-theme-override-support-after.png" alt="after">
</div>
</div>
<div class="sect3">
<h4 id="improved-memory-usage-on-swt-gtk3"><a class="anchor" href="#improved-memory-usage-on-swt-gtk3"></a>Improved memory usage on SWT-GTK3</h4>
<div class="paragraph">
<p>Eclipse SWT on GTK3 has reduced memory usage after resolving a memory leak in setBackground/setForeground Color machinery. The leak was approximately 50MB/hour and affected clients running SWT on GTK3.14+.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="editors"><a class="anchor" href="#editors"></a>Editors</h3>
<div class="sect3">
<h4 id="manage-associations-of-content-types-with-editors"><a class="anchor" href="#manage-associations-of-content-types-with-editors"></a>Manage associations of content types with editors</h4>
<div class="paragraph">
<p>The <em>Content Types</em> preference page was extended to allow to view, create and remove associations with editors.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/content-type-editor-association.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Using the content type to define editor association is to be preferred over using the <em>File Associations</em> preferences.</p>
</div>
</div>
<div class="sect3">
<h4 id="associate-content-type-with-a-file-name-pattern"><a class="anchor" href="#associate-content-type-with-a-file-name-pattern"></a>Associate content type with a file name pattern</h4>
<div class="paragraph">
<p>From the <strong>Preferences &gt; General &gt; Content Types</strong> preference page, you can now associate a content type with a file name pattern and use <code>?</code> or <code>*</code> wildcards at any place in that pattern (respectively to match any character or any string).</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/wildcard-content-type-association.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="browser-editor-can-toggle-auto-refresh"><a class="anchor" href="#browser-editor-can-toggle-auto-refresh"></a>Browser Editor can toggle auto-refresh</h4>
<div class="paragraph">
<p>The Browser Editor now contains a drop down option for enabling auto-refresh for local pages. When enabled, the Browser Editor will automatically refresh if the opened file is edited and saved.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/browser-autorefresh.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="codemining-support-with-sourceviewer"><a class="anchor" href="#codemining-support-with-sourceviewer"></a>CodeMining support with SourceViewer</h4>
<div class="paragraph">
<p>A <strong>code mining</strong> represents a <strong>content</strong> (ex: label, icons) that should be <strong>shown along with source text</strong>, like the number of references, a way to run tests (with run/debug icons), etc. The main goal of code mining is to help developer to understand more the written/writing code</p>
</div>
<div class="paragraph">
<p>A code mining is represented by <code>org.eclipse.jface.text.codemining.ICodeMining</code> which are provided by <code>org.eclipse.jface.text.codemining.ICodeMiningProvider</code> The <code>org.eclipse.jface.text.source.ISourceViewerExtension5</code> provides the capability to register <code>org.eclipse.jface.text.codemining.ICodeMiningProvider</code> and update code minings.</p>
</div>
<div class="paragraph">
<p>The example <a href="http://git.eclipse.org/c/platform/eclipse.platform.text.git/tree/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java">CodeMiningDemo</a> draws <strong>classes references / implementations</strong> code minings:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/codemining-sourceviewer-support.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="detach-view-or-editor-via-its-context-menu"><a class="anchor" href="#detach-view-or-editor-via-its-context-menu"></a>Detach view or editor via its context menu</h4>
<div class="paragraph">
<p>You can now detach a view or an editor via its context menu.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/detach-editor.png" alt="image">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="dark-theme"><a class="anchor" href="#dark-theme"></a>Dark Theme</h3>
<div class="sect3">
<h4 id="improved-text-operation-icons-for-the-dark-theme"><a class="anchor" href="#improved-text-operation-icons-for-the-dark-theme"></a>Improved text operation icons for the dark theme</h4>
<div class="paragraph">
<p>The block selection, word warp and show whitespace icons have been adjusted to look good in the dark theme.</p>
</div>
<div class="paragraph">
<p>Before:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/old-text-toolbar-entries.png" alt="before">
</div>
</div>
<div class="paragraph">
<p>After:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/new-text-toolbar-entries.png" alt="after">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-popup-dialogs-for-the-dark-theme"><a class="anchor" href="#improved-popup-dialogs-for-the-dark-theme"></a>Improved popup dialogs for the dark theme</h4>
<div class="paragraph">
<p>Popup dialogs as for example the platform&#8217;s update notification popup now uses a dark background and a light foreground color in the dark theme.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/update_dialog_dark.png" alt="Update dialog in dark theme">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-text-color-in-text-editor-for-the-dark-theme"><a class="anchor" href="#improved-text-color-in-text-editor-for-the-dark-theme"></a>Improved text color in text editor for the dark theme</h4>
<div class="paragraph">
<p>The text editor now uses an improved font color in the dark theme so that you can read better.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/text-editor-dark-font-new.png" alt="after">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-coloring-of-links-in-code-element-information-in-the-dark-theme"><a class="anchor" href="#improved-coloring-of-links-in-code-element-information-in-the-dark-theme"></a>Improved coloring of links in code element information in the dark theme</h4>
<div class="paragraph">
<p>The colors of links in code element information controls now take the color settings of the "Hyperlink text color" and the "Active hyperlink text color" from the "Colors &amp; Fonts" preference page into account. The readability in the dark theme has been improved a lot by this.</p>
</div>
<div class="paragraph">
<p>Before:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/element_info_before.png" alt="before">
</div>
</div>
<div class="paragraph">
<p>After:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/element_info_after.png" alt="after">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-the-text-editor-s-expand-and-collapse-nodes-for-the-dark-theme"><a class="anchor" href="#improved-the-text-editor-s-expand-and-collapse-nodes-for-the-dark-theme"></a>Improved the text editor&#8217;s expand and collapse nodes for the dark theme</h4>
<div class="paragraph">
<p>The collapse and expand nodes in the text editor&#8217;s left hand side ruler were improved for the dark theme.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/expand_old_new.png" alt="old and new version of the icons">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-the-generic-editor-s-mark-occurrences-annotation-color-for-the-dark-theme"><a class="anchor" href="#improved-the-generic-editor-s-mark-occurrences-annotation-color-for-the-dark-theme"></a>Improved the generic editor&#8217;s mark occurrences annotation color for the dark theme</h4>
<div class="paragraph">
<p>The occurrences annotation marker color in the generic editor&#8217;s left hand side ruler were improved for the dark theme. Image is zoomed for better visibility.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/annotations.png" alt="old and new version of occurrence annotation">
</div>
</div>
</div>
<div class="sect3">
<h4 id="canvas-elements-are-styled-in-the-default-dark-theme"><a class="anchor" href="#canvas-elements-are-styled-in-the-default-dark-theme"></a>Canvas elements are styled in the default dark theme</h4>
<div class="paragraph">
<p>The default dark theme now contains CSS for styling Canvas elements by default.</p>
</div>
<div class="paragraph">
<p>Old:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/color-fonts-canvas-old.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>New:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/color-fonts-canvas-new.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="consistently-use-blue-color-for-links-in-the-dark-theme"><a class="anchor" href="#consistently-use-blue-color-for-links-in-the-dark-theme"></a>Consistently use blue color for links in the dark theme</h4>
<div class="paragraph">
<p>Links now consistently use a light blue color in the dark theme. One example where this was very visible is PDE&#8217;s manifest editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/links_in_dark_theme.png" alt="PDE's mantifest editor showing before and after">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="other"><a class="anchor" href="#other"></a>Other</h3>
<div class="sect3">
<h4 id="open-resource-dialog-highlights-matching-characters"><a class="anchor" href="#open-resource-dialog-highlights-matching-characters"></a>Open resource dialog highlights matching characters</h4>
<div class="paragraph">
<p>The matching characters from the filter are now highlighted in the Open Resource dialog.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/open-resource-highlight-matching.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="import-export-preferences-from-preference-dialog"><a class="anchor" href="#import-export-preferences-from-preference-dialog"></a>Import/export preferences from preference dialog</h4>
<div class="paragraph">
<p>Easily accessible buttons for opening the <strong>Import/Export</strong> preferences wizards have been added to the lower left corner of the <strong>Preferences</strong> dialog. The wizards are still accessible through the <strong>File &gt; Import&#8230;&#8203;</strong> and <strong>File &gt; Export&#8230;&#8203;</strong> wizards.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/preference-import-export.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="expanded-highlighting-in-open-resource-dialog"><a class="anchor" href="#expanded-highlighting-in-open-resource-dialog"></a>Expanded Highlighting in Open Resource Dialog</h4>
<div class="paragraph">
<p>The Open Resource dialog now shows you how the search term matches the found resources by highlighting the names based on camel-case and pattern ( * and ? ) searches.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/open-resource-highlight.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="undo-redo-toolbar-buttons"><a class="anchor" href="#undo-redo-toolbar-buttons"></a>Undo/Redo Toolbar Buttons</h4>
<div class="paragraph">
<p>The main toolbar can now show Undo and Redo buttons.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/undo-redo-toolbar.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>The buttons are not available by default. They can be added via <strong>Window &gt; Perspective &gt; Customize Perspective&#8230;&#8203;</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/undo-redo-customize.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="quickaccess-matches-preference-pages-by-keyword"><a class="anchor" href="#quickaccess-matches-preference-pages-by-keyword"></a>QuickAccess matches Preference pages by keyword</h4>
<div class="paragraph">
<p>QuickAccess (<code>Ctrl+3</code>) now also returns Preference pages that have a keyword matching user input.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/quickAccessMatchesPrefKeywords.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="perfect-matches-appear-first-in-selection-dialogs"><a class="anchor" href="#perfect-matches-appear-first-in-selection-dialogs"></a>Perfect matches appear first in selection dialogs</h4>
<div class="paragraph">
<p>Within selection dialogs, including <strong>Open Type</strong> and <strong>Open Resource</strong>, perfect matches appear as the first result, ensuring that users no longer have to scroll through historical matches and the alphabetically sorted list to find their desired result.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/perfect-match-first-search.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="delete-nested-projects"><a class="anchor" href="#delete-nested-projects"></a>Delete nested projects</h4>
<div class="paragraph">
<p>The <strong>Delete Resources</strong> dialog now shows a <strong>Delete nested projects</strong> option to delete all projects whose location on file system is a descendant of one of the selected projects.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/delete-nested-projects.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="debug-perspective-layout-changed"><a class="anchor" href="#debug-perspective-layout-changed"></a>Debug perspective layout changed</h4>
<div class="paragraph">
<p>Default Debug perspective layout changed, see screenshot below. The aim is to give the editor area more space and to show more relevant information without scrolling. Display view, Expressions view and Project Explorer are now shown by default, Problems view replaces Tasks.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/debug_perspective_changes.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="workers-use-job-names-as-thread-names"><a class="anchor" href="#workers-use-job-names-as-thread-names"></a>Workers use job names as thread names</h4>
<div class="paragraph">
<p>The jobs framework now uses <code>Job</code> names for <code>Worker</code> thread names. Previously all running <code>Worker&#8217;s got enumerated thread names, without any hint what the current `Worker</code> is actually doing:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/worker_obfuscated.png" alt="Worker names before M5">
</div>
</div>
<div class="paragraph">
<p>Now the <code>Job</code> name is added next to the <code>Worker</code> name:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/worker_deobfuscated.png" alt="Worker names after M5">
</div>
</div>
</div>
<div class="sect3">
<h4 id="right-click-option-to-export-launch-configurations"><a class="anchor" href="#right-click-option-to-export-launch-configurations"></a>Right click option to export Launch Configurations</h4>
<div class="paragraph">
<p>The Export Launch Configurations Wizard is now accessible through the right click menu on Launch Configurations. This wizard is still available with <strong>File &gt; Export &gt; Run/Debug &gt; Launch Configurations</strong></p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/right-click-export-launch-config.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="flat-layout-in-tabbed-properties-view"><a class="anchor" href="#flat-layout-in-tabbed-properties-view"></a>Flat layout in tabbed properties view</h4>
<div class="paragraph">
<p>In the light theme the tabbed properties view now completely uses the same flat styling as the form-based editors do.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/prop_light.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="open-close-projects-by-working-set-in-project-explorer"><a class="anchor" href="#open-close-projects-by-working-set-in-project-explorer"></a>Open/Close Projects by Working Set in Project Explorer</h4>
<div class="paragraph">
<p>The ability to Open, Close, Close Unrelated, and Build all appropriate projects in a Working Set has been added to the right click menu of Working Sets in the Project Explorer.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/open_close_workingsets.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="modify-project-natures"><a class="anchor" href="#modify-project-natures"></a>Modify project natures</h4>
<div class="paragraph">
<p>The Project Properties dialog now features a page to add or remove natures on a project.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/editNatures.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>As mentioned on the page, some natures may not properly handle manual addition/removal, so using this can lead to some inconsistencies in those cases.</p>
</div>
</div>
<div class="sect3">
<h4 id="possibility-to-configure-the-color-of-text-editor-s-range-indicator"><a class="anchor" href="#possibility-to-configure-the-color-of-text-editor-s-range-indicator"></a>Possibility to configure the color of text editor&#8217;s range indicator</h4>
<div class="paragraph">
<p>The text editor&#8217;s range indicators&#8217;s color can now be configured via the <strong>Colors and Fonts</strong> preference page.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/range_ind_pref.png" alt="Range indicator in the Colors and Fonts preference page">
</div>
</div>
</div>
<div class="sect3">
<h4 id="styling-for-text-editor-s-range-indicator"><a class="anchor" href="#styling-for-text-editor-s-range-indicator"></a>Styling for text editor&#8217;s range indicator</h4>
<div class="paragraph">
<p>The Eclipse default dark theme now includes styling for the text editor&#8217;s range indicator.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/range_ind_dark.png" alt="Range indicator in the dark theme">
</div>
</div>
</div>
<div class="sect3">
<h4 id="allow-workspace-to-build-projects-in-parallel"><a class="anchor" href="#allow-workspace-to-build-projects-in-parallel"></a>Allow workspace to build projects in parallel</h4>
<div class="paragraph">
<p>The <strong>Workspace</strong> preference page now has a new option to allow the workspace to build projects in parallel:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/preferences-simultaneous-builds.png" alt="preference page screenshot">
</div>
</div>
<div class="paragraph">
<p>Under some safe circumstances, the workspace can now choose to build independent projects in parallel. In such case, the maximum amount of jobs/threads that will be running builds in parallel will be controlled by this preference. A value of <code>1</code> will indicate that build won&#8217;t be parallelized keeping the legacy behavior.</p>
</div>
<div class="paragraph">
<p>The optimal value will depend on the machine and workspace projects specificities. Recommendation is to try relatively low values (such as <code>4</code>) first which will allow to save time, when allowed by projects, while not risking the CPU overload.</p>
</div>
</div>
<div class="sect3">
<h4 id="refresh-on-access-on-by-default"><a class="anchor" href="#refresh-on-access-on-by-default"></a>Refresh on access on by default</h4>
<div class="paragraph">
<p>For years the Eclipse IDE is shipping with a customization that files are automatically refreshed if the user accesses them. Other Eclipse based tools like the Spring Tools Suite were missing this customization, so now they do not have to manually instruct their IDE to see the update.</p>
</div>
</div>
<div class="sect3">
<h4 id="open-resource-dialog-always-shows-the-paths"><a class="anchor" href="#open-resource-dialog-always-shows-the-paths"></a>Open resource dialog always shows the paths</h4>
<div class="paragraph">
<p>You can now use the Open Resource dialog to see the file paths. Previously it only showed the paths if there were duplicate entries.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images//open-resource-dialog.png" alt="after">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-the-generic-editor-s-mark-occurrences-annotation-label"><a class="anchor" href="#improved-the-generic-editor-s-mark-occurrences-annotation-label"></a>Improved the generic editor&#8217;s mark occurrences annotation label</h4>
<div class="paragraph">
<p>The occurrences annotation marker label has been improved to show the word occurring rather than the line. In the image below, see the difference between old label at the top and the new one at the bottom.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/annotationlabel.png" alt="old and new version of occurrence annotation">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="jdt"><a class="anchor" href="#jdt"></a>Java&#8482; development tools</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="java-10-support"><a class="anchor" href="#java-10-support"></a>Javaâ„¢ 10 Support</h3>
<div class="sect3">
<h4 id="eclipse-support-for-java-10"><a class="anchor" href="#eclipse-support-for-java-10"></a>Eclipse support for Javaâ„¢ 10</h4>
<div class="paragraph">
<p><a href="http://docs.oracle.com/javase/10/">Javaâ„¢ 10</a> is here, and JDT supports it completely.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The Eclipse compiler for Java (ECJ) implements the new Java 10 <a href="https://docs.oracle.com/javase/10/language">language enhancement</a> which is the support for <a href="http://openjdk.java.net/jeps/286"><strong>local variable type inference (JEP 286)</strong></a>.</p>
</li>
<li>
<p><strong>Addition of Java 10 JRE</strong></p>
<div class="ulist">
<ul>
<li>
<p>A Java 10 JRE is recognized by Eclipse for launching. It can be added from the <strong>Window &gt; Preferences &gt; Java &gt; Installed JREs &gt; Add&#8230;&#8203;</strong> page. It can be added from the <strong>Package Explorer</strong> as well using the project&#8217;s context menu.</p>
<div class="imageblock">
<div class="content">
<img src="./images/j10.png" alt="image">
</div>
</div>
</li>
<li>
<p>An option to set compiler compliance to 10 on a Java project is provided.</p>
<div class="imageblock">
<div class="content">
<img src="./images/j10.compliance.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
</li>
<li>
<p><strong>Support for <code>var</code> compilation</strong></p>
<div class="ulist">
<ul>
<li>
<p>Eclipse supports compilation of <code>var</code> as shown below:</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.compile.png" alt="image">
</div>
</div>
</li>
<li>
<p>When the type of <code>var</code> cannot be inferred, it is flagged as a compiler error as expected. An example is shown below:</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.nocompile.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
</li>
<li>
<p><strong>Code Completion for <code>var</code></strong></p>
<div class="ulist">
<ul>
<li>
<p>Code completion is offered at places where <code>var</code> is allowed.</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.complete.png" alt="image">
</div>
</div>
</li>
<li>
<p>Code completion of var is not offered at places where <code>var</code> is not allowed.</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.nocomplete.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Hover over <code>var</code> shows the javadoc of the inferred type.</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.hover.png" alt="image">
</div>
</div>
</li>
<li>
<p>Quick Assist to convert from <code>var</code> to the appropriate type is provided.</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.vartotype.png" alt="image">
</div>
</div>
</li>
<li>
<p>Quick Assist to convert from type to <code>var</code> is provided.</p>
<div class="imageblock">
<div class="content">
<img src="./images/var.typetovar.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="quick-fix-to-change-project-compliance-and-jre-to-10"><a class="anchor" href="#quick-fix-to-change-project-compliance-and-jre-to-10"></a>Quick Fix to change project compliance and JRE to 10</h4>
<div class="paragraph">
<p>A Quick Fix <strong>Change project compliance and JRE to 10</strong> is provided to quickly change the current project to be compatible with Java 10.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/quickfix-change-compliance-10.png" alt="image">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="java-9-support"><a class="anchor" href="#java-9-support"></a>Javaâ„¢ 9 Support</h3>
<div class="sect3">
<h4 id="eclipse-support-for-java-9"><a class="anchor" href="#eclipse-support-for-java-9"></a>Eclipse support for Javaâ„¢ 9</h4>
<div class="paragraph">
<p><a href="http://docs.oracle.com/javase/9/">Javaâ„¢ 9</a> is here, and JDT supports it completely:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The Eclipse compiler for Java (ECJ) implements all the new Java 9 <a href="https://docs.oracle.com/javase/9/language">language enhancements"&gt;language enhancements</a></p>
</li>
<li>
<p>Updated significant features to support Java Modules, such as compiler, search and many editor features.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>Note:</strong> It is not mandatory to run Eclipse with Java Runtime 9 to get the Java 9 support. However, a Java runtime 9 is required to be on a project&#8217;s build path to compile a modular project against the system modules.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>When a Java Runtime 9 is added to a project&#8217;s build path, the system modules are listed under the System library in the package explorer:</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-package-explorer.png" alt="image">
</div>
</div>
</li>
<li>
<p>An existing non-modular Java project can be quickly converted to a module by creating a module-info.java for that project. This feature can be availed once the project has been moved to compliance 9:</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-create-module.png" alt="image">
</div>
</div>
</li>
<li>
<p>With Java 9 support, a library or a container can now be added to the module path as opposed to the classpath:</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-path.png" alt="image">
</div>
</div>
</li>
<li>
<p>Once an entry has been added to a project&#8217;s module path, its contents and encapsulation properties can further be modified by double-clicking on the <strong>Is modular</strong> node (or using the <strong>Edit</strong> button while <strong>Is modular</strong> is selected):</p>
<div class="ulist">
<ul>
<li>
<p>On the <strong>Contents</strong> tab individual modules inside a container like <strong>JRE System Library</strong> can be included or excluded by moving the module from left-to-right or vice versa. Modules shown in the lower right box are implicitly included, because they are required by one or more modules in the upper right box.</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-container-contents.png" alt="Configuring the Contents of a module container">
</div>
</div>
</li>
<li>
<p>On the <strong>Details</strong> tab the encapsulation of given modules can be further influenced. The following example shows how module <code>module.one</code> can be made to export one of its packages to the module of the current Java project:</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-properties.png" alt="image">
</div>
</div>
</li>
<li>
<p>Toggling <strong>Defines one or more modules</strong> (see above screenshot) lets you specify whether a given regular (non-modular) jar file or project should be considered as an "automatic module". As a consequence of changes here, the entry will move to the Modulepath or Classpath accordingly.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Java search now includes a new search scope - Module:</p>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-search.png" alt="image">
</div>
</div>
</li>
<li>
<p>When a Java Runtime 9 is added to a project&#8217;s build path, the launch configurations are created with "Dependencies" tab and not the old "Classpath" tab.</p>
<div class="paragraph">
<p>User can change the JRE of launch configuration and on the confirmation, the tab changes from "Classpath" to "Dependencies" or vice versa.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/changing-tabs-launch-config.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>If Java project is modular and module is described in module_info.java, most of the dependencies will be defined in the Modular Entries.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/modular-dependencies.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>If Java project is not modular, most of the dependencies will be defined in the Classpath Entries.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/non-modular-dependencies.png" alt="image">
</div>
</div>
</li>
<li>
<p>A new Quick Fix is offered on import statements to fix issues that are reported due to <strong>missing module dependency</strong></p>
<div class="paragraph">
<p>This Quick Fix is applicable if the project is a Java9 project and has a <code>module-info.java</code>.</p>
</div>
<div class="paragraph">
<p>The Quick Fix can be invoked from the editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-requires-on-import.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Before the Quick Fix is applied the module-info file looks as below</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-before-adding-module-requires-on-import.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>After the Quick Fix is invoked, ` module-info.java` will be updated to include <code>requires 'MODULE_NAME'</code></p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-after-adding-module-requires-on-import.png" alt="image">
</div>
</div>
</li>
<li>
<p>A new Quick Fix is available when you have an unresolved type in a Java file. If the unresolved type can be found in a java9 module, a Quick Fix will be available to add an import type entry to your file reporting the error and add the required module dependency to <code>module-info.java</code> file.</p>
<div class="paragraph">
<p>This Quick Fix is applicable if the project is a Java9 project and has a <code>module-info.java</code> file.</p>
</div>
<div class="paragraph">
<p>The Quick Fix can be invoked from the editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-requires-and-import-on-missing-type.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Before the Quick Fix is applied, the module-info file looks as below</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-before-adding-module-requires-on-import.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>After the Quick Fix is invoked, ` module-info.java` will be updated to include <code>requires 'MODULE_NAME'</code></p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-after-adding-module-requires-on-import.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>After the Quick Fix is applied, the required <code>import</code> statement is added to the file reporting error</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-after-adding-import-module-requires-and-import-on-missing-type.png" alt="image">
</div>
</div>
</li>
<li>
<p>A new Quick Fix is available when you have an unresolved type on <code>service provider</code> in a provides directive in module-info.java file. If the unresolved type can not be found in the current module, a Quick Fix will be available to create a new class or an interface in the current module.</p>
<div class="paragraph">
<p>This Quick Fix is applicable if the project is a Java9 project and has a <code>module-info.java</code> file.</p>
</div>
<div class="paragraph">
<p>The Quick Fix can be invoked from the editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-provides-create-class.png" alt="image">
</div>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-provides-create-interface.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>When the service is a class, the Quick Fix is proposed for creating a class.</p>
</div>
<div class="paragraph">
<p>When the service is an interface or an annotation, two Quick Fixes are proposed for creating a class or an interface.</p>
</div>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="new---release-on-the-java-compiler-preference-page"><a class="anchor" href="#new---release-on-the-java-compiler-preference-page"></a>New <code>--release</code> on the Java compiler preference page</h4>
<div class="paragraph">
<p>A new option <code>--release</code> is available on the Java compiler preference page.</p>
</div>
<div class="paragraph">
<p>This option will be enabled only if the JRE being used is a Java 9 or above.</p>
</div>
<div class="paragraph">
<p>Workspace Preference:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9_release_option_workspace_preference_page.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Project Preference:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9_release_option_project_preference_page.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>In the past, it was possible to compile for an older version of the Java language.</p>
</div>
<div class="paragraph">
<p>However, the compiler always compiled against the platform APIs that is found in the project&#8217;s build path.</p>
</div>
<div class="paragraph">
<p><strong>For Example:</strong> If the JRE being used is java 1.8 and the compliance level is set to 1.7, the API&#8217;s that are available are from the Java8 library, even if they were not part of Java 1.7.</p>
</div>
<div class="paragraph">
<p>The new --release compiler option now allows the user to configure compilation against a platform API version of user&#8217;s choice.</p>
</div>
<div class="paragraph">
<p><strong>For Example:</strong> Using --release option if the JRE being used is 9 and the compliance level is set to 1.7, the API&#8217;s that are available will be from JRE 1.7 even if JRE 1.7 is not available in your workspace.</p>
</div>
<div class="paragraph">
<p>The --release option supports versions 1.6 and above. That is the --release option is enabled for JRE 9 and above, if the compliance is set to 1.6 or above</p>
</div>
<div class="paragraph">
<p>In the below picture, compliance is set to 1.5, therefore the --release option is disabled.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9_release_option_disabled_project_preference_page.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>The --release option is enabled by default for all new projects created using JRE 9 or above.</p>
</div>
</div>
<div class="sect3">
<h4 id="use---release-option-for-default-access-rules-and-ee-descriptor"><a class="anchor" href="#use---release-option-for-default-access-rules-and-ee-descriptor"></a>Use <code>--release</code> option for Default Access rules and EE descriptor</h4>
<div class="paragraph">
<p>Java 9 onwards, Access rules intrinsic to JRE will not be available by default. Users must use the --release option to configure compilation against the version of Java library of his or her preference.</p>
</div>
<div class="paragraph">
<p>From Java 10 and beyond, API tools Execution Environment Descriptions will not be provided to determine if references are present in execution environment or not. Users must use the --release option to configure compilation against platform API of his or her preference. If the user intends to enforce a particular version of Java for determining Java API references in a project, he or she can store this preference in the project settings.</p>
</div>
</div>
<div class="sect3">
<h4 id="paste-module-info.java-code-in-package-explorer"><a class="anchor" href="#paste-module-info.java-code-in-package-explorer"></a>Paste module-info.java code in Package Explorer</h4>
<div class="paragraph">
<p>You can now paste a snippet of code representing module-info.java directly into a source folder to create a module-info.java file. For example, copy this code:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>import java.sql.Driver;
module hello {
exports org.example;
requires java.sql;
provides Driver with org.example.DriverImpl;
}</pre>
</div>
</div>
<div class="paragraph">
<p>Then, select a source folder in a Java 9 project in the <strong>Package Explorer</strong> view and use <strong>Ctrl+V (Edit &gt; Paste)</strong> to paste it. This automatically creates a module-info.java file in the source folder with the copied content.</p>
</div>
</div>
<div class="sect3">
<h4 id="content-assist-for-module-declaration-name"><a class="anchor" href="#content-assist-for-module-declaration-name"></a>Content assist for module declaration name</h4>
<div class="paragraph">
<p>Content assist <strong>(Ctrl+Space)</strong> support is now available for module declaration name.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/content-assist-module-declaration-name.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="quick-fix-for-unresolved-module-on-module-name-in-requires-directive"><a class="anchor" href="#quick-fix-for-unresolved-module-on-module-name-in-requires-directive"></a>Quick Fix for <code>unresolved module</code> on module name in <code>requires directive</code></h4>
<div class="paragraph">
<p>A new Quick Fix is offered on <strong>requires</strong> statements in the <strong>module-info.java</strong> file to fix issues that are reported due to unresolved module. The below Quick Fix will be provided if the module related to the unresolved module error has its related classpath added to the classpath and not to the module path.</p>
</div>
<div class="paragraph">
<p>This Quick Fix is applicable if the project is a Java 9 project and has a module-info.java file</p>
</div>
<div class="paragraph">
<p>This Quick Fix can be invoked from the editor.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-requires-move-from-classpath-to-modulepath-quickfix.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Before the Quick Fix is applied the classpath entries look as below:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-requires-move-from-classpath-to-modulepath-CPE-before-quickfix.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>After the Quick Fix is applied the classpath entries look as below:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9-module-requires-move-from-classpath-to-modulepath-CPE-after-quickfix.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="quick-fix-for-non-existing-or-empty-package-on-exports-directive"><a class="anchor" href="#quick-fix-for-non-existing-or-empty-package-on-exports-directive"></a>Quick Fix for <code>Non-existing or empty package</code> on ` exports directive`</h4>
<div class="paragraph">
<p>A new Quick Fix is available when you have a ` non-existing or an empty package` in an <code>exports directive</code> in module-info.java file.</p>
</div>
<div class="paragraph">
<p>This Quick Fix is applicable if the project is a Java9 project or above and has a <code>module-info.java</code> file.</p>
</div>
<div class="paragraph">
<p>The Quick Fix can be invoked from the editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java9_quickfix_empty_nonexistant_package_on_exports_directive.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>A Quick Fix is provided to create either a Class, or an Interface or an Annotation or an Enum in the given package.</p>
</div>
<div class="paragraph">
<p>If the package does not exist, a new package is created and the new element is created in the package.</p>
</div>
</div>
<div class="sect3">
<h4 id="creation-of-module-info.java-file-on-creation-of-a-new-java9-project"><a class="anchor" href="#creation-of-module-info.java-file-on-creation-of-a-new-java9-project"></a>Creation of <code>module-info.java file</code> on creation of a new Java9 Project</h4>
<div class="paragraph">
<p>When creating a Java project with compliance Java 9 or above, a new option is offered for the creation of the <code>module-info.java</code> file.</p>
</div>
<div class="paragraph">
<p>A new checkbox has been added in the Java Settings page (Page 2) of the <strong>New Java Project</strong> wizard. See images below.</p>
</div>
<div class="paragraph">
<p>Page 1:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/create_Java_Project_1.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Page 2:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/create_Java_Project_2.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>The new checkbox for the creation of module-info.java file is checked by default.</p>
</div>
<div class="paragraph">
<p>When this checkbox is checked, upon project creation, the dialog for creation of a new ` module-info.java ` file will appear.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/create_module_info.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Selecting <strong>Don&#8217;t Create</strong> in the above dialog does not create the <code>module-info.java</code> file, but creates the project.</p>
</div>
</div>
<div class="sect3">
<h4 id="overriding-modular-build-path-dependencies-for-launching"><a class="anchor" href="#overriding-modular-build-path-dependencies-for-launching"></a>Overriding modular build path dependencies for launching</h4>
<div class="paragraph">
<p>Based on Java build path, a Java 9 module can have command line options. These options from build path can be overridden for launching programs in the module. <strong>Override Dependencies</strong> button has been added to <strong>Dependencies</strong> tab:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/override-dependencies-button.png" alt="Override Dependencies button">
</div>
</div>
<div class="paragraph">
<p>Dialog can be used to override modular dependencies:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/override-dependencies-dialog.png" alt="Override Dependencies dialog">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="junit"><a class="anchor" href="#junit"></a>JUnit</h3>
<div class="sect3">
<h4 id="eclipse-support-for-junit-5.1"><a class="anchor" href="#eclipse-support-for-junit-5.1"></a>Eclipse support for JUnit 5.1</h4>
<div class="paragraph">
<p><a href="http://junit.org/junit5/">JUnit 5.1</a> is here and Eclipse supports it.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Create a new JUnit Jupiter test via <strong>New JUnit Test Case</strong> wizard:</p>
<div class="imageblock">
<div class="content">
<img src="./images/new-junit-jupiter-test.png" alt="image">
</div>
</div>
</li>
<li>
<p>Add JUnit 5 library to the build path:</p>
<div class="ulist">
<ul>
<li>
<p>New JUnit Test Case wizard offers to add it while creating a new JUnit Jupiter test:</p>
<div class="imageblock">
<div class="content">
<img src="./images/add-junit-5-lib.png" alt="image">
</div>
</div>
</li>
<li>
<p>Quick Fix <strong>(Ctrl+1)</strong> proposal on <strong><code>@Test</code></strong>, <strong><code>@TestFactory</code></strong>, <strong><code>@ParameterizedTest</code></strong> and <strong><code>@RepeatedTest</code></strong> annotations:</p>
<div class="imageblock">
<div class="content">
<img src="./images/add-junit-5-lib-quick-fix.png" alt="image">
</div>
</div>
</li>
<li>
<p>Add JUnit library in Java Build Path dialog:</p>
<div class="imageblock">
<div class="content">
<img src="./images/add-junit-5-lib-java-build-path.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Create a JUnit Jupiter test method with the new <strong>test_jupiter</strong> template:</p>
<div class="imageblock">
<div class="content">
<img src="./images/junit-jupiter-test-method-template.png" alt="image">
</div>
</div>
</li>
<li>
<p>Create a <strong><code>@TestFactory</code></strong> method with the new <strong>test_factory</strong> template:</p>
<div class="imageblock">
<div class="content">
<img src="./images/junit-jupiter-test-factory-template.png" alt="image">
</div>
</div>
</li>
<li>
<p>JUnit Jupiter’s <code>Assertions</code>, <code>Assumptions</code>, <code>DynamicContainer</code> and <code>DynamicTest</code> classes are now added to <strong>Eclipse Favorites</strong> by default:</p>
<div class="imageblock">
<div class="content">
<img src="./images/content-assist-favorites.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>This allows you to quickly import the static methods from these classes in your code via Content Assist <strong>(Ctrl + Space)</strong> and Quick Fix <strong>(Ctrl + 1)</strong>.</p>
</div>
</li>
<li>
<p>View all the failures from grouped assertions in the same <strong>Result Comparison</strong> dialog opened from JUnit view:</p>
<div class="imageblock">
<div class="content">
<img src="./images/grouped-assertions-result-comparison.png" alt="image">
</div>
</div>
</li>
<li>
<p>View the number of disabled tests and tests with assumption failures on hover in JUnit view:</p>
<div class="imageblock">
<div class="content">
<img src="./images/skipped-tests.png" alt="image">
</div>
</div>
</li>
<li>
<p>Use <strong>Go to File</strong> action or just double-click to navigate to the test from JUnit view even when the test is displayed with a custom name:</p>
<div class="imageblock">
<div class="content">
<img src="./images/display-name.png" alt="image">
</div>
</div>
</li>
<li>
<p>(Re-)Run a single <strong><code>@Nested</code></strong> test class by using the <strong>Run</strong> action in JUnit view or Outline view. You can even right-click on a nested test class name in the editor and use the <strong>Run As</strong> action:</p>
<div class="imageblock">
<div class="content">
<img src="./images/run-nested-class.png" alt="image">
</div>
</div>
</li>
<li>
<p>The <strong>Test Method Selection</strong> dialog in JUnit launch configuration now shows the method parameter types also:</p>
<div class="imageblock">
<div class="content">
<img src="./images/test-method-selection-dialog.png" alt="image">
</div>
</div>
</li>
<li>
<p>You can provide tags to be included in or excluded from a test run in the <strong>Configure Tags</strong> dialog of JUnit launch configuration:</p>
<div class="imageblock">
<div class="content">
<img src="./images/junit-tags.png" alt="image">
</div>
</div>
</li>
<li>
<p>In JUnit Jupiter, a method parameter of type <code>TestReporter</code> can be used to publish additional data about the current test run which can be viewed in the <strong>Console view</strong>:</p>
<div class="imageblock">
<div class="content">
<img src="./images/junit5-test-reporter.png" alt="image">
</div>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/junit5-test-reporter-console-view.png" alt="image">
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>Note:</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>If you are using an Eclipse workspace where you were running your JUnit 5 tests via <code>@RunWith(JUnitPlatform.class)</code> in Eclipse without JUnit 5 support then you will have JUnit 4 as the test runner in their launch configurations. Before executing these tests in Eclipse with JUnit 5 support, you should either change their test runner to JUnit 5 or delete them so that new launch configurations are created with JUnit 5 test runner while running the tests:</p>
<div class="imageblock">
<div class="content">
<img src="./images/test-runner-update.png" alt="image">
</div>
</div>
</li>
<li>
<p>We do not support running tests in a setup where an old Eclipse build (not having JUnit 5 support) is using a new Eclipse build (having JUnit 5 support) as target. Also, developers who have the JDT JUnit runtime bundles <code>(org.eclipse.jdt.junit.runtime, org.eclipse.jdt.junit4.runtime)</code> checked out and pull the latest changes will run into the above issue. You are expected to use a new Eclipse build for the development.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="java-editor"><a class="anchor" href="#java-editor"></a>Java Editor</h3>
<div class="sect3">
<h4 id="quick-fix-to-add-nonnullbydefault-to-packages"><a class="anchor" href="#quick-fix-to-add-nonnullbydefault-to-packages"></a>Quick Fix to add <code>@NonNullByDefault</code> to packages</h4>
<div class="paragraph">
<p>A new Quick Fix is offered to fix issues that are reported when the <strong>Missing '@NonNullByDefault' annotation on package</strong> warning is enabled.</p>
</div>
<div class="paragraph">
<p>If the package already has a <code>package-info.java</code>, the Quick Fix can be invoked from the editor:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/add-nnbd-existing-packageinfo.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Otherwise, the Quick Fix must be invoked from the problems view, and will create a <code>package-info.java</code> with the required annotation:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/add-nnbd-create-packageinfo.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>When invoked from the problems view, both variations of the Quick Fix can fix the problem for multiple packages simultaneously.</p>
</div>
</div>
<div class="sect3">
<h4 id="navigate-to-switch-statement"><a class="anchor" href="#navigate-to-switch-statement"></a>Navigate to 'switch' statement</h4>
<div class="paragraph">
<p>You can now <strong>Ctrl+click</strong> or use <strong>Open Declaration (F3)</strong> on <code>case</code> or <code>default</code> keywords to quickly navigate to the beginning of the <code>switch</code> statement.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/navigate-to-switch.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="escape-non-ascii-characters-when-pasting-into-a-string-literal"><a class="anchor" href="#escape-non-ascii-characters-when-pasting-into-a-string-literal"></a>Escape non-ASCII characters when pasting into a string literal</h4>
<div class="paragraph">
<p>The <strong>Java &gt; Editor &gt; Typing &gt; Escape text when pasting into a string literal</strong> preference option now has a suboption <strong>Use Unicode escape syntax for non-ASCII characters</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/escape-non-ascii-settings.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>When enabled, characters outside the visible ASCII range will be replaced by unicode escape sequences when pasted into a string:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/escape-non-ascii-example.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-java-syntax-coloring-in-the-dark-theme"><a class="anchor" href="#improved-java-syntax-coloring-in-the-dark-theme"></a>Improved Java syntax coloring in the dark theme</h4>
<div class="paragraph">
<p>To improve readability in the dark theme, bold style usage has been reduced and some colors that were too close to each other have been altered.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/java-syntax-dark.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="improved-coloring-of-links-in-code-element-information-in-the-dark-theme"><a class="anchor" href="#improved-coloring-of-links-in-code-element-information-in-the-dark-theme"></a>Improved coloring of links in code element information in the dark theme</h4>
<div class="paragraph">
<p>The colors of links in code element information control now takes the color settings of the <strong>Hyperlink text color</strong> and the <strong>Active hyperlink text color</strong> from the <strong>Colors &amp; Fonts</strong> preference page into account. The readability in the dark theme has been improved a lot by this.</p>
</div>
<div class="paragraph">
<p>Before:<br>
image::images/element_info_before.png[before]</p>
</div>
<div class="paragraph">
<p>After:<br>
image::images/element_info_after.png[after]</p>
</div>
</div>
<div class="sect3">
<h4 id="improved-coloring-of-inherited-members-in-the-quick-outline-in-the-dark-theme"><a class="anchor" href="#improved-coloring-of-inherited-members-in-the-quick-outline-in-the-dark-theme"></a>Improved coloring of inherited members in the Quick Outline in the dark theme</h4>
<div class="paragraph">
<p>The Eclipse default dark theme now includes styling of inherited members in JDT&#8217;s <strong>Quick Outline</strong>. This improves readability in the dark theme a lot. The color can be configured via the <strong>Java &gt; Inherited Members</strong> color definition on the <strong>Colors and Fonts</strong> preference page.</p>
</div>
<div class="paragraph">
<p>Before:<br>
image::images/inherited_before.png[before]</p>
</div>
<div class="paragraph">
<p>After:<br>
image::images/inherited_after.png[after]</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="java-views-and-dialogs"><a class="anchor" href="#java-views-and-dialogs"></a>Java Views and Dialogs</h3>
<div class="sect3">
<h4 id="test-sources"><a class="anchor" href="#test-sources"></a>Test sources</h4>
<div class="paragraph">
<p>In the <strong>Java Build Path</strong> project settings, there is now an attribute <strong>Contains test sources</strong> to configure that a source folder contains test sources. (Note: test sources must have their own output folder). Similarly, for projects and libraries there is an attribute <strong>Visible only for test sources</strong>. This setting also exists for classpath containers, and if it is set to <strong>Yes</strong> for one of these, this value will be used for all contained libraries and projects.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/1-sourcefolder-settings-521330.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Test source folders and dependencies are shown with a darker icon in the build path settings, the package explorer and other locations. This can be disabled in <strong>Preferences &gt; Java &gt; Appearance</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/1a-modified-test-icon-preferences-530179.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Referenced projects can contain test sources and have test dependencies themselves. Usually, when test sources are compiled, the test code in projects on the build path will be visible. As this is not always desirable, it can be changed by setting the new build path attribute <strong>Without test code</strong>, that is available for projects, to <strong>Yes</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/2-without-test-code-526858.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Build path entries configured like this have a decoration <code>[without test code]</code> after the project name, which can be disabled in <strong>Preferences &gt; General &gt; Appearance &gt; Label Decorations</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/2a-without-test-code-decorator-530179.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>For each project, compilation is now done in two phases: First all main sources (which cannot see any test-code on the build-path) and then all test sources.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/3-visibilities-224708.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>As a consequence, if the project is a modular Java 9 project, test dependencies like JUnit can not be referenced in the <code>module-info.java</code>, as they will not be visible while compiling it. The solution used to handle this is the same, that Maven uses: When test dependencies are put on the classpath, the module being compiled will automatically be configured to read the unnamed module during the compilation of the test sources, so the test dependencies will be visible.</p>
</div>
<div class="paragraph">
<p>Of course, code completion will not suggest test code in main sources:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/4a-completion-in-main-521331.png" alt="image">
</div>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/4b-completion-in-test-521331.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>There are now two dynamic Java working sets <strong>Java Main Sources</strong> and <strong>Java Test Sources</strong> containing the source folders grouped according to value of the <strong>Contains test sources</strong> attribute. This can for example be used to remove warnings in test sources from the problems view:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/5a-problems-view-521336.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>To achieve this, create a new filter that shows warnings for the <strong>Java Main Sources</strong> working set and select it with the <strong>All Errors on Workspace</strong> filter:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/5b-problems-view-filters-521336.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>There are also dedicated filters to quickly remove hits in main code or test code from Java search results:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/6-filter-search-result-521332.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Similar, there is a filter to remove test code from <strong>Call hierarchies</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/7-filter-call-hierarchy-521335.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Another filter to remove test code exists for <strong>Quick type hierarchies</strong>:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/8-filter-quick-type-hierarchy-521333.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Test source folders will be preselected in the <strong>New JUnit Test Case</strong>-Wizard</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/9-new-junit-332602.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>In Run and Debug configurations, the <strong>Classpath</strong> tab (or <strong>Dependencies</strong> tab when launching with Java 9) contains a new option <strong>Exclude Test Code</strong>, that is automatically preselected when launching a Java Application from a source folder that is not marked to contain test sources:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/10-launching-529321.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>When launching with Java 9 and this option is not selected, command line options will automatically be added so modules that have a non-empty classpath read the unnamed module. These command line options are part of what can be overridden using the new <a href="#override-dependencies">Override Dependencies</a> button.</p>
</div>
</div>
<div class="sect3">
<h4 id="sort-library-entries-alphabetically-in-package-explorer"><a class="anchor" href="#sort-library-entries-alphabetically-in-package-explorer"></a>Sort library entries alphabetically in Package Explorer</h4>
<div class="paragraph">
<p>The content of libraries are displayed in the order of the classpath. This makes it difficult to find specific libraries by their name, especially when projects have many dependencies. The library entries can now be sorted alphabetically when setting the preference <strong>Sort library entries alphabetically in Package Explorer</strong> on the <strong>Java &gt; Appearance</strong> preference page:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/jdt_sort_library_pref.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>OFF</p>
</div>
<div class="paragraph">
<p>ON</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/jdt_library_entries_unsorted.png" alt="before">
</div>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/jdt_library_entries_sorted.png" alt="before">
</div>
</div>
<div class="paragraph">
<p>The default for this preference is <strong>OFF</strong>.</p>
</div>
</div>
<div class="sect3">
<h4 id="generate-dialogs-use-verbs-instead-of-ok"><a class="anchor" href="#generate-dialogs-use-verbs-instead-of-ok"></a>Generate dialogs use verbs instead of OK</h4>
<div class="paragraph">
<p>The <strong>Generate&#8230;&#8203;</strong> dialogs of the Java tools have been adapted to use verbs instead of OK.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="java-compiler"><a class="anchor" href="#java-compiler"></a>Java Compiler</h3>
<div class="sect3">
<h4 id="option-for-regex-in-module-declaration-search"><a class="anchor" href="#option-for-regex-in-module-declaration-search"></a>Option for Regex in Module Declaration Search</h4>
<div class="paragraph">
<p>This is an <strong>experimental</strong> support provided to allow the regular expression usage in search field while searching for module declaration. This can be considered as a wrapper of the <a href="#regex-module-declaration-search-api">API change</a>.</p>
</div>
<div class="paragraph">
<p>To invoke the regular expression search from the search field under Java Search, start the expression with "/r " i.e, a slash '/', the letter 'r' and a blank ' ' (not tab) followed by a regex, an example of which is shown below:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/mod.regex.trap.png" alt="Trapdoor for regular expression module declaration search">
</div>
</div>
<div class="paragraph">
<p>In the above example, all the characters trailing "/r " form a Java regular expression to denote a module name which starts with zero or more 'n&#8217;s followed by the string ".ver" and followed again by zero or more number of arbitrary characters.</p>
</div>
<div class="paragraph">
<p>Another example would be to search for all modules that start with <code>java.x</code> followed by zero or more characters which is given by the regular expression <code>/r java\.x.*</code> - note the backslash for . to consider this as a "normal" character instead of the special regex].</p>
</div>
<div class="paragraph">
<p>Yet another example would be search for all module names that start with j followed by zero or more characters and ending with .xml which in regex language translates to <code>/r j.*\.xml</code>. Please note that here the first '.' is the special regex character while the second '.' is escaped to denote that this is a normal character.</p>
</div>
<div class="paragraph">
<p><strong>Note:</strong> You should use this only for <strong>Declarations</strong> search for modules as it is not implemented for module references. Selecting <strong>All occurrences</strong> in conjunction with regex will default to finding only the Declarations matching the regex ignoring the references.</p>
</div>
</div>
<div class="sect3">
<h4 id="nonnullbydefault-per-module"><a class="anchor" href="#nonnullbydefault-per-module"></a>@NonNullByDefault per module</h4>
<div class="paragraph">
<p>If a module is annotated with <code>@NonNullByDefault</code>, the compiler will interpret this as the global default for all types in this module: <code>@org.eclipse.jdt.annotation.NonNullByDefault</code><br>
<code>module my.nullsafe.mod { &#8230;&#8203;</code></p>
</div>
<div class="paragraph">
<p>Note, however, that this requires an annotation type declared with target <code>ElementType.MODULE</code>. Since the annotation bundle <code>org.eclipse.jdt.annotation</code> is still compatible with Java 8, it cannot yet declare this target. In the interim, a preview version of this bundle with support for modules will be published by other means than the official SDK build.</p>
</div>
</div>
<div class="sect3">
<h4 id="nonnullbydefault-improvements"><a class="anchor" href="#nonnullbydefault-improvements"></a>@NonNullByDefault improvements</h4>
<div class="paragraph">
<p>When using annotation-based null analysis, there are now more ways to define which unannotated locations are implicitly assumed to be annotated as <code>@NonNull</code>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="http://help.eclipse.org/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/annotation/NonNullByDefault.html"><code>@NonNullByDefault</code></a> annotations based on enum <a href="http://help.eclipse.org/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/annotation/DefaultLocation.html"><code>DefaultLocation</code></a> can also be used if the primary nullness annotations are declaration annotations (previously this was supported only for <code>TYPE_USE</code> annotations).</p>
</li>
<li>
<p>Support for <code>@NonNullByDefault</code> annotations that are targeted at parameters has been implemented.</p>
</li>
<li>
<p>Multiple different <code>@NonNullByDefault</code> annotations (especially with different default values) may be placed at the same target, in which case the sets of affected locations are merged.</p>
</li>
<li>
<p>Annotations which use a meta annotation <code>@TypeQualifierDefault</code> instead of a <code>DefaultLocation</code>-based specification are now understood, too, e.g. <a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/lang/NonNullApi.html"><code>@org.springframework.lang.NonNullApi</code></a>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Version 2.2.0 of bundle <code>org.eclipse.jdt.annotations</code> containing an annotation type <code>NonNullByDefault</code> that can be applied to parameter and <a href="https://www.eclipse.org/eclipse/news/4.8/M5/#nonnullbydefault-per-module">module declarations</a> (in addition to the previously allowed targets).</p>
</div>
</div>
<div class="sect3">
<h4 id="test-sources-1"><a class="anchor" href="#test-sources-1"></a>Test sources</h4>
<div class="paragraph">
<p>There is now support for running Java annotation processors on <a href="../M5/index.html#jdt-test-sources">test sources</a>. The output folder for files generated for these can be configured in the project properties in <strong>Java Compiler &gt; Annotation Processing</strong> as <strong>Generated test source directory</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/testsources-apt-531072.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="new-preference-added-compiler-compliance-does-not-match-used-jre"><a class="anchor" href="#new-preference-added-compiler-compliance-does-not-match-used-jre"></a>New preference added "Compiler Compliance does not match used JRE"</h4>
<div class="paragraph">
<p>A new preference <strong>Compiler Compliance does not match used JRE</strong> is added to Compiler Preference Building Page.</p>
</div>
<div class="paragraph">
<p>This preference indicates the severity of the problem reported when project&#8217;s used JRE does not match the compiler compliance level selected. (e.g. a project using JRE 1.8 as JRE System Library, and the compiler compliance is set to 1.7).</p>
</div>
<div class="paragraph">
<p>The value of this preference is by default WARNING.</p>
</div>
<div class="paragraph">
<p>If the JRE being used is 9 or above and the <strong>--release</strong> option is selected and even if the compiler compliance does not match the JRE being used, this option will be ignored.</p>
</div>
<div class="paragraph">
<p>This preference can be set as shown below:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/jdt_compiler_compliance_mismatch_JRE.png" alt="image">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="java-formatter"><a class="anchor" href="#java-formatter"></a>Java Formatter</h3>
<div class="sect3">
<h4 id="new-formatter-profile-page"><a class="anchor" href="#new-formatter-profile-page"></a>New formatter profile page</h4>
<div class="paragraph">
<p>The formatter profile preference page <strong>(Java &gt; Code Style &gt; Formatter &gt; Edit&#8230;&#8203;)</strong> has a new look which makes it much easier to set preferences for formatting Java code. Instead of multiple tabs, all preferences are presented in an expandable tree.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-profile-overview.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>You can use <strong>filtering</strong> to display only the settings with names matching a specific phrase. Filtering by values is also possible (prefix a value filter with a tilde).</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-profile-filtering.png" alt="Example filtering by word 'lambda'">
</div>
</div>
<div class="paragraph">
<p>Most sections have a <strong>Modify all</strong> button in their header that lets you set all their preferences to the same value with one click.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-profile-modify-all.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Some preferences have more convenient controls. For example, number values can be easily modified with arrow buttons. Wrap policy settings are controlled by simple toolbars so that you can see and compare multiple policies at once.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-profile-wrap-settings.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>In the preview panel you can now use your own code to immediately see how it will be affected by the modified settings. You can also see the raw form of standard preview samples and make temporary modifications to them.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-profile-preview.png" alt="New buttons: 'View/edit raw code' and 'Custom preview contents'">
</div>
</div>
</div>
<div class="sect3">
<h4 id="formatter-align-javadoc-tags-in-columns"><a class="anchor" href="#formatter-align-javadoc-tags-in-columns"></a>Formatter: align Javadoc tags in columns</h4>
<div class="paragraph">
<p>The formatter can now <strong>align names and/or descriptions</strong> in Javadoc tags in new ways. The formatter profile editor is available for selection, under <strong>Comments &gt; Javadoc</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-javadoc-prefs.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>For example, the <strong>Align descriptions, grouped by type</strong> setting is now used in the built-in Eclipse profile.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/formatter-javadoc-preview.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>The setting previously known as <strong>Indent Javadoc tags</strong> is now called <strong>Align descriptions to tag width</strong>. The two settings related to <strong>@param tags</strong> also had their labels changed to better describe what they do.</p>
</div>
</div>
<div class="sect3">
<h4 id="java-code-formatter-preferences-now-styled-for-the-dark-theme"><a class="anchor" href="#java-code-formatter-preferences-now-styled-for-the-dark-theme"></a>Java code formatter preferences now styled for the dark theme</h4>
<div class="paragraph">
<p>The formatter preferences tree styling has been fixed to work properly in the dark theme.</p>
</div>
</div>
<div class="sect3">
<h4 id="new-cleanup-action-remove-redundant-modifiers"><a class="anchor" href="#new-cleanup-action-remove-redundant-modifiers"></a>New Cleanup Action "Remove redundant modifiers"</h4>
<div class="paragraph">
<p>The new cleanup action "Remove redundant modifiers" removes unnecessary modifiers on types, methods and fields. The following modifiers are removed:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Interface field declarations: <code>public</code>, <code>static</code>, <code>final</code></p>
</li>
<li>
<p>Interface method declarations: <code>public</code>, <code>abstract</code></p>
</li>
<li>
<p>Nested interfaces: <code>static</code></p>
</li>
<li>
<p>Method declarations in final classes: <code>final</code></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The cleanup action can be configured as save action on the <em>Unnecessary Code</em> page.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/jdt_remove_redundant_modifiers.png" alt="image">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="debug"><a class="anchor" href="#debug"></a>Debug</h3>
<div class="sect3">
<h4 id="launch-configuration-prototypes-for-java-launch-configurations"><a class="anchor" href="#launch-configuration-prototypes-for-java-launch-configurations"></a>Launch configuration prototypes for Java Launch Configurations</h4>
<div class="paragraph">
<p>A Java Launch Configuration can now be based on a prototype.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/prototype-java-launch-configuration.png" alt="Prototype Java Launch Configuration">
</div>
</div>
<div class="paragraph">
<p>A prototype seeds attributes in its associated Java Launch Configurations with the settings specified in the Prototype tab.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/prototype-tab-java-launch-configuration-1.png" alt="Prototype Tab Java Launch Configuration 1">
</div>
</div>
<div class="paragraph">
<p>Once a Java Launch Configuration has been created, you can override any initial settings from the prototype. You can also reset the settings of a Java Launch Configuration with the ones from its prototype. A Java Launch Configuration maintains a link to its prototype, but is a complete stand-alone launch configuration that can be launched, exported, shared, etc.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/prototype-tab-java-launch-configuration-2.png" alt="Prototype Tab Java Launch Configuration 2">
</div>
</div>
</div>
<div class="sect3">
<h4 id="advanced-source-lookup-implementation"><a class="anchor" href="#advanced-source-lookup-implementation"></a>Advanced source lookup implementation</h4>
<div class="paragraph">
<p>More precise <strong>advanced</strong> source lookup implementation, particularly useful when debugging applications that load classes dynamically at runtime.</p>
</div>
<div class="paragraph">
<p>New <code>org.eclipse.jdt.launching.workspaceProjectDescribers</code> extension point can be used to enable advanced source lookup for projects with non-default layout, like PDE Plug-In projects.</p>
</div>
<div class="paragraph">
<p>New <code>org.eclipse.jdt.launching.sourceContainerResolvers</code> can be used to download sources jar files from remote artifact repositories, like Maven Central or Eclipse P2.</p>
</div>
<div class="paragraph">
<p>Advanced source lookup affects debug launches only and can be enabled or disabled with <strong>Java &gt; Debug &gt; Enable advanced source lookup</strong> preference option:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/advanced-source-lookup.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="debugger-listens-to-thread-name-changes"><a class="anchor" href="#debugger-listens-to-thread-name-changes"></a>Debugger listens to thread name changes</h4>
<div class="paragraph">
<p><strong>Debug view</strong> now automatically updates thread names if they are changed in the debuggee JVM. This shows live information for worker instances, as described above.</p>
</div>
<div class="paragraph">
<p>Technically speaking, Java debugger automatically adds a new (user invisible) breakpoint in the JVM and notifies clients (like Debug view) on a breakpoint hit. If this behavior is undesired for some reason, product owners can disable it via product customization.</p>
</div>
<div class="paragraph">
<p>The property value is: ` org.eclipse.jdt.debug.ui/org.eclipse.jdt.debug.ui.javaDebug.ListenOnThreadNameChanges=false `</p>
</div>
</div>
<div class="sect3">
<h4 id="value-displayed-for-method-exit-and-exception-breakpoints"><a class="anchor" href="#value-displayed-for-method-exit-and-exception-breakpoints"></a>Value displayed for method exit and exception breakpoints</h4>
<div class="paragraph">
<p>When a <strong>method exit breakpoint</strong> is hit, the value being returned is now shown in the variables view.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/returningvalue.png" alt="image">
</div>
</div>
<div class="paragraph">
<p>Similarly, when an <strong>exception breakpoint</strong> is hit, the exception being thrown is shown.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/throwingexception.png" alt="image">
</div>
</div>
</div>
<div class="sect3">
<h4 id="display-view-renamed-to-debug-shell"><a class="anchor" href="#display-view-renamed-to-debug-shell"></a>Display view renamed to Debug Shell</h4>
<div class="paragraph">
<p>The <strong>Display view</strong> has been renamed to <strong>Debug Shell</strong> to better match the features and purpose of this view. Also, a java comment is shown in the Debug Shell on fresh open that explains when and how to use it.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="./images/debugShell.png" alt="Debug Shell">
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="jdt-developers"><a class="anchor" href="#jdt-developers"></a>JDT Developers</h3>
<div class="sect3">
<h4 id="package-binding-with-recovery"><a class="anchor" href="#package-binding-with-recovery"></a>Package binding with recovery</h4>
<div class="paragraph">
<p>The existing method <code>IBinding#getJavaElement()</code> now accommodates recovered packages in which case a <code>null</code> may be returned for such package bindings with problems. Pre-Java 9 compliant code will continue to have a non-null return value for this API for packages.</p>
</div>
</div>
<div class="sect3">
<h4 id="support-for-regex-module-declaration-search"><a class="anchor" href="#support-for-regex-module-declaration-search"></a>Support for Regex Module Declaration Search</h4>
<div class="paragraph">
<p>The existing method <code>SearchPattern#createPattern(String , int , int , int )</code> is enhanced for supporting regular expression search for module declarations. Please note that the flag <code>SearchPattern#R_REGEXP_MATCH</code> used for regular expression search is applicable exclusively for module declarations. No other flag (for eg.<code>SearchPattern#R_CASE_SENSITIVE</code>) should be used in disjunction with this match rule.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="open-source-projects"><a class="anchor" href="#open-source-projects"></a>Open Source Projects</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following Eclipse open source projects participated in this release.</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.acceleo">Eclipse Acceleo</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.actf">Eclipse Accessibility Tools Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.acute">Eclipse aCute</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.amalgam">Eclipse Amalgam</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mmt.atl">Eclipse ATL</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/soa.bpel">Eclipse BPEL Designer</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/soa.bpmn2-modeler">Eclipse BPMN 2.0 Modeler</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.bpmn2">Eclipse BPMN2</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.buildship">Eclipse Buildship</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/birt">Eclipse Business Intelligence and Reporting Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.cdt">Eclipse C/C++ Development Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf.cdo">Eclipse CDO</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.recommenders">Eclipse Code Recommenders</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.collections">Eclipse Collections</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/rt.ecf">Eclipse Communication Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.corrosion">Eclipse Corrosion</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.dali">Eclipse Dali-ORM</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/datatools">Eclipse Data Tools Platform</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.dltk">Eclipse Dynamic Languages Toolkit</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.eclemma">Eclipse EclEmma</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.efxclipse">Eclipse eclipse</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.ecoretools">Eclipse Ecore Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf.emf">Eclipse EMF</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.ecp">Eclipse EMF Client</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emfcompare">Eclipse EMF Compare</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf.diffmerge">Eclipse EMF Diff/Merge</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emft.emf-facet">Eclipse EMF Facet</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf-parsley">Eclipse EMF Parsley</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emfservices">Eclipse EMF Services</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emfstore">Eclipse EMFStore</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/eclipse.equinox">Eclipse Equinox</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.eef">Eclipse Extended Editing Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf.egf">Eclipse Generation Factories</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.egit">Eclipse Git Team Provider</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.gmf-runtime">Eclipse GMF Runtime</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.gef">Eclipse Graphical Editing Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.graphiti">Eclipse Graphiti</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/eclipse.jdt">Eclipse Java development tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.jeetools">Eclipse Java EE Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/soa.jwt">Eclipse Java Workflow Tooling</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.jsdt">Eclipse JavaScript Development Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.jsf">Eclipse JavaServer Faces</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.jgit">Eclipse JGit</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.jubula">Eclipse Jubula</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.linuxtools">Eclipse Linux Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.lsp4e">Eclipse LSP4E</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.lsp4j">Eclipse LSP4J</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.ldt">Eclipse Lua Development Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.m2e">Eclipse m2eclipse</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.packaging.mpc">Eclipse Marketplace Client Project</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.m2e.m2e-wtp">Eclipse Maven Integration for Web Tools Platform</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.mat">Eclipse Memory Analyzer</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.emf.mwe">Eclipse Modeling Workflow Engine</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.modisco">Eclipse MoDisco</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn">Eclipse Mylyn</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.builds">Eclipse Mylyn Builds</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.commons">Eclipse Mylyn Commons</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.context">Eclipse Mylyn Context</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.reviews">Eclipse Mylyn Reviews</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.tasks">Eclipse Mylyn Tasks</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/mylyn.versions">Eclipse Mylyn Versions</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.objectteams">Eclipse Object Teams</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.ocl">Eclipse OCL</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.oomph">Eclipse Oomph</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.packaging">Eclipse Packaging Project</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/iot.paho">Eclipse Paho</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.papyrus">Eclipse Papyrus</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.ptp">Eclipse Parallel Tools Platform</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.pdt">Eclipse PHP Development Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/eclipse.platform">Eclipse Platform</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/eclipse.pde">Eclipse Plug-in Development Environment</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.pmf">Eclipse Presentation Modeling Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/eclipse">Eclipse Project</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mmt.qvt-oml">Eclipse QVT-OML</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mmt.qvtd">Eclipse QVT-Relations</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.rcptt">Eclipse RCP Testing Tool</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.reddeer">Eclipse RedDeer</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/rt.rap">Eclipse Remote Application Platform</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.sapphire">Eclipse Sapphire</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.scout">Eclipse Scout</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.servertools">Eclipse Server Tools</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.sirius">Eclipse Sirius</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.sourceediting">Eclipse Source Editing</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.swtbot">Eclipse SWTBot</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.cdt.tcf">Eclipse Target Communication Framework</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.tm">Eclipse Target Management</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.tm4e">Eclipse TM4E</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/ecd.cft">Eclipse Tools for Cloud Foundry</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.tracecompass">Eclipse Trace Compass</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.uml2">Eclipse UML2</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.usssdk">Eclipse USS SDK</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.viatra">Eclipse VIATRA</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.webservices">Eclipse Web Services</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.common">Eclipse Web Tools Common</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools">Eclipse Web Tools Platform Project</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/webtools.releng">Eclipse Web Tools Releng</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/tools.windowbuilder">Eclipse WindowBuilder</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.m2t.xpand">Eclipse Xpand</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.mdt.xsd">Eclipse XSD</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/modeling.tmf.xtext">Eclipse Xtext</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/technology.xwt">Eclipse XWT</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/ee4j.yasson">Eclipse Yasson</a></p>
</li>
<li>
<p><a href="https://projects.eclipse.org/projects/ee4j.eclipselink">EclipseLink</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="sources"><a class="anchor" href="#sources"></a>Sources</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Content for this document were harvested from multiple sources, including:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://www.eclipse.org/eclipse/news/4.8/M7/">Eclipse Platform 4.8 New and Noteworthy</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="notices"><a class="anchor" href="#notices"></a>Notices</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Eclipse is a trademark of the Eclipse Foundation. Java is a registered trademark of Oracle.</p>
</div>
</div>
</div>
</div>
</body>
</html>