What’s New in IntelliJ IDEA 2021.1

IntelliJ IDEA 2021.1 introduces Java 16 and WSL 2 support, Space integration, Code With Me, a HTML preview window inside the IDE, the option to run code on SSH hosts and in Docker containers, and other useful updates. You can watch this video overview or read on to learn about the most significant changes in more detail!

Space integration

Space integration

Integration with Space, our new platform for software development and team collaboration, is now available out of the box. You can connect to your organization in JetBrains Space via Get from VCS, located right on the Welcome screen. Once you log in, you can view and clone project repositories, review your teammates’ code, and write Space Automation scripts.

WSL 2 support

UXExternalDependencies

WSL 2 support for Java projects

We know you’ve been waiting for this update! You can now work with Java projects located in WSL 2 in IntelliJ IDEA. The IDE can detect JDK installations, install JDKs, and compile and run Maven and Gradle projects as well as projects that use the IntelliJ IDEA build system.

Collaborative development

Space integration

Code With Me, a service for collaborative development and pair programming, now comes in IntelliJ IDEA out of the box. It also features video and voice calls, taking remote collaboration to the next level. Whenever you want to talk to your colleagues, you can initiate audio and video calls right from your JetBrains IDE. Code With Me works perfectly for both 1:1 meetings and group sessions, to which you can invite dozens of participants. To learn more about these updates, read our blog post.

Run Targets

SpaceIntegration

The Run Targets feature allows you to run, test, profile, and debug your application in Docker containers or on remote machines. IntelliJ IDEA Ultimate currently allows you to run Java applications, JUnit tests as well as Maven, Gradle, Micronaut, Maven-based Quarkus, and Spring Boot projects on Docker, SSH, and WSL targets. For more information, check out this blog post.

User experience

Editor HTML Preview

Built-in HTML preview

The new built-in browser preview allows you to preview HTML files quickly. To open it, click on the icon with the IntelliJ IDEA logo in the widget in the top-right corner of the editor. If you make any changes in HTML or if you change the linked CSS and JavaScript files, the preview will update on the fly.

UXExternalDependencies

Customize external dependencies in the search scope

We’ve made the search scope more customizable. You can set External Dependencies to be either included in the scope or excluded from it. Go to Preferences/Settings | Appearance & Behavior | Scopes and use the buttons on the right to change the status of External Dependencies.

HPROF memory viewer

Quick access to recent projects on Windows

We’ve updated the support for Windows jump lists and made it possible to open your recent projects by right-clicking on the IntelliJ IDEA icon on the taskbar or the Start menu.

Improved accessibility

One of our key priorities is to make our IDE accessible to all users. In this release, we’ve added more labels to UI elements on the Welcome screen, in the Project Structure view, and in the VCS log. These elements, as well as gutter icons, are now read out correctly when a screen reader is enabled. We are also working on improving accessibility support for macOS users.

Syncing high-contrast mode in Windows with the IDE theme

Your IDE will now automatically apply the high-contrast theme when you launch the IDE for the first time if you use the high-contrast mode on Windows.

Version control

Pull Requests support

Better Pull Requests support

Pull request creation now takes less time: just click the + icon in the Pull Requests view and fill in all the details. New tabs at the top of the view contain all the information about your pull request. If you double-click on any file in the Files tab, the IDE will open the in-editor diff. You will also find support for pull request templates, which contain the description text for your pull requests.

Git commit template

Support for Git commit templates

IntelliJ IDEA supports Git commit templates. If you want to create a custom commit message, you can use a template and fill it in with the information you feel is important. The IDE will then display this text as an initial commit message.

Pre-commit inspections

Configure a profile for pre-commit inspections

It is now easy to choose a code inspection profile before committing changes to VCS. Click the gear icon to show commit options, tick the Analyze code checkbox, click Choose profile, and select the desired profile. Your IDE will use it to inspect your code before the commit.

URL Inlay Hints

Get files from another branch

In v2021.1, you can get a file from another branch in the Compare with branch dialog. You should simply select the file you want to get and click on the new down-arrow icon next to Show diff.

Improved branches

Save to Shelf

Our new Save to Shelf action allows you to copy your changes to the Shelf while keeping them in the local changes. You can access this action by pressing ⇧⌘A on macOS (Ctrl+Shift+A on Windows or Linux) and typing ‘Save to Shelf’.

Perforce integration

The Perforce plugin is now fully compatible with IntelliJ IDEA Community Edition and comes bundled with your IDE. The source code for this plugin is available on GitHub.

Editor

Adjustable Font

Font weight options

Choosing an editor font that you can look at without difficulty for long hours of coding is crucial. The recently added typography settings make this choice a bit easier and more personalized. In v2021.1, you can fine-tune the weight of your main and bold font styles in Preferences / Settings | Editor | Fonts.

Maximize tabs in the split view

Maximize tabs in the split view

Whenever several tabs that split the editor vertically are open, you can double-click either of them to maximize the editor window for that specific tab. To bring the window back to its original size, simply double-click it again.

JSONPath support

IntelliJ IDEA now supports JSONPath expressions with the Goessner or Jayway syntaxes. For JSON files, you can call the Evaluate JSONPath Expression action via Edit | Find to write queries in JSONPath. For files containing parts written in JSONPath, you can use the same functionality and add a JSON input to test your JSONPath query.

JSON Lines support

JSON Lines support

IntelliJ IDEA has support for the newline-delimited JSON Lines format, which is used for working with structured data and logs. The IDE will recognize .jsonl, .jslines, .ldjson, and .ndjson file types.

Profiler Ultimate

We’ve reworked the profiler UI. The Home window has become more informative, and attaching a profiler to the process is now faster. We’ve also added two new actions that can be accessed by right-clicking on a running application: Capture Memory Snapshot, for taking *.hprof snapshots of your applications, and CPU and Memory Live Charts, which opens a tab with visualization tools for tracking resource consumption.

Java

Support for Java 16

IntelliJ IDEA has basic support for Java 16, which was released in March 2021. Some of the updates include the new possibility for an inner class to declare members that are either explicitly or implicitly static and changes to Stream.collect(toUnmodifiableList()), which is now converted to stream.toList(). The IDE shows the toList() item first on the code completion list for stream.

New inspections for data flow analysis

IntelliJ IDEA can warn you when arrays are initialized with a negative size. It can also recognize the Arrays.copyOf() and Collection.toArray() methods. What’s more, the IDE supports methods for unboxing or converting integers, such as Integer.longValue and Byte.intValue.

Other new and improved inspections

You can now avoid unnecessary casts by narrowing the for-each loop parameter type. Another inspection allows you to simplify code syntax by swapping .filter() and .map() calls if the filter uses the same value as produced by the mapper. What’s more, the inspection that replaces StringBuffer with StringBuilder was updated to cover more cases.

Formatting for chained builder methods

New formatting options for chained builder methods help improve their readability. You can configure the formatter in Preferences/Settings | Editor | Code Style | Java | Wrapping and Braces inside the Chained method calls drop-down list. The builder methods option lets you create a list of methods the IDE will perceive as builder methods, causing it to put each of them on a separate line. When the Wrap first call checkbox is selected, the first builder method will appear on a separate line too. You can also add indents manually, and if you tick the Keep builder methods indents checkbox, the IDE will leave them intact.

Kotlin

Kotlin Faster Highlighting

Faster highlighting of code problems

On-the-fly code analysis makes it possible to detect errors and warnings much faster. Compared to previous versions, IntelliJ IDEA 2021.1 highlights code problems almost instantly. The code completion mechanism now works quicker, and the IDE’s responsiveness to freezes has improved.

Kotlin Faster Highlighting

Improved code completion

The code completion mechanism in Kotlin offers functions that require type parameters. Once you select such a function, the IDE adds the correct type parameter to the preceding code.

Better code coverage

IntelliJ IDEA’s code coverage runner now fully supports Kotlin in inline functions and coroutines.

Refactoring improvements

We’ve reworked the UI for the Change Signature refactoring and added a new checkbox that lets you set the added parameter as the default one.

Debugger updates for Kotlin

The IntelliJ IDEA debugger can evaluate get expressions in Kotlin and display them in the Variables view. Your IDE also allows you to jump to the source from there.

Kotlin UML

UML class diagrams for Kotlin

UML class diagrams now work for Kotlin code compiled to the JVM, and can display both Java and Kotlin classes. We plan to support UML diagrams for other Kotlin backends soon.

Scala

Kinds in Type Diff

Kinds in type diffs

Scala developers don't always use higher-kinded types, but when they do, they like to do it with style. The type diff tooltip now supports kinds.

Machine Learning Completion

Machine learning completion

This release introduces Scala code completion based on machine learning. You can enable the feature in Settings | Editor | Code Completion | ML | Scala.

Phases and units in compilation charts

In addition to modules, compilation charts can now show phases and units, so you can gain even deeper insight into your compilation. Open the Build tool window, select the Chart node, and choose a desired Level of details.

IntelliJ Platform Plugin Template

IntelliJ Platform plugin template

The sbt-idea plugin makes it possible to develop IntelliJ Platform plugins using Scala and sbt. There’s now a built-in Project Wizard template to make the process even easier (this feature depends on the Plugin DevKit).

Build tools

HPROF memory viewer

We’ve brought back the possibility to customize settings when importing Maven projects. To activate this option, select Show settings dialog for new Maven projects in File | New Projects Settings | Preferences for new Projects | Build, Execution, Deployment | Build Tools | Maven.

Frameworks & Technologies Ultimate

Pull Requests support

New inspection to replace http://

Your IDE can now highlight http:// protocol usages and offer to change them to https://. This inspection is enabled by default. You can add URLs to the list of ignored URLs, or disable the inspection for the whole project or parts of it in Preferences/Settings | Editor | Inspections | SecurityLink with unencrypted protocol.

Pull Requests support

Improved HTTP Client

If you run a request from the HTTP client, the response appears in the Services tool window, which features UI and UX updates in this release. You can collapse the returned HTML, JSON, or XML, as well as copy its body, hide line numbers, choose the display format, and quickly scroll to the top and the bottom of the response.

SSL support in the HTTP client

SSL support in the HTTP client

It is possible to configure SSL settings in the HTTP client if you use SSL client authentication for https:// protocols. To do so, click Add environment file and select Private. The IDE will automatically create a file where you can add your SSL configurations. Code completion will help you with this.

Swagger UI support

New project wizards for JVM frameworks

We’ve reworked the wizards for creating Spring, Micronaut, Quarkus, and MicroProfile projects. Getting started on a new project only takes two steps! All the core information is conveniently grouped on the first screen, while the second screen features framework-specific settings. The new UI is neater, and the project creation process is more straightforward.

Pull Requests support

Improved JPA support

We’ve added redesigned icons to the gutter for projects that include JPA entities. These icons are clickable and contain a list of the most useful actions for entities and their attributes. We’ve also improved JPA support for Kotlin and multi-module projects.

JPA Console for Jakarta EE 9

JPA Console for Jakarta EE 9

It is now possible to use the JPA console for writing and running JPQL queries in Jakarta EE 9 projects.

New color scheme for UML Diagrams

New color scheme for UML Diagrams

We’ve got good news for those who use our light theme: the UML Diagrams come with a new color scheme that makes them look neater and more readable.

Swagger Improvements

Swagger supports specifications with external file references ($ref). What’s more, the Structure view for specification files features more nodes, including Security, Callbacks, and Examples.

Selenium page object generator

IntelliJ IDEA now supports an experimental tool for detecting DOM elements of a web application. Before using it, install the Selenium UI Testing plugin.

You can access this new tool via Tools | Generate Selenium Page Object. In the dialog that opens, enter a web page address, select any DOM element, and add it to the area below. From there, you can change the element’s language or framework. Our page object generator supports Java, Kotlin, and Groovy and such frameworks as Selenium, FluentLenium, Selenide, Geb, Atlas, and JDI Light.

You can customize the code templates of each framework.

Kubernetes Ultimate

Quickly delete resources

Quickly delete resources

It is possible to delete all the cluster resources in the current context from the editor – just click the Run icon in the gutter and select Delete.

Support for Kustomize 3.7.0 components

You can choose the new Kustomize 3.7.0 components in the Kustomize version drop-down list in Settings/Preference | Languages & Frameworks | Kubernetes.

Support for kind: List

Support for kind: List

If you need to work with what the kubectl get <resource type> -o yaml command returns or arrange resources into lists, the IDE now supports kind: List. In each resource from the list, you can rename labels and use code assistance and navigation via the gutter icons. You can also convert a List to a multi-document YAML file and vice-versa.

Non-default values for Helm projects

It is possible to create custom values.yaml files. The IDE sees the files with “values” in their names as values files. Select Configure Helm Parameters, Helm Lint, or Helm Template from the context menu to open a dialog where you can configure which values files the chart template will use. You can also manually add values by pasting them in the Additional values area of this dialog.

Docker

Improved Run/Debug Configurations

The Run/Debug Configuration dialog is now more concise and adjustable. To add all the necessary build options, click Modify options. To add run options, click Modify. The IDE now validates each option to make sure it is compatible. We support all the existing options for Docker Compose. Code completion now works for Dockerfiles Run Options and Image ID or name.

BuildKit support

BuildKit support

We’ve added experimental support for BuildKit, which speeds up project builds. What’s more, building named stages separately from the whole multi-stage Dockerfile is now easier. You just need to click the hammer icon next to the stage name, and the IDE will build the image using BuildKit.

UI enhancements in multi-stage Dockerfiles

UI enhancements in multi-stage Dockerfiles

If you use multi-stage Dockerfiles, you can now fold stages and see a distinct separator line between them.

Cancel Docker run

Cancel Docker run

It is possible to stop your running Dockerfile quickly. To do so, go to the Services tool window, select the running item, invoke the context menu, and click Stop Deploy.

Environment variables and macros for Docker mounts

Environment variables and macros for Docker mounts

When using bind mounts, you can now enter a path to a directory on the host machine faster. The completion mechanism allows you to select macros and environmental variables in the Bind mount option in Run/Debug Configurations.

Images completion in Dockerfiles

Images completion in Dockerfiles

Code completion now works for image names.

JavaScript Ultimate

Improved support for Stylelint

Inspecting your CSS code with Stylelint is now easier. You can now fix problems with this popular linter in just a few clicks. Hover over a problem in your file or place the caret on it and press Alt+Enter, then select Stylelint: Fix current file. Additionally, you can now specify a path to the configuration file under the corresponding field in Preferences / Settings | Languages & Frameworks | Style Sheets | Stylelint.

Bundled MDN documentation

MDN documentation is now bundled with IntelliJ IDEA. This will help prevent connectivity issues with the MDN website and make in-editor documentation in your HTML, CSS, and JavaScript files display more quickly. In-editor documentation will also become more informative – for example, you’ll now see details about supported browser versions for JavaScript APIs.

Selector specificity for style sheets

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. Alternatively, focus on a selector and press F1/Ctrl+Q to see this information in the Documentation popup.

Database tools Ultimate

For a more detailed description of these and other updates for the database tools, read What’s new.

UI for grants

UI for grants

We’ve added a UI for editing grants when modifying objects. The Modify user window, which you can invoke on a user in the database explorer with Cmd/Ctrl+F6, now has a UI for adding grants to objects. These updates are available for PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server, and Sybase.

Context live templates

Context live templates

We’ve introduced a solution for generating simple statements straight from the database explorer – live templates. You can add your own templates or edit the existing ones via Preferences/Settings | Editor | Live Templates in the SQL node.

Database Copy Paste

Straightforward actions

We’ve simplified navigation – Go to declaration (Ctrl/Cmd+B) invoked on an object in SQL now takes you to the DDL, not to the database tree. We’ve also introduced a shortcut for the Select in database tree action: Alt+Shift+B for Windows/Linux and Opt+Shift+B for macOS.

Database Better Sorting

Better sorting

We’ve improved the sorting of data. A new ORDER BY field works similarly to the WHERE field (which was called Filter before): enter a working clause to have it applied to the query of the grid. If you want to use sorting on the client side (IntelliJ IDEA will neither rerun the query nor sort the data within the current page), uncheck Sort via ORDER BY. Another update is that the sorting is not ‘stacked’ by default; if you click on the name of a column you want to use to sort data, the sorting based on other columns will be cleared.

Database Copy Paste

Easy copy-paste of data sources

The most famous shortcuts in the world, Ctrl/Cmd+C/V/X, now work for copying, cutting, and pasting data sources. When you copy a data source, the XML is copied to the clipboard, which you can then share via a messenger. You can also use the Paste action to paste a piece of XML from somewhere else. If you cut and paste a data source inside one project, it will be just moved, no password required. A password is required in all the other cases.

Edit data in MongoDB

Edit data in MongoDB

You can now edit data in MongoDB collections. A statement preview is also available. To make editing more flexible, we’ve introduced the ability to change the type of a field from the UI. You can do this either from the context menu of the field or in the value editor.

Other

Embedded shared index support

Support for publicly available shared indexes is embedded into IntelliJ IDEA Community Edition. You don’t need to install a dedicated plugin. Instead, you can use the shared indexes feature from the IDE.

Android

IntelliJ IDEA now supports all Android Studio 4.1.1 updates.

Support for bnd-maven-plugin

IntelliJ IDEA can now import OSGI facet settings from the bnd-maven-plugin.