On Friday, February 19, we released the beta version of IntelliJ IDEA 16 . Considering that a little more than three months have passed since the release of IntelliJ IDEA 15, you will be pleasantly surprised by what we managed to do during this time. We invite you to download the latest version right now and try all the improvements on your own, the most important of which I will be pleased to discuss next.
Debugger ')
For Java projects in Evaluate Expression and Watches, you can now write expressions on Groovy , which has a more compact syntax, which makes it more convenient, for example, to work with collections.
If the current thread is blocked by another stopped stream, IntelliJ IDEA will offer to unblock it.
Previously, by pressing Resume , all running threads were resumed. Now you can change this behavior by enabling the Resume only the current thread option.
Now IntelliJ IDEA warns whenever it notices that the source does not correspond to the executable code. This helps to avoid mistakes and save time.
Integration with Git and other VCS
IntelliJ IDEA now supports git worktrees - in case you want to work with several revisions of the repository at the same time and save disk space.
For Git, two new commands have appeared in the Branches popup : Checkout with Rebase and Rename . Checkout with Rebase saves time if you want to perform these two operations one by one.
Tools Diff viewer and Merge dialog became more convenient due to highlighting changes at the level of specific parts of the line.
Editor
The editor has a new tool: Move Element Right / Left ( Alt + Ctrl + Shift + Arrows or Alt + Cmd + Shift + Arrows for OS X). With it, you can interchange the method arguments, array elements and tag attributes.
We added auto-import for static methods and constants (previously it worked only for classes). The option Add unambiguous imports on the fly now also works for static methods and constants.
The editor supports Arabic, Hebrew, and other languages where characters follow from right to left.
An option has appeared in the style settings to automatically add a space to the beginning of comments.
Java 8
When calling the Inline method or Change signature , method references are converted to the corresponding lambda expressions.
IntelliJ IDEA will warn you if you call the get () method on java.util.Optional without first checking whether it contains a value with isPresent () .
Added a lot of inspections to use functional interfaces, lambda expressions and Optional .
If you use Guava , the IDE will prompt you to replace FluentIterable , Function , Optional and Predicate with their Java 8 counterparts.
Quick search
Fast search ( speed-search ) is now available in the Terminal window, search in the Show usages pop-up window and in the Find usages window has also been improved.
The Log viewer interface for Git and Mercurial now looks a little nicer.
Gradle
Now the IntelliJ IDEA project model completely coincides with the Gradle model: each source set is represented in IntelliJ IDEA as a separate module, and therefore can have its own dependencies ( classpath ). This allowed to solve a huge number of problems.
IntelliJ IDEA learned how to automatically import EAR artifacts from build scripts.
Spring
For Spring Boot projects, hints are added inside the YML and banner.txt files . The annotation \ @SpringApplicationConfiguration is taken into account when creating launch configurations for tests. Find usages now work for custom configuration properties.
Support for Spring MVC has been greatly improved by supporting the annotation \ @EnableWebMvc .
Added support for custom dialects: the same suggestions are now available for them as for the standard ones.
Many problems with Thymeleaf 2 support have been fixed .
Android
The leak profiler and new inspections introduced in Android Studio 1.5 are now available in IntelliJ IDEA.
Kotlin
Yes, if you do not know (or do not believe your eyes), the release of Kotlin 1.0 took place a week ago.
Kotlin is compatible with Java 6, 7, 8 , Android , and any Java frameworks (such as Java EE , Spring ) and build systems ( Gradle , Maven ). Kotlin can be used in existing Java projects. Since version 1.0, Kotlin is backward compatible with its previous versions.
IntelliJ IDEA 16 includes a plugin for Kotlin 1.0.
Earlier on Habré the first question and answer session was already held.
Scala
Working on Kotlin, we do not forget about Scala : the company has undergone a number of improvements. Firstly, the order of the proposed options now takes into account such factors as the type of symbol, its history of use and context. Preference is given to local variables, then arguments, then class fields, then methods, and so on. If a type is expected in this context, IntelliJ IDEA considers this in the order of the proposed options.
Secondly, a comparing for pattern matching expressions with a hint for the names of the properties of case classes appeared .
ES6 and TypeScript
Support for ES6 and TypeScript is getting better every day. Added refactorings Create method , Extract method , Inline method and Introduce field and intensities Make class abstract , Make public / private and Remove modifier . Unused import-expressions are now highlighted and removed using Optimize imports . When typing code, import-expressions are added automatically.
Added support for TypeScript 1.8 .
AngularJS
For AngularJS 2, we added complaint directives, template variables, custom event handlers, paths in the templateUrl and styleUrls fields, as well as in event , data , and property bindings .
IntelliJ IDEA also understands components defined using module.component () added in AngularJS 1.5.
Javascript debugger
With Chrome, a new debugger is much easier to debug asynchronous code and code with lambda expressions ( arrow functions ). For asynchronous code, the frame stack includes the place to call the asynchronous code. When adding breakpoints, you can now select a concise lambda expression.
You can also debug the main and render processes of Electron applications.
Json
In addition, IntelliJ IDEA now supports JSON schema and offers based on it complits inside JSON files (tsconfig.json, .eslintrc, .babelrc, and many others).
Work with databases
After the release of DataGrip, we continue to improve database support and tools for working with them. Added support for some PostgreSQL 9.5 statements ( hstore? ) As well as User Defined Table and Column Types for SQL Server . With the Create / Modify Table, you can now edit comments for columns (if supported by the database).
If you want to delete data from the tables, a new tool will help you: Truncate , which allows you to delete data from one or more tables very quickly and outside the transaction.
Docker
And finally, Docker has become a separate window ( tool window ) and its interface is gradually getting better and better: now the right pane displays logs and allows editing container settings. Images and containers are now shown separately and more clearly. We also supported the Docker Machine .
If you want me to write about some of the new features separately (or about some old features) - ask in the comments, and I will write with pleasure. Also I will be glad to answer any questions.