IntelliJ IDEA 2016.3: Java 8, Scala, Debugger and more

JAX Editorial Team
IntelliJ IDEA 2016.3

The third big IDE update planned for this year is here! IntelliJ IDEA 2016.3 has countless improvements across supported languages and frameworks, UI, and built-in tools. Let’s see some of the most important highlights.

InteliJ IDEA 2016.3 is the third major IDE update planned for 2016. Andrey Cheptsov, IntelliJIDEA Marketing Manager at JetBrains, announced the release in a blog post and offered a glimpse at the most important features.

It’s all about these two

IntelliJ IDEA has been offering inspections which help write correct and idiomatic Java 8 ever since the release of Java 8; 2016.3 supports non-trivial cases, too. For example, if you press Alt+Enter inside a non-trivial for-loop, the IDE will prompt you to replace it with a 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. Plus, when appropriate, the IDE will prompt you to replace certain code with Map.computeIfAbsent,Collections.removeIf or ThreadLocal.withInitial, Cheptsov explained.

Meanwhile, the Scala plugin offers code completion and quick navigation for js.Dynamic–based on fields and methods defined in JavaScript libraries or project files. Speaking of Scala, IntelliJ IDEA 2016.3 supports new-style macro annotations and offers coding assistance for scala.meta quasiquotes.

There’s a new feature called Class-level Watches which allows users to define Watch expressions on the class level. They appear as extra fields of the class but their value is evaluated based on the user’s expressions. An expression for class-level watches is defined in the context of the class, Cheptsov wrote in the blog post.

Memory View is also new; this plugin allows users to explore objects in the JVM heap during a debug session. In short, they can see the total number of objects in the heap grouped by their class name. As users 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. The plugin can also tack stacktraces for chosen classes (if needed).

More improvements


Parameter Hints shows the names of method parameters for passed values that are literals or nulls, thus making code more readable. The IDE can also hide hints that are redundant for certain methods. Semantic Highlighting extends the standard syntax highlighting with unique colors for each parameter and local variable. Even though it is disabled by default, users can find it in Settings → Editor → Colors & Fonts → Language Defaults → Semantic highlighting.

IntelliJ IDEA 2016.3 also has Flat file Icons, which “feel more sharp and less noisy.”

SEE ALSO: IntelliJ vs. NetBeans vs. Eclipse: Which IDE has the best Angular 2 support?

Build tools

Delegate IDE build/run actions to Gradle allows users to delegate the native IntelliJ IDEABuild, Build Artifacts (both WAR and EAR) and Run actions to Gradle. These actions are performed through the corresponding Gradle tasks (when the option is enabled). The Runaction is delegated to the dynamic Gradle JavaExec task configured according to the run configuration. Check SettingsBuild, Execution, Deployment  →Build Tools  → Gradle  → Runner  → Delegate IDE build/run actions to Gradle if you want to enable this option.

Gradle Composite Builds allows users to substitute any of their Gradle dependencies with another project. However, keep in mind that this feature requires Gradle 3.1 or higher. Meanwhile, Polyglot Maven allows the POM file to be written in Groovy, Scala, Ruby and other languages. Although project import works for any language, coding assistance within POM files is available only for Groovy.


IntelliJ IDEA 2016.3 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 offers 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. Better support for destructuring assignments, and default exports and also on the list of improvements.

TypeScript receives a more accurate rename refactoring for overridden methods, and a quick-fix to shorten import statements.

Check out the What’s New page if you want to find out more about all the new features and improvements in IntelliJ IDEA 2016.3.

comments powered by Disqus