IntelliJ IDEA 2017.3 Public Preview

IntelliJ IDEA 2017.3 is now available for public preview! Everyone is welcome to download the public preview build right away. We are committed to creating a better product, we really appreciate your input when you share your feedback and send us bug reports. We are constantly working to improve user experience and productivity, and, of course, on bug fixes. In this post, we’d like to give you a glimpse of the highlights of the upcoming release.

IntelliJIDEA_Ult20173_PP_blog (1)

Java inspections & quick-fixes

IntelliJ IDEA 2017.3 has loads of new improvements made to the data flow analysis.
The IDE now detects possible nullability issues in Stream API call chains:

Screen-Shot-2017-09-20-at-13.36.01

Now you can replace StringBuilder usages with Stream.collect and Collectors.joining:

Screen-Shot-2017-09-20-at-13.36.03

You can replace code that iterates to find a maximum or a minimum with Stream.max and Stream.min:

Screen-Shot-2017-09-20-at-13.36.02

We’ve made the data flow analysis for the Optional type even smarter:

Screen-Shot-2017-09-21-at-14.08.05

It now even detects issues that were not obvious:

Screen-Shot-2017-09-21-at-14.16.52 (1)

The updated inspection infers nullability annotations for parameters of sealed and private methods:

image3

It offers a quick-fix to explicitly declare the inferred annotation:

image1

Redundant throws declarations can now be detected and fixed on the fly.

InspectionThrows

For deprecated code, the IDE now suggests a quick-fix if there is a replacement method in the JavaDoc.

QuickFixForDeprecation

The inspection for Inverting a boolean method is now available on-the-fly.

InspectionInverted

The IDE now detects duplicating Map keys and duplicating Set elements.

InspectionMap

InspectionsSET

You will also find new inspections for the Fuse Stream API call chain:

2017-10-25 18_14_23

image14

There’s a new intention action called Unroll loop:

image21

 

Note that there’s an easy way to find all the new inspections. Open the Settings/Preferences dialog select Editor | Inspections, and click on the Filter icon.

Screen Shot 2017-10-25 at 18.28.15

Smart Completion in IntelliJ IDEA 2017.3 is aware of type casts and uses them to suggest chains of method calls.

Screen-Shot-2017-10-09-at-5.57.23-PM-1

JVM Debugger

There’s a new Overhead tab in the Debugger tool window. It displays the overhead added either when stepping over the code or when Data Renderers evaluate values.

Screen Shot 2017-10-24 at 18.50.49

One more enhancement to the debugger is the new On-demand Data Renderers feature that helps reduce overhead. Now, the evaluation of the values in Variables, Watches, and other places can be done on demand. Simply click on them when needed, instead of having them evaluated automatically:

Screen Shot 2017-10-24 at 18.50.49

To enable On-demand Data Renderers for each renderer, go to the Data Renderers settings page.

image20

In addition, a renderer can be “muted” from the context menu.

Screen Shot 2017-10-24 at 19.20.10

Async stacktraces

The Async Stacktraces feature shows the combined stack traces of all threads. IntelliJ IDEA 2017.3 extends the Async Stacktraces feature with a new Instrumenting agent, which provides almost the same functionality and works out of the box as common capture points are built-in. The new Instrumenting agent causes very low overhead. The Instrumenting agent option is enabled by default.

Screen Shot 2017-10-06 at 17.41.17

For this code example, we’ll have the following stack trace:

Screen Shot 2017-10-11 at 11.23.37

Screen Shot 2017-10-06 at 16.21.55

Java Stream Debugger

The Java Stream Debugger plugin, which visualizes Java Stream operations, is built into IntelliJ IDEA 2017.3. The new functionality is available inside the Debugger tool window (click the Trace Current Stream Chain button). This plugin evaluates the current data stream and presents a visual representation of what exactly happens to each element, from the first call to the last.

2017-10-04 17_03_19

Use the Split Mode / Flat Mode button to toggle the way operations are displayed: all at once or individually.

Gradle

IntelliJ IDEA 2017.3 lets you run tests with coverage with Gradle Test Runner. You can run tests with coverage even if you select the option Delegate IDE build/run action to gradle.

Screen-Shot-2017-09-19-at-16.40.06-1

In the Preferences window, you can enable the option Let me choose per test to choose how to run your tests with coverage per test: with the platform test runner, or with the gradle test runner. You can select the test runner type from the editor.

Screen-Shot-2017-09-19-at-17.38.33-2

You can also run tests with coverage from the editor, even if you delegate a test to Gradle.

Build tool window

IntelliJ IDEA 2017.3 introduces a new Build tool window as a single place to view all of the output related to a Gradle build. Previously, the output of a Gradle build was displayed in different places depending on the context, including the Run or Messages windows. In some cases, it was even hidden as a background process.

Screen Shot 2017-10-24 at 13.48.33

If a project is set to auto-import, it will be automatically rebuilt when there are changes that affect a Gradle build. The new Build tool window shows the progress of this process as well.

Even when you enable Delegate IDE build/run actions to gradle, the build output will still be displayed in the Build tool window.

Run Dashboard

In IntelliJ IDEA 2017.2, we introduced the Run Dashboard for Spring Boot applications. We are extending this functionality in v2017.3, so that the IDE now lets you add different types of run configurations to the Run Dashboard. In the Run/Debug Configurations window, you can add the required run configuration to the Run Dashboard.

Screen Shot 2017-10-24 at 13.22.37

You can manage multiple run configurations at once by using the Run Dashboard.

The Run Dashboard toolbar lets you rerun, stop, pause, or terminate an application. The right-hand side shows application-specific information.

Screen Shot 2017-10-20 at 20.29.09

Command line shortener

IntelliJ IDEA 2017.3 introduces a configurable command line shortener – a convenient new way to specify a method used to shorten the command line for each configuration.

Look in the Run/Debug Configuration dialog for a new field called Shorten command line.

Screen Shot 2017-10-09 at 08.58.33
You can set the default way to shorten the command line and use it as a template for future configurations. IntelliJ IDEA 2017.3 also enables you to share your configuration with your colleagues.

You can also preview the full command line if a long classpath was shortened via a temporary classpath.jar (the JAR Manifest option in the Run/Debug Configuration dialog).

Project configuration

Now you can choose how to organize modules: by using module groups, or by grouping modules based on their qualified names.

There are also new improvements for unloaded modules. When you update a project that has unloaded modules via a VCS, the IDE will analyze all the dependencies between the modules. If newly added modules depend on the existing ones, they will be marked as loaded; otherwise, as unloaded.

Also, the IDE now checks that unloaded modules compile successfully before a commit.

Java EE 8

IntelliJ IDEA 2017.3 expands its support for the key features in Java EE 8. The IDE now supports Asynchronous CDI Events, and allows you to easily navigate between the place where the event was fired and where this event was received. This is done by using icons in the gutter.

asyncevents2

Spring and Spring Boot

The IDE now automatically detects the Spring configuration in your code. It will automatically create a Spring facet for your project, or will alert you if any configuration is missing.

Also, the Spring Beans Dependencies diagram has been extended with a new Neighborhood Mode feature, which lets you choose only the necessary beans and only view their dependencies.

For better readability, you can easily switch to the Borderless View.

2017-10-06 12_01_05

For Spring Boot MVC web applications, the IDE now automatically detects an MVC context. A Web Facet and a Spring Boot MVC Context will be set up automatically.

Screen Shot 2017-10-19 at 18.37.42

For Spring Boot MVC web applications, the IDE now fully supports all the major features including auto-completion, syntax highlighting, and navigation to related views.

MVC-Spring-navigation

Support for Spring Boot 2 is now available.

REST client

IntelliJ IDEA 2017.3 introduces a brand new editor-based REST client. To start using the new REST client, create a scratch file with the .http extension.

image13 (1)

Use the icon on the left-hand panel of the editor to run a request:

image5

For easier navigation, the IDE will add a link to the request results.

image8

In the new editor-based REST client, you can define the context for executing a request. Create a rest-client.env.json file inside your project and define an environment with variables. Once the environment variables are defined, you can easily switch between different environments such as production, testing, and development.

image41

VCS

For Git integration, IntelliJ IDEA 2017.3 provides faster branch operations, especially for big projects.

The Log viewer now offers a new action called Interactively Rebase from Here.

image12

To learn more about all the exciting new features that v2017.3 offers for version control tools, click here.

Settings synchronization

IntelliJ IDEA 2017.3 ensures better synchronization of your settings across different installations. It provides a more convenient method for storing your settings, utilizing a JetBrains repository to store items such as the UI theme, colors, and fonts settings, and so on. You can apply these settings to all of your IDE instances using your JetBrains Account (JBA).

You can also synchronize the list of installed and enabled and disabled plugins.

The settings you can sync include:

  1. Look And Feel (Preferences | Appearance & Behavior | Appearance | Theme)
  2. Keymap (Preferences | Keymap)
  3. Color Scheme (Preferences | Editor | Color Scheme)
  4. General Settings (Preferences | Appearance & Behavior | System Settings)
  5. UI Settings (Preferences | Appearance & Behavior | Appearance)
  6. Menus and Toolbars (Preferences | Appearance & Behavior | Menus and Toolbars)
  7. ProjectView Settings (Project Tool Window – syncs only IDE settings, all other settings are automatically saved in a project)
  8. Editor Settings (Preferences | Editor | General)
  9. Code Completion (Preferences | Editor | General | Code Completion)
  10. Parameter Name Hints (Preferences | Editor | General)
  11. Live Templates (Preferences | Editor | Live Templates)
  12. Code Style Schemes (Preferences | Editor | Code Style)Plugins (Preferences | Plugins)

In order to test the new settings synchronization functionality before its release, you need to activate the IDE Settings Sync plugin. You can learn how to activate it in this blog post.

To learn about the enhancements for JavaScript and TypeScript, please take a look at the Webstorm blog. Make sure to check the improvements affecting database tools and SQL support in the DataGrip blog.

Last but not least, here’s a list of some notable bugfixes in IntelliJ IDEA 2017.3:

JRE-509 JDK was updated to 1.8.0_152-release-1024-b06 x86_64: the HiDPI mode fallback logic was removed
IDEA-26988 the IDEA Coverage ignores empty private Constructors of Utility Classes
Two new options added in the Coverage settings:
to exclude implicit constructors from the coverage
to exclude empty private constructors coverage data in classes when all of the other methods are static
IDEA-101502 Dir diff: Files with different line separators are shown as different, but they are actually the same.
IDEA-178764 The pull request fails after the pull request creation
IDEA-170103 The Find in Path dialog don’t close (2017.1 version, Ubuntu 16.04)
IDEA-121059 JPA2.1: Error “Element entity-mapping must be declared” in the mapping file in case of standard schema location.
IDEA-138029 Cannot index custom maven repositories provided by Bintray
IDEA-134885 Gradle plugin incorrectly adds Maven artifact dependencies when they should resolve to module dependencies.

And many more check this link

Whew, that was quite a list! To get started and discover these new features, download the preview build! Share your feedback with us via the comments below, our issue tracker or twitter.

Happy developing!

 

 

About Zlata Kalyuzhnaya

IntelliJ IDEA Marketing Manager at JetBrains.
This entry was posted in EAP Releases, New Features and tagged , , . Bookmark the permalink.

18 Responses to IntelliJ IDEA 2017.3 Public Preview

  1. Edoardo says:

    Awesome changelog!
    Do you guys have a possible release date for the .3 (stable) to share?

  2. Thomas says:

    Is there a timeline/status or expectation when Android Studio 3.0 features will be merged into Intellij?

    For those that use Intellij for android development it would be nice if there was some way we could see what version is included in Intellij.

    Nice update for the rest

    • Paul says:

      The features would be nice, but at least allow it to work with version 3.0.0 of the android build tool plugin (2017.2 complains that it only works with android studio 3)

  3. Wojtek says:

    Those are great improvements!

    Could I make a small ‘request’ regarding the examples? Could you use something different for animations? Proper video format that would allow pausing? Currently following animations in the gifs is quite annoying as it immediately jumps and then you would need to wait for the beginning without actually knowing when

  4. Kuba says:

    I think that gif for “Unroll loop” is copied/pasted from “Fuse Stream API call chain”

  5. Markus S says:

    Can I sync settings between Community and Ultimate Edition?

    • Zlata Kalyuzhnaya says:

      Hi Markus, the IDE Settings Sync plugin is available only for paid products. As for now you can’t sync settings between Community and Ultimate Edition, sorry.

  6. Wow – that’s a lot of stuff.

    One minor thing – the gif for Unroll Loop is a copy of the Fuse one above it.

  7. Haikal says:

    The new rest client looks great, but is there a way to keep (some) environment config outside of the project? This will let us:

    * Keep passwords out of the project
    * Share environments between projects

  8. Rodrigo CL says:

    Thank you for the hard work!

    I really liked the parameter hints feature! I wonder if you can make it so to all parameters no exceptions, even as an disabled feature as default. I think cleaness of code is subjective, and it is helping a lot!

  9. Robin says:

    Great list of features and enhancements.
    Will the IDE auto focus behavior be fixed anytime soon, as per https://youtrack.jetbrains.com/issue/IDEA-106716 ?

    • Zlata Kalyuzhnaya says:

      Hi Robin! Thanks for your feedback. We are currently working on this problem and hopefully, we’ll be able to fix this issue in 2018.1, at least partly.

  10. Alix Warnke says:

    It would be great if you could sync Android Studio 3.0 to IntelliJ Ultimate 2017.3 or at least make it possible to build and deploy using Android Gradle Plugin 3.0 :-)

  11. Pim says:

    I loved the Spring Run dashboard in 2017.2, even though it was buggy sometimes while debugging. (the window sizes was sometimes awkward so I had to resize it to be able to see the content normal).

    I was looking for this renewed dashboard, and had a hard time finding it. The section with Run Dashboard Types was Collapsed by default so I overlooked it. I could find the view using cmd+shift+a, but it was greyed out. It would be nice to open it by default and have an option to add some types when there are none defined yet.

Leave a Reply

Your email address will not be published. Required fields are marked *