IntelliJ IDEA 2016.3 GA: Java 8 and ES6, Debugger and UI improvements, and a Ton More

Posted on by Andrey Cheptsov

Please meet IntelliJ IDEA 2016.3, the third massive IDE update planned for this year. Two years ago we used to have one major release per year. Now we have three and all feature-rich – not to mention tons of minor bugfix releases.

ij_2016_3_1280x800

Read below to see the highlights of this update:

Java

  • Refactoring to Java 8. Since Java 8 was released, IntelliJ IDEA has been providing inspections that help write correct and idiomatic Java 8. With this update, we’ve gone further and extended our existing inspections to support non-trivial cases. Now, if you press Alt+Enter inside a non-trivial for-loop, the IDE will prompt you to replace it with an chain of stream API calls. The quick-fix will leverage count, sum, flatMap, map, mapToInt, collect, filter, anyMatch, findFirst, toArray, and other APIs if necessary. Also, when appropriate, the IDE will prompt you to replace certain code with Map.computeIfAbsent, Collections.removeIf or ThreadLocal.withInitial. (Note: a similar quick-fix is now available for Kotlin as well.)

Scala

  • Scala.js. The Scala plugin now provides code completion and quick navigation for js.Dynamic–based on fields and methods defined in JavaScript libraries or project files.
  • Scala Meta. Another major plugin improvement is support for scala.meta. IntelliJ IDEA supports new-style macro annotations and provides coding assistance for scala.meta quasiquotes.

JVM Debugger

  • Class-level Watches. This powerful new feature lets you define Watch expressions on the class level. These watches appear as extra fields of the class but their value is evaluated based on your expressions. An expression for class-level watches is defined in the context of the class.
  • Memory View. This is a new plugin that lets you explore objects in the JVM heap during a debug session. It shows you the total number of objects in the heap grouped by their class name. As you step over the code, the Diff column shows how this number changes between debugger stops. Double-click a class name to open a dialog with instances of this class. If needed, the plugin is also capable of tracking stacktraces for chosen classes.

User Interface

  • Parameter Hints. This new feature, enabled by default, shows the names of method parameters for passed values that are literals or nulls. These hints make code more readable. If you find hints redundant for certain methods, you can tell the IDE to hide hints for these methods.
  • Semantic Highlighting, previously introduced in KDevelop and some other IDEs, is now available in IntelliJ IDEA. It extends the standard syntax highlighting with unique colors for each parameter and local variable. This feature is disabled by default but can be found in SettingsEditorColors & FontsLanguage DefaultsSemantic highlighting.
  • Flat file Icons. We’ve also reworked file icons for a more flat design. While the new icons may look unusual, we believe they feel more sharp and less noisy.

Build Tools

  • Delegate IDE build/run actions to Gradle. Allows you to delegate the native IntelliJ IDEA Build, Build Artifacts (both WAR and EAR) and Run actions to Gradle. When this option is enabled, all these actions are performed via the corresponding Gradle tasks. The Runaction is delegated to the dynamic Gradle JavaExec task configured according to the run configuration. To enable this option, check SettingsBuild, Execution, Deployment  → Build Tools  → Gradle  → Runner  → Delegate IDE build/run actions to Gradle.
  • Gradle Composite Builds. New powerful option that lets you substitute any of your Gradle dependencies with another project. This feature requires Gradle 3.1 or higher.
  • Polyglot Maven. A set of Maven extensions that allows the POM file to be written in Groovy, Scala, Ruby and other languages. While project import works for any language, coding assistance within POM files is available only for Groovy.

VCS

  • Git/Mercurial Log. The Log viewer has been reworked some more, this time mainly to improve its ergonomics and speed. Commit details have moved to the right, giving you more screen space. Commit messages in the table are now aligned and thus more  readable. Labels have been moved to the right and are now displayed in a more elegant way. Filter values now persist between IDE restarts. For Git, searching via the Text, Author and Path filters is now much faster.
  • Merge and Diff. The Merge dialog now show a Resolve icon on the left side of the Editor when the IDE is capable of resolving the conflict automatically. We’ve added line markers to the dialog to indicate actual changes to the base revision. Last but not least, both Diff and Merge now provide full syntax highlighting for non-local revisions.
  • Managing Remotes. Now, the IDE provides an interface for managing Git remotes for every repo in the project.

JavaScript

  • ECMAScript 6. IntelliJ IDEA now reports all var declarations and helps replace them with let or const declarations, depending on recognized value semantics. For all require() calls, the IDE now provides a quick-fix that replaces them with import statements. For function calls and prototype chains, the IDE provides a quick-fix that replaces them with class statements. Other improvements include better support for destructuring assignments, and default exports.
  • TypeScript. TypeScript gets a more accurate rename refactoring for overridden methods, and a quick-fix to shorten import statements.
  • Flow. Now, when you set the JavaScript version to Flow, the IDE reports problems in the files annotated with “// @flow” on the fly.

Application Servers

  • TomEE 7. The support for TomEE has been updated to its major version.
  • Liberty. Loose applications are now supported and can be run from the IDE. To run a loose application, open the Deployment tab of your WebSphere Run configuration and select the loose application XML file–instead of an artifact.

React Native

  • Debugger. Now you can run and debug React Native apps without leaving IntelliJ IDEA.

Android

  • Blueprint. A new mode in the Designer that hides all of the visuals from views and shows only their outlines. You can choose to have it side by side with the Designer.
  • Constraint Layout. This is a new layout manager which allows you to create large and complex layouts with a flat view hierarchy. It’s similar to Relative Layout in that all views are laid out according to relationships between sibling views and the parent layout, but it’s more flexible and easier to use.
  • Instant Run. The update has brought many stability and reliability improvements to Instant Run. If you have previously disabled it, the Android team encourages you to re-enable it.
  • APK Analyzer. It lets you drill into your APK to help you reduce your APK size, debug 64K method limit issues, view contents of Dex files and more.

Databases

  • Editing Multiple Cells. Now you can edit several similar cells at once. Select several cells and start typing a value.
  • Bulk Submit. Now changes made in the Table Editor are stored locally and submitted in bulk, via Ctrl+Enter (Cmd+Enter for OS X). Changes not yet submitted can be canceled via Undo.
  • Finding Usages. Now you can find usages of database objects inside the source code of other objects. For instance, you can find which stored procedures, functions or views use a given table.

Clouds

  • Google Cloud Tools. Google has introduced their own IDE plugin for deploying to Google App Engine. Eventually this plugin will replace the Google App Engine plugin provided with us.
  • OpenShift Origin (V3). The updated integration lets create OpenShift 3 applications and manage their resources such as projects, services and pods.

Toolbox App

  • Toolbox App is a new desktop application that lets you install and update all JetBrains IDEs with ease. Learn more.

For more details and screenshots about the new features, check out the What’s New page. All impatient, proceed directly to the Download page.

Note, if you have an IntelliJ IDEA license purchased before November 2015, you can purchase a new subscription at 40% off. This offer to be redeemed no later than Jan 1, 2017.

Comments below can no longer be edited.

41 Responses to IntelliJ IDEA 2016.3 GA: Java 8 and ES6, Debugger and UI improvements, and a Ton More

  1. Scott Busche says:

    November 22, 2016

    Is this update available via the incremental updater, ala Android Studio, or do I have to instead download, uninstall, reinstall it all again?

  2. Matt Busche says:

    November 22, 2016

    Still no incremental updater?

    • Riccardo says:

      November 22, 2016

      I have only seen that for point releases (16.2.1 -> 16.2.2 but not 16.1.x -> 16.2)

  3. Schmitt Christian says:

    November 22, 2016

    Is there a way to remove the old folder icons? on the bright layout they are really akward..

  4. Noah Andrews says:

    November 22, 2016

    After updating via Toolbox, I get “error invoking main method” on launch.

    • Noah Andrews says:

      November 22, 2016

      Rolling back and re-updating produced the same result.

  5. Mark Vieira says:

    November 22, 2016

    It looks like the ability to attach Gradle tasks to execute during certain events (before/after sync, before/after rebuild) is no longer working. I can setup these actions but Gradle is never invoked.

    • Vladislav says:

      November 24, 2016

      It seems only before/after *rebuild* was affected, I’ve created the issue at https://youtrack.jetbrains.com/issue/IDEA-164438

      Also before/after build/rebuild task activation doesn’t work if “delegation to Gradle” is enabled. But I think the feature is useless for that mode and “before/after build/rebuild” should be unavailable for setup.

  6. Kevin Jordan says:

    November 22, 2016

    Is there a way to turn on parameter hints for all parameters? I’ve turned it off fully since it seems strange on just some params and not all of them.

  7. Maycon Lisboa says:

    November 22, 2016

    Awesome as always. Thank you Jetbrains for making our lives easier!

  8. Brandon Brooks says:

    November 22, 2016

    I changed my javascript code to use ECMAScript 6. The editor tells me that ‘var’ used instead of ‘let’ or ‘const’. That’s good. When I change my ‘var’ to a ‘let’, the ‘let’ is properly syntax colored in a JS file, but NOT in a JSP file inside the script tags. The var was syntax colored in both JSP and JS files, just the new ‘let’ is not. ‘const’ is properly syntax colored in either case, though.

  9. Kirill Rakhman says:

    November 23, 2016

    It’s impossible to analyze code in Android projects: https://youtrack.jetbrains.com/issue/IDEA-162688

  10. Gerrit G. says:

    November 23, 2016

    It seems there’s a small problem with JSON(B) fields in the table view. I got Postgres 9.5 and can’t insert/edit fields via the editor. I tried the “latest” offical driver “postgresql-9.4-1201.jdbc4” and the current one from the website “postgresql-9.4-1212”. With both errors I get

    [42804] ERROR: column “fields_json” is of type json but expression is of type character varying Hinweis: You will need to rewrite or cast the expression. Position: 85

    PS: Not sure but “Hinweis” may come from my german system settings..

    • David Peall says:

      July 19, 2017

      I’m also having this same problem with the latest version of phpStorm 2017.1.2

      • Dave says:

        September 5, 2017

        Ditto

  11. Simon Stratmann says:

    November 23, 2016

    Wondering the same as Kevin in https://blog.jetbrains.com/idea/2016/11/intellij-idea-2016-3-ga-java-8-and-es6-debugger-and-ui-improvements-and-a-ton-more/#comment-395154 How can I enable parameter hints for all parameters?

  12. Serhiy says:

    November 23, 2016

    Typescript:
    Cannot resolve file in import statement.

    Ex:
    the folder contains: abc.ts, abc.d.ts
    import * as ABC from “../../abc/abc”; gives an error.

    I think this is due to the same file name, but in 2016.2 works without errors.

  13. Peter says:

    November 23, 2016

    Sorry guys but is there a way to used old icons but these icon set is super ugly.

  14. Madis says:

    November 24, 2016

    One suggestion for default “Parameter Name Hints Blacklist”:
    *.has*(*)

    for example, hamcrest uses hasSize(int size)

  15. moondowner says:

    November 24, 2016

    Time for ‘./build-package -f IC -p debian -v 2016.3’ 🙂

  16. james says:

    November 24, 2016

    Three updates to ide a year is not very impressive when others gets multiple updates a month.. And eery time new features. Intellij is starting to be dinosaur which can’t move fast enough in the modern world.

  17. JoeHz says:

    November 26, 2016

    Totally borked my Android build. Gradle is trying to use the the wrong jre. I believe it’s the one in the included jre, rather than the project sdk but I’m still trying to figure it out.

    • Andrey Cheptsov says:

      November 28, 2016

      Sounds as it is related to https://youtrack.jetbrains.com/issue/IDEA-162389

      • Anton says:

        December 6, 2016

        Yeah, I also was affected by this issue. @JoeHz, see my comment to the item that Andrey referred to.

  18. SP says:

    November 27, 2016

    I have disabled Parameter Hints for particular method. Is it possible to enable it again for that method? I could not find setting to do revert it.

    • Andrey Cheptsov says:

      November 28, 2016

      Settings | Editor | General | Appearance | Show parameter hints | Configure

  19. Alexander Mykhailov says:

    November 27, 2016

    I hate flat design and I am very disappointed with your new flat icons. Can I have the old icons back?

  20. Yuri says:

    November 29, 2016

    I found it really slow on my Office PC, was faster 16.2.x

    • Cristian Viorel Pasat says:

      December 1, 2016

      For me it is slow as well.

  21. eric says:

    December 2, 2016

    on mac 10.11.6 , it is slow ,and always die, I have to restart it,why?

  22. B7W says:

    December 5, 2016

    Stop changing UI. IDEA is not modern web resource. It is not playground for UX. It is professional tool!

  23. Anton says:

    December 6, 2016

    Great job as always, but the subscription payment wasn’t very smooth. My billing date was Dec 1, and I paid with PayPal. The day before I checked that the subscription was active. On Dec 2 I got a message from IDE that you subscription has expired and you may no longer use the product. The funny part was that I could actually continue using it. But as a loyal customer, I logged into my JetBrains account and paid the subscription fee manually. Not a big deal, just was surprised that I wasn’t billed automatically.

  24. Anton says:

    December 6, 2016

    Is there a way to make parameter hints respect line character limit? We have a weird 100 characters per line limit, and because of parameter hints, I can’t really see if the line is within the limit or not.

  25. ionel says:

    December 6, 2016

    A big regression with debugging gradle plugins
    In 2016.3 debugging doesn’t work anymore.

    while it worked in every version from IDEA 14 till now (didn’t use gradle plugins in IDEA 13 dunno)

  26. Johndoe says:

    December 6, 2016

    Is there a way to get the old icons back? Those flat icons are hardly recognizable – actually its more stressful for your eyes…

    • Anton Arsentyev says:

      January 5, 2017

      also interesting in the way to change icons back, please help us, and stop changing style each major release ! (its ur UX designers A/B testing us or what ?)
      thank you

Subscribe

Subscribe for updates