blob: 9701c8d38deedad0c917df9fd9e2e86d7a69b5b1 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018, 2019. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
<meta http-equiv="Content-Language" content="en-us"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="STYLESHEET" href="news.css" type="text/css"/>
<style type="text/css">
body {max-width: 900px;}
table.news col.title {width: 30%;}
/*img {max-width: 520px;}*/
table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
table.news tr {vertical-align: top;}
table.news tr td.section {font-size: 20px; font-weight: bold;}
table.news tr td.title {vertical-align: top; font-weight: bold;}
table.news tr td.content {vertical-align: top;}
ul {padding-left: 13px;}
</style>
<title>Eclipse Project 4.27 - New and Noteworthy</title>
</head>
<body>
<h2>Java development tools</h2>
<ul>
<!--<li><a href="#JavaXX">Java&trade; XX Support</a></li>-->
<li><a href="#JUnit">JUnit</a></li>
<li><a href="#JavaEditor">Java Editor</a></li>
<li><a href="#JavaViewsAndDialogs">Java Views and Dialogs</a></li>
<li><a href="#JavaFormatter">Java Formatter</a></li>
<li><a href="#Debug">Debug</a></li>
<li><a href="#JDTDev">JDT Developers</a></li>
</ul>
<!-- ****************** START OF N&N TABLE ****************** -->
<table class="news">
<colgroup>
<col class="title" />
<col />
</colgroup>
<tbody>
<!-- ******************* Java XX Support ************************************* -->
<!--
<tr>
<td id="JavaXX" class="section" colspan="2">
<h2>Java&trade; XX Support </h2>
</td>
</tr>
-->
<!-- ******************* End of Java XX Support ************************************* -->
<!-- ******************* JUnit ************************************* -->
<tr>
<td id="ECJ" class="section" colspan="2">
<h2>Eclipse compiler for Java (ECJ)</h2>
</td>
</tr>
<tr id="ecj-separated-from-core"> <!-- https://github.com/eclipse-jdt/eclipse.jdt.core/pull/182 -->
<td class="title"><a href="#ecj-separated-from-core">ECJ separated from JDT Core</a></td>
<td class="content">
<p>
Historically the code for ECJ was always in the same <code>org.eclipse.jdt.core</code>
project that also contained the code for the Java support in the IDE, just in a different source folder.
The well known standalone ECJ compiler library that could be used outside of
Eclipse (for compilation with external tooling) was generated out of this
core bundle at build time and was not included in the default SDK (because
it contained subset of packages and classes provided by <code>org.eclipse.jdt.core</code>).
</p>
<p>
This lead to few issues, with both Eclipse / standalone use of the ECJ compiler.
The (non-JDT) code inside Eclipse that required "default" <code>javax.tools.JavaCompiler</code>
API implementation and had no need for full JDT / workspace support
was not able to use <code>org.eclipse.jdt.core</code> without pulling in
<code>org.eclipse.core.resources</code> bundle and so the dependency to the workspace.
Another interesting side effect of hosting ECJ code next to IDE code inside
same <code>org.eclipse.jdt.core</code> bundle was that developers couldn't see
if the ECJ code per mistake got some dependency to the IDE.
</p>
<p>
To resolve these (and other) problems, the ECJ code is moved from <code>org.eclipse.jdt.core</code>
to dedicated <code>org.eclipse.jdt.core.compiler.batch</code> project and will be
deployed as a separated bundle.
The <code>org.eclipse.jdt.core.compiler.batch</code> is now included in SDK
as a regular Eclipse bundle and can be compiled / deployed / used separately
from <code>org.eclipse.jdt.core</code> bundle.
All of ECJ packages are re-exported by <code>org.eclipse.jdt.core</code>, therefore
from OSGI point of view, all 3rd party code that used some compiler related API
from <code>org.eclipse.jdt.core</code> doesn't require any change.
The <code>org.eclipse.jdt.core.compiler.batch</code> bundle itself doesn't have any dependencies
and so can be used in Eclipse products that do not use workspace concepts.
</p>
<p>
However, no change is without side effects.
</p>
<p>
<b>Known problems with the split of the ECJ from core bundle</b>
</p>
<p>
<ul>
<li>
As part of the <code>org.eclipse.jdt.core.compiler.batch</code> code separation from
<code>org.eclipse.jdt.core</code>, the two fragments of <code>org.eclipse.jdt.core</code> -
<code>org.eclipse.jdt.compiler.apt</code> and <code>org.eclipse.jdt.compiler.tool</code>
were merged into <code>org.eclipse.jdt.core.compiler.batch</code>.
So if some target definition, launch configuration or build file referenced the two fragments, these
references can and should be removed now.
</li>
<li>
Another issue might affect standalone (non OSGI based) applications that
were using <code>org.eclipse.jdt.core</code> as a "simple" Java library
(which jdt.core never was).
So for example code that had <code>org.eclipse.jdt.core_XYZ.jar</code> on
classpath and tried to call this outside Eclipse:
<pre>ASTParser parser = ASTParser.newParser(AST.getJLSLatest());</pre>
would fail now with <pre>NoClassDefFoundError: org.eclipse.jdt.internal.compiler.env.ICompilationUnit</pre>
because <code>org.eclipse.jdt.core.dom.ASTParser</code> uses internally ECJ
APIs and they are now ... surprise ... moved to <code>org.eclipse.jdt.core.compiler.batch</code>
jar. To fix this error, <code>org.eclipse.jdt.core.compiler.batch</code> library
should be added to the application classpath.
</li>
</ul>
</p>
</td>
</tr>
<!-- ******************* JUnit ************************************* -->
<tr>
<td id="JUnit" class="section" colspan="2">
<h2>JUnit</h2>
</td>
</tr>
<tr id="junit-subpackage-support"> <!-- https://github.com/eclipse-jdt/eclipse.jdt.ui/pull/424 -->
<td class="title"><a href="#junit-subpackage-support">Launch JUnit tests in subpackages</a></td>
<td class="content">
Previously, if one selected a package in the explorer that contained JUnit tests and subpackages that also contained JUnit tests, only the tests directly owned by the package would be run. The functionality has been enhanced so that JUnit tests in subpackages will be found by the JUnitLauncher and launched as well.
<p>For example, in the following project, selecting the package <b>test</b> and right-clicking to <b>Run as &gt; JUnit Plug-in Test</b><p>
<p><img src="images/junit-subpackage-before.png" alt="Before"/></p>
<p>will result in:</p>
<p><img src="images/junit-subpackage-results.png" alt="JUnit results"/></p>
</td>
</tr>
<!-- ******************* End of JUnit ************************************* -->
<!-- ******************* Java Editor ************************************* -->
<tr>
<td id="JavaEditor" class="section" colspan="2">
<h2>Java Editor </h2>
</td>
</tr>
<td class="title"><a href="#new-code-mining-preference">New code mining preference</a></td>
<td class="content">
In the past, the code minings for method references used the <b>Search</b> preferences page setting: <b>Ignore potential matches</b> to determine if inexact matches should be filtered out. By default, this setting is false and so code mining could result in a number of entries that were only potential matches. To make this more intuitive and to change the default behavior, the <b>Code Mining</b> preference page has been enhanced to have its own setting: <b>Ignore inexact matches</b> which by default is set to true.
<p>To set the new option, go to: <b>Preferences &gt; Java &gt; Editor &gt; Code Minings</b>
</p>
<p><img src="images/new-code-mining-pref.png" alt="New Code Mining Preference"/></p>
</td>
</tr>
<!-- ******************* End of Java Editor ************************************* -->
<!-- ******************* Java Views and Dialogs ************************************* -->
<tr>
<td id="JavaViewsAndDialogs" class="section" colspan="2">
<h2>Java Views and Dialogs</h2>
</td>
</tr>
<!-- ******************* End of Java Views and Dialogs ************************************* -->
<!-- ******************* Java Compiler ************************************* -->
<tr>
<td id="JavaCompiler" class="section" colspan="2">
<h2>Java Compiler</h2>
</td>
</tr>
<!-- ******************* End of Java Compiler ************************************* -->
<!-- ******************* Java Formatter ************************************* -->
<tr>
<td id="JavaFormatter" class="section" colspan="2">
<h2>Java Formatter </h2>
</td>
</tr>
<!-- ******************* End of Java Formatter ************************************* -->
<!-- *********************** Debug ******************************** -->
<tr>
<td id="Debug" class="section" colspan="2">
<h2>Debug</h2>
</td>
</tr>
<!--************************ End of Debug ******************************** -->
<!-- *********************** JDT Developers ******************************** -->
<tr>
<td id="JDTDev" class="section" colspan="2">
<h2>JDT Developers</h2>
</td>
</tr>
<tr id="new-old-jdt-views"> <!-- https://github.com/eclipse-jdt/eclipse.jdt.ui/issues/387
https://github.com/eclipse-jdt/eclipse.jdt.ui/issues/364 -->
<td class="title"><a href="#new-old-jdt-views">Four new views added to SDK</a></td>
<td class="content">
<p>
Following four new Java / JDT related views are shipped now by default with the Eclipse SDK:
<ol>
<li><code>Abstract Syntax Tree</code></li>
<li><code>Bytecode</code></li>
<li><code>Bytecode Reference</code></li>
<li><code>Java Element</code></li>
</ol>
</p>
<p><img src="images/new-jdt-views-list.png" alt="List of views"/></p>
<p>
All four views are actually not new, however they were previously only available for installation
via Eclipse Marketplace and not included in the SDK itself.
Now they are shipped with SDK package and also will be available for installation in other packages
via <a href="https://download.eclipse.org/eclipse/updates/latest/">https://download.eclipse.org/eclipse/updates/latest/</a>
update site.
</p>
<p>
<ul>
<li>
<code>Bytecode</code> and <code>Bytecode Reference</code> views are of general use for advanced Java developers
interested how the Java code compiled to the class files, independently
if the class file was compiled by Eclipse or by other Java compiler.
</li>
<li>
<code>Abstract Syntax Tree</code> and <code>Java Element</code> views are
showing JDT internal representation of the Java code and are useful mostly for JDT developers only.
</li>
</ul>
</p>
<p><img src="images/new-jdt-views-content.png" alt="Views with some content"/></p>
</p>
</td>
</tr>
<!-- *********************** End of JDT Developers ******************************** -->
<tr><td colspan="2"/></tr>
</tbody>
</table>
<!-- ****************** END OF N&N TABLE ****************** -->
<script type="text/javascript" src="scripts.js"></script>
<p style="text-align:center">
<a href="platform.php">Previous</a> <a style="margin:1em" href=".">Up</a> <a href="platform_isv.php">Next</a>
</p>
</body>
</html>