blob: 71b2405a2601cd7059c337dc2810ff48e4970294 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="default_style.css" type="text/css" title="main" media="screen" />
<title>Eclipse Project 4.3 M5 News</title>
</head>
<body>
<h1>Eclipse Project 4.3 M5 - New and Noteworthy</h1>
<p>Here are some of the more noteworthy things available in milestone build M5
(February 1, 2013) which is now available for <a href="http://download.eclipse.org/eclipse/downloads/" target="_top">download</a>.
</p>
<ul>
<li><a href="#JDT">JDT</a></li>
<li><a href="#PDE">PDE</a></li>
<li><a href="#Platform">Platform</a></li>
</ul>
<table class="news" border="0" cellpadding="10" cellspacing="0" width="80%">
<tr>
<td colspan="2" class="section" id="JDT">JDT</td>
</tr>
<tr id="null-annotations-for-fields">
<td class="title">Null annotations for fields</td>
<td class="content">
The annotation-based null analysis &mdash; first released with Eclipse Indigo &mdash; has been extended
to apply also to fields. If enabled, this analysis will now detect the following problems
concerning any field annotated with <code>@NonNull</code>:
<ul>
<li>If the field is not properly initialized to a non-null value.</li>
<li>If a value is assigned to the field that is not known to be non-null.</li>
</ul>
<p>In return to these obligations, dereferencing a <code>@NonNull</code> field is regarded as always safe.
</p>
<p>If a field is marked as <code>@Nullable</code>, generally every direct dereference
of the field is flagged as a potential null pointer access. Even a null check for such a field is not
a perfect protection due to dangers of side effects, effects via aliased references, and concurrency.</p>
<p>As a compromise between safety and convenience, the compiler can be configured to apply
<strong>"syntactic null analysis for fields"</strong>.
With this option enabled, the compiler syntactically recognizes
a narrow range of code patterns where a null-check of a field is <em>directly</em> followed by
a dereference or an assignment to a <code>@NonNull</code> variable. For these particular situations,
no problem will be reported.</p>
<p>In the following example, the check in line 12 properly protects the access in line 13, whereas
the knowledge that field <code>nullable</code> holds a non-null value (in line 15) is spoiled by
the intermediate statement in line 16.</p>
<p><a href="images/null-annotations-for-fields-examples.txt"><img src="images/null-annotations-for-fields-examples.png" alt=""/></a></p>
<p>This is the option that enables the syntactic analysis (under the heading <strong>Java Compiler &gt; Errors/Warnings</strong>):</p>
<p><img src="images/option-syntactic-null-analysis-for-fields.png" alt=""/></p>
</td>
</tr>
<tr id="Support-for-package-Javadoc-in-Javadoc-hover-and-view">
<td class="title">Support for package Javadoc in Javadoc hover and view</td>
<td class="content">
The Javadoc hover and view now display package Javadoc from either the package-info.java or the package.html file.
<p><img src="images/package-javadoc-hover-examples.png" alt=""/></p>
</td>
</tr>
<tr id="Quick-Assist-for-unused-type-parameters">
<td class="title">Quick Assist for unused type parameters</td>
<td class="content">
The Java editor now provides a Quick Assist (<b>Ctrl+1</b>) to remove or document unused type parameters.
<p><img src="images/quickassist-for-unused-type-parameter-example.png" alt=""/></p>
</td>
</tr>
<tr id="pre-fill-package-name">
<td class="title">Pre-filling package name in creation wizards</td>
<td class="content">
All the type and package creation wizards now pre-fill the package name
if a suitable package name can be suggested for the selected project or source folder.
<p><img src="images/pre-fill-package-name.png" alt=""/></p>
<p>The suggested package name is the name of the project if the source folder does not contain any package
and if the project name is a valid package name.
In case of type creation wizards, if the source folder contains exactly one package then the name of that package
is used as the suggested package name.</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="PDE">PDE</td>
</tr>
<tr id="bundles-in-category-editor">
<td class="title">Bundles in the category editor</td>
<td class="content">
The category editor now supports putting individual bundles into categories.
<p>
The category editor creates a category.xml that can define categories that the contents of
a p2 repository should be organized into. Previously only features could be specified as belonging
to a category and be visible to users. Now individual bundles can be added to the category.xml.
</p>
<p>
<img src="images/category-editor.png" alt="Category editor can include individual bundles"/>
</p>
</td>
</tr>
<tr id="plugin-classpath-contributors">
<td class="title">New API to contribute to the classpath of plug-in projects</td>
<td class="content">
New API in PDE allows you to add additional classpath entries to a plug-in project. Contribute a
<em>Plug-in Classpath Contributor</em> via the <em>org.eclipse.pde.core.pluginClasspathContributors</em>
extension point. Whenever the PDE classpath is computed or a new plug-in dependency is added, your classpath
contributor will be queried for additional entries.
<p>
If you are using Equinox Adapter hooks to load additional libraries at runtime you can use this API to add
the correct libraries to the classpath at build time.
</p>
<p>
<img src="images/classpath-contributor.png" alt="An example classpath contributor extension"/>
</p>
</td>
</tr>
<tr id="update-classpath-workspace">
<td class="title">Updating the classpath requires a workspace lock</td>
<td class="content">
When a change is made to a plug-in that forces a classpath update, an update job is created that
modifies the Plug-in Dependencies classpath container in the background. This job now acquires a workspace lock
to prevent other operations such as builders from running on a stale classpath.
<p>
This behaviour can be enabled in 4.2.2 by setting the system property <em>pde.lockWorkspaceForClasspath</em> to
true.
</p>
</td>
</tr>
<tr id="api-use-filters">
<td class="title">Problem filters apply to API Tools use scans</td>
<td class="content">
Problem filter files (.api_filter) can be used to filter problems reported by the API Tools analysis
task and the workspace analysis builder. These filter files can now be applied to API Tools use scans.
Reference problems that are filtered out of the analysis results can be also filtered from the results
of use scans.
<p>
Filters are specified in the task using the same property as the analysis task. Set the <em>filters</em>
attribute on the <em>apitooling.apiuse</em> task, specifying the root directory of API filter files. Each
filter file must be in a folder with a filename matching the component name the filter file applies to.
</p>
</td>
</tr>
<tr id="missing-filters-on-tasks">
<td class="title">API Tools tasks warn about missing include or exclude files</td>
<td class="content">
Many of the API Tools tasks, including Analysis, API Use, and API Freeze, provide <em>includelist</em> and
<em>excludelist</em> attributes which can be used to limit the reported problems. Previously,
if you set an include or exclude list, but the file wasn't found, the task would continue without warning
about the incorrect filtering. Now a missing include or exclude list will result in the task failing with
an explanation.
<p>
<img src="images/missing-include.png" alt="Example console output for missing include"/>
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="Platform">Platform</td>
</tr>
<tr id="detect-shared-install-change">
<td class="title">Detection of shared install changes</td>
<td class="content">
When Eclipse is running in a read-only folder (also known as shared install) and the read-only
installation has changed (e.g. new plugins installed, new version of Eclipse installed), Eclipse
will now detect this change and warn that your personal additional plugins have been uninstalled.
In the next milestone, this warning will be replaced by a migration dialog allowing you to
reinstall your plugins.
<p>
<img src="images/install-modified.png" alt="Dialog warning about a modified install"/>
</p>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
<p>The above features are just the ones that are new since the previous milestone
build. Summaries for earlier Kepler milestone builds:</p>
<ul>
<li><a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M4-201212140730/news/">New for Eclipse Kepler milestone build M4 (December 14, 2012)</a></li>
<li><a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M3-201210312000/news/">New for Eclipse Kepler milestone build M3 (November 2, 2012)</a></li>
<li><a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M2-201209201300/news/">New for Eclipse Kepler milestone build M2 (September 21, 2012)</a></li>
<li><a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M1-201208101300/news/">New for Eclipse Kepler milestone build M1 (August 10, 2012)</a></li>
</ul>
</body>
</html>