IntelliJ IDEA 2017.2 EAP is Here

It’s been only a month and a half since the release of IntelliJ IDEA 2017.1, but it’s time to shed a light on the next major update on which we’re going to work the entire Summer.

Java

Better Gradle UX: progress & environment variables

When Gradle is downloading a wrapper distributive, IntelliJ IDEA will display the progress bar in both Console tool window and Background Tasks popup.

When you run a Gradle task via a Run Configuration, you will be able to specify and/or override environment variables.

On macOS IntelliJ IDEA now respects environment variables defined in the Terminal, which makes its Gradle build consistent with the command line behaviour.

Smarter control flow analysis: number ranges

Java static code analysis has become smarter and now detects issues impossible to catch without deep control flow analysis. For example, numeric comparisons are checked so that they don’t evaluate to true or false all the time.

Usually these warnings are found in dead code, but sometimes they might be a sign of deeper issues. In the example above highlighted code is not reachable because when the value of the index variable becomes equal to the length of the string, it will have already thrown an IndexOutOfBoundsException.

This analysis is aware of loops, casts, and statements like throw, return, if, or switch.

Refactorings: extract a map operation

When you’re extracting a variable inside a Stream API map call, IntelliJ IDEA offers to extract it as a separate map() expression:

JUnit 5 M4: parameterized and repeated tests

Dedicated coding assistance is provided for Parameterized Tests and Repeated Tests.

IntelliJ IDEA warns if you haven’t specified the source of arguments for your test.

It also makes sure that the argument values match the method signature.

IntelliJ IDEA reports suspicious use of both Test and ParameterizedTest annotations together:

Now you get completion and navigation for method names used with MethodSource. IntelliJ IDEA won’t report a method as unused if it has usages in tests with MethodSource.

Reflection API: coding assistance

The coding assistance for Reflection has been improved.

Similar coding assistance has been introduced for Method Handlers and Variable Handlers.

IntelliJ IDEA provides code completion for method and field names as well as their signatures.

idea_2017_2_handlers_2

If a name refers to a non-existing method, or field, you’ll get a warning.

Same happens when a handler is invoked with wrong parameters.

User Interface

Find in Path: gutter icons, local change markers, focus

Preview panel in Find in Path now has a Gutter where you can see the navigation icons and local change markers.

And, it won’t just disappear when you switch focus away from IntelliJ IDEA, so to close it you have to press Esc.

Better HiDPI support: per-monitor, auto-adjusted font-sizes

Earlier, on Windows and Linux IntelliJ IDEA would scale its UI according to the global settings (primary display), which meant that one scale factor was used across all displays. Right now, on Windows you each of the displays gets its own scale factor (provided it’s an integer value), and support for Linux and fractional values is coming.

Font settings are automatically adjusted based on the display resolution.

Spring

Spring Boot: actuator endpoints

The Run/Debug tool windows for Spring Boot application now have a tab called Endpoints, where you can see the information about the Health and Beans endpoints.

The support for other endpoints (e.g. mapping) is coming soon.

JavaScript

Detecting recursive calls

If you have a recursive call inside a JavaScript or TypeScript function, IntelliJ IDEA will detect it and mark it on the gutter, making your code easier to read and understand.

TypeScript: parameter hints

The Parameter Hints option which was added earlier for Java, is now available for TypeScript, too.

Code rearranging

The Rearrange Code action (earlier available for Java and several other languages), is now available for JavaScript and TypeScript. The arrangement rules can be changed in Settings | Editor | Code Style | JavaScript (or TypeScript) | Arrangement.

That’s it for now. To give these and other new features a try, grab the EAP build from our website, or install it via the Toolbox App.

Since the new version is under heavy development, we’d appreciate any feedback. Please submit bug reports as well as feature requests or simply improvement suggestions to our issue tracker.

Known issue: The users of macOS 10.12.4 (or earlier) may experience significant performance slowdown because of the accessibility issues in the JRE. The issue may be caused by some third-party accessibility applications utilizing A11Y, e.g. Magnet. As a workaround, it’s recommended to disable the application in System Preferences | Security & Privacy | Accessibility. We’re working on fixing this issue.

The Drive to Develop

About Andrey Cheptsov

Part-time dreamer. JVM/JavaScript geek. IntelliJIDEA Marketing Manager at JetBrains.
This entry was posted in EAP Releases, New Features and tagged , . Bookmark the permalink.

23 Responses to IntelliJ IDEA 2017.2 EAP is Here

  1. Franco says:

    Please, add a code to avoid “code rearrange” on certain files, like you add for reformat.

  2. Jiří Pejchal says:

    It would great to have support beside gradle wrapper also for maven wrapper: https://github.com/takari/maven-wrapper

  3. Cris Bennett says:

    The accessibility issue is a severe tradeoff given how many mac apps use the accessibility stuff (I counted up 6 that I can’t practically do without). I think this is the first EAP release I’ve ever had to roll back to the previous version.

    • Andrey Cheptsov says:

      Sorry to hear that. The fix is already there and will be available with the next EAP update, most likely next week.

      • Cris Bennett says:

        I’m not complaining. We know what we’re getting into with EAPs. Actually it’s a testament their quality that this is the first time I’ve had to roll back. Still, I look forward to the fix.

  4. Did you update the embedded Marlin renderer in jetbrains Openjdk8 build ?

    OpenJDK9 has Marlin 0.7.4 and I am integrating Marlin 0.7.5 inOpenJDK10.

    Laurent

    • Andrey Cheptsov says:

      Yes, we plan to update it soon.

      • Laurent Bourges says:

        Please keep me informed when you will backport Marlin 0.7.4 from OpenJDK9.

        As I will push asap Marlin 0.7.5 in OpenJDK10, you could also upgrade your jdk8 build with this coming patch.

        PS: If you want to support my FOSS effort, please promote the Marlin renderer, report your feedback or sponsor me to go on improving Java2d performance

        Cheers,
        Laurent

  5. Nathan Williams says:

    In day-to-day use, I’ve found the find dialog to be a bit too persistent. It needs to go away when you click to interact with something behind it. (IDEA-172451)

  6. Bas Scholts says:

    Unfortunately, since the PHP plugin isn’t supported, I had to roll back. First time for everything.

  7. Andy Schmidt says:

    What about PHP support?

  8. Boaz Nahum says:

    My plugins are broken after updating to 2017.2.eap
    Where can I find the sources, there is no EAP confluence page yet

  9. Áxel says:

    Update is unusable for PHP developers and we are not warned about that. Please review new tickets guys: IDEA-172396. Thank you.

  10. Paul says:

    The last EAP was pretty bad from a performance and stability point of view and this one is even worse.

    Major problems:
    1) The Python plugin appears to be completely unsupported (“Unknown facet type: ‘Python'”).
    https://www.dropbox.com/s/8vq50givstirix8/Screenshot%202017-05-08%2008.46.22.png?dl=0

    2) The 2017.2 EAP did not install as a separate application and it replaced 2017.1.3. Now I cannot just revert to the older version.

  11. Konstantin says:

    This EAP is quite unstable on MacOs on simple tasks like: search for word “Terminal” in Help->Search box…

  12. Dan Liu says:

    Just upgraded to IU-172.1909.2. It hosed my Android plugin. Does anybody know how to install the Android plugin for IJ Ultimate 2017.2? I really don’t feel like using Android studio instead since we have license for the ultimate version.

    • Andrey Cheptsov says:

      The Android plugin is bundled with both Ultimate and Community Edition. Please check if it’s enabled in Settings | Plugins.

  13. Jetbrains Customer says:

    2017.2 EAP is *completely unusable*. The graphic output is completely fucked. Things just don’t render, or they render behind. Parts of the screen update, but not others. Even the cursor itself rarely displays correctly. Popup messages leave remnants behind, menus don’t always show their contents. This is by far the worst EAP release I’ve ever seen. Oh, and I get constant “font null not found.” errors.

    I don’t know what you guys changed, but you really screwed up with this one! Time for some QA I think! (Yes, I know that’s what we’re doing for free, but still…)

    • Andrey Cheptsov says:

      Sorry about that. Could you please file a bug report with more details (e.g. Yes, we OS, desktop (if Linux) and screenshots?

  14. Claudio Mezzasalma says:

    Hello. When Vaadin plugin will be update to support Vaadin 8?

  15. Sebastian says:

    Are there any Maven updates planned for this cycle. I have recently had several issues with Maven in IntelliJ, such as these:

    https://stackoverflow.com/questions/34104305/resource-nexus-maven-repository-index-properties-does-not-exist-in-intellij

    https://youtrack.jetbrains.com/issue/IDEA-173130

    Sometimes the Maven Index cannot be correctly updated and gets stuck.

Leave a Reply

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