IntelliJ IDEA 2016.1 is Here

Today, we’re excited to introduce IntelliJ IDEA 2016.1, the first update in the series of releases planned for 2016. We hope you’ll be surprised to find out how much we’ve managed to accomplish in four months. Download the new version today and try all the new features for yourself. Read this post to learn about the major improvements.

New Features

Debugger

Evaluate Expression and Watches now accept Groovy expressions when debugging Java code. This may be convenient due to the compactness of Groovy, especially when working with collections.

If the current thread is blocked by another suspended thread, the IDE will suggest resuming it.

Previously Resume used to resume all suspended threads. Now you can change this behaviour to only resume the current thread.

If the IDE notices that the source code is different from that being executed, it warns you to help prevent time waste or errors.

VCS

The IDE now supports git worktrees introduced in Git 2.5 to simplify working with multiple revisions of a single repository.

The Branches menu offers two new actions: Checkout with Rebase and Rename. Checkout with Rebase is faster than performing the two actions separately.

Merging and comparing revisions just got easier with the added by-word difference highlighting.

Static methods and constants are now auto-imported in the same way as classes – with a single press of Alt+Enter.

The Add unambiguous imports on the fly option now works for static methods and constants.

The code editor supports right-to-left languages (Arabic, Hebrew).

Gradle

The project model of the IDE is now aligned with that of Gradle: each source set of a Gradle project is now a separate module in the IDE – and may have its own dependencies. This change has solved many issues reported by our users.

As with WAR artifacts, the IDE is now able to automatically configure EAR artifacts found in the build script.

Java 8

Inline Method and Change Signature now transform related method references in the project to lambda expressions.

New inspections added to ensure the code using java.util.Optional, lambda expressions and functional interfaces is safe.

If you use Guava, the IDE will offer replacing FluentIterable, Function, Optional and Predicate to the corresponding Java 8 APIs.

To make learning Kotlin more fun, we’ve developed Kotlin Edu–a plugin that lets you take interactive Kotlin learning courses.

Scala

Code completion is more relevant now as it respects the type of symbols, their definition scope and their usage. The IDE prioritizes local variables, then parameters, then fields, then methods, etc. If the IDE expects a type, it will also take that into account.

AngularJS 2 support adds coding assistance for event and property bindings, and completion inside data bindings. Code insight and navigation are available for directives, variables defined in templates, custom event handlers, and paths in templateUrl and styleUrls fields.

The IDE now understands components defined using the new AngularJS 1.5 module.component() method helper.

The debugger for Chrome makes it easier to debug asynchronous client-side code. It allows you to stop at inline ES6 arrow functions, and to stop at the breakpoints set in web and service workers.

Spring Frameworks

Support for Spring Boot adds coding assistance within YML and banner.txt files. @SpringApplicationConfiguration is respected when creating run configurations for tests. ‘Find usages’ is now working for configuration properties defined by user.

Working with Spring MVC is improved with added support for @EnableWebMvc.

The Docker plugin has been improved in many ways, including Docker Machine support, a separate tool window, right-side panel to see logs and manage environment variables and port bindings, and more.

IntelliJ Platform has migrated to Java 8 which means plugin developers can now use Java 8 features in their code.

For more details on the new features and improvements, please read the What’s new page, where you can also download the edition of your choice.

New versioning

As we announced earlier, with this release we’re changing the versioning scheme and moving away from one “major” release per year to several “equal” releases per year. Also, we’re aligning releases and version numbers across all products under JetBrains Toolbox. The new versioning will follow the format “YYYY.R” where yyyy represents the year, and “r” the release within that year. For more details on the new versioning, read this blog post.

UPDATE: If you’re running IntelliJ IDEA 15 Ultimate, you can sometimes see a confusing message in the Updates dialog, saying that you can evaluate the new version for 30 days, or buy a license key or upgrade online–regardless to the active state of your subscription. We apologize for this, and promise to fix it in the minor update that we’ll be releasing within several days.

Great news! I was frustrated at first, when as an annual subscription license holder I ran “Check for update” and was presented with “You can evaluate this product for 30 days or buy the license”, but after I downloaded the new version, I was able to use my account to validate my license.

However, the “‘Find usages’ is now working for configuration properties defined by user.” feature is pretty neat but it doesn’t seem to work with Lombok annotated classes. The gutter icon isn’t showing up and find usages returns “No usages found in Project Files”.

Did you get this working? I’ve been wanting to use Idea for a while, but Lombok just doesn’t work with Idea. Never had any problems with eclipse. With the javac compiler, it Idea fails to recognize any of the lombok classes. Switching to eclipse compiler at least allows the project to be built, but editor still flags all lombok annotations.

Great work guys. As Anton said, be nice to fix the issue where it said “You can evaluate this product for 30 days or buy the license” even though IntelliJ should already know if I’m entitled to it based on my subscription status.

It would also be nice if it could say at that point whether the new version is perpetually available based on subscription start date. You only get told once you download the new version and start it – via the splash screen – which is a little late. Be nice to be told when presented with upgrade notice if that is doable (should be).

The Cursive author needs to support the platform, not JetBrains. There are some internal changes that might affect the plugin so it might be some time until the plugin is updated (or not, depending on how fast the author is).

Like with many other plugins, it might take a few weeks (or so) for the plugin developer(s) to support the new release. I’m a paying (and satisfied) Cursive customer and I had to flip my symbolic link back to the previous version after determining that the Cursive plugin was ‘compatible’ with the 2016.1 release. No worries. Since IntelliJ/Cursive is my daily driver for the Clojure development work I do, I’m willing to wait a little while for Cursive/Colin to catch up.

How to use worktree feature in new IntelliJ? Do we need to create worktree with commandline and then import modules again using new IntelliJ instance? Could we create worktree in IntelliJ and it will switch to that worktree for us?

I’m Kubuntu x64 14.04 user and I have very ugly fonts in 2016.1. I tried some tweaks to fix it, but with no luck. Does 2016.1 have new font rendering system? Why this is happening? For now I have to use 15 version.

Unfortunately, this doesn’t work. IDEA can’t start with message “‘tools.jar’ seems to be not in IDEA classpath.
Please ensure JAVA_HOME points to JDK rather than JRE.”. Actually, file /jre/lib/tools.jar exists, with permissions equal to original file.

Yes, we use customised OpenJDK runtime that now takes into account fontconfig settings in your system in order to provide the same look with native applications. These settings are combined with java rendering hints, so on some systems there might be unexpected results. Thanks for reporting.

Searching for remote-run plugin seems like it is only available in the “ultimate” edition.
If that is true it means that the “Docker” integration that was working with the community edition now it is available only for “Ultimate” edition, can you confirm this?

Why don’t I have perpetual fallback license for this version. My “All Products” annual subscription started 03/11/2015. So I bought a product thats supported only for a few months then abandoned in favor of a new version, presumably IDEA 16…

In Intellij IDEA 15 I have some plugins installed (like Jenkins, OtrosJumpToCode) and I have configuration panels for this plugins in settings. In 2016.1 these panel disappears but plugins are still working. Drawback is that I can’t configure these plugins

Yes, something is definitely wrong with Gradle in 2016.1. For example I have gradle lib module and some dependencies in it’s build.gradle file. And I have another module which depends on the lib. In 2016.1 editor cannot resolve dependencies defined in lib while working on main module files.

BTW everything compiles fine, only thing is that whole view is full of red lines

This plugin (querydsl-plugin) usage in IDEA depends on merged structure of all gradle project source sets in a single IDE module.
You can track the related issue at https://youtrack.jetbrains.com/issue/IDEA-152581
The fix has been planned for IDEA 2016.1.2 update.

can anyone explain how to create a new scala project ? i downloaded even scala plugin and created the scala project but i cant find src folder to create a scala class or object. Aslo there is no youtube tutorial for 2016.1 version of Intellij idea. I am new to this IDE and i have no other option as i fed up running configuration in eclipse. Please help me. Thanks in advance.

I think when you add a plain Scala project, it should create a src directory automatically. Try creating an SBT project, wait until SBT resolves all the necessary stuff, and then the src dir should be there.

The only issue I have found is that when hitting escape, the cursor goes missing. The edit window is supposed to grab focus and obviously contain the cursor. After hitting tab, the cursor appears. Sometimes when ctrl-left/right arrow to another file, the cursor goes missing again.

I had problems with the Python Plugin not working — actually hanging at IntelliJ startup — with the 2015 version just prior to the new 2016.1 release. I’ve now successfully updated and enable the Python plugin in both OSX (Yosemite) and Linux (Ubuntu 14.04).

One thing I’d recommend is using the File/Settings/Plugin panel to actually select, upgrade and enable the plugins. I did have some initial difficulty when I just clicked on the “There is an update…” notification popup (upper right of window).

It seems that during migration from Version 15 some of the plugins and/or plugin settings remain in the .IntelliJIdea15 directory, but IntelliJ 2016 can’t save to that.
When I remove the .IntelliJIdea15 directory, almost all plugins become invalid and cannot be loaded anymore. How can we correctly migrate plugin settings to the.IntelliJIdea2016 directory?

I was fighting with this today and was able to fix it by removing local and remote Python SDK’s. I *think* it was the remote SDK but I can’t prove it. Then I invalidated all caches and restarted. After restarting, I re-enabled the plugin (and of course restarted) and it’s been working as usual since. I upgraded from Intellij15 to 2016.1 when the problem started happening.

Will classLoaders affect this feature? For example when groovy is in classpath, but the code currently being debugged was loaded from different classLoader and have no straight access to groovy classes.

After upgrading to IDEA 2016 and working with an existing project, running the tests through the IDEA (set up to use Gradle test runner) didn’t work. I’ve then re-imported the Gradle project (deleting .idea, opening the folder again) and it messed up the complete structure of my project.
Now all my tests are having red markers everywhere as somehow it cannot figure out the dependencies to the main sources anymore. “Refresh all Gradle projects” does not help.
Please advise! Thanks

Unfortunately, IDEA does not support modules with shared content roots.
There is a separate issue for such projects (somehow heavily depends on merged structure of all gradle project source sets in a single IDE module) at https://youtrack.jetbrains.com/issue/IDEA-153231
It’s planned for IDEA 2016.1.2 update.

After updating to IntelliJ IDEA 2016.1.1 Build #IC-145.597 I cannot debug without debuggable attribute any more:
“Cannot debug application xxxx on device xxxx. This application does not have the debuggable attribute enabled in its manifest. If you have manually set it in the manifest, then remove it and let the IDE automatically assign it.”
But if I add it to the manifest IntelliJ warns that I should not set it explicitly.
Bug ? (I am not using gradle)

Scala support is completly broken. My maven project has java and scala source folders.
The scala source folder is not recognized as source folder anymore since the update to 2016.1.1. Before with 2016 it was correctly recognized. For scala compilation net.alchim31.maven is used.
All debug and run configurations are lost too.

Gradle Play plugin doesn’t seem to be able to package external dependencies correctly in this version of IntelliJ, version 15 worked perfectly even if it needed to explicitly being told where are the external dependencies. Seems to be IntelliJ related since previous versions of IntelliJ IDEA worked correctly.

Typescript compiler optional methods problem. Class that implements interface with optional methods has an error of not implementing all optional interfaces. “Method X from interface X is not implemented…

Love the new features in 16!
But it seems to have so many problems there.
Is it worth to upgrade from 15?
And the check update tells me that I’m already using the latest version which I’m not.
So I have to download from the website?

Merging and comparing revisions: can you separate the merge and ignore buttons(perhaps with the merge << left side of the number and the X on the right(depending what side local/server you are comparing from) .

With the buttons being so small, and having totally different effects, users can mistakenly click on one when they meant to click on the other, which could be annoying of the commit was a large chunk of code.