JBoss Tools 4.17.0 and Red Hat CodeReady Studio 12.17 for Eclipse 2020-09 are here waiting for you. Check it out!
Installation
Red Hat CodeReady Studio comes with everything pre-bundled in its installer. Simply download it from our Red Hat CodeReady product page and run it like this:
java -jar codereadystudio-<installername>.jar
JBoss Tools or Bring-Your-Own-Eclipse (BYOE) CodeReady Studio require a bit more:
This release requires at least Eclipse 4.17 (2020-09) but we recommend using the latest Eclipse 4.17 2020-06 JEE Bundle since then you get most of the dependencies preinstalled.
Java11 is now required to run Red Hat Developer Studio or JBoss Tools (this is a requirement from Eclipse 4.17). So make sure to select a Java11 JDK in the installer. You can still work with pre-Java11 JDK/JRE and projects in the tool. |
Once you have installed Eclipse, you can either find us on the Eclipse Marketplace under "JBoss Tools" or "Red Hat CodeReady Studio".
For JBoss Tools, you can also use our update site directly.
http://download.jboss.org/jbosstools/photon/stable/updates/
What is new?
Our main focus for this release was an improved tooling for the Quarkus framework, improvements for container based development and bug fixing. Eclipse 2020-09 itself has a lot of new cool stuff but let me highlight just a few updates in both Eclipse 2020-09 and JBoss Tools plugins that I think are worth mentioning.
Quarkus
Support for YAML configuration file
Quarkus supports configuration through YAML format. For more information, see the Quarkus documentation
In order to use it, follow the steps:
-
create a Quarkus project using the new Quarkus wizard
-
create a new
application.yaml
orapplication.yml
next to theapplication.properties
insrc/main/resources
The editor will open and you will get content assist and syntax validation.
Hibernate Tools
Platform
Views, Dialogs and Toolbar
Adjustable view fonts
The font used for tree and table views can now be customized with a font preference. This preference is called "Tree and Table font for views" and can be found in Window > Preferences > General > Appearance > Colors and Fonts under the "View and Editor Folders" category.
The Project Explorer is an example of a view that gets affected by this font preference.
Remove gifs from views
Several years ago, the icons of the platform views were migrated to .png files. As already opened views store their reference to the image, the .gif files were left in the code. These have been removed now. If you are using the same workspace for multiple years and view icons are missing due to that removal, you have to close and reopen the view.
Default changed for confirm on exit for last window
By default, Eclipse now closes if you select the close icon on the last window without additional confirmation dialog. If you want to get a confirmation dialog, you can enable that via Window > Preferences > General > Startup and Shutdown > Confirm exit when closing last window.
Text Editors
Multiple Last Edit Locations
Previous Edit Location navigation (formerly named Last Edit Location) is now expanded to remember multiple edit locations.
The last 15 edit locations are now remembered. For convenience, similar edit locations in close proximity to each other are also merged so that each of the 15 remembered locations remains distinct.
How to use
Two new keyboard shortcuts are introduced:
-
Ctrl+Alt+LEFT_ARROW (or on Mac Ctrl+Opt+LEFT_ARROW) navigates to the most recent edit location, just as Ctrl+Q always has in prior releases.
However, now continuing to hold Ctrl+Alt and then pressing LEFT_ARROW again begins a traversal through the history of prior edit locations, with each additional press of LEFT_ARROW moving a step further back in history. Once traversal stops, future Ctrl+Alt+LEFT_ARROW actions are now temporarily anchored to this older historical location for easy exploration of that code region.
The classic Ctrl+Q mapping has been likewise enhanced with this new functionality, so that Ctrl+Q and Ctrl+Alt+LEFT_ARROW are synonymous.
-
Ctrl+Alt+RIGHT_ARROW (or on Mac Ctrl+Opt+RIGHT_ARROW) conversely moves the anchor forward through edit history, so after traversing backward with Ctrl+Alt+LEFT_ARROW, you can go forward again by holding Ctrl+Alt and repeatedly pressing RIGHT_ARROW. A new menu item has likewise been added for this forward navigation as well.
New edit locations are always inserted at the end, so original historical ordering is always maintained. New edits also reset the last location "anchor" back to the most recent edit, so that pressing Ctrl+Alt+LEFT_ARROW once again brings you to the most recent edit rather than a historical one.
Themes and Styling
Improved GTK light theme
The GTK light theme has been updated to align better with the default GTK3 Adwaita theme.
Old:
New:
Windows menus are styled in the dark theme
SWT now natively styles the menu under Windows in the dark theme.
Old:
New:
Dropbox boxes (Combos) are styled under Windows in the dark theme
SWT now natively styles drop-down boxes under Windows in the dark theme.
Old:
New:
Debug
Filter null bytes from console output
The interpretation of ASCII control characters in the Console View was extended to recognize the characters: \0
- null byte. If interpretation is enabled, any null byte will be stripped and not shown in console view. This is most relevant for the Linux platform where a null byte in console view causes anything after it on the same line to be not rendered.
This feature is disabled by default. You can enable it on the Run/Debug > Console preference page.
Java Developement Tools (JDT)
Java 15 Support
Java 15
Java 15 is out and Eclipse JDT supports Java 15 for 4.17 via Marketplace.
The release notably includes the following Java 15 features:
-
JEP 378: Text Blocks (Standard).
-
JEP 384: Records (Second Preview).
-
JEP 375: Pattern Matching for Instanceof (Second Preview).
-
JEP 360: Sealed Classes (Preview).
Please note that preview option should be on for preview language features. For an informal introduction of the support, please refer to Java 15 Examples wiki.
JUnit
Collapse all nodes in JUnit view
JUnit view now provides a context-menu option to collapse all nodes:
Sort test results by execution time
JUnit view now provides the ability to sort results by execution time. By default, results will be sorted by execution order. Choosing Sort By > Execution Time from the JUnit View menu will reorder the results once all tests are complete. While tests are still running, they will be shown in execution order.
Sorting by execution order results in:
Java Editor
Substring/Subword matches for types
Content Assist now fully supports both substring and subword matches for types:
Substring matches are always shown and subword matches can be enabled/disabled with the existing Show subword matches option on the Java > Editor > Content Assist preference page.
Optimization tab
A new tab has been added that gathers cleanups that improve the time performance: the existing lazy operator cleanup and the regex precompiler cleanup.
Objects.equals()
A new clean up has been added that makes use of Objects.equals()
to implement the equals(Object)
method.
It reduces the code and improves the reading. The cleanup is only available for Java 7 or higher. Although this kind of comparison is almost exclusively seen in the equals(Object)
method, it can also reduce code in other methods.
To select the clean up, invoke Source > Clean Up…, use a custom profile, and on the Configure… dialog select Use Objects.equals() in the equals method implementation on the Unnecessary Code tab.
For the given code:
You get this after the clean up:
Precompiles the regular expressions
A new clean up has been added that optimizes the regular expression execution by precompiling it.
It replaces some usages of java.lang.String
by usages of java.util.regex.Pattern
. The cleanup is done only if it is sure that the string is used as a regular expression. If there is any doubt, nothing is done. The regular expression must be explicitly used several times to be sure the cleanup is useful.
To select the clean up, invoke Source > Clean Up…, use a custom profile, and on the Configure… dialog select Precompiles reused regular expressions on the Optimization tab.
For the given code:
You get this after the clean up:
String.format quickfix
A new quickfix has been added to replace string concatenation with String.format
, similar to the existing ones for StringBuilder
and MessageFormat
.
Method reference quickfix
A new quickfix has been added to create missing methods for method references.
Current restriction is that this quickfix is only available on current class. |
Expect current implementation to work on simple cases only. Method references invoking nested generics or type parameters might be problematic to resolve correct. |
Java Formatter
Assert statement wrapping
A new setting in the Formatter profile controls line wrapping of assert statements. A line wrap can be added between the assert condition and its error message. The setting can be found in the Profile Editor (Preferences > Java > Code Style > Formatter > Edit…) in the Line Wrapping > Wrapping Settings > Statemtens > 'assert' messages node.
Debug
Anonymous class instance in evaluation
The JDT debugger is now capable of inspecting/evaluating expressions with anonymous class instances.
JEP 358: Helpful NullPointerExceptions
The JDT debugger has now a checkbox option to activate the command line support for JEP 358. This is disabled below Java 14 and enabled by default for Java programs launched with Java 14 and above.
-XX:+ShowCodeDetailsInExceptionMessages
JVM is now capable of analyzing which variable was null at the point of NullPointerException and describe the variable with a null-detail message in the NPE.
Actual type in Variables view
The option Show Type Names in the Variables and Expressions views now displays the value’s actual type instead of its declared type. This simplifies debugging especially when variable details (toString()
) is shown As the label for all variables.
To enable Show Type Names in the Variables view, column mode must be disabled (View Menu > Layout > Show Columns).
Example:
Object s = "some string";
Collection<?> c = Arrays.asList(s, 1);
// breakpoint
And more…
You can find more noteworthy updates in on this page.