IntelliJ IDEA 2016.3: Java 8 and ES6, improved debugger and interface, and much more
Hello, Habr!
I hasten to share the good news. IntelliJ IDEA 2016.3 is now available today - the next major update to our (and hopefully yours) favorite Java IDE. Read below about major changes and innovations.
Since the release of Java 8, IntelliJ IDEA provides inspections to help you write the correct and idiomatic Java 8. In IntellIJ IDEA 2016.3 these inspections have been seriously redesigned, expanding the scope beyond trivial examples. Now, if you press Alt + Enter inside a non-trivial for loop, the IDE will offer to rewrite it using the Stream API. In this case, the IDE will rely on almost all available APIs: count , sum , flatMap , map , mapToInt , collect , filter , anyMatch , findFirst , toArrayother. Note: a similar inspection is available for Kotlin. Also, the IDE will suggest replacing the corresponding constructs with Map.computeIfAbsent , Collections.removeIf or ThreadLocal.withInitial where it makes sense.
The updated Scala plugin now provides navigation and autocompletion for js.Dynamic - based on variables and methods declared in JavaScript libraries or project files.
The plugin also received scala.meta support . IntelliJ IDEA supports the “new” macro annotations and provides assistance with editing scala.meta quasiquotes.
This powerful new debugger feature allows you to add Watch expressions at the class level. These expressions look like class fields, but their values are determined by the expressions themselves. Expressions are specified in the context of the class.
This new plugin allows you to examine objects in the JVM memory while debugging code. The plugin shows the number of objects in memory, grouped by class name. As you navigate through the code while debugging, the Diff column shows how this number changes. Double-clicking on a class will open a dialog with objects. Also, the plugin allows you to track stacktraces of creating objects.
The Parameter Hints option (enabled by default) shows the names of method parameters if literals or null are used as arguments. Such hints make the code more readable. If the tips for some methods are redundant, you can ask the IDE not to show them.
Previously featured in KDevelop and several other IDEs, Semantic highlighting is now available in IntelliJ IDEA. This option adds unique colors to the standard highlight for each parameter and local variable. This option is turned off by default, but can be turned on in Settings → Editor → Colors & Fonts → Language Defaults → Semantic highlighting .
File and folder icons have become flat. New icons have become clearer and less distracting.
This new option allows you to delegate IDE actions such as Build , Build Artifacts, and Run directly to Gradle. When this option is enabled, the IDE calls the appropriate Gradle tasks instead of standard actions. You can enable this option in Settings → Build, Execution, Deployment → Build Tools → Gradle → Runner → Delegate IDE build / run actions to Gradle .
This powerful new option allows you to replace any of the project dependencies with another project. This option requires Gradle 3.1 or later.
Now pom.xml can be written in Groovy, Scala, Ruby and other languages. (Note: hints for editing pom.xml are only available for Groovy.)
The Log window has been redesigned again, this time with the goal of increasing ergonomics and speed. The panel of detailed changes has shifted to the right, freeing up more space. Description of changes are now aligned and more readable. Tags with tags and branch names have shifted to the right and are displayed more elegantly. The search string is stored between IDE runs. For Git, searching by text, author, and path has become much faster.
The Merge window can now resolve conflicts automatically where possible. In such cases, the Resolve icon with a magic wand will be displayed on the left . We also added markers that reflect the changes that will be applied over the base revision. In addition, both Merge and Diff now offer syntax highlighting and navigation for non-basic revisions.
Also added management of remote repositories.
IntelliJ IDEA allows you to automatically convert variables declared by var to const / let , depending on the semantics of their use.
For all require calls , the IDE will offer import auto-replace .
For all classes declared using prototype functions and chains, the IDE will offer AutoCorrect to full classes.
Fixed the problem of renaming inherited methods.
Now, if you specify Flow as the version of JavaScript, and also specify the path to the Flow distribution, the appropriate inspections (and in some cases auto-completion) will work.
TomEE support has been updated to the latest version.
Now the IDE allows you to run loose applications . To do this, select the Loose application ... instead of the artifact on the Deployment tab in the WebSphere Run / Debug configuration window.
Now you can launch and debug React Native applications for OS X and Android directly from the IDE.
This is a new mode in Designer that hides the visual elements of components and reflects only their structure.
This is a powerful new layout manager that allows you to create complex interface structures using a flat structure.
According to information from the Android Tools team, the update fixes a large number of problems related to the work of Instant Run . Now Instant Run should work more stable.
This utility allows you to analyze the contents of the APK.
Now you can select several cells and edit them at the same time.
Now changes to the table are not sent immediately, but by pressing Ctrl + Enter ( Cmd + Enter for OS X) - in whole packages. Use Undo to roll back an unsent change.
Now you can search for the use of database objects in the source code of other database objects. For example, you can find out which procedures, functions, displays, and triggers use the selected table.
Google introduced its own plugin for deploying applications on Google Cloud. Later, this plugin will completely replace the JetBrains plugin for working with the Google App Engine.
The OpenShift plugin now supports the new version of OpenShift.
Be sure to take a look at the Toolbox App , the new desktop application for conveniently installing and updating any JetBrains IDE.
This is briefly all that the team managed to do in 4 months, not counting the bug fixes.
Details, screenshots, and a video about the release can be found on the What's New page . You can also download the update there.
As always, I will be happy to answer any questions.
I hasten to share the good news. IntelliJ IDEA 2016.3 is now available today - the next major update to our (and hopefully yours) favorite Java IDE. Read below about major changes and innovations.
Java 8
Since the release of Java 8, IntelliJ IDEA provides inspections to help you write the correct and idiomatic Java 8. In IntellIJ IDEA 2016.3 these inspections have been seriously redesigned, expanding the scope beyond trivial examples. Now, if you press Alt + Enter inside a non-trivial for loop, the IDE will offer to rewrite it using the Stream API. In this case, the IDE will rely on almost all available APIs: count , sum , flatMap , map , mapToInt , collect , filter , anyMatch , findFirst , toArrayother. Note: a similar inspection is available for Kotlin. Also, the IDE will suggest replacing the corresponding constructs with Map.computeIfAbsent , Collections.removeIf or ThreadLocal.withInitial where it makes sense.
Scala
Scala.js
The updated Scala plugin now provides navigation and autocompletion for js.Dynamic - based on variables and methods declared in JavaScript libraries or project files.
scala.meta
The plugin also received scala.meta support . IntelliJ IDEA supports the “new” macro annotations and provides assistance with editing scala.meta quasiquotes.
Jvm debugger
Class-level watches
This powerful new debugger feature allows you to add Watch expressions at the class level. These expressions look like class fields, but their values are determined by the expressions themselves. Expressions are specified in the context of the class.
Memory view
This new plugin allows you to examine objects in the JVM memory while debugging code. The plugin shows the number of objects in memory, grouped by class name. As you navigate through the code while debugging, the Diff column shows how this number changes. Double-clicking on a class will open a dialog with objects. Also, the plugin allows you to track stacktraces of creating objects.
Interface
Method parameter name hints
The Parameter Hints option (enabled by default) shows the names of method parameters if literals or null are used as arguments. Such hints make the code more readable. If the tips for some methods are redundant, you can ask the IDE not to show them.
Semantic highlighting
Previously featured in KDevelop and several other IDEs, Semantic highlighting is now available in IntelliJ IDEA. This option adds unique colors to the standard highlight for each parameter and local variable. This option is turned off by default, but can be turned on in Settings → Editor → Colors & Fonts → Language Defaults → Semantic highlighting .
Icons
File and folder icons have become flat. New icons have become clearer and less distracting.
Build tools
Delegate IDE build / run actions to Gradle
This new option allows you to delegate IDE actions such as Build , Build Artifacts, and Run directly to Gradle. When this option is enabled, the IDE calls the appropriate Gradle tasks instead of standard actions. You can enable this option in Settings → Build, Execution, Deployment → Build Tools → Gradle → Runner → Delegate IDE build / run actions to Gradle .
Gradle Composite Builds.
This powerful new option allows you to replace any of the project dependencies with another project. This option requires Gradle 3.1 or later.
Polyglot maven
Now pom.xml can be written in Groovy, Scala, Ruby and other languages. (Note: hints for editing pom.xml are only available for Groovy.)
Version control
Log for Git and Mercurial
The Log window has been redesigned again, this time with the goal of increasing ergonomics and speed. The panel of detailed changes has shifted to the right, freeing up more space. Description of changes are now aligned and more readable. Tags with tags and branch names have shifted to the right and are displayed more elegantly. The search string is stored between IDE runs. For Git, searching by text, author, and path has become much faster.
Merge and Diff
The Merge window can now resolve conflicts automatically where possible. In such cases, the Resolve icon with a magic wand will be displayed on the left . We also added markers that reflect the changes that will be applied over the base revision. In addition, both Merge and Diff now offer syntax highlighting and navigation for non-basic revisions.
Also added management of remote repositories.
Javascript
ECMAScript 6
IntelliJ IDEA allows you to automatically convert variables declared by var to const / let , depending on the semantics of their use.
For all require calls , the IDE will offer import auto-replace .
For all classes declared using prototype functions and chains, the IDE will offer AutoCorrect to full classes.
TypeScript
Fixed the problem of renaming inherited methods.
Flow
Now, if you specify Flow as the version of JavaScript, and also specify the path to the Flow distribution, the appropriate inspections (and in some cases auto-completion) will work.
Application servers
TomEE 7
TomEE support has been updated to the latest version.
Liberty
Now the IDE allows you to run loose applications . To do this, select the Loose application ... instead of the artifact on the Deployment tab in the WebSphere Run / Debug configuration window.
React native
Now you can launch and debug React Native applications for OS X and Android directly from the IDE.
Android
Blueprint
This is a new mode in Designer that hides the visual elements of components and reflects only their structure.
Constraint layout
This is a powerful new layout manager that allows you to create complex interface structures using a flat structure.
Instant run
According to information from the Android Tools team, the update fixes a large number of problems related to the work of Instant Run . Now Instant Run should work more stable.
APK Analyzer
This utility allows you to analyze the contents of the APK.
Database
Editing multiple cells
Now you can select several cells and edit them at the same time.
Batch Submit Changes
Now changes to the table are not sent immediately, but by pressing Ctrl + Enter ( Cmd + Enter for OS X) - in whole packages. Use Undo to roll back an unsent change.
Usage Search
Now you can search for the use of database objects in the source code of other database objects. For example, you can find out which procedures, functions, displays, and triggers use the selected table.
Clouds
Google cloud tools
Google introduced its own plugin for deploying applications on Google Cloud. Later, this plugin will completely replace the JetBrains plugin for working with the Google App Engine.
OpenShift Origin (V3)
The OpenShift plugin now supports the new version of OpenShift.
Toolbox app
Be sure to take a look at the Toolbox App , the new desktop application for conveniently installing and updating any JetBrains IDE.
This is briefly all that the team managed to do in 4 months, not counting the bug fixes.
Details, screenshots, and a video about the release can be found on the What's New page . You can also download the update there.
As always, I will be happy to answer any questions.