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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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’.
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.
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.
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.
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.
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.
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.
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
which is now converted to
stream.toList(). The IDE shows the
first on the code completion list for stream.
IntelliJ IDEA can warn you when arrays are initialized with a negative size. It
can also recognize the
What’s more, the IDE supports methods for unboxing or converting integers, such as
You can now avoid unnecessary casts by narrowing the for-each loop parameter type. Another
inspection allows you to simplify code syntax by swapping
.map() calls if the filter uses the same value as produced by the mapper. What’s
more, the inspection that replaces
updated to cover more cases.
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.
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.
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.
IntelliJ IDEA’s code coverage runner now fully supports Kotlin in inline functions and coroutines.
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.
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.
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 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.
This release introduces Scala code completion based on machine learning. You can enable the feature in Settings | Editor | Code Completion | ML | Scala.
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.
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).
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.
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 | Security – Link with unencrypted protocol.
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.
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.
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.
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.
It is now possible to use the JPA console for writing and running JPQL queries in Jakarta EE 9 projects.
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 supports specifications with external file references ($ref). What’s more, the Structure view for specification files features more nodes, including Security, Callbacks, and Examples.
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.
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.
You can choose the new Kustomize 3.7.0 components in the Kustomize version drop-down list in Settings/Preference | Languages & Frameworks | Kubernetes.
If you need to work with what the
<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.
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.
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.
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.
If you use multi-stage Dockerfiles, you can now fold stages and see a distinct separator line between them.
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.
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.
Code completion now works for image names.
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.
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.
For a more detailed description of these and other updates for the database tools, read What’s new.
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.
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.
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.
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.
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.
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.
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.
IntelliJ IDEA now supports all Android Studio 4.1.1 updates.
IntelliJ IDEA can now import OSGI facet settings from the bnd-maven-plugin.