pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/devel/intellij-ue-bin
Module Name: pkgsrc
Committed By: schmonz
Date: Fri Aug 15 18:10:46 UTC 2025
Modified Files:
pkgsrc/devel/intellij-ue-bin: Makefile PLIST distinfo
pkgsrc/devel/intellij-ue-bin/patches: patch-bin_idea.sh
Log Message:
intellij-ue-bin: update to 2025.2. Changes:
- Everything in today's intellij-ce-bin update, plus:
### Updates in 2023.2
#### Features
**Key updates**
* **AI Assistant [Limited access]** - With the current starting set
of AI-powered features, AI Assistant offers integrated AI chat and
can do things like automatically write documentation comments for
you, suggest names, generate commit messages, and more.
* **In-editor performance hints** - The new in-editor hints offer a
quick way to analyze code performance line by line, helping you
identify and resolve issues faster. Color-coded annotations in the
editor's gutter highlight critical methods allowing you to focus
right on the performance bottlenecks. This means you no longer have
to perform a thorough, time-consuming analysis with the Flame Graph
and Call Tree views.
* **GitLab integration** - You can now work with the Merge Request
functionality right from the IDE: review the list of requests, check
the changes, leave comments, and navigate to relevant views.
**User experience**
* **Text search in Search Everywhere** - Search Everywhere (Double
Shift) is primarily used for searching through files, classes,
methods, actions, and settings. With this update, it now includes
text search capabilities similar to Find in Files. Now, text search
results are displayed when there are few or no other search results
available for a given query.
* **Colored project headers in the new UI** - You can now assign a
unique color and icon to each of your projects, making them easier
to distinguish in your workspace. Headers now come with predefined
colors by default, but you can customize them.
* **Reworked hamburger menu in the main toolbar on Microsoft Windows
and Linux** - The behavior of the hamburger menu that is located in
the main toolbar in the new UI on Windows and Linux has been
refined. Once you click on the menu icon, the elements now appear
horizontally over the toolbar. Also, there's now an option to turn
this menu into a separate toolbar, accessible via View | Appearance
| Main menu as a Separate Toolbar.
* **File sorting by modification time in the Project view** - Added
the ability to arrange your files in the Project view based on their
modification times. This new functionality automatically reorders
the files whenever the changes in your project are saved.
* **Light theme with light header in the new UI** - The user
experience with the Light theme has been refined by introducing the
alternate Light with Light Header option, featuring matching light
colors for window headers, tooltips, and notification balloons.
* **Updated window controls on Apple macOS** - When working on
macOS in full screen mode using the new UI, the window controls
are now displayed right in the main toolbar - not in the floating
bar as before.
* **Removed title bar on Linux in the new UI** - For the convenience
of Linux users, the native header of the operating system has been
removed in the new UI, resulting in a cleaner interface. By default,
you will now see the custom IDE header, which offers a range of
customization options to tailor your workspace.
* **Syntax highlighting in inspection descriptions** - Syntax
highlighting makes it easier to understand what triggers an
inspection and decide whether you want it to be active or inactive.
* **Single-click navigation between project directories** - In the
Project view, there's a new Open Directories with Single Click
option that makes expanding and collapsing the project folders
quicker and more responsive. The option is available from the drop-
down menu once you click on the kebab (three vertical dots) menu.
* **Improved main toolbar customization** - The customization
options for the new UI's main toolbar have been expanded. You can
now use a dropdown menu to quickly choose actions that you want to
add to the toolbar.
* **Suggested plugins in Settings/Preferences** - To make it easier
to configure the IDE for your specific projects and extend its
functionality with plugins, the UI for the Settings/Preferences |
Plugins section has been updated. It now includes a set of suggested
plugins that is determined automatically based on your project
specifics and appears at the top of the list.
* **Updated UI for the Run/Debug widget in the Services tool window**
- The UI for the running and debugging actions in the Services tool
window has been reworked to make the look and feel of the toolbar
consistent with that of the main Run/Debug widget.
* **Pinned run configurations in the Run widget** - To make managing
multiple run configurations easier, the option to pin preferred
configurations in the Run widget has been implemented.
**Java**
* **New inspections and other code analysis improvements** - Java
inspections have been improved and expanded to help you maintain high-
quality code and detect potential issues more effectively.
* The new Incorrect 'MessageFormat' pattern inspection will warn
you when pattern references do not match the arguments, and it
will also detect incorrect usages of quotes and braces in
MessageFormat patterns.
* The IDE now reports calls with explicit ChronoField or ChronoUnit
arguments and suggests replacing them with calls of more specific
methods, thus simplifying the code.
* **Сode highlighting and navigation for format strings** - Once you
place the caret on a format specifier, the IDE will now highlight
the corresponding argument and other specifiers that point to it.
Also, you can now use Go To Declaration (Ctrl+B) to jump to the
associated code location for a specific format string placeholder.
* **Improved support for the @snippet tag in Javadoc comments** - It
allows Markup comments within the @snippet tag and renders them
properly in the documentation. Code regions are now supported,
meaning you can specify a portion of code that you want to refer to
in a Javadoc comment. In addition, the IDE now supports the
inclusion of external snippets within the @snippet tag, allowing you
to reference code snippets stored in separate files or sources and
include them in Javadoc documentation.
* **Expanded refactoring options for multiple selected members** -
You can now invoke Extract Delegate, Extract Interface, Extract
Superclass, Pull Members Up, and Push Members Down on multiple
members simultaneously by selecting them right in the Project or
Structure tool window. In addition, IntelliJ IDEA now supports multi-
caret selection for an extended range of refactorings, including
Encapsulate Fields, Move Static Members, Extract Delegate, Extract
Interface, and Extract Superclass.
* **Improved navigation for stack trace analysis** - To facilitate
stack trace analysis and make resolving bugs quicker, IntelliJ IDEA
can now accurately guess the location of a method in the report even
when line numbers are not available or have diverged.
* **Enhanced taint analysis for dynamic SQL queries** - IntelliJ IDEA
can now better analyze concatenations and interpolations of SQL in
Java and Kotlin, detecting potentially unsafe queries and thereby
protecting the code from possible SQL injection vulnerabilities.
**Scala**
* **Better Scala 3 support** - This release brings enhanced Scala 3
support, with a focus on providing a streamlined development
experience. Notable improvements include:
* Fixes for Scala 3 enum highlighting, navigation to enum
definitions, and the correct resolution of enum cases in
various contexts.
* The TASTy decompiler has been significantly enhanced, ensuring
accurate decompilation of popular Scala libraries, such as Akka,
Cats, Play, ZIO, and others.
* The integration of scala-expression-compiler into the debugger
provides a better debugging experience for Scala developers.
* Enhanced completion hints for Scala 3's Universal Apply Methods,
in-editor support for IArray.
* Improved support for the "fewer braces" syntax.
* **Better sbt support** - Environment variables set for sbt are
persisted and handled correctly after the project is reopened. The
settings page has been redesigned for easier use, and a new
Environment variables field has been added so that you can now pass
custom environment variables to the sbt-shell process.
* **ScalaDoc rendering** - Annotations, keywords, and literals in
displayed declarations are now highlighted based on the selected
theme. The list of extended traits and classes has been split into
multiple lines if it exceeds the available space. Additionally,
Scala 3 keywords are now supported in the documentation.
* **Fixed type inference errors** - This release comes with many
fixes to invalid type inference in some complex or simply rare
cases, such as when types have complicated bounds, when a sealed
trait hierarchy might be unclear, or in complex pattern matching.
* **Zinc as the default compiler** - In light of Zinc's recent
performance improvements, it is now the default incremental compiler
in this release. This ensures comprehensive support for incremental
compilation of new Scala 3 features, including inline methods.
* **Improved management of sources and target directories** - Sub-
folders of the target folder are no longer included automatically as
sources unless they are marked as managed. This speeds up searching
in projects that generate source code. Also, the IDE now provides
better support for sbt-projectmatrix.
**Profiler**
* **Profiling features available from the Run tool window** - You can
now conveniently access the IntelliJ Profiler's functionality right
from the Run tool window. The new buttons allow you to invoke the
Attach IntelliJ Profiler and Capture Memory Snapshot actions in a
click, without having to open the Profiler tool window or start the
application from scratch.
* **Default wall-clock profiling mode** - The profiling experience in
IntelliJ IDEA has been enhanced by making wall-clock profiling mode
the default option. This profiling method considers the total time
spent in a method, including waiting time. With milliseconds as the
measurement unit, it takes center stage as the more powerful and
intuitive option.
**Run / Debug**
* **Reactor Mono and Flux values evaluation** - When debugging your
reactive application, you can now easily evaluate values of watches
and local variables for Mono and Flux types. The IDE now detects
them during debugging sessions and provides a corresponding get or
collectList link in the Variables view, which you can click to
instantly compute reactive stream items. By default, the debugger
fetches the first 100 items of Flux. You can configure this number
in the settings.
* **Сontinuous testing for Gradle, Maven, and JPS projects** - The
capabilities of the auto-testing functionality have been expanded,
making it fully compatible with the Maven, Gradle, and JPS build
systems. It is now easier to activate continuous testing mode.
* **Inline breakpoints for return statements** - IntelliJ IDEA now
offers improved support for setting breakpoints directly at the
return statement, similar to how it was already being done with
lambda expressions. This improvement offers developers improved
debugging precision and deeper code analysis, providing valuable
insights into code behavior and return values.
**Version control systems**
* **Option to commit specific lines of code** - This release
introduces a new feature to selectively commit specific parts of
code chunks. To perform a partial commit, select the lines within a
chunk and call Include these lines into commit from the context
menu. The chunk will be divided into individual lines, with the
selected ones highlighted. You can add or exclude lines from the
selection using checkboxes or the context menu.
**Performance**
* **New tool for easily generating shared indexes** - It is designed
to streamline teamwork and eliminate time wasted on locally indexing
large projects. The new tool simplifies the process of generating
shared indexes for your team, requiring just a few clicks instead of
multiple scripts and services.
**Frameworks and technologies**
* **Ability to run and debug Tomcat on Microsoft Windows Subsystem for
Linux (WSL)** - To work with Tomcat-based applications on WSL,
you'll need to have the JAVA_HOME environment variable declared in
either the /etc/environment or the ~/.bashrc file.
* **gRPC requests using TLS in the HTTP Client** - TLS provides
encryption and authentication, ensuring the confidentiality and
integrity of your data transmission. Both https:// and grpcs://
schemas are supported in the request syntax.
* **Improvements for Swagger Codegen** - The Edit Swagger Codegen
Configuration dialog has been reworked to make it easier for you to
tailor run configurations to your requirements. Additionally, you
can now access Swagger Codegen run configurations right from the
gutter without having to specify any additional settings.
* **Support for Swagger and OpenAPI schemas in the HTTP Client** -
The HTTP Client is now capable of understanding Swagger and OpenAPI
specifications and providing corresponding code completion options
for JSON request bodies.
* **Redoc UI previews for OpenAPI and Swagger files** - IntelliJ IDEA
now supports Redoc UI previews for OpenAPI and Swagger specification
files, including YAML and JSON files, allowing you to switch between
the Redoc and Swagger UIs within the IDE. With the Redocly
integration, you can access the Try it console from within IntelliJ
IDEA and use it to set parameters and send requests to your API.
* **JSON body completion in JavaScript** - The IDE now provides
completion for JSON object keys in JavaScript code, such as in code
that uses fetch() calls or references the Axios library. Spring MVC
server endpoints are currently supported.
* **Support for JavaScript imports in the HTTP Client** - With this
release, it is now possible to share common JavaScript code for HTTP
Client request handlers via imported modules.
* **PDF and HTML previews for responses in the HTTP Client** -
IntelliJ IDEA is now able to display previews of PDF and HTML files
right in the request results in the HTTP Client.
* **Support for GraphQL and WebSocket in the HTTP Client CLI** - You
can now use the HTTP Client CLI in IntelliJ IDEA to interact with
GraphQL APIs and establish WebSocket connections with services, for
example for tests or automation scripts.
* **Auto-completion for Spring Boot configuration keys in VM options**
- While setting up a new Spring Boot run configuration, the VM
options field provides auto-completion options for keys appearing
after the -D flag.
* **Spring configuration beans no longer require the annotation
processor** - The user experience has been streamlined when working
with custom configuration beans in Spring within IntelliJ IDEA. The
IDE now provides code completion and validation in properties and
YAML configuration files, without you needing to set up the Spring
Boot Configuration Annotation Processor.
* **Support for Spring AOP in Kotlin** - Extended IntelliJ IDEA's
support for utilizing AspectJ in Spring applications. The IDE now
provides analysis and completion for Kotlin code, just as it already
did for Java code.
* **New inspection for detecting mismatching value types in YAML
files** - A new inspection to eliminate the so-called "Norway
problem" and prevent the unintended misinterpretation of Boolean
values in YAML files has been introduced. When a list primarily
consists of strings but contains a Boolean-like literal, IntelliJ
IDEA will highlight this literal, indicating a potential
inconsistency, and suggest adding quotes to it. If the list is
mostly composed of Boolean-like literals (such as true, false, off,
on, yes, or no), any literal that deviates from this pattern is
highlighted as a possible error, although no specific quick-fixes
are suggested in this scenario.
* **Support for editing AsyncAPI files** - Working with the AsyncAPI
specification format in IntelliJ IDEA is now much easier. The IDE
supports schema validation functionality and provides code
completion for references, the Endpoints view, and the Editor
Preview pane.
**Docker**
* **Preview of files inside Docker image layers** - It is now easy to
access and preview the contents of a Docker image layer in the
Services tool window. Select the image from the list, select Show
layers, and click Analyze image for more information.
* **Set Docker container to run as a Before Launch task for run
configurations** - It is now possible to set a Docker run
configuration to run before another configuration by designating it
as a Before Launch task. The IDE will wait for the container that is
currently running to become healthy, and then it will launch the
next run configuration.
**Kubernetes**
* **Support for multiple kubeconfig files within a single project** -
A new feature that allows you to set up multiple kubeconfig files
within a single project has been introduced. This simplifies the
experience of handling multiple clusters or working with
environments on different clusters in the same project.
* **Ability to view deployment logs** - You can now view logs for
deployments in Kubernetes clusters in the Services tool window. Right-
click on Deployment in the tree and then select Follow Log or
Download Log from the context menu.
**Web development**
* **Improved error formatting in JavaScript and TypeScript** - In
this release, your errors and warnings will now be formatted in a
more readable way, making it easier to spot problems in your code.
This works for all TypeScript errors, some of the most common
JavaScript errors, and even localized errors.
* **CSS nesting support** - IntelliJ IDEA now supports CSS nesting.
Syntax support has been implemented and an inspection that alerts
you if the nested selector starts with an identifier or functional
notation has been added.
* **Vue Language Server support** - Support for Vue Language Server
(VLS), a.k.a. Volar, provides more accurate error detection and
better type information in the quick navigation and documentation
popups. By default, VLS will be used for TypeScript v5.0 and higher,
and the wrapper over the TypeScript service will be used for earlier
TypeScript versions.
* **New live templates for React hooks** - Added a new set of live
templates for React hooks.
**Сode quality workflow**
* **Bundled Qodana code quality platform** - IntelliJ IDEA now
simplifies configuring static analysis tools by fully integrating
JetBrains Qodana. This integration brings you two important
benefits. First, easy configuration allows you to trigger analysis
with a few clicks, view project-wide problems, and set up quality
gates in your preferred CI/CD system. Second, you can now see the
server-side analysis results without leaving your IDE, right out
of the box.
**Database tools**
* **Support for Redis Cluster** - When connecting to a cluster,
jdbc:redis:cluster: must be entered before the desired URL. Choose
the appropriate connection type to achieve this. If SSH tunneling is
required for the connection to the cluster, then the hosts and ports
for all nodes in the cluster should be indicated in the URL.
* **New UI for the schema migration dialog** - The schema migration
functionality has been reworked. The main difference is that the
same object is now placed on the same line in both parts of the
dialog, making it easier to understand which objects are going to be
added, removed, or changed in the target schema.
* **Time zone setting for the data editor** - The Data Editor and
Viewer settings page has a new Time zone field for setting the time
zone in which the datetime value should be displayed.
* **Support for external databases and datashares in Redshift** -
Shared databases and their contents are now introspected. The
datashares that these databases are created on are also
introspected.
**Build tools**
* **Support for Maven 4.0.0-alpha** - IntelliJ IDEA is now fully
compatible with Maven 4.0.0-alpha, the latest version of Maven.
**Other**
* Introduced an LSP API for plugin developers who want to use a
specific LSP server for coding assistance in the IDE. If you've made
your own programming language or framework, you can get it supported
in the IDE by creating an LSP server and a plugin.
* The Big Data Tools plugin has been decomposed, allowing you to use
its parts separately. This means six new plugins are available for
IntelliJ IDEA: Kafka, Spark, Flink, Remote File Systems, Big Data
File Viewer, and Zeppelin. If you need all six, installing the
umbrella Big Data Tools plugin is still possible and a convenient
way to get them all in one click.
* IntelliJ IDEA's bundled Android plugin now provides the features of
Android Studio Giraffe Beta 2, including support for Android Gradle
Plugin (AGP) 8.0.0. Please note that this support doesn't include
the features that require signing in to a Firebase account.
* The default value of the maximum heap size (-Xmx) has been
changed to 2 GB.
### Updates in 2023.1
#### Features
**Key updates**
* **New UI enhancements (Beta)** - Compact Mode has been introduced
which provides a more consolidated look and feel of the IDE thanks
to scaled-down spacing and elements. The new UI now offers an option
to vertically split the tool window area and conveniently arrange
the windows, just like in the old UI. The Run widget in the main
window header has been redesigned so that its appearance is
unobtrusive and easier on the eyes.
* **Earlier availability of IDE features on project opening** -
Improved the IDE startup experience by performing the 'Scanning
files to index' process in smart mode. Doing so makes the IDE's full
functionality available much earlier in the startup process. When
opening a project, this release uses existing caches from your
previous session with the project and simultaneously looks for files
to index. If no changes are found in the scan, the IDE will be
ready, eliminating the delays that were previously caused by
indexing on startup.
* **Faster import of Maven projects** - Improved the IDE's
performance in importing Maven projects by optimizing dependency
resolution as well as reworking the processes behind importing and
configuring facets.
* **Background commit checks** - Reworked the behavior of commit
checks for Git and Mercurial to speed up the overall commit process.
Checks are now performed in the background after you commit but
before you push.
* **Navigation to Spring Security matchers and request mappings** -
To simplify seeing applied security rules, IntelliJ IDEA now
provides easy navigation to security matchers from Spring
controllers. The navigation works both from security matchers to
controllers and vice versa.
**User experience**
* **Full IDE zoom** - It is now possible to zoom into and out of
the IDE entirely, increasing or decreasing the size of all UI
elements at once.
* **Option to save multiple tool window layouts** - In this release,
you can now save and manage several tool window layouts and switch
between them when needed.
* **New Remember size for each tool window setting** - In this
release, a new layout option has been introduced that allows you to
unify the width of the side tool windows or retain the ability to
freely adjust their sizes as you customize your layout.
* **Onboarding tips in a sample project** - Introduced an option to
open a new project containing sample code with onboarding tips. In
the New Project wizard, check Generate code with onboarding tips to
get a basic sandbox project with tips demonstrating some of the
IDE's essential features. By following this small guide, users can
try out the Search Everywhere functionality, apply a quick-fix, and
run and debug the code, making it easier to familiarize themselves
with the IDE.
* **Setting to configure Actions on Save for new projects** - This
release adds an option to predefine the behavior of Actions on Save
for new projects.
* **ML-powered search for classes in Search Everywhere enabled by
default** - To provide you with more relevant and accurate search
results, machine-learning ranking has continued to be integrated
into the Search Everywhere (Double Shift) functionality. The sorting
algorithm in the Classes tab is now also powered by machine learning
by default, along with the results in the Actions and Files tabs.
* **New suggestion to reconfigure Microsoft Defender settings for
better performance** - In this release, there is a new notification
that is triggered when Microsoft Defender with Real-Time Protection
is running. Given that these antivirus checks can significantly
decrease the IDE's speed, IntelliJ IDEA now suggests adding certain
folders to Defender's list of exclusions. The notification provides
options to either reconfigure these settings automatically or first
check Defender's configuration instructions and do it manually.
**Editor**
* **Option to specify the placement of pasted content** - In this
release, the user experience when pasting a line that was copied or
cut without selection has been fine-tuned. There is now a setting
that allows you to control the placement of the pasted content.
* **Option to show whitespaces only in selected code** - This release
features a new Selection checkbox in Settings/Preferences | Editor |
General | Appearance | Show Whitespaces that allows you to configure
this setting so that the IDE shows whitespaces as small dots only
when you select code.
* **Custom regexp-based search and replace inspections** - With this
release, you can use regular expressions to create your own search
and replace inspections. These inspections can be especially useful
for highlighting style-based or formatting-based problems.
* **New intention action for reformatting tables in Markdown files**
- A new intention action allows you to correct the formatting of
tables in Markdown files.
* **Fill Paragraph for Markdown files** - The Fill Paragraph editor
action is now supported for Markdown files, allowing you to break
long texts into several lines of even length.
* **New Smart Keys settings page for Markdown** - Added a dedicated
page for configuring and editing your Markdown preferences in
Settings/Preferences | Editor | General | Smart Keys. This page
should make managing your preferences easier, as it provides
separate checkboxes for various editor features, replacing the
single checkbox previously stored in Settings/Preferences |
Languages & Frameworks.
* **No spell checks for hashes and special values** - Updated the
Typo inspection so that it no longer checks the spelling of hashes
and special values and doesn't report them as misspelled. This
update covers the following values:
* Md5, Sha1, and Sha256 hex values.
* Sha384 and Sha512 base64-encoded integrity values with the
shaNNN- prefix.
* JWT tokens.
**Java**
* **New Java inspections** - The Malformed format string inspection
now reports illegal time conversions that don't comply with common
Java syntax. The Redundant String operation inspection is now
capable of detecting redundant StringBuilder.toString() calls and
providing a quick-fix to replace them with contentEquals() so that
you don't create an intermediate String object. It also reports
unnecessary arguments in String constructor calls and suggests a quick-
fix that removes them.
* **Java 20 support** - This release supports the latest updates
added in Java 20, including the changes to the language features
Pattern Matching for switch and Record Patterns.
* **Improved Extract Method refactoring** - Upgraded the Extract
Method refactoring by introducing the option to apply it even when
the selected code fragment features several variables that need to
be returned. In these cases, the IDE first suggests wrapping these
variables into a new record or bean class and then performing the
method extraction.
* **Auto-completion in the VM Options field** - Integrated auto-
completion functionality into the VM Options field of the Run/Debug
configuration popup. Now, when you start typing the name of a flag,
the IDE suggests a list of available command line options.
**Scala**
* **Improved support for braceless Scala syntax** - IntelliJ
IDEA can now desugar braceless Scala code properly, and it
handles refactorings where the "fewer braces" feature is used.
It also supports braceless syntax in worksheets and correctly
interprets indentation when you move extensions methods up and
down in your code.
* **Better support for sbt projects** - In Gradle, when you have an
empty module and want to create the root directory for the source
code, you can use the New Directory dialog, which contains some
helpful suggestions. With this release, this dialog is now available
for sbt projects, as well.
* **Upgraded Scala inspections** - The Unused declaration
inspection has received a number of fixes and improvements.
IntelliJ IDEA can now detect symbol usage in your project's XML
files. The inspection also distinguishes between references to
terms and references to types, not tagging the one as in use if it
is actually the other that is. The Can be private inspection has
been updated, as well. For example, you will no longer see
highlighting for top-level definitions in worksheets and local
classes. For recursive calls, you will now see a gutter icon to
the left of the line with the call.
* **Code editing improvements for Scala 3** - Improved the
performance of Scala 3 highlighting when many implicit parameters
are imported and are needed to parse the code, for example, when the
Cats library is being used. This release also features many syntax
support improvements, such as the proper automatic generation of
overriding methods with using clauses.
* **Streamlined import management** - If you use compiler-based
highlighting, until now all imports have been marked as used. Scala
3.3, however, introduced a new compiler option, -Wunused:imports.
The IDE can now identify unused imports if your project uses this
option. The auto-import action for Enums has also been fixed.
* **Improvements for Scala 3 and Scala 2 decompilers** - This release
brings numerous fixes and improvements to the Scala 3 and Scala 2
decompilers. The output of decompiling Scala 2 and Scala 3 bytecode
has been unified and is now easier to read.
**Profiler**
* **Improved UI for the Flame Graph tab** - Updated the Flame Graph
tab by introducing color-coded highlighting for calls. Methods
belonging to the currently opened project are now highlighted in
yellow. This way, you can easily distinguish the code that you can
modify to resolve a given performance problem. The overall color
scheme of the Flame Graph tab has also been reworked to make it more
eye-friendly.
**Version control systems**
* **VCS status color hints in the Structure tool window** - To make
tracking changes to files more convenient, color hints have been
added to the Structure tool window. The names of modified objects
will now become blue, and the names of the newly added objects will
appear in the tool window highlighted in green.
* **Improved code review workflow for GitHub** - To simplify the
process of reviewing code inside the IDE, the Pull Request tool
window has been reworked. It now features a dedicated tab for each
pull request you open. The tab instantly displays the list of
changed files, but it now provides less information than before,
allowing you to better focus on the current task. There is now also
a dedicated button to easily execute the action that's considered
the most relevant given the pull request's current state.
* **Improved Branches popup** - Improved the usability of the
Branches popup. For instance, navigating between branches is now
easier, as they are grouped and stored in expandable lists.
* **Auto-completion in the Create New Branch popup** - This release
provides auto-completion in the Create New Branch popup. Once you
start typing a name for your new branch, the IDE will suggest
relevant prefixes based on the names of existing local branches.
**Build tools**
* **Option to specify the Gradle version on project creation** - When
configuring a new Gradle project, it is now possible to select the
required wrapper version right in the New Project wizard. Expand the
Advanced Settings section, uncheck Auto-select, and specify the
preferred option. You can have the IDE remember your choice by
enabling Use these settings for future projects below the Gradle
version combobox.
* **Java SDK detected from the Gradle toolchain** - When
importing a project, IntelliJ IDEA can now detect the Gradle
toolchain configuration and set up the matching Java SDK in the
module's settings.
**Run / Debug**
* **Option to assign a custom shortcut to run the current file with
coverage** - In this release, it is possible to create a shortcut
to launch the Run with coverage action for the file you currently
have open, even if the run configuration hasn't been created yet.
* **Option to filter classes in the Coverage view** - In this
release, you can filter classes in the Coverage view to focus on
recently updated classes and methods that require special attention
when testing. By default, you'll see a list of classes with
uncommitted changes. The second filtering option allows you to hide
classes that are fully covered.
**Frameworks and technologies**
* **Spring Security 6 support** - This release provides updated
support for navigation to URL mappings and security roles for APIs
introduced in Spring Security 6.
* **Delegation of building and running to Gradle in the Spring run
configuration** - In the Spring run configuration, Gradle is now
the default option for running and building projects. The IDE now
uses the main setting to build and run the project using Gradle as
defined in Settings/Preferences | Build, Execution, Deployment |
Build Tools | Gradle.
* **Option to share Spring and JPA facet settings via VCS** - With
this release you can change and share Spring and JPA settings via
custom facets in File | Project Structure | Modules.
* **Ability to run MongoDB queries in the Database console from Spring
and Micronaut Data repositories** - This release makes it possible
to run MongoDB queries in the Database console from Spring and
Micronaut Data repositories.
* **Project Reactor: Improved inspections for reactive code** - This
release provides a wider array of inspections for reactive code. For
example, the IDE now reports usages of transformation operators with
the Mono<Void> type described in the Reactor 3 Reference Guide.
* **Apache Dubbo support** - Implemented a new dedicated plugin that
integrates Apache Dubbo, providing the framework's functionality as
part of IntelliJ IDEA's support for Spring. You can download this
plugin from JetBrains Marketplace or install it right in the IDE via
Settings/Preferences | Plugins.
* **Recognition of Swagger annotations for OpenAPI generation** - If
you define additional metadata for APIs using Swagger 2.X
annotations in Spring controllers, IntelliJ IDEA now includes these
annotations when generating OpenAPI files from the URL inlay popup
dialog or from the Endpoints tool window.
* **Option to edit parts of OpenAPI specifications split over several
files** - It is now possible to edit parts of bigger OpenAPI
specifications in separate files while easily navigating between
them. In addition, the IDE provides code completion and
highlighting for these files in the same way it does for the main
specification file.
* **Option to run GRPC requests from the Endpoints tool window** -
With this release, it is now possible to run GRPC requests from
proto files that contain imports from .jar archives.code completion
for request bodies has also been improved, like for the OneOf and
Map<K,V> types. The HTTP Client tab for Protobuf endpoints has also
been added in the Endpoints tool window.
* **Improved editing support for application.yaml configuration files
in Ktor** - The IDE now provides all of the editing features
necessary to work with application.yaml configuration files in Ktor,
including code completion, highlighting, and validation.
**Docker**
* **Merged logs from all Docker Compose containers** - The Dashboard
tab of the Docker Compose node now pulls together logs from every
Docker Compose container and displays them all in one place, updated
in real time.
* **Support for Microsoft Azure Container Registry** - You can now
easily connect to Azure Container Registry. Go to
Settings/Preferences | Build, Execution, Deployment | Docker |
Docker Registry and set it up by selecting the Docker V2 option in
the Registry input field.
* **New setting to apply the :z mount option to bind volumes on
SELinux** - You now have the ability to add :z configuration flags
to Docker bind mounts, allowing you to connect volumes to Docker
containers on SELinux workstations.
* **Docker container health statuses in the Services tool window** -
This release informs you about the results of Docker health checks.
You can now see health statuses of the running Docker containers
next to their names in the Services tool window. Also, to make it
easier to parse the statuses at a glance, containers that are
starting and operating normally feature a small green dot on the
icon, while the unhealthy containers are marked with red.
* **Docker debug deprecated** - The Docker debug functionality has
been deprecated. To debug your applications using Docker containers,
please use Run targets instead.
**Kubernetes**
* **File templates in the New Kubernetes Resource popup** - To make
creating new Kubernetes files easier, a new action has been added to
the File | New menu. Once you select the New Kubernetes Resource
option, you'll see a popup that features a list of the most popular
resource types, such as Pod, Deployment, ConfigMap, and others.
* **Action to create new Kubernetes Secrets** - This release
introduces a new dialog for creating Kubernetes Secrets. To define a
new Secret, you can input Key and Value data manually or specify a
file whose content will be used.
* **Color-coded change markers for Kubernetes resources loaded from
cluster** - When you use the View YAML action for resources from a
cluster and make any changes in the opened file, IntelliJ IDEA now
highlights all of your edits with color-coded marks in the gutter.
This way, you can be sure that the changes are made to the required
parts of the resource before you apply them back to the cluster.
Additionally, using the Compare with Cluster icon opens a full diff
view that will fetch the resource's current version from the cluster
and compare it with the local version.
* **Improved user experience with kubeconfig files** - This release
refines the user experience for working with kubeconfig files. You
can now easily access a kubeconfig file in the Services view and
open it in the editor. If you change a kubeconfig file outside of
the IDE, IntelliJ IDEA will detect this and automatically refresh
the configuration in the Services tool window. Code highlighting and
completion for kubeconfig files are also provided.
* **Ability to assign custom shortcuts for actions in the Services
view** - You can now assign shortcuts for most Kubernetes actions
in the Services view, like Forward Ports, Delete Resource, and
Describe Resource, among others.
**Remote development and collaboration**
* **Additional insight into items only available to Сode With Me
session hosts** - When guests connect to a session, their client
now looks more like a regular JetBrains IDE. They can see all of the
items the host sees, including grayed-out ones that only the host
can access. Guests can clearly see what is unavailable and ask hosts
to implement those actions on their behalf.
* **One-click permission requests and approvals in Code With Me** -
Guests can now request additional permissions by simply clicking on
a key icon next to an unavailable item. Now hosts don't have to
determine necessary access from the start and can easily approve
extra permissions from any guest on the fly.
* **Improved overview of recent remote development projects** -
Recent projects are now stored on the host instead of the client.
This gives you accurate, up-to-date information even if you connect
from a different client. More useful options have also been added,
such as selecting which version of the IDE to use on the host.
**Web development**
* **Astro support** - Added support for Astro in IntelliJ IDEA.
You can get it through the new Astro plugin, which can be
installed from Settings/Preferences | Plugins. The plugin
provides basic functionality including syntax highlighting, code
completion with automatic imports, refactorings, navigation,
correct formatting, and more.
* **Support for TypeScript in Vue templates** - Added TypeScript
support in Vue templates. It's enabled when you set the lang
attribute in a script tag to ts. Previously, JavaScript was used
regardless of the lang attribute in the script tag. IntelliJ IDEA
will now provide support for inline casting, improved type
narrowing, and correct information about inferred types in quick
documentation in templates of Vue Single-File Components.
* **Automatic conversion of strings to template literals** - IntelliJ
IDEA will now transform your single- or double-quoted strings into
template literals automatically whenever you type ${. This works for
raw strings as well as for JSX properties.
* **Tailwind CSS configuration** - Added support for configuration
options, such as custom class name completion under the
classAttributes option, or experimental ones like
tailwindCSS.experimental.configFile.
**Other**
* The Android plugin bundled with IntelliJ IDEA now provides all the
features of Android Studio Electric Eel, including support for the
Android Gradle Plugin (AGP) 7.4.0.
### Updates in 2021.3
#### Features
* **Key updates**
* **Remote development (Beta)** - IntelliJ IDEA Ultimate now
supports a Beta version of the Remote Development workflow. It
allows you to connect to a remote machine running IntelliJ
IDEA’s backend from anywhere in the world. All the processing
happens on that powerful remote machine, and you can work on your
project as seamlessly as if it were on your local one. This
functionality can be initiated from IntelliJ IDEA’s Welcome
screen or from a new application called JetBrains Gateway, which
is available in the Toolbox app. What’s more, you can create,
prebuild, share, reproduce, hibernate, and manage dev environments
with Space - a unified platform for the entire software
development pipeline.
* **Troubleshooting IDE issues** - IntelliJ IDEA 2021.3 brings a
new, faster way to diagnose and fix issues that are causing your
IDE to not work properly. If your IDE isn’t working properly,
invoke the new Repair IDE... action from the File menu. It will
guide you through a sequence of steps to troubleshoot some of the
most common problems.
* **Constant conditions inspection for Kotlin** - Added the new
Constant conditions inspection, which helps IntelliJ IDEA report
non-trivial conditions and values that are statically known to
be always true, false, null, or zero. It works the same way as
the similar inspection for Java, and it supports most of the
same checks.
* **Debugger updates for Kotlin:**
* **Smart Step Into** - When you want to debug an expression with
chained method calls and lambdas, the Step Into action gives you
the functionality of Smart Step Into by default. It highlights
the methods and lambdas you can step into.
* **Inline stack frames** - The debugger can now detect Kotlin
inline functions and display inline function calls in the stack
trace panel. You can navigate to these calls, and you can also
inspect and evaluate the variables of each frame.
* **Editor**
* **Change font size in all the tabs** - Added the ability to
change the font size in all open tabs simultaneously with
⌘+mouse wheel on Apple macOS or Ctrl+mouse wheel on Microsoft
Windows and Linux.
* **Improved intention preview:**
* IntelliJ IDEA has a helpful option that allows you to preview
the results of intention actions and quick-fixes before applying
them to your code.
* In IntelliJ IDEA 2021.3, it works for more intention actions and
quick-fixes in Kotlin, and the “Preview isn't available”
message has been replaced with more informative HTML
descriptions of the intention actions that aren’t supported.
What’s more, for an action that modifies several files, the
preview displays part of a possible outcome. This partial
outcome should be enough to give you a general idea of what the
action will change.
* **Improved Markdown support** - Tables can now be created with
ease. Simply invoke the context menu and select Insert | Table.
You can select the preferred size using the mouse hover action or
the keyboard. The cell width in the table will be adjusted as you
type. You can edit the table content using the floating toolbars.
To create a new row you can use Shift+Enter, and Tab to navigate
to the next cell.
* **User Experience**
* **New Bookmarks tool window** - Added the new Bookmarks tool
window that is destined to replace a similar instance –
Favorites.
* From now on, you can simply use the F3 shortcut on macOS or F11
on Windows and Linux to mark your files, folders, and classes as
important.
* When you add a bookmark, by default IntelliJ IDEA puts it in the
node named after your project in the Bookmarks tool window.
* Every time you add a new bookmark, it will appear at the top of
the list inside this node.
* You can sort your bookmarks by type using the Sort Groups and
Bookmarks option in the tool window’s settings.
* You can also create new nodes and drag and drop items in them.
* **Ability to split the Run tool window** - Added the ability to
split the Run tool window with tabs. This allows you to run
several configurations simultaneously and see all of the results.
To split the window, drag the tab you want to see to the
highlighted area inside the Run tool window and drop it there. To
unsplit the window again, right-click the top pane and select
Unsplit from the context menu.
* **ML-based search for actions in Search Everywhere** - When
searching for actions, Search Everywhere in IntelliJ IDEA is now
powered by machine learning by default. An ML-based formula has
been trained that takes into account:
* The specific user’s action usage history.
* Action usage frequencies across the whole user base.
* The lengths of the search query, the action’s name, and so on.
* **Improved Find Usages** - When you search for usages of a method
implementation via ⌥F7 on macOS or Alt+F7 on Windows and Linux,
the IDE no longer asks whether you want to find usages of the base
method in a pop-up. Instead, IntelliJ IDEA will use top-level
hierarchy methods as targets for your search by default. If you
want to change this behavior, deselect the Search for base method
usages checkbox in the Find Usages tool window settings, which you
can access by clicking the gear icon.
* **Reworked Show Usages** - The Show Usages dialog has received
several useful new features:
* Introduced the source code preview per found usage, which you
can see by clicking the square icon in the top toolbar pane.
* Another update lets you change the scope of your search with the
new drop-down list located next to the Preview icon.
* The window’s title bar now shows the type of code element you
are searching for and the number of usages found.
* Another minor yet very convenient update allows you to set the
dialog width, which the IDE will retain the next time you
invoke it.
* **Reworked Empty Project and new Multi-Module Project nodes:**
* You can now select the Empty Project node to create a basic
project for working with separate files of different types and
adding Java and Kotlin classes.
* The IDE will automatically configure the project so that you can
compile it if any Java or Kotlin classes are present.
* The new Multi-Module Project node lets you create a project with
a complex structure from scratch. Once the project is created,
the Project Structure dialog will open, and you’ll be able to
add various modules.
* **Accessibility updates** - IntelliJ IDEA 2021.3 addresses some
accessibility issues to make working with the screen reader more
comfortable:
* The tool window widget pop-up has been disabled and the quick
documentation pop-up that used to appear on mouse hover.
* Fixed an issue with calling the Go to Declaration dialog.
* The accessibility support on macOS has also been improved.
* Resolved several issues with the voiceover focus and made it
possible for screen readers to detect the list items in the New
Project wizard when you create projects.
* To minimize distractions while you're coding, the number of help
tooltips that play sounds has been decreased.
* **Java**
* **Inspection for tracking unsafe strings** - IntelliJ IDEA now
warns you about hazards such as SQL injection and XSS flaws,
sensitive data leaks, and insecure deserialization. It also
prevents you from passing insecure data to secure methods. These
additional warnings are provided by the new Non-safe string is
passed to a safe method inspection. For this inspection to work,
you need to annotate strings as @Untainted (“safe”) or
@Tainted (“unsafe”). These annotations will become valid when
you add the org.checkerframework.checker.tainting.qual
dependency.
* **Other new Java inspections** - Added two inspections that can
help you to simplify your code. The first one suggests that you
replace collect(toList()) with .toList(). You can use it with Java
versions 16 and up. Another inspection prompts you to replace
collection.addAll(List.of("x")) with collection.add(x), and
map.putAll(Map.of("a", "b")) with map.put("a", "b").
* **Improved refactorings:**
* When you introduce a local variable in Java, the settings that
are applicable to it no longer appear in a pop-up, which used to
cover the code you were writing. Instead, you can access these
options by clicking the gear icon next to a variable or by using
the ⌥⇧O shortcut on macOS or Alt+Shift+O on Windows.
* Improved the Introduce parameter refactoring. When you invoke
this refactoring, with ⌥⌘P on macOS or Ctrl+Alt+P on Windows
and Linux, the IDE asks where you want to replace occurrences.
After you make this selection, a gear icon will appear, and
clicking on it will allow you to configure more settings for the
refactoring.
* **Customizable classpath in Run/Debug Configurations** -
Sometimes you may need to define custom classpaths in the
Run/Debug Configurations dialog on a per-config basis. Starting
from this version, it is possible to do so by selecting Modify
options | Modify classpath.
* **Kotlin**
* **Extract constant refactoring** - Introduced a new refactoring
that lets you extract constants in Kotlin. To use it, put the
caret on a string and press ⌥⌘C on macOS or Ctrl+Alt+C on
Windows and Linux.
* **Improved Possibly blocking call in non-blocking context
inspection** - The Possibly blocking call in non-blocking context
inspection warns you if you use a coroutine in the wrong context.
In this release, the inspection works not only as a warning but
also as a context-dependent quick-fix. This inspection now covers
more cases, and you can customize it, so it works better in your
particular environment.
* **Inline hints for ranges** - Sometimes it can be difficult to
understand the various ways to declare the ranges that Kotlin
supports. To make it a little easier, inline hints have been added
that explain with plain mathematical signs what the words or
symbols in the ranges mean. If you don’t need this feature, you
can easily disable it by right-clicking on a hint and selecting
Disable ‘Ranges’ hints type.
* **Better New Project wizard** - Reworked the layout of the New
Project wizard by adding tooltips for all of the fields, so you
can easily understand what info they require. The templates
section has received an update as well – Some of the unpopular
templates have been removed and a new one has been added that
lets you create a Compose Web Application. The project set up
step has become much simpler. You now only need to fill in the
basic fields.
* **Scala**
* **Scala 3 support improvements:**
* Added highlighting, navigation, and autocomplete for end
markers.
* There's now autocomplete for given, using, and export keywords,
soft keywords, and the quiet syntax.
* The TASTy reader can now parse package objects, as well as
variance and bounds in higher-kinded types.
* The highlighting of lexer and parser errors is now
significantly faster.
* There are more inspections that are compatible with Scala 3.
* Improved the resolve of given imports and supported final top-
level members and abstract lazy vals.
* **An option to open Scala 3 / Scala 2 cross-compiled projects as
Scala 2** - Many projects that should be compiled for both Scala
2 and Scala 3 are modeled as Scala 3 projects cross-compiled for
Scala 2, even though technically they are Scala 2 projects.
Opening such projects as Scala 2 allows the IDE to use the correct
Scala version, and is more reliable.
* **Data flow analysis for Scala** - The Scala plugin now supports
data flow analysis, which can help you detect programming errors
more easily.
* **Autocomplete for Scala compiler options** - There are many
different options in the Scala compiler, those options vary
depending on the Scala version in use. You can now autocomplete
the applicable options and even see Quick Documentation for
each of them.
* **Inlay hints for ranges** - Added inlay hints for ranges.
* **JavaScript**
* **New inspection for updating dependencies** - This release
allows you to update your npm packages to the latest version right
from the editor. Open your package.json file, place the caret on
the package version you want to update, and then press ⌥⏎ on
macOS or Alt+Enter on Windows and Linux and select Update
‘package name’ to the latest version. A quick-fix will also be
shown when you hover over the package version.
* **Improved code completion in HTML** - Improved the way code
completion works in HTML. Whenever you type a tag name or an
abbreviation in the editor, or invoke code completion, IntelliJ
IDEA will show you relevant suggestions right away. Previously, it
would only show them if you typed < first. Additionally, code
completion for character entity references should now work better.
* **SSH**
* **Proxy support for SSH connections** - This new feature allows
you to specify an HTTP or SOCKS proxy server for your SSH
configuration in Preferences/Settings | Tools | SSH
Configurations. Under the new HTTP/SOCKS section, you can select
the proxy type, enter a hostname and a port, and apply
authentication with a username and password, if necessary. It is
also possible to sync your SSH proxy settings with the global IDE
ones. To do so, select the Use global IDE proxy settings checkbox.
* **Profiler**
* **Compare .jfr snapshots** - It is now easy to check whether the
changes you’ve made worked for your program or caused a
regression. To do so, just open two snapshots that you want to
compare in the Profiler tool window. In the most recent snapshot,
click the diff icon and select the snapshot you’ll use as the
baseline. The IDE will display the result in the form of a flame
graph, call tree, or method list.
* **Support for Async Profiler 2.0 on Windows** - Starting from
v2021.3, the Windows version supports Async Profiler 2.0 out of
the box as well. This support provides a smoother profiling
experience and also improves the way native functions are
displayed in snapshots.
* **Build tools**
* **Redesigned Maven configurations** - This release takes some
steps toward improving the Run/Debug configurations, and this
time, Maven configurations have received a significant redesign.
The key parameters are all grouped on one screen, while additional
options are available via Modify options.
* **Support for .mvn/maven.config** - If you want to configure the
Maven settings for each project in the .mvn/maven.config file, go
to Preferences/Settings | Build, Execution, Deployment | Maven and
select Use settings from .mvn/maven.config at the bottom of the
screen. Please keep in mind that the settings from this file
override the standard Maven UI settings.
* **Version control**
* **Checkout and Rebase onto Current for remote branches** - With
the Checkout and Rebase onto Current action, you can check out the
selected branch and rebase it on top of a branch that is currently
checked out. Previously, this action was available for local
branches only. Now you can use it for remote branches as well.
* **Reorganized VCS settings** - Improved the way the settings in
Preferences/Settings | Version Control are structured, and made
some of the critical configurations there more discoverable. The
Version Control node now serves as the starting point for
navigation, with links to all the available settings. If you go to
the Git node from there, you’ll notice that all the settings
have been divided into sections that account for the most
important processes: Commit, Push, and Update. The parameters
inside these sections are now organized more logically. A separate
node for Directory mappings has been added, and the background
operations are now switched on by default. The Background node no
longer exists.
* **New Changes tool window** - Starting from this release, your
IDE shows the difference between commits in a separate Changes
tool window located to the left of the editor.
* **New Push All up to Here action** - Added a new action that
allows you to push only the commits you are confident about and
leave the rest for later. It allows you to push commits up to
the one you have selected in the Log tab of the Git tool window.
To use it, pick the commit you want to stop at, right-click on
it to call the context menu, and select the new Push All up to
Here action.
* **Align Changes Highlighting** - Added the new Align Changes
Highlighting option to the Diff screen settings that can be found
under the gear icon. This feature makes the Diff easier to read,
especially when there are complex modifications, because it
aligns the unchanged lines so that they are displayed next to
each other. This helps you see the code that has been added or
removed more clearly.
* **Terminal**
* **ConPTY support on Windows** - Added support for the new ConPTY
API on Windows. It addresses several issues users were having with
the old implementation, which was based on winpty, and adds
support for 24-bit colors in the terminal.
* **Typeahead support** - The newly added typeahead support in the
IntelliJ IDEA terminal predicts text modifications and instantly
displays them in light grey. This feature allows you to type in
the terminal equally fast on both a local or remote machine.
* **Debugger**
* **Evaluate expressions from the debugger** - Improved the
discoverability of the Evaluate feature. Previously, when users
needed to evaluate something, many of them resorted to using
watches. They just created a watch and then removed it, instead of
using the Evaluate dialog. The Evaluate field is now accessible
right in the Debug tool window, making the most convenient way to
evaluate expressions more obvious.
* **Frameworks & Technologies**
* **gRPC requests in the HTTP client** - IntelliJ IDEA’s HTTP
client provides basic support for gRPC requests. When you type the
GRPC keyword to start your request, the HTTP client offers code
completion. Your IDE prompts you about all known gRPC services,
unary and server-streaming methods of a particular server, and,
most importantly, fields of the request body. Another new feature
allows you to generate a gRPC request in the HTTP client. To do
so, just click on the gutter icons in your .proto files.
* **Binary responses in the HTTP client** - The HTTP client can now
detect images in responses and display previews of them in the
response console.
* **Support for text streams and JSON streams in the HTTP Client**
- When testing streaming applications in IntelliJ IDEA, you no
longer need to wait for a stream to end because the HTTP client
will display the output on the fly. This is now possible because
support has been added for the following content types: text/event-
stream, application/stream+JSON, and application/x-ndjson. You
will also be notified when a stream ends.
* **Output redirection to custom file or directory in the HTTP
client** - In the HTTP client, it is now possible to redirect
output to a custom file or directory. You can use two operators
for forced and soft redirects:
* The >> operator always creates a new file, adding an -n suffix
to the file name if the requested file name already exists.
* The >>! operator rewrites the file if it already exists.
* **Support for HTTP request identifiers** - You can now add
request identifiers either as comments via @name or as text in the
first separator (###). The IDE understands these identifiers and
allows you to invoke requests by them from the Services tool
window, as well as from the Run Configuration, Run Anything, and
Search Everywhere dialogs.
* **Qute template language support** - Qute is now among the
supported template languages. This means that IntelliJ IDEA
provides code highlighting, autocompletion, and other useful
features to help you develop templates for your Quarkus project.
* **References resolve and completion from secondary specification
files** - IntelliJ IDEA can now detect when your OpenAPI
specifications are located in several files and linked via $ref,
and it will provide completion.
* **New Blocking and Non-Blocking annotations for reactive code**
- 2 additions have been made to the JetBrains annotation
collection. Once you add 'org.jetbrains:annotations:23.0.0' to
your project dependencies, you can annotate your classes and
methods as @Blocking or @NonBlocking. This will make it
possible for the IDE to detect blocking calls in non-blocking
contexts, such as Kotlin coroutines or reactive code with
Project Reactor, RxJava, and SmallRye Mutiny. The IDE now
automatically supports the corresponding annotations from
Micronaut and SmallRye Mutiny as well.
* **Improved blocking code detection in Spring and Java EE** -
IntelliJ IDEA now detects more cases of blocking code in Spring
and Java EE, including Spring Data’s JpaRepository and
CrudRepository, RestTemplate and JdbcTemplate, Spring Feign
interface methods, JPA EntityManager calls, and any methods and
classes annotated as @Transactional.
* **Revamped Spring Boot Configurations** - Reworked the Run/Debug
Configurations dialog for Spring Boot projects. The design is
similar to previously updated configurations for Java. The new
interface presents the key settings on one screen and allows you
to configure more parameters via Modify Options.
* **Improved support for Spring Boot application files** - IntelliJ
IDEA now provides code completion in additional configuration
files (properties or .yaml files) when a spring.config.import key
is used to reference another file. It is also better at setting up
complex and custom Spring Boot configuration files.
* **References to application.yaml** - For Spring Boot projects,
the IDE now supports code completion and find usages for
references to application.yaml from @Value, @Scheduled, and
Environment.getProperty().
* **Better support for @NamedQuery used from Spring Data
repositories** - Query method completion now works for queries
declared as @NamedQuery in Spring Data JPA projects. You can also
navigate to the definition of a @NamedQuery via the gutter icon.
* **Kotlin support for Java EE CDI** - Starting from v2021.3, you
can use all CDI inspections in Kotlin files. Previously these
inspections only worked in Java files. CDI gutter icons have been
added in Kotlin files. They allow you to navigate easily to
injection points or injection candidates, bean makers, disposer
methods, and events.
* **Improved UML class diagrams** - Improved the speed of all the
processes for UML class diagrams, both in Java and Kotlin. Diagram
opening, switching between categories, zoom, and the undo/redo
functionality now all take much less time. Other notable changes
include a new grid, member highlighting, and a quick documentation
preview pop-up. If you need to control the appearance of the
diagram, use the context menu and select Appearance.
* **Database tools**
* **Data editor aggregates** - Added the ability to display an
Aggregate view for a range of cells. This will help you manage
your data and spare you from having to write additional queries.
This makes the data editor more powerful and easier to use,
bringing it a step closer to Microsoft Excel and Google
Spreadsheets. Select the cell range you want to see the view for,
then right-click and select Show Aggregate View.
* **Mapping the DDL data source and the real one** - This release
is a logical continuation of the previous one, which introduced
the ability to generate a DDL data source based on a real one.
Now, this workflow is fully supported. You can:
* Generate a DDL data source from a real one.
* Use the DDL data source to map the real one.
* Compare and synchronize them in both directions.
* Just as a reminder, a DDL data source is a virtual data source
whose schema is based on a set of SQL scripts. Storing these
files in the Version Control System is a way to keep your
database under the VCS.
* There is a new tab in the data configuration properties, DDL
mappings, where you can define which real data source is mapped
to each DDL data source.
* **New database diff window** - The new Database Diff window is
available from the context menu.
* It has a better UI and clearly shows in the right-hand pane what
result you’ll get after you perform the synchronization. The
legend in the right-hand pane shows what the colors mean for
your potential result:
* Green and italic: object will be created.
* Grey: object will be deleted.
* Blue: object will be changed.
* The Script preview tab shows the result script, which can be
either opened in the new console or run from this dialog. The
result of this script is applying changes to make the
database on the right (target) a copy of the database on the
left (source).
* Besides the Script preview tab, there are two more tabs on the
bottom pane: Object Properties Diff and DDL Diff. They display
the difference between the particular versions of the object in
the origin and in the target databases.
* **Introspection:**
* **Introspection levels (Oracle)** - Introduced three levels of
introspection for Oracle databases:
* Level 1: Names of all supported objects and their signatures,
excluding names of index columns and private package variables
* Level 2: Everything except source code
* Level 3: Everything
* Introspection is fastest on level 1 and slowest on level 3. Use
the context menu to switch the introspection level as
appropriate.
* The introspection level can be set either for a schema or for
the whole database. Schemas inherit their introspection level
from the database, but it also can be set independently.
* The introspection level is represented by the pill-looking icons
located next to the data source icon. The more the pill is
filled, the higher the level. A blue icon means that the
introspection level is set directly, while a grey one means that
it is inherited.
* **QA tools**
* **Editing Selenium page objects** - Added support for UI test
automation in Selenium – the visual editor can now help you to
maintain existing page object classes. Previously, it was only
possible to generate new page object classes, but now you are even
able to update the existing page object classes directly without a
visual editor. IntelliJ IDEA will detect page object classes
automatically and indicate them with a corresponding icon on the
gutter panel. By clicking on that gutter panel, the user can open
a visual editor and grab new elements to be added to the page
object class.
* **Test Data** - In the newest plugin from the Test Automation
Kit, you can now modify the prefix, suffix, and delimiter with a
multiline definition in multiple data generator settings.
* **Test Management:**
* **Test Run Hierarchy** - Added support for multilevel test
runs. You can now create multiple child test runs for specific
functionality domains or types of testing. Each parent test run
aggregates the results of the child test runs and provides
summary statistics from all sub-related test runs.
* **Shared steps** - If you choose to manage test cases in
Markdown files using the “Local TMS” feature, you will be
able to easily declare test steps and share them among multiple
test cases. Shared steps are declared as a regular Test Case
with a unique numeric ID. You can refer to that test case in
other test cases and IntelliJ IDEA will substitute those
referenced test case steps when generating previews, test runs,
or code templates for an automatic test.
* **Kubernetes**
* **Improved formatting for Helm templates** - You can now format
your Helm templates and be sure of the correct result. All the
related issues have been fixed, and the formatting is now much
more reliable. To see the improvement, go to Code | Reformat code
or Reformat file or press ⌥⌘L on macOS or Ctrl+Alt+L on
Windows and Linux.
* **Highlighting of block elements in Helm templates** - Added
highlighting of such block elements as if, else, range, with, and
define in Helm templates. This makes it a lot easier to work with
code that contains Go templates inclusions.
* **Language injection in ConfigMap resources** - IntelliJ IDEA now
supports automatic code injections of various languages in
ConfigMap resources for keys with extensions like .yaml, .json,
.properties, and so on. The injected pieces of code are
highlighted in green, and it is possible to use the code insight
functionality inside them, including code completion, error
highlighting, and others.
* **Ability to repeat the latest command** - It is now possible to
rerun your latest helm command from the Services tool window. All
you have to do is click the new icon in the top right-hand corner.
* **Docker**
* **Connection to Docker from Minikube** - It is now easy to
connect to a Docker daemon from Minikube. In Preferences/ Settings
| Build, Execution, Deployment, select the Minikube radio button.
In the field next to it, the IDE will automatically display the
detected Minikube's docker-daemon environments that you can use
for connecting.
* **Easier connection process** - Connecting to Docker has become
faster because you can simply double-click on the necessary node
or use the new shortcut – ⌘Enter on macOS or Ctrl+Enter on
Windows and Linux. The Start container action can also be invoked
with this shortcut.
* **New Clean up action** - The new Clean up action works just like
the prune terminal command. When you right-click on the Networks,
Volumes, Containers, or Images node, you can select Clean up, and
the IDE will delete the unused objects. You can also apply this
action to the Docker root node to prune all the unnecessary
objects in one click.
* **Support for Compose V2** - IntelliJ IDEA now supports Compose
V2, which allows you to run Docker Compose commands as docker
compose, instead of docker-compose (with a dash). To activate this
option, go to Preferences/Settings | Build, Execution, Deployment
| Docker | Tools and tick the Use Compose V2 checkbox.
* **Image layers** - Image layers allow you to track all the
commands that are applied to images. To access them, select an
image and go to the Layers tab. From there, when you choose a
command, you can click on the Analyze image for more information
link on the right-hand side of the screen for more detailed info
about the changes applied to each layer.
* **Save container as image** - If you have a preconfigured
container that you want to use later, you can save it as an image
locally and push it to continue using it remotely when you need
it. Go to the Services tool window, right-click on the container,
and select Image | Save as a new Image.
* **Registry updates** - Added several changes to the Docker
registry:
* The IDE now displays all available registries in separate nodes
in the Services tool window.
* Previously there was only support for the Docker Hub
registry. In v2021.3, support for GitLab
(registry.gitlab.com) and JetBrains Space
(<username>.registry.jetbrains.space) has been added.
* You can expand the registry nodes in the Services tool window,
select the necessary image, and pull it to the desired location.
If you have several Docker connections, the IDE will ask you
where to pull the image.
* It is now possible to push images to any added registry, and in
the Push dialog the IDE automatically detects the available
namespaces in the given registry and lets you select one from
the drop-down list.
* You can now use image completion for images from the JetBrains
Space, GitLab, and Docker Hub registries.
* **Podman support** - IntelliJ IDEA now supports Podman as an
alternative way to manage pods, containers, and images. Before
using Podman in the IDE, configure a connection yourself. Once
Podman has been installed and configured on your OS, you can
connect to it via Preferences/Settings | Build, Execution,
Deployment | Docker by selecting the TCP socket radio button and
filling in the required fields.
* **Space integration**
* **Create merge requests and create code reviews from the IDE** -
You can now create merge requests and code reviews for your
projects in Space. You have 2 different options:
* Click the + icon on the top toolbar of the Code Reviews tool
window and select the desired action.
* In the Log tab of the Git tool window, right-click the commit
in the list and choose Space | Create merge request or Create
code review.
* **Mark files as viewed** - All the files that you haven’t yet
revised when performing a code review will remain marked with blue
dots until you open them. This way, you won’t miss any critical
changes. If you want to return to the changes later, you can
select Mark as Not Viewed from the context menu. This feature also
works for GitHub pull requests.
* **Other**
* IntelliJ IDEA now supports Android Studio Arctic Fox, 2020.3.1.
* Added support for Groovy 4, including full-fledged code insight,
functioning inspections, and intention actions. Additional
features, such as switch expressions and sealed types, are
supported as well.
### Updates in 2021.2
#### Features
* **Key updates**
* **Project-wide analysis for Java projects** - Added a new
feature for tracking errors throughout the whole project before
compilation - project-wide analysis. The IDE will display all
the found errors, including those that are detected only by
scanning the whole project. The feature works with small and medium-
size projects.
* **Actions on save** - Added a number of actions that will be
initiated by saving the project, including reformatting code and
optimizing imports.
* **New UI for managing Maven and Gradle dependencies:**
* Added Package Search, a powerful new interface to manage your
project dependencies. With Package Search, you can find new
dependencies, easily add them, and manage existing ones. The new
plugin will show you information about each dependency,
including whether any updates are available.
* Added an inspection that lets you apply available updates
directly in the editor.
* **Editor**
* **Updated inspections and quick-fix descriptions** - The
inspections and quick fixes are not just helpful for coding but
also described in detail. The updated descriptions explain what
changes the inspections suggest and the reasoning behind them.
Some inspections come with usage examples.
* **Diagrams structure view** - Diagrams have been made more
informative - they now come with the Structure view containing a
map of your diagram with a small preview of the selected block and
its neighbors. The new Structure view supports scaling, canvas
moving, magnifier mode, layout change and exporting to an image.
* **Multiple copyright years** - Your project’s copyright notice
can now include both the project creation year and the current
version year.
* **Improved Markdown support:**
* It is now possible to convert .md files from/to different
formats (.html, .docx, .pdf).
* You can change the size of an image, add a description and drag
and drop images instead of writing an HTML tag with a file path.
* Added a new lightweight toolbar, which has all the most popular
actions and will only appear on selection so as not to distract
you from important tasks.
* **User Experience**
* **Quick access to Eclipse projects** - IntelliJ IDEA can now
detect Eclipse projects stored locally on your machine and it
allows you to open them from the Welcome screen.
* **Advanced Settings** - If you need to configure some use case
specific options, you can do it in the new Advanced Settings node.
* **Organize tool windows by drag and drop** - It is now easier to
drag and drop a tool window to the desired place within the main
IDE window or in a separate window. You can drag it by clicking
and holding the tool window name bar and drop it in any
highlighted place.
* **Automatic cache and logs cleanup** - IntelliJ IDEA
automatically cleans up any cache and log directories that were
last updated more than 180 days ago. This process doesn’t affect
system settings and plugin directories. You can initiate the
process manually via Help | Delete Leftover IDE Directories.
* **Missing plugin notifications** - If your project uses a
framework that works in IntelliJ IDEA via a plugin, the IDE will
notify you and offer to enable it directly from this notification.
* **New navigation option in Preferences/Settings** - Simplified
navigation in Preferences/Settings by adding arrows to the top right-
hand corner of the window. They allow you to quickly jump back and
forth between the sections you’ve opened.
* **Update notifications from the Toolbox App** - When any product
updates appear in the Toolbox App, your IDE will now inform you.
If there is a new version available for download, you’ll be able
to upgrade to it right from IntelliJ IDEA. Toolbox App 1.20.8804
or later is required to use this feature.
* **Quick access to Power Save mode** - Added a Power Save mode to
help you extend the battery life on your laptop. To make this mode
easier to access, you can manage it from the status bar.
* **Accessibility updates** - Added a number of helpful updates for
coding with the enabled screen reader mode on Apple macOS.
Available suggestions for code completion, the content of the
selected combo box and combo box lists and the results of your
queries in Search Everywhere have been voiced.
* **Improved UI responsiveness** - Managed to avoid UI blocks when
using context menus, popups and toolbars. Moved certain operations
that require indices off the UI thread, which should help prevent
freezes in other situations.
* **Java**
* **Visibility-based color settings** - It is now easier to
distinguish between public, protected, and private Java members
(methods, fields, and classes) as you can configure the color
settings for them in Preferences/Settings | Editor | Color Scheme
by unfolding the Visibility node.
* **New JavaFX project wizard** - Configuring a new JavaFX project
just got easier. In just two steps, you can add a project SDK,
language, desired build system, test framework and one or several
frequently used libraries, which come with short descriptions.
* **New Inspections** - Added a range of new inspections to address
particular use cases in Data Flow Analysis. The new Write-only
object inspection warns you when you modify an object but never
query it for some custom classes defined in your project and the
standard library.
* **Kotlin**
* **Automatic ML-completion** - Starting from this release, Kotlin
code completion works based on the machine learning mechanism by
default. Code suggestions are prioritized more carefully as the
IDE relies on the choices of thousands of real users in similar
situations.
* **Run tests before code analysis finishes** - Previously you had
to wait for code analysis to finish before you could start running
your tests. In the current version, you can launch tests
immediately after opening the file by clicking the Run test icon
in the gutter.
* **Debugger updates** - Introduced some useful improvements and
updates to the coroutine agent in the debugger. The coroutines
agent is now available via the Coroutines tab in the Debug tool
window. It works for Java run configurations with a dependency on
kotlinx.coroutines and Spring and Maven run configurations.
* **More room for action when indexing** - While the IDE is
indexing a project you can now run and debug your application.
The buttons associated with Run/Debug Configuration are active
when indexing.
* **Kotlin support for Microsoft Windows Subsystem for Linux (WSL) 2
and Run Targets** - In IntelliJ IDEA 2021.1, WSL 2 support and
the Run Targets feature was introduced. In this release, you can
use these features for Kotlin.
* **Inspection to simplify call chain on collection type** - In
this release, a useful inspection that helps you simplify the
syntax and combine several calls into one when calling methods in
a chain inside a collection has been added.
* **Intention action for buildString conversion** - In previous
versions, you manually typed buildString to customize your code.
The new intention action allows you to apply it automatically in
just two clicks.
* **Scala**
* **Better Scala 3 support:**
* Indexing is now fast, precise and version-agnostic.
* You can now create both sbt and .idea-based Scala 3 projects, as
well as Scala 3 SDKs, normally.
* The editor can handle significant indentation better.
* Added support for Scala 3 constructs in Scala 2 projects (-
Xsource:3).
* There are improvements in the debugger, formatter, REPL, auto-
import, enums, extension methods and many others.
* **Compiler-based highlighting** - Added the ability to use the
Scala compiler for error highlighting. Please note that, even
though the compiler-based approach is more precise, it is slower,
requires more resources, and doesn't support features such as type
diffs, quick-fixes, and inspections. So unless there are lots of
false errors in the code, the built-in error highlighting is
recommended.
* **JavaScript**
* **Reload pages in browser on save** - You can now automatically
update the pages in a browser as you edit and save your HTML, CSS
and JavaScript files. All browsers are supported.
* **Rename refactoring for React useState hooks** - You will
no longer need to waste time on refactoring useState values
and functions one by one – IntelliJ IDEA can now rename
both for you.
* **Auto-import for require()** - The IDE can now add missing
import statements as you complete CommonJS modules – required
imports will be inserted on code completion.
* **Profiler**
* **Support for Async profiler on Microsoft Windows and Apple M1**
- IntelliJ IDEA now fully supports the profiler on Windows and
Apple M1, in addition to Linux and non-M1 macOS, which means you
can now use it in most environments.
* **Support for Async profiler 2.0** - IntelliJ IDEA now has
support for Async Profiler 2.0. It works via the new Async
Profiler configuration, combining the power of the CPU and
Allocation profilers.
* **Support for a sunburst diagram** - In IntelliJ IDEA 2021.2,
when you double-click an item on the Classes tab, the Retained
Objects tab shows data for the selected item in the form of a
sunburst diagram. If you are more used to analyzing data displayed
in a tree, you can now find it in the Dominator Tree tab.
* **Build tools**
* **JLink artifacts** - If you want to create a custom JDK that
contains only the modules and dependencies you need when working
on a Jigsaw project, you can add new JLink artifacts to your
project in the Project structure window.
* **Redesigned Gradle configurations** - Reworked the UI of the
Gradle Run/Debug Configurations. The basic parameters are now
conveniently grouped in one screen. You can add more options based
on your needs.
* **Faster indexing for projects in WSL 2** - For project files
stored in WSL 2, you use a daemon that transfers the content of
the files between Linux and Windows via a socket. This allows you
to increase the indexing speed, as it depends on how fast the IDE
reads the file content. Depending on the language you use, the
speed increase may vary.
* **Ant support in WSL 2** - It is now possible to execute Ant
tasks in WSL 2.
* **Version control**
* **Changes to pre-commit checks:**
* Expanded the list of possible pre-commit actions with the
ability to execute tests. When you tick the Run Tests checkbox
in the Before Commit section, your IDE will test the applied
changes and notify you if anything goes wrong.
* Added the ability to customize the Analyze code and Cleanup
options by clicking Choose profile next to them.
* The progress and results of all the pre-commit checks appear
in the Commit area, without disturbing you with additional
modal windows.
* **GPG signature** - This release offers a way to secure your
commits by enabling Git commit signing with GPG.
* **Changes instead of Default Changelists in new projects** - You
no longer need to use Default changelists as the name for the node
that stores uncommitted changes in new projects. Starting from
version 2021.2, it is called Changes. Additionally, Git operations
will no longer trigger automatic creation of changelists.
* **Unified Show Diff** - IntelliJ IDEA displays the difference
between the initial and changed files in the editor by default, no
matter where you’ve invoked the Show Diff action. If tracking
changes in a separate window is more convenient to you, just drag
the desired file from the editor.
* **Text search in Local History revisions** - You can quickly find
the necessary text in the Local History revisions by typing the
query in the search field in the Local History dialog.
* **Terminal**
* **New Terminal options** - The in-built terminal now allows you
to select the cursor shape. It also offers support for Use
Option as Meta key, which lets the Option ⌥ key on the
keyboard act as a meta modifier that can be used in combination
with other keys. For example, you can use the following
shortcuts:
* ⌥+F – go to the next word.
* ⌥+B – go back a word.
* ⌥+D – delete the next word.
* **Debugger**
* **Preview Tab now works in Debugger** - Previously when you
stopped at a breakpoint, stepped through the code, navigated
between frames or used the "prev/next frame" actions, the IDE
opened the files in multiple tabs. In this release, you can enable
the preview tab feature for Debugger in Settings/Preferences |
General | Editor Tabs. If it is on, these files will open
successively in one tab.
* **Frameworks & Technologies**
* **Microservices diagram** - IntelliJ IDEA lets you display
microservice interactions in a diagram, which you can build by
clicking the respective icon in the Endpoints tools window. This
new diagram offers the option to track which client calls a
particular service and navigate to this call in your code. The
diagram is available in Java and Kotlin projects if you use
Spring, Micronaut, Quarkus or Helidon.
* **Automatic migration from Java EE to Jakarta EE** - The new
Migrate... refactoring helps you quickly and painlessly migrate a
project or module from Java EE to Jakarta EE. After you initiate
it, the Refactoring Preview shows all the found usages of Java EE
imports. You can then check through and finalize the process.
* **Automatic download of shared indexes for new Spring Boot
projects** - When you create a new Spring Initializer project,
the IDE will download shared indexes automatically, reducing
indexing time and speeding up IDE startup.
* **Support for JPA Entity Graph** - Added support for an Entity
Graph which you can define with the @NamedEntityGraph annotation.
Your IDE allows you to specify a unique name and the attributes
(@NamedAttributeNode) for this annotation using code completion,
error detection and navigation to the related entity by clicking
on an attribute.
* **Support for cache annotations in Micronaut and Quarkus** -
Cache annotations for Micronaut and Quarkus are now supported in
the IDE. Added gutter navigation between cache name usages, as
well as the ability to use Find usages and the Rename refactoring
for cache identifiers.
* **Better microservice navigation support in JavaScript and
TypeScript** - URL navigation in JavaScript and TypeScript has
been significantly improved. For client-side code (for Angular or
Axios), URL references have been added for the $http service and
HttpClient request method calls and URL completion works based on
available server-side frameworks and OpenAPI specifications. For
server-side, Express users can see Route handlers in the Endpoints
tool window and search for Express route declarations via Navigate
| URL Mapping.
* **gRPC endpoints displayed in the Endpoints tool window** - Added
support for yet another framework – gRPC. For now, it is
possible to see the gRPC endpoints in the Endpoints tool window.
* **Ktor integration** - Ktor, a web application framework for
creating connected systems, is bundled with IntelliJ IDEA
Ultimate. Right from the welcome screen, you can create a new Ktor
project for developing server-side or client-side applications and
configure the basic project settings and various features
supported by Ktor.
* **Protocol Buffers plugin maintained by JetBrains** - The
Protocol Buffers plugin is now bundled with IntelliJ IDEA Ultimate
and the JetBrains team fully maintains it.
* **Docker**
* **Work with Docker via SSH** - It is now possible to connect to
Docker via SSH.
* **Services synchronization** - It is now possible to display
Docker Compose applications in the Services tool window even if
they are not running.
* **New icons for service states** - Added new icons for the
different states of your Docker Compose services. To get
accustomed to them, you can read the tooltips that appear when you
hover over each icon.
* **Improved logs** - Implemented some changes to the Docker
Compose logs. Every service node features a log and the container
logs include the option to show timestamps and previous sessions.
* **More options in Run/Debug Configurations** - Additional options
for Docker Compose are now available in Run/Debug Configurations.
You can Enable BuildKit, Enable compatibility mode and Specify
project name when you click Modify options. When you name your
project, you can call it whatever you want and it won’t inherit
its name from the folder that the Docker Compose application is
located in by default.
* **New actions for containers** - Added new buttons that allow you
to start, pause, unpause and restart your containers. In addition
to this, you can apply the actions to several containers at once.
* **Smart way to delete images** - When you delete Docker images
with dependencies, you can now specify which dependencies you want
to get rid of and which should stay.
* **New Networks and Volumes nodes** - Added two new nodes to the
Services tool window: Networks and Volumes. The first node
contains all the networks that are not related to the Docker
Compose application. The second includes all the Docker Volumes.
It is easy to delete volumes in the same way as you would images.
* **Support for version 3 of Docker Compose** - Added support for
version 3 of the Docker Compose file format. As a result, IntelliJ
IDEA now correctly validates the options available in v3 and code
completion works for them.
* **Kubernetes**
* **Support for alias in Helm chart dependencies** - You can now
use the alias field that belongs to the dependencies section in
Chart.yaml (api v2) or in requirements.yaml (api v1). This field
states an alternative name of the current dependency. You may need
to use alias if an existing dependency is used several times and
you want to distinguish between these usages. In addition, if the
chart name uses symbols not applicable in GoTemplate identifiers,
alias can also help you fix it.
* **Custom namespaces** - Sometimes when you work with a Kubernetes
cluster, you will be granted access to particular namespaces, but
you won’t receive the list of all of the cluster namespaces. In
this case, you can now specify the list of available namespaces in
Preferences / Settings | Tools | Kubernetes.
* **Favorite namespaces** - Made it easier to manage multiple
namespaces and quickly find the ones you need the most. It is now
possible to mark your favorite namespaces with a star. They will
then appear at the top of the list, while the remaining namespaces
will be sorted alphabetically.
* **Database tools**
* **DDL data source** - It is now possible to generate a DDL data
source based on a real one. The DDL files will be created on the
disk and the new data source will be based on them. That way
you’ll always be able to regenerate these files and refresh the
DDL data source.
* **Managing the popping up of Services tool window** - When a
query returns no data, there’s no need for the Services tool
window to appear if it was hidden already. You can now define
which operations make the Services tool window appear on your own.
* **Completion of fields and operators** - Code completion now
works for various types of fields and operators in the
MongoDB console.
* **QA tools**
* **Generate Test Data** - Being able to insert a random email,
name, or phone number is important when developing unit tests. As
a part of the Test Automation Kit, the new Test Data plugin brings
a lot of useful actions that can help you generate random data.
Use the Generate menu (Cmd+N) to see all available options. If you
need a specific format, you can always create your own custom data
format based on regular expression or Velocity templates. All
custom data types are available in bulk mode and can be shared
within your team.
* **Space integration**
* **Space job statuses in the Git log** - Added icons for Space job
statuses in the Log tab of the Git tool window to make it easier
to track a job’s progress by just looking at the commits list.
If you click on an icon, the IDE will open a popup with the
automation info for that job.
* **Mention teammates** - It is now more convenient to communicate
with teammates in Space code reviews, as you can mention them with
@ followed by the colleague’s name. This minor but helpful
feature works in the timeline and in code comments.
* **Branch display in code reviews** - Your IDE can now show
related branches in the selected code review. You can see the list
of branches that contain the commits made while working on the
current issue in the Details tab.
* **Collaborative development**
* **Synchronized code completion** - You can now understand the
logic behind your teammate’s actions even more precisely, as
you’ll see what code completion suggestions the person you are
following uses. This feature works when you are in Following mode
during your Code With Me session.
* **Undo your actions** - IntelliJ IDEA 2021.2 features a re-worked
undo functionality that significantly improves the collaborative
programming experience. The revamped undo logic enables both
guests and the host to reverse their individual changes in the
code. This means that upgrading to the 2021.2 version will allow
you to avoid unpleasant situations where one developer
accidentally deletes changes made by their peers. This improvement
is particularly useful in pair and mob programming scenarios.
* **Share any screen during a collaborative session** - Added
screen sharing. Participants can share an application window from
their computer screen, not just your JetBrains IDE, to help
participants collaborate better.
* **Forward ports to your pair programming peers** - Added the
ability to share specific open ports with participants via an
integrated proxy. So, if a host runs applications on a specific
port, the guests can access it via a local host on their machine.
* **Other**
* **Localized UI in Chinese, Japanese, and Korean** - Starting
with this version, you can enjoy the fully localized IntelliJ
IDEA UI in Chinese, Korean, and Japanese. Localization is
available as a non-bundled language pack plugin, which can be
easily installed in your IDE.
* **Android plugin update** - The Android plugin has been upgraded
to v4.2.0.
* **Unbundled plugins** - After analyzing how often you use several
plugins, some of them, including Resource Bundle Editor, Drools,
JSP Debugger Support, CoffeeScript, Spring Web Flow, Spring OSGI,
Arquillian, AspectJ, Guice, Helidon, Emma and EJB have been
unbundled. If you still need any of these plugins, you can install
them manually from JetBrains Marketplace.
#### Fixes
* Addressed the issues with formatting lists so that Enter, (Shift)
Tab and the Reformat action now all work properly.
* Fixed an issue when local variables were not used after passing a
suspension point and disappeared in the Variables view of the
Debugger tool window.
### Updates in 2021.1
#### Features
* **Space integration** - Integration with Space is now available out
of the box. Once you log in, you can view and clone project
repositories, review your teammates’ code and write Space
Automation scripts.
* **WSL 2 support**
* **WSL 2 support for Java projects** - 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** - Code With Me is now included out of
the box, it adds support for video and voice calls.
* **Run Targets** - You can now run, test, profile and debug your
application in Docker containers or on remote machines.
* **User experience**
* **Built-in HTML preview** - The new built-in browser preview
allows you to preview HTML files quickly. If you make any changes
in HTML or if you change the linked CSS and JavaScript files, the
preview will update on the fly.
* **Customize external dependencies in the search scope** - You can
now set External Dependencies to be either included in the scope
or excluded from it.
* **Quick access to recent projects on Microsoft Windows** -
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** - 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.
* **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**
* **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. 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.
* **Support for Git commit templates** - Added support for 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.
* **Configure a profile for pre-commit inspections** - Improved the
ability to choose a code inspection profile before committing
changes to VCS.
* **Get files from another branch** - You can now get a file from
another branch in the Compare with branch dialog.
* **Save to Shelf** - The new Save to Shelf action allows you
to copy your changes to the Shelf while keeping them in the
local changes.
* **Editor**
* **Font weight options** - You can now fine-tune the weight of
your main and bold font styles.
* **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** - Added support for JSONPath expressions
with the Goessner or Jayway syntaxes.
* **JSON Lines support** - Added 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** - Reworked the profiler UI. The Home window has
become more informative and attaching a profiler to the process is
now faster. 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
* **CPU and Memory Live Charts** - Which opens a tab with
visualization tools for tracking resource consumption.
* **Java**
* Added support for Java 16.
* **New inspections for data flow analysis** - IntelliJ IDEA can
now warn you when arrays are initialized with a negative size. It
can also recognize the Arrays.copyOf() and Collection.toArray()
methods. The IDE also 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.
* You can now simplify code syntax by swapping .filter() and
.map() calls if the filter uses the same value as produced by
the mapper. Updated the inspection that replaces StringBuffer
with StringBuilder to cover more cases.
* **Formatting for chained builder methods** - Added new formatting
options for chained builder methods help improve their
readability.
* **Kotlin**
* **Faster highlighting of code problems** - IntelliJ IDEA now
highlights code problems almost instantly, the code completion
mechanism now works quicker and the IDE’s responsiveness to
freezes has been improved.
* **Improved code completion** - The code completion mechanism in
Kotlin now offers functions that require type parameters.
* **Better code coverage** - The code coverage runner now fully
supports Kotlin in inline functions and coroutines.
* **Refactoring improvements** - 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
now evaluate get expressions in Kotlin and display them in the
Variables view. Your IDE now also allows you to jump to the source
from there.
* **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.
* **Scala**
* **Kinds in type diffs** - The type diff tooltip now
supports kinds.
* **Machine learning completion** - Added support for Scala code
completion based on machine learning.
* **Phases and units in compilation charts** - Compilation charts
can now show phases and units, so you can gain even deeper insight
into your compilation.
* **IntelliJ Platform plugin template** - The sbt-idea plugin now
makes it possible to develop IntelliJ Platform plugins using Scala
and sbt. Added a built-in Project Wizard template to make the
process even easier.
* **Build tools** - Added the ability to customize settings when
importing Maven projects.
* **Frameworks & Technologies**
* **New inspection to replace http://** - Your IDE can now
highlight http:// protocol usages and offer to change them to
https://. You can add URLs to the list of ignored URLs or disable
the inspection for the whole project or parts of it the
Preferences/Settings.
* **Improved HTTP Client** - The HTTP client has had 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** - It is now possible to
configure SSL settings in the HTTP client if you use SSL client
authentication for https:// protocols.
* **New project wizards for JVM frameworks** - Reworked the wizards
for creating Spring, Micronaut, Quarkus and MicroProfile projects.
The new UI is neater and the project creation process is more
straightforward.
* **Improved JPA support** - 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. This release also improves JPA support for
Kotlin and multi-module projects.
* **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** - UML Diagrams now
come with a new color scheme that makes them look neater and
more readable.
* **Swagger Improvements** - Swagger now supports specifications
with external file references ($ref). The Structure view for
specification files now features more nodes, including Security,
Callbacks and Examples.
* **Selenium page object generator** - Added support for an
experimental tool for detecting DOM elements of a web application.
Before using it you need to install the Selenium UI Testing
plugin. The page object generator supports Java, Kotlin and Groovy
and frameworks such as Selenium, FluentLenium, Selenide, Geb,
Atlas, and JDI Light. You can also customize the code templates of
each framework.
* **Kubernetes**
* **Quickly delete resources** - It is now possible to delete all
the cluster resources in the current context from the editor.
* **Support for Kustomize 3.7.0 components** - You can now choose
the new Kustomize 3.7.0 components in the Kustomize version drop-
down list in the Settings/Preference.
* **Support for kind: List** - 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 now possible to
create custom values.yaml files.
* **Docker**
* **Improved Run/Debug Configurations** - The Run/Debug
Configuration dialog is now more concise and adjustable.
Added support for all the existing options for Docker
Compose. Code completion now works for Dockerfiles Run
Options and Image ID or name.
* **BuildKit support** - Added experimental support for BuildKit,
which speeds up project builds. Improved building named stages
separately from the whole multi-stage Dockerfile.
* **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** - It is now possible to stop your running
Dockerfile quickly.
* **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 now allows you to
select macros and environmental variables in the Bind mount option
in Run/Debug Configurations.
* **Images completion in Dockerfiles** - Code completion now works
for image names.
* **JavaScript**
* **Improved support for Stylelint** - Inspecting your CSS code
with Stylelint is now easier. Hover over a problem in your file or
place the caret on it and press Alt+Enter, then select Stylelint:
Fix current file. You can also now specify a path to the
configuration file under the corresponding field in
Preferences/Settings.
* **Bundled MDN documentation** - MDN documentation is now bundled
with IntelliJ IDEA which will help prevent connectivity issues
with the MDN website and make in-editor documentation in your
HTML, CSS, and JavaScript files display more quickly.
* **Selector specificity for style sheets** - When working with
style sheets, you can now check the specificity of your selectors.
* **Database tools**
* **UI for grants** - Added a UI for editing grants when modifying
objects. The Modify user window now has a UI for adding grants to
objects. These updates are available for PostgreSQL, Amazon
Redshift, Greenplum, MySQL, MariaDB, DB2, Microsoft SQL Server,
and Sybase.
* **Context live templates** - Added a solution for generating
simple statements straight from the database explorer – live
templates. You can add your own templates or edit the existing
ones in the SQL node.
* **Straightforward actions** - 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. Also added a shortcut for
the Select in database tree action: Alt+Shift+B for Windows/Linux
and Opt+Shift+B for Apple macOS.
* **Better sorting** - Improved data sorting:
* A new ORDER BY field works similar 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 (which means
IntelliJ IDEA will not rerun the query, but will sort the data
within the current page instead), uncheck Sort via ORDER BY.
* 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.
* **Easy copy-paste of data sources** - You can copy, cut, and
paste data sources using the shortcuts: Ctrl/Cmd + C/V/X.
* 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
just be moved, no password required. But the password is
required in all other cases.
* **Edit data in MongoDB** - Added a crucial feature for working
with MongoDB: starting with this version, you can edit data in
MongoDB collections. A statement preview is now also available.
* Added the ability to change the type of a field from the UI.
This can be done either from the context menu of the field or in
the value editor.
* **Other**
* **Android** - IntelliJ IDEA now supports all Android Studio
4.1.1 updates.
* **Support for bnd-maven-plugin** - You can now import OSGI facet
settings from the bnd-maven-plugin.
### Updates in 2020.3
#### Features
**User experience**
* **New Welcome screen** - The IntelliJ IDEA welcome screen has been
redesigned. The Initial wizard has been replaced with a quick-access
screen containing four tabs: Projects for managing your projects,
Customize for setting up the IDE interface, Plugins for plugin
installation, and Learn IntelliJ IDEA for access to help and
learning resources.
* **Learn IntelliJ IDEA** - Open the Learn IntelliJ IDEA page right
from the Welcome screen. You can find numerous resources to get
acquainted with your IDE. Select an interactive course from the
list, and the IDE will then open a specific learning project to
study the topic step by step in a real environment. Follow the
instructions in the Learn view to test your new skills on actual
coding samples.
* **IDE theme synced with OS settings** - IntelliJ IDEA can now
synchronize its theme with your OS theme.
* **Reader mode** - Read-only files and files from external libraries
are now opened by default in Reader mode. In this mode, comments
look like formatted text and font ligatures are enabled to help make
the code more readable to users.
* **LightEdit improvements** - This release has improved the UX for
LightEdit mode. To open files in LightEdit mode from the command
line, you now type -e (--edit) followed by the name of the file you
want to open, or omit the filename to reopen your previous session.
A new status bar in the LightEdit window provides access to the full
set of IDE features.
* **Better spelling and grammar checkers** - Now when you press
Alt+Enter, the IDE invokes suggestions to correct your grammar or
spelling. This release has also started using a new version of the
LanguageTool grammar checking engine, which improves text reviews in
English and adds support for 10+ more languages.
* **Search Everywhere updates** - Added a new Git tab to the Search
Everywhere dialog. You can now find commit hashes and messages,
tags, and branches in the Search Everywhere dialog. You can also
perform simple mathematical calculations in the search field.
* **Preview tab** - You can now open a file in a preview tab with a
single click. When you open a file in a preview tab, its name is
displayed in italic. If you start editing this file, it will cease
to be a preview and will become an ordinary file. If you single-
click another file to open it in preview mode, it will appear in the
same tab, replacing the previously opened one.
* **Linux emoji picker** - Added an emoji picker for Linux. To open
the emoji picker, press Ctrl+Alt+;. You can filter emojis by
category, change their skin tone, and search for emoji by name. The
emoji picker fully supports keyboard navigation.
* **Update JDK from inside the IDE** - Starting from v2020.3, it is
possible to migrate to the latest JDK from a popup that appears
whenever an update is available. You can choose whether you want to
install it or skip it.
**Editor**
* **New Extract method layout** - This release has made it easier to
extract Java methods.
* **More intuitive access to Rename settings** - With the new Rename
preferences that appear in an inlay hint, it is now possible to
select whether you want to rename occurrences in comments and string
literals or in printable text.
* **Drag and drop tabs** - If you want to have several tabs open
while working on a project, you can now drag and drop file tabs to
split the editor either horizontally or vertically. This release
also introduced the Open in Right Split action that splits the
editor vertically upon opening your file. Invoke the action from the
Project view or other navigation popups, such as Recent Files,
Search Everywhere, and Navbar.
* **Pinned tabs improvements** - In v2020.3 the new pin icon is shown
for pinned tabs. When you click on it, you unpin the file. You can
also pin and unpin your tabs by dragging and dropping them over
other pinned or unpinned files. If you tend to open a lot of tabs,
you can keep all your pinned tabs in one row.
* **Improved Markdown editing and preview** - The Markdown tool now
has a better preview UI and improved UX. You can customize Markdown
format in the settings. The Auto-Scroll Preview button in the top-
right corner of the editor allows you to sync scrolling of the
preview pane and the editor. This release also added support for
Mermaid.js.
* **Setting IntelliJ IDEA as the default application for opening
files** - Now you can set IntelliJ IDEA as a default application to
open files.
* **Multiple files per template** - In
Preferences/Settings|Editor|File and Code Templates, it is now
possible to add a template that creates several files.
**Debugger**
* **Interactive hints** - When your application is running in debug
mode, you can click on variables to get inline hints that contain
related fields that you can change the values of. Click Create
Renderer inside this new inline hint to open a dialog where you
will be able to configure the display of inline values in all
debugger views.
* **Inline watches** - Added a new type of watch expressions which
will be associated with a particular context and shown right inside
the editor. You can manage your inline watches in a new Inline
Watches node in the Variables tab of the Debug tool window.
* **Basic memory profiling in Java debugger** - Basic profiling
options are now available while the debugger is running.
* **Better debugging for Gradle** - Now only one tab opens per
debugging session for a Gradle task. It contains Frames and
Variables, as well as the Console output. Debugger controls now work
correctly.
**Profiler**
* **Updated Profiler tool window** - In the redesigned Profiler tool
window, you can attach the profiler to a running application. In the
list of all running Java processes, press Enter to invoke Attach
Profiler to a Process and select which integrated tool you want to
use. In the Recent Snapshot area, you can quickly access any
previously created snapshots.
* **Flame graph search** - The flame graph search is now more user-
friendly, featuring a visible search field, up/down arrows for fast
navigation, a filter that allows you to search in the whole flame
graph, or just in a specific subtree.
* **Easy access to .jfr and .hprof** - There is no more need for
working around opening .jfr and .hprof files. To open any file of
these types quickly, drag and drop it in the editor, open it with
File|Open, or double-click it in the Project view.
**Version control**
* **Git stage support** - You can now stage changes directly from
your IDE. You can also stage changes right from the gutter or in the
Diff view.
* **Rearranged VCS menu** - The VCS menu is now named according to
the version control system that you are currently using. This
release has made the menu more concise, removing all but the most
useful actions for versioning your project.
* **Improved branches** - When you create new branches, the IDE
automatically corrects unaccepted symbols in branch names. This
release has reworked the context menu for the current branch to show
the related actions. For remote branches, this release has renamed
the Merge into Current and Rebase Current onto Selected actions as
Pull into Current Using Merge and Pull into Current Using Rebase.
**Run Configurations**
* **Updated Run/Debug configurations** - Rearranged Run/Debug
Configurations to make it neater, with the most frequently used
settings now located in one screen.
* **Store and share run/debug configuration templates** - In IntelliJ
IDEA 2020.3, you can store run configuration templates as XML files
and then share them with teammates via Git or another VCS.
**Collaborative development**
* **Code With Me EAP** - IntelliJ IDEA 2020.3 supports Code With Me
(EAP) – a new service for collaborative development and pair
programming. Code With Me enables you to share the currently
opened project in your IDE with others, and work on it together in
real-time.
**Java**
* **Conversion of records** - Added a new intention action that
allows you to convert records to classes. It can be useful when you
want to downgrade your codebase.
* **Full support for sealed classes** - This release has added
completion, code insight, and refactorings for sealed classes. When
you use the sealed modifier, you declare a class as a sealed class
that allows you to define which other classes can extend it and
which classes to prevent from being extended. The subclasses can
either be final, non-sealed, or sealed.
* **Machine Learning-based code completion** - Code completion
suggestions are now based on machine learning technology.
* **Shebang (#!) support** - If your files use a Shebang mechanism,
IntelliJ IDEA automatically identifies this and allows you to open
them correctly and use code insight. Highlighting for files with
shebang (#!) also works.
* **New Inspections** - IntelliJ IDEA 2020.3 introduced new
inspections that can help you improve your code. One of the most
important inspections is Commented out code which lets you either
delete or uncomment lines that have been commented out.
* **Better code completion** - When you create a class from scratch,
completion now offers class, interface, enum, or record after the
top-level Public declaration. If you use the String.toUpperCase or
String.toLowerCase methods, you are now prompted to use Locale.ROOT.
When you are about to call String.getBytes(), the IDE suggests using
the UTF_8 charset.
**Kotlin**
* **New types of inline refactorings** - Cross-language conversion is
now possible, meaning you can inline Kotlin elements from Java. You
can also inline-refactor the also, let, run, apply, and with scope
functions. This release also improved the inlining of lambda
expressions for the IDE to analyze their syntax more thoroughly and
format them correctly.
* **Structural search and replace** - Introduced support for
structural search and replace (SSR) actions for Kotlin. You can find
and replace code patterns, taking the syntax and semantics of the
source code into account. Filters for variables allow you to narrow
down your search.
* **New infrastructure** - The Kotlin IDE plugin release cycle is now
synced with the IntelliJ IDEA release cycle. This release has also
moved the Kotlin IDE plugin to a new repo that is combined with the
IntelliJ IDEA codebase to minimize the time it takes us to pick up
platform changes.
**Frameworks and technologies**
* **Reworked Endpoints tool window** - This release significantly
improved the Endpoints tool window. It features a more convenient
display of endpoints grouped by module with an option to make the
list more compact.
* **cURL conversion** - You can now export an HTTP request to cURL by
pressing Alt+Enter in the HTTP request editor and selecting the
Convert to cURL and copy to clipboard option.
* **Better URL completion** - URL completion is now more informative,
with framework icons, HTTP methods, and source locations of the
classes or files in which you declared the endpoint. Deprecated URLs
are displayed with strikethrough formatting.
* **URL Inlay Hints** - Added fast access to some key actions for
URLs. Click the globe icon next to the URL to access them. These
actions are currently available for the Spring MVC, WebFlux, Feign
Client, JAX-RS, Micronaut, and Retrofit frameworks.
* **Spring updates** - Added support code insight for Spring MVC
Functional Routing, RestOperations, Spring WebTestClient, and Spring
Reactive WebClient. IntelliJ IDEA also displays endpoints declared
with them. This release also added code completion and navigation
for Kotlin Spring Security projects.
* **HTTP request conversion** - If you still use HTTP requests in the
old HTTP client format, you can easily convert them by clicking
Convert request to the new format at the top of an open request.
Other ways to do it are via the context menu in the Project view or
from the HTTP request editor.
* **Swagger updates** - Improved code insight in various cases,
including when you want to reference external definitions with the
$ref keyword. This release also added Swagger Hub support for you to
get both public and private specifications from Swagger Hub and open
them in the Endpoints tool window. Another new feature is that the
Swagger UI now syncs with the Darcula theme.
* **Quarkus configurations** - Your new Quarkus project has an
automatically created run configuration, which means that you can
run and debug your application right away. If you decide to change
the settings in Edit Configurations, the Environment section will
feature only the settings applicable to Gradle or Maven, depending
on which of these you are using to build your project.
* **Code completion and @Query annotation for Micronaut Data** -
IntelliJ IDEA 2020.3 introduces completion for predefined methods
that you use when creating repository interfaces. This release also
added support for the Micronaut @Query annotation that helps when
creating customized queries. With this annotation, you can use the
JPQL language for code fragments.
**Scala**
* **Parallel Compilation** - The Scala Compile Server now compiles
independent modules in parallel. This release adjusted the default
VM options to support up to 4 compilation threads by default, which
can speed up compilation a great deal. If your machine has lots of
CPU cores and a lot of RAM, feel free to tweak the default values to
improve compilation times even further.
* **Compilation charts** - To increase the efficiency of parallel
compilation, you may want to optimize the structure of your project
modules and the VM options of the Compile Server. This release added
Compilation Charts to help you with this. Now you can tell at a
glance when there is potential for optimization.
* **Enhanced Package Prefixes** - The Scala plugin can now combine
IntelliJ IDEA’s package prefixes with Scala’s chained package
clauses and relative imports.
* **MUnit Support** - The Scala plugin already supports JUnit,
ScalaTest, uTest, and Specs2. This release has added support
for MUnit.
* **Scala 3 Improvements** - The IntelliJ Scala plugin has already
included support for the upcoming Scala 3 for quite a while. With
this release the Scala plugin now understands the new syntax for
main methods.
**JavaScript**
* **Integrated TypeScript and Problems tool windows** - Integrated
the TypeScript language service into the Problems tool window and
removed the TypeScript tool window. This release also moved the
actions previously available within the TypeScript tool window to a
dedicated widget on the status bar.
* **Create a React component from usage** - Place the caret at the
unresolved React components location, press Alt+Enter, and select
Create class/function component from the list – the IDE will
create the relevant code construct for you.
**Kubernetes**
* **Download logs** - You can now download logs to your local machine
– just click the Download Log button in the left pane of the
Services tool window.
* **Open Console and Run Shell** - Two new actions have been added to
the left pane of the Services tool window: Open Console for
connecting containers that include consoles, and Run Shell for
launching Shell for a pod container. Click the tools icon for quick
access to the Pod Shell section of the settings.
* **Load CRDs from Kubernetes** - It is now possible to automatically
load CRD schemas from an active cluster.
**Database tools**
* **SQL for MongoDB** - You can now use SQL to query MongoDB
databases. IntelliJ IDEA 2020.3 supports SELECT queries with clauses
such as JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, and
all available MongoDB functions except map, reduce, filter, and let.
* **Couchbase support and new data extractors** - The IDE now
supports the Couchbase Query service. This release also introduced
two new extractors: One-Row that allows you to copy a column to a
comma-separated string; and SQL-Insert-Multirow, which generates a
single INSERT statement with multiple new rows to be inserted.
**Other**
* The upcoming Maven 3.7.0 will feature new POMs with a simplified
structure. IntelliJ IDEA 2020.3 already includes support for them.
* The Lombok plugin is now built-in.
* IntelliJ IDEA can download shared indexes for popular Maven
libraries directly from JetBrains’ servers. If you develop plugins
with an IntelliJ Platform SDK, shared indexes will be downloaded
automatically.
* Updated the UI to look good in the upcoming Apple macOS Big Sur.
* A new keymap fully compatible with macOS system shortcuts is
available.
* Now uses Git format by default for creating patches.
### Updates in 2020.2
#### Features
**Java**
* **Java 15 support** - Although the release of Java 15 will take
place in September, IntelliJ IDEA 2020.2 is already prepared for it.
Support for the Records feature has been updated and is now in its
second preview. Also added is basic support for sealed classes and,
IntelliJ IDEA provides full support for Text Blocks.
* **Related problems inlay hint** - If you introduce errors by
changing the signature of a class, method, or field that has
external usages, the IDE will notify you with an inlay hint. Click
on the related problems inlay hint, and the IDE will open the Find
tool window with a list of all the related problems occurring in
external files.
* **Ability to create multiple Structural Search and Replace
inspections** - The IDE allows you to find and, if necessary,
replace blocks of code that match a specific pattern using
Structural Search and Replace. With IntelliJ IDEA 2020.2, you can
create multiple structural search templates as inspections. For each
SSR inspection, you can specify the severity level, add
descriptions, and enable or disable them separately.
* **Pinpointing causes of runtime exceptions** - This release
supplements exception stack trace analysis with dataflow analysis.
When you click on the stack trace, the IDE can take you to the exact
place in your code where an exception appears, and it offers a
suggestion that can help you find out why it happened.
* **Better autocompletion for Stream API methods** - IntelliJ IDEA
2020.2 works even better with the Stream API. Instead of having to
type 'stream()' and then type the right operation on the stream, you
can start typing the stream method name within the collection
itself, and IntelliJ IDEA will insert 'stream()' automatically. This
works for any stream operation.
* **Scopes for Introduce Variable** - With IntelliJ IDEA 2020.2,
the Introduce Variable refactoring can selectively replace
occurrences of a variable in an intermediate scope. You can now
choose various options for replacement, rather than being limited
to choosing only one or all occurrences. The editor highlights
which occurrences will be replaced with a new variable as you
hover over each of the choices.
* **Java live templates clean-up** - You no longer need to search for
Java-related templates because the new Java node includes all plain,
surround, other, output, and iterations groups. You won’t get lost
when searching for a live template to fit your needs. A separate
Groovy node is available as well.
**Editor**
* **Problems tool window** - This release adds the Problems tool
window, which displays the warnings and errors related to the
current file, along with descriptions of the issues. From this tool
window, you can right-click on an issue to navigate to the line of
code where the problem was encountered, and you can fix the issues
one by one with Alt+Enter.
* **Inspections widget** - The Inspections widget simplifies
searching for warnings, errors, and other issues, and lets you
easily navigate between them by pressing F2 or clicking the arrow
icons. From the Inspections widget, you can select which issues you
want to highlight: none, errors only, or all problems.
* **Intentions preview** - To experiment with the possible outcomes
of applying intention actions, you can preview their results before
you actually apply them to your code. Press Alt+Enter to call Show
Context Actions and select the intention action you need and then
press Alt+Space on Apple macOS or Ctrl+Shift+I on Windows and Linux
to display the results preview.
* **Improved Spellchecker** - The built-in spell checker has been
improved: it works much faster, filters out irrelevant suggestions,
and ranks valid suggestions based on context. Additionally, the IDE
detects the language from the first couple of paragraphs in a file
and suggests enabling the corresponding language model.
**Version Control**
* **Full GitHub pull requests support** - The details of open pull
requests are now one click away in a separate vertical tool window.
The main editor window shows the conversation, and you can add
comments directly. Pre-commit check results are displayed at the
bottom of the window. If you have permission to manage pull
requests, you can now browse, assign, manage, and merge them, view
and submit comments, and accept changes right from inside the IDE.
* **Improved Git actions dialogs** - This release revises the visual
consistency for Merge, Pull, and Rebase dialogs. It also improves
the dialogs so that they clearly identify what Git commands will be
executed, and included some missing options. It also adds --rebase
and --no-verify to the Pull and Merge dialogs, respectively.
* **Improved result display for the Compare Branches action** -
When you compare two branches in IntelliJ IDEA 2020.2, the IDE
shows their commits in one view by opening their logs in the
editor. In contrast to the VCS tool window, this view has enough
space for a full report on what commits are in each branch and
which files are affected.
* **Squash and drop local commits from the log** - You can now select
multiple commits from a local branch and squash them. In the Git
tool window, open the Log tab, select local commits, and choose
Squash Commits. If you decide to change the commit message, all the
changes in those commits will be put into one single commit together
with the updated message. In addition, you can now drop commits from
the Git log.
* **Support for Git installed in WSL2** - IntelliJ IDEA 2020.2 allows
you to use Git installed in WSL2 when you work with projects from
Linux or Microsoft Windows file systems. Once you open a project
from WSL, the IDE automatically switches to Git in WSL and lets you
use all the related features.
**Frameworks & Technologies**
* **Jakarta EE 9 support -** This release is ready for the Jakarta EE
9 release in September, and it already supports all the features
that are available for Jakarta EE, including CDI, JPA, Batch, Bean
Validation, JSF, JAX-RS, WebSocket, Servlets, JSP, JSON-P, JSON-B,
Security, and EJB and JTA specifications.
* **Java Enterprise project wizard** - If you need to create a Java
EE 8 or Jakarta EE 9 project, you can now do it using the New
Project wizard. A new Jakarta EE project is just steps away. Set
it up by selecting the Java version, build tool, extensions, and
other options.
* **Quarkus config files support: .properties and YAML** - To make it
easier for you to work with Quarkus configuration files, the IDE now
provides code completion and highlighting, and it colors unused code
gray for both .properties and YAML configuration files.
Additionally, you can jump right from the configuration files to the
configured beans and back.
* **Better Quarkus CDI support** - With the current version of the
IDE, you can use gutter navigation for injected beans and updated
inspections that work perfectly with the Quarkus simplified syntax.
Additionally, IntelliJ IDEA 2020.2 supports DefaultBean,
AlternativePriority annotations, and injection by qualifier only (no
need to use Inject).
* **Swagger UI support** - With the newly added Swagger UI
integration, it is now possible to preview your OpenAPI in a built-
in panel in the IntelliJ IDEA editor. This is a great update for
simplifying testing.
* **Swagger Diff Ultimate** - The IDE has been improved so that it
can calculate a structural diff between OpenAPI specifications.
Knowing the Swagger/OpenAPI specifics, IntelliJ IDEA 2020.2
compares JSON or YAML files based on their structure, and you can
preview the detected diff. To do so, choose Compare Open API
Specifications from the context menu or invoke this action from the
Search Everywhere dialog.
* **Project generation for Micronaut** - Added the possibility to
create new Micronaut projects directly from the wizard. Configure
the project step-by-step and start working with it in no time.
* **Message Queue support for Micronaut and Amazon SQS API** - If
your Micronaut application uses asynchronous communication via
RabbitMQ or Kafka, this update is for you. Navigate message queues
and topics using gutter icons, find usages, and name completion. You
can benefit from the same set of features for the Amazon SQS API.
* **JAX-RS and MicroProfile REST Client HTTP Requests Generation** -
For easy creation and testing of HTTP requests, IntelliJ IDEA will
automatically generate JAX-RS and MicroProfile HTTP requests and
then open them in the built-in REST Client. You can even use
intention actions to generate HTTP requests on any URL if your
project uses one of the enterprise frameworks: Spring, JAX-RS,
Retrofit, OkHttp, or Micronaut.
* **URL code completion for REST Assured tests** - Updated REST
Assured tests with code completion for URL path references and
navigation to the related resources.
* **Selenium plugin adds integration with Selenoid** - The Selenium
plugin now integrates with Selenoid and provides an easy way to run
a new test environment right from the browsers.json file. All
required browser images will be pulled automatically when the
Selenoid container starts.
**Profiler**
* **HPROF memory viewer** - Improved viewer mechanics help you
analyze the heap, pointing out parts of the code that use large
amounts of memory, and detect the causes of memory leaks. The HPROF
memory viewer displays the calculated retained sizes of objects, the
shortest paths to garbage collector roots, the dominator tree for
objects (retained objects), and incoming references.
**User Experience**
* **Faster indexing with pre-built shared indexes -** You can now
speed up indexing by downloading indexes generated on another
machine instead of building them locally. Use pre-built shared
indexes for JDKs, or generate and distribute custom shared indexes
to a target IDE build. Simply install the Shared Indexes plugin.
* **New possibilities during indexing** - While IntelliJ IDEA
2020.2 is indexing your project, you can now continue writing
code. The IDE now offers code completion suggestions for Java and
PHP during indexing.
**Terminal**
* **Option to run IDE features from the Terminal -** It is now
possible to call IDE features right from the Terminal. With IntelliJ
IDEA 2020.2, you can run highlighted commands in their corresponding
GUI using the Ctrl + Enter / Cmd + Enter shortcut.
**Build tools**
* **Maven Wrapper support -** IntelliJ IDEA 2020.2 now supports the
Maven Wrapper, which automatically installs the necessary version of
Maven into your project. If the Maven Wrapper is present and
configured, the IDE automatically uses it and imports changes when
they are required.
* **Maven versioning per project** - You can now set a Maven version
for each project instead of using the previous approach, which used
the same version of Maven for all open projects.
* **Build tool output presentation** - To provide a more consistent
user experience, this release now displays the build output of
IntelliJ IDEA’s native builder in the Build tool window instead of
in the Messages tool window.
* **Better code insight in build.gradle files** - IntelliJ IDEA
2020.2 provides project name completion and navigation for project
names in build.gradle files.
**JavaScript and TypeScript**
* **New intention actions for better productivity -** You can now
quickly convert a for loop with a numeric index into a forEach array
method. Reading documentation comments in JavaScript and TypeScript
files has also become easier, as you can now render them right in
the editor to minimize distractions.
* **Prettier as a default formatter Ultimate** - Starting with this
release, it is now easier to set Prettier as the default formatter
for tidying up your code. Just enable the On code reformat checkbox
in settings, and the IDE will use Prettier whenever you reformat
your .js, .ts, .jsx, and .tsx files. If necessary, you can add other
file types too.
* **Nuxt.js support** - Added Nuxt.js support and Vue-specific code-
style settings – great news if you work with the Vue.js framework.
**Database**
* **Separate editor for cell values -** This release introduces some
valuable tools for cases where you have a long value in a cell.
Starting with this release, you can view and edit long values in a
separate panel. The editor panel has a soft-wrap mode that can be
toggled in the right-hand toolbar.
* **New UI for boolean values** - It is now easier to observe and
edit boolean values, which are now shown as raw values instead of as
checkboxes. You can type f, t, d, n, g, or c to enter the
corresponding values of false, true, default, null, generated, and
computed. If you type anything else, you’ll get a drop-down list
with possible values.
* **DML preview in the data editor** - You can now preview a query
with your changes in the data editor. To do so, click the DML button
that becomes active if there are changes pending.
* **Google BigQuery dialect Ultimate** - Added partial support for
Google BigQuery. The IDE correctly highlights queries and offers
coding assistance for them.
**Scala**
* **Auto-import for Implicits -** While you can use View | Show
Implicit Hints to display implicits (even absent ones), importing an
implicit was never an easy task. The new Auto-import for implicits
action works exactly like Auto-import for unresolved references. The
automatic popup makes the feature more discoverable, but it’s also
possible to disable the auto-popup and invoke the Import… quick-
fix with Alt + Enter (more info).
* **Indentation-based brace handling** - Both braces are added and
removed automatically and on the fly based on code indents. In this
way, you can try significant indentation while still keeping the
braces, even in Scala 2. To take advantage of this feature, just
don't think about the braces and let the IDE do the work.
* **First-class companions** - In Scala, a companion class or
trait and the companion object have a special relationship. Now
it shows navigable gutter icons for companions. You can also
navigate to a companion by using Go To on a class, trait, or
object keyword. Companion object members can now easily be auto-
completed or auto-imported.
* **In-editor Scaladoc rendering** - Improved Scaladoc rendering in
the Quick Documentation popup - it can now properly handle
paragraphs, lists, and macros.
* **Completion Improvements** - First, you can now autocomplete both
the method’s name and its arguments in a single step, as long as
appropriate values are present in the current scope. Second, you can
now apply a "static" function to an argument using the dot notation,
which can be used in conjunction with algebraic data types (ADTs).
This functionality is a part of Hoogle Completion - the attempt to
re-imagine Hoogle in a language that doesn't use Hindley-Milner type
system (work in progress).
**Docker**
* **Run Selenoid Docker infrastructure from the browser -** The
Selenium plugin now features support for Selenoid, a powerful
implementation of Selenium - a framework that uses Docker to provide
a highly configurable fresh browser session for running tests. The
new Selenium support in IntelliJ IDEA enables you to run Selenoid,
make it connect to Docker, and run containers in one click.
* **Connect to Docker securely** - IntelliJ IDEA 2020.2 allows you
to securely connect to Docker on Microsoft Windows, as this
release adds support for TLS connections to the Docker daemon from
IntelliJ IDEA.
**Kubernetes**
* **Multiple configuration files** - You can now specify a custom
kubeconfig file in Preferences / Settings | Build, Execution,
Deployment | Kubernetes. Alternatively, click the Show Settings…
button in the Services view when selecting a Kubernetes root item.
You can also specify a custom kubeconfig file either globally or for
a current project. In other words, you can have a separate
kubeconfig file for each of your projects.
* **ConfigMap and Secret support** - Added completion for
ConfigMaps/Secrets from the current project and from the cluster.
Items from the cluster are marked in blue in the completion list.
You can now navigate from a usage of ConfigMap/Secret to the
corresponding ConfigMap/Secret resource in the project or cluster.
The same goes for ConfigMap/Secret keys.
**Other**
* IntelliJ IDEA 2020.2 includes all the changes from Android
Studio 4.0.
* IntelliJ IDEA can detect if you are using a screen-reader, and if
so, it will automatically enable the IDE’s accessibility features.
* IntelliJ IDEA 2020.2 lets you use Unicode emoji characters on Linux.
* To avoid performance and rendering issues, it now offers a new
integration with JCEF to run IntelliJ Platform plugins.
### Updates in 2020.1
#### Features
**Java**
* **Java 14 Support: Records and Pattern Matching -** IntelliJ IDEA
2020.1 adds support for Java 14 and its new features. Not only does
the IDE add full code insight support for Records, but it also
enables you to quickly create new records and generate their
constructors and components, and it warns about existing errors. You
will also discover support for Pattern Matching for the instanceof
operator including a new inspection and a quick-fix that quickly
simplifies the verbose instanceof-and-cast idioms by replacing them
with the new concise pattern variables.
* **Download the JDK from the IDE** - You no longer need to search
for the necessary JDK on the web. Starting with IntelliJ IDEA
2020.1, you can download and set up a JDK build right from the IDE
as you create and configure your project. If you open a downloaded
project, the IDE checks whether the JDK configured for this project
is already installed on your computer. If not, the IDE will prompt
you to download it.
* **New Java inspections** - With every new version of IntelliJ IDEA
extends its static code analysis capabilities. And this release
isn’t any different. Apart from a range of improvements, this
release also adds several new code inspections. They check
capitalization in the SimpleDateFormat patterns, analyze date
formatting cases, search for additional redundant method calls, and
report and suggest eliminating unnecessary escaping characters in
string literals.
**Editor**
* **LightEdit Mode -** IntelliJ IDEA 2020.1 comes with the long-
awaited LightEdit mode. You can now make quick modifications to
standalone files in a text-like editor without creating or loading
an entire project. You can open files in this new lightweight editor
from the command line, the IDE’s Welcome screen, or from your OS
system file manager.
* **In-place Rename and Change Signature** - When working on your
Java or Kotlin app in IntelliJ IDEA 2020.1, you no longer need to
use a cumbersome modal dialog to change the signature of a method or
a class. Now you can simply edit the parameters of a class or a
method, and then click the new gutter icon or press Alt+Enter to
review and apply the changes to the class / method declaration and
all of its usages.
* **In-editor Javadocs rendering** - Reading Javadocs in the editor
can be annoying because of all the tags you have to wade through,
especially when you need to interact with the reference links and
images. This is why this version adds a way to render Javadocs right
in the editor.
* **Quick type definition** - Learn the type definitions of
variables, fields, methods, and other symbols without switching
focus from your code. Place the caret at the necessary symbol and
select View | Quick Type Definition from the main menu. IntelliJ
IDEA then shows you the information in a popup, from which you can
open the source file and edit the code.
* **Improved navigation bar** - IntelliJ IDEA 2020.1 provides one
more option to simplify project navigation. You can jump to the
necessary line in a file straight away without scrolling because the
navigation bar now shows you methods in Java classes and interfaces.
* **Zen mode** - Introduced the new Zen Mode for the editor. It helps
you eliminate any distractions and focus solely on your source code.
Zen mode combines Distraction Free Mode with Full Screen Mode, so
you don’t have to enable both of them anymore.
* **Smart Grammar and Spell Checker** - IntelliJ IDEA 2020.1 comes
bundled with the Grazie plugin, which is a comprehensive grammar,
spelling, and style checking tool. Now the IDE checks more than just
your code constructs. It also helps you write clear string literals,
comments, Javadocs, commit messages, and much more in 16 natural
languages.
**Debugger**
* **Dataflow analysis assistance** - IntelliJ IDEA 2020.1 adds
dataflow analysis to the JVM debugger. It predicts code execution
before this code is actually executed. When your application stops
at a breakpoint, the IDE runs dataflow analysis based on the current
state of the program to check what is going to happen next.
* **Pin to top -** Another improvement is the ability to pin any of an
object’s fields to the top of the fields list. This is handy when
an object has so many fields that it’s difficult to locate the one
you need to investigate.
**Profiler**
* **Focus on method calls** - Support for application profiling in
IntelliJ IDEA keeps evolving. This release adds several new
features: Focus on Subtree, Focus on Call, Exclude Subtree, and
Exclude Call. With these options, you can focus more specifically on
a chosen method call and filter out the unnecessary ones.
* **Collapse recursive calls** - The profiler in IntelliJ IDEA now
detects recursive calls when the same method is called higher up in
the stack. The IDE allows you to bypass recursion by taking these
calls out of the subtree, which lets you focus on the methods that
consume most of the resources and on the calls that they make.
Recursive calls are marked with this new special icon in the Call
Tree tab of the Profiler tool window.
* **Initial support for HProf snapshots** - IntelliJ IDEA 2020.1
opens .hprof memory dump files that can help you identify memory
leaks and find ways to optimize memory usage. For example, you will
see basic information, like the total size, number of instances,
and stack traces of the file. The files also list all root objects
grouped by classes, all classes sorted by their numbers of
instances or size, and all class instances with the field value
viewer. To open the .hprof file, go to Help | Find action and type
“hprof” to find the Open Hprof Snapshot action. Note that this
feature is in its early stages, and will be improved in the
following major releases.
**Version Control**
* **New Commit tool window** - IntelliJ IDEA 2020.1 reworks the
interface for committing changes to your VCS repository - instead of
a modal Commit dialog, you can now take full advantage of the
dedicated Commit tool window. It provides more space for the list of
modified files and the diff, and it lets you add changes to a commit
when they are ready, compose a commit message iteratively, and
choose which of the staged changes go into which commit.
* **New Interactively Rebase dialog** - The reworked Interactively
Rebase from Here dialog has become truly interactive. Now it does a
lot more than letting you select an action you want to perform on
each commit in your branch. It also features a graph showing which
actions have been applied, displays commit details, and lets you see
a diff and review or reset the changes if necessary.
* **Install Git from the IDE** - With IntelliJ IDEA 2020.1, you no
longer need to pre-install Git manually. When you clone an existing
Git repository, the IDE will look for the Git executable on your
machine, and will offer to download and set it up for you if the IDE
can’t locate it.
* **Branches popup**
* The Branches popup now features an explicit search field that
enables you to look for existing remote and local branches.
* The Refresh button has been reworked, so that you can now use it
to update the existing remote branches.
* Incoming (blue) and outgoing (green) commit indicators have been
added to the status bar.
* The Log now features a branches list.
**UI**
* **JetBrains Mono** - JetBrains Mono has become the default font of
IntelliJ IDEA in this release.
* **Unified IntelliJ Light theme** - IntelliJ IDEA 2020.1 features a
new default light theme that is now unified across all the different
operating systems.
**Frameworks and Technologies**
* **Spring WebFlux** - v2020.1 enhances support for the Spring
WebFlux framework. Added request mappings, so if your WebFlux
application has Actuator enabled, you can access the mappings in the
Run tool window to monitor your application and interact with it.
Also, the IDE now works properly with the Rendering API, so code
autocompletion and navigating to the related views are now
available. On top of that, you can take full advantage of the code
insight features, such as Find Usages (Alt+F7), and the Rename
refactoring (Shift+F6).
* **Spring profiles** - Previously, IntelliJ IDEA treated Spring
profile expressions as strings. Starting with v2020.1, the IDE
distinguishes between different profiles in an expression, and lets
you apply smart actions to them, such as Find Usages (Alt+F7) and
the Rename refactoring (Shift+F6). Also enhanced the usability of
the Change Active Spring Profiles popup and implemented completion
for existing profiles.
* **Selenium** - IntelliJ IDEA 2020.1 Ultimate introduces initial
support for Selenium, a popular framework for testing web
applications, through a new Selenium UI Automation Testing plugin.
The new plugin supports the most popular JVM frameworks for UI
testing and reporting libraries: Selenium, Selenide, Geb, Serenity
BDD, and Allure Framework. IntelliJ IDEA’s enhancements for
Selenium include a new project wizard, highlighting, inspections,
and code completion in tests for Java/Kotlin/Groovy languages,
validation for various configuration files, and icons in the gutter
for easier navigation.
* **JMS and Spring Messaging APIs Ultimate** - IntelliJ IDEA 2020.1
comes with a full set of code insight features for JMS and Spring
Messaging APIs for both Java and Kotlin applications. These include
code completion, navigation, the Rename refactoring (Shift + F7),
reference injection (Alt + Enter), and more.
* **Micronaut** - In the previous version of IntelliJ IDEA, added
support for the Micronaut framework. The new version extends this
support and adds automatic completion for parameters in
configuration files, as well as navigation and quick documentation.
The IDE now also autocompletes basic data types and detects whether
a value is invalid. Additionally, IntelliJ IDEA now recognizes
injected RegExp fragments in Micronaut URL mappings, which makes the
syntax more readable.
* **RxJava** - IntelliJ IDEA 2020.1 augments RxJava support by
adding a number of useful inspections. The IDE now detects unused
publishers, and lets you know when a lambda returns a null. It
also highlights thread-blocking method calls and filter chains
that are too long.
* **Quarkus and MicroProfile** - With IntelliJ IDEA 2020.1, you can
now create new Quarkus and MicroProfile projects directly through
the New Project wizard, which will walk you through the initial
configuration.
* **Injections for third-party SQL libraries** - The IDE now
automatically injects SQL fragments for popular third-party
libraries that were previously treated as usual strings, and
provides code completion and navigation for SQL statements and
fields. The list of supported libraries includes R2DBC, Vert.x SQL
Clients, Apache Spark SQL, and Apache DB Utils, among others.
* **Swagger Codegen** - IntelliJ IDEA 2020.1 is integrated with
Swagger Codegen - a powerful tool for generating server stubs, API
clients, and documentation that supports a vast range of programming
languages. This release prepares a dedicated run configuration where
you can set things like a path to generate the files to, a path to
the .mustache templates folder, a language, and a different JRE in
case of compatibility issues. To let Swagger Codegen do its magic,
you just need to open an OpenAPI/Swagger file, specify its settings,
configure a few options, and then click Run.
* **Remote specifications** - IntelliJ IDEA 2020.1 knows how to
work with openapi/swagger specifications. For example, it provides
autocompletion for them. You just need to enter the specification
URL in the settings, and the IDE will complete URL paths from it
as you type.
**HTTP Client**
* **Improved autocompletion, and more** - The HTTP client in IntelliJ
IDEA 2020.1 is smarter. Now it can correctly autocomplete path
variables and URL paths, and it can get you to the related endpoints
right from the HTTP request files. Also includes an update for
Spring users: Spring MVC handler methods now feature a gutter icon
for URL mappings. Use it to create or open an existing HTTP request
file and navigate to the HTTP client.
**Docker**
* **Easier Pull workflow for Docker -** To help you more easily pull
images from a Docker registry, this release reworks the UI and
removed the modal dialog. Now, you can simply click the Images
node in the left-hand pane of the Service tool window, and
IntelliJ IDEA will open the Images Console tab in the right-hand
pane, from which you can easily pull images. The IDE also provides
completion for images.
**Kubernetes**
* **Apply command for Kubernetes files** - You can now update a
Kubernetes cluster to match a state defined in your local files, by
invoking the “Apply” command right from the editor gutter.
**Build tools**
* **Maven and Gradle importing updates** - IntelliJ IDEA 2020.1
brings a small but important update to Maven and Gradle users.
Instead of the old auto-import, there’s now a floating
notification in the upper-right part of the editor. Use this
notification or a new shortcut (Ctrl+Shift+O for Windows and Linux
/Shift+Cmd+I for Mac) to load the changes after you modify the build
file. It gets even better: when IntelliJ IDEA detects any changes to
the build file made outside the IDE, such as VCS updates, it reloads
the related projects automatically.
**Scala**
* **Scala 3 support** - The Scala plugin now includes preliminary
support for Scala 3, with the new syntax, error highlighting,
navigation, type info, and many other bread-and-butter IDE features.
* **Fine-grained error highlighting for function literals** - In
Scala, functional literals are used a lot. They are very much like
methods and have separate parameters and bodies. But they are often
treated as a single expression of function type, making it harder to
locate and interpret errors. This release introduces fine-grained
error highlighting for function literals, which can help you
pinpoint errors relying on clear and precise messages, instead of
possibly obscure messages with function types.
* **Unused Parameter inspection** - The Scala plugin has been able to
show unused variables and methods for a long time. Now it can also
spot unused parameters. Parameters that are not referenced inside a
method or class are highlighted in gray. In contrast to variables
and methods, unused parameters are often the result of programming
errors. So not only does the new inspection make your code cleaner,
but it can also help you prevent various errors.
* **Smart Step Into** - In Scala, you often have multiple method
calls on the same line. In such cases, using Step Into in the
debugger is hardly convenient – you have to manually step into and
then out of many methods before you reach the desired one. In this
release, Step Into has become Smart Step Into. You can simply choose
a desired method, and the IDE will do the work.
* **BSP support improvements** - Improved BSP support. It now works
more smoothly, and with more projects and build tools. You no longer
have to manually install Bloop to import sbt projects via BSP - the
Scala plugin can convert such projects to Bloop format
automatically. It's now possible to cancel BSP builds from the Build
tool window. Finally, you can view and manage BSP connections using
the BSP widget.
**JavaScript**
* **New smart intentions and inspections** - New smart intentions and
inspections (Alt+Enter) enable you to save yourself some time when
coding. For example, you can now quickly convert the existing code
to optional chaining and/or nullish coalescing, the syntax
introduced in the latest versions of JavaScript and TypeScript.
* **Vuex and Composition API support** - With out-of-the-box support
for the Vuex library and the Composition API from the upcoming Vue
3, you can build great Vue.js applications even more smoothly.
**Database improvements**
* The database improvements include the ability to export data to
Excel (.xlsx) files, view data as text right in the editor, create
run configurations, and many other things.
**Terminal**
* **Split terminal sessions** - Added an ability to split terminal
sessions vertically or horizontally so that you can run them side by
side. You can invoke the context menu from the Terminal to create,
navigate, and close a split terminal session.
**Run Configurations**
* **Store Run Configurations as files** - Starting with v2020.1, you
can choose any location within your project folder for your run
configurations. To do so, open the Run/Debug Configurations dialog,
check Store as project file in the upper right part of the dialog,
and click the gear icon. This will open a popup which allows you to
choose where to store your run configurations.
**Android**
* **Android Volley support** - IntelliJ IDEA 2020.1 brings support
for the Android Volley library. It provides automatic code
completion for URL path references, and lets you navigate to related
resources.
**Other**
* IntelliJ-based IDEs have fully switched from JetBrains Runtime 8
(JBR8) to JetBrains Runtime 11 (JBR11).
* IDE settings are now automatically imported from one major version
to another.
### Updates in 2019.3
#### Features
* **Faster startup** - One of the major performance improvements in
this release is that startup times are shorter than ever. This
release introduces substantial architectural changes to parallelize
some of the tasks the IDE performs at startup so that they are not
performed sequentially.
* **Reduced memory consumption** - IntelliJ IDEA 2019.3 optimizes
performance to reduce peak memory consumption when importing large
Gradle projects.
* **Responsive UI** - Over 1600 UI freeze reports have been fixed.
This release also includes fixes for issues with editing POM.xml
files in Maven projects, where completion suggestions are now
displayed without any delays. Other fixes have resulted in faster
processing of VCS status updates in large projects, better handling
of ignored files, faster rendering of the project tree, better
performance when working with a large number of editor or debugger
tabs, and more speedups.
* **Better Java performance** - This release brings lots of
improvements for Java type inference, which not only fix various
editor freezes but also speed up Java type inference for long method
call chains. The ‘Join Lines’ action works faster when applied
to multiple lines. You’ll also experience accelerated highlighting
for Java code, especially when it comes to methods with generic var-
args into which dozens of arguments are placed.
* **Better Kotlin performance** - IntelliJ IDEA 2019.3 bundles Kotlin
1.3.60, which provides some impressive speedups such as faster
highlighting in the editor.
* **Installing theme and keymap plugins without restarting the IDE**
- IntelliJ IDEA 2019.3 implements support for dynamic plugin
installation, which means that now you can load and unload theme and
keymap plugins without restarting the IDE.
* **More noticeable scrollbar** - If you have had difficulty seeing
the scrollbar, you now have the possibility to make it stand out.
Just enable the ‘Use contrast scrollbars’ setting under
Settings/Preferences | Appearance & Behavior | Appearance.
* **Smooth scrolling** - A small but very valuable improvement is
to scrolling, which is now much smoother when done using the
mouse wheel.
* **Automatic configuration of imported Maven or sbt projects** - Now
when you import, create, or open an sbt or Maven project, IntelliJ
IDEA will automatically set it up for you, so you no longer need to
configure the settings manually.
* **Reworked behavior of context actions** - In the intention actions
dialog, the IDE now shows all available intention actions by
default, even after you’ve chosen an action and closed the dialog.
* **Extended support for Java 13 features** - This release has
extended support for Java 13 text blocks: they are formatted
automatically when inserting a third quote.
* **More template languages can be injected** - With IntelliJ IDEA
2019.3, you can inject more template languages into your code,
specifically Pug (ex-Jade), Handlebars, EJS, and Slim.
* **New ‘Field Call Hierarchy’ action** - There’s now a simple
way to view the hierarchy of a selected field by calling the new
‘Field Call Hierarchy’ action with Ctrl+Alt+H.
* **Unified popup for errors and documentation** - When you hover
the mouse over a symbol highlighted by an inspection, now you
can have the popup also display the error, in addition to
showing code reference information. To enable this, select
‘Show quick documentation on mouse move’ in
Settings/Preferences | Editor | General.
* **Improved Git checkout workflow** - To eliminate confusion, the
newly renamed ‘Checkout’ action called on a remote branch now
creates a new local branch, checks it out, and sets tracking to
the upstream. This release also adds a ‘New Branch from
Selected’ action for local and remote branches, which creates a
new local branch and checks it out, but doesn’t set tracking to
any remote branch.
* **A simpler way to push branches** - Another time-saver you’ll be
glad to discover is that you no longer need to check out a branch to
push it - you can simply select a branch in the Git branches popup
and push it from there.
* **Unified ‘clone’ experience** - This version reworks the
‘Clone’ dialog to unify the UI for getting projects from
different VCS hosting services. If you’re already logged in to
your VCS, the IDE displays a list of available repositories that you
can choose from, so you no longer need to enter a repository URL.
* **More insight into merge conflicts** - Now when a conflict occurs
during a merge, rebase, or cherry-pick operation, you can get more
information about the source of the changes displayed in the Merge
dialog. Simply click the ‘Show Details’ link to get the list of
commits that led to the resulting code state.
* **Microservices frameworks support** - To help keep your IntelliJ
IDEA projects technologically relevant, version 2019.3 adds initial
support for Micronaut, Quarkus, and Helidon. You can enjoy full
coding assistance, navigation, inspections, find usages, and other
goodies if you employ a microservice-based architecture for your
Java projects.
* **OpenAPI and Swagger support** - This release introduces support
for Swagger v2 and OpenAPI v2, which provides validation by schema,
as well as code completion, navigation, find usages, and the Rename
refactoring in YAML/JSON files containing API descriptions.
* **New Endpoints view** - The brand-new ‘Endpoints’ tool
window provides an aggregated view of both client and server APIs
used in your project for HTTP and Web Socket protocols. What is
more, you can extend the view to all projects currently opened in
IntelliJ IDEA.
* **Spring Web Flux support** - View the full list of Web Flux URL
mappings in the MVC view in the Spring tool window, navigate between
them, and benefit from coding assistance, search, and the Rename
refactoring for URLs and URL segments.
* **Java HTTP Clients support** - IntelliJ IDEA 2019.3 brings URL
support in the following Java HTTP client APIs: java.net.{URI/URL},
Retrofit v2, OkHttp v3, and Injectable URL reference. Coding
assistance, navigation, find usages – everything you’re used to
in Java is now available for HTTP clients.
* **Project Reactor support** - Take advantage of inspections for
Java and Kotlin Reactor projects, which report thread-blocking
method calls detected in code fragments where a thread should not be
blocked. The IDE will also warn you about the potential return of
null from lambda operators of Flux and Mono methods. On top of that,
there’s a dedicated Reactor debug mode that provides a helpful
view of the reactive stack frames and intermediate variable values.
* **MongoDB support** - IntelliJ IDEA 2019.3 comes with long-awaited
MongoDB support. After you’ve added a MongoDB data source, view
collections and fields in the database explorer, run queries, and
review query results. We’re going to extend MongoDB support in
future releases.
### Updates in 2019.2
#### Features
**Java**
* **Java 13 -** The IDE provides support for updated Switch
Expressions and their new syntax: now if you need to return a value
from a multi-line block in Java 13, you can use the yield keyword
instead of break. Also added support for text blocks, which allows
you to embed longer multi-line blocks of text into your source code,
for example, HTML or SQL. With this feature, you paste across the
two formats, either escaping values when pasting into a String or
leaving out the escapes when pasting into a text block.
* **Refactoring methods with multiple exit points** - Added a new
intention that you can run to transform a method with multiple
returns into a single exit point and prepare it for the Inline
Method refactoring. A method may include multiple exit points by
defining multiple return statements. When you inline such a method
in IntelliJ IDEA, it can be modified to define just one exit point
in the form of a single return statement to exit the method. Such
methods are less confusing as you have one path through them and you
don’t need to search for the exit.
* **‘Constant conditions & exceptions’ pinpoints the source of the
problem** - Topped off the good old ‘Constant conditions &
exceptions’ inspection with a new action called ‘Find Cause’.
In addition to notifying you about possible or actual issues, the
inspection navigates you to the questionable piece of code. No more
reading through the file and searching for the necessary line.
* **Modified inspection weeds out duplicates from your code** -
Merged the ‘Duplicated code fragment’ inspection for Java with
the ‘Locate duplicates’ tool for other languages, to give you a
powerful new inspection called ‘Duplicated code fragment’ which
combines the best of both worlds. It’s configurable, works on the
fly, and supports lots of languages other than Java.
* **Updated completion popup suggests correcting mistyped patterns**
- IntelliJ IDEA 2019.2 changes the look of the code completion
popup to made it even more helpful. From now on, completion
recognizes mistyped patterns and suggests possible fixes, so if you
type “retru” by accident, the IDE will suggest replacing it with
“return”.
* **Structural Search shows occurrences instantly** - Structural
Search is a powerful feature that allows you to search for a
specific code pattern in your project. IntelliJ IDEA highlights
strings that match your search in the editor as you type. What’s
more, the IDE displays the filter values right in the editing area
of the Structural Search dialog. There is no more need to
continuously re-run the search while you are experimenting with
the pattern.
**Profiling Tools**
* **IntelliJ IDEA now offers profiling tools** - Now you can analyze
the performance of your application right inside your IDE as
IntelliJ IDEA is integrated with Java Flight Recorder on Windows,
macOS, and Linux. macOS and Linux users can also enjoy the Async
Profiler. This tool can easily become your best friend as it tells
you everything about how memory and CPU are allocated in your
application.
**Services**
* **Services tool window: a single control panel for all connections,
configurations, and more** - Now you have everything you need to
control all under one view. A brand new Services tool window
condenses and encapsulates the most useful tools: RunDashboard,
Database Console, Docker, and Application Servers views. It also
provides a single display and control point for connections, run and
debug configurations, application servers, database consoles, and
more. For databases, the tool window features the query live timer
which shows you the duration of each connection running a query.
* **A running Docker container lets you view its file system** - In
IntelliJ IDEA 2019.2, you can view the file system of a running
Docker container in the Files tab of the Docker node in the Services
tool window.
**Performance**
* This release improves the performance and UI responsiveness for the
file system refresh, and reduces most delays caused by processing
filesystem changes.
**Editor**
* **Each directory can have its own code style** - You can now have a
separate code style configuration for each folder. Fancy trying it?
Place an EditorConfig file in the root directory of a module or a
package, and you are good to go. The IDE can now manage all code
style settings via the EditorConfig file. All adjustments are now
visible in the preview, so your days of blind fiddling with the
settings are over.
* **Syntax highlighting is available for over 20 languages** -
IntelliJ IDEA is now integrated with the TextMate editor to provide
out-of-the-box syntax highlighting for over 20 different programming
languages. If you need to add highlighting for any additional
languages, all you need is to do is to download the TextMate bundle
for the language and import it into the IDE.
* **The ‘Move Caret to Next Word’ action provides options** - Now
you can choose where to place the caret: at the end of the current
word or at the beginning of the next word. Pick the behavior that
works best for you in the Caret Movement option in
Settings/Preferences | Editor | General.
* **Tab now takes you outside the closing bracket or quote** -
Another feature to help you type faster is now enabled out of the
box: the Tab key navigates you outside of the closing brackets or
quotes. This feature works only when you’re typing.
* **Selected code gets wrapped in quotes or braces automatically**
- Although it’s not technically brand new, this super handy
feature is now enabled by default: when you type a brace or a
quote, IntelliJ IDEA automatically wraps the selected code in
braces or quotes.
* **macOS now has a new default keymap** - Changed the default keymap
for macOS from Mac OS X to macOS 10.5+ and also renamed the keymaps:
Mac OS X 10.5 is now called Default for macOS, and the outdated Mac
OS X is now IntelliJ IDEA Classic.
* **IntelliJ IDEA works with large files smoothly** - You can now
easily open files larger than 25MB in IntelliJ IDEA and search
through them without tedious waiting. This is a very nice little
improvement for those of you who work with the log files.
**Appearance**
* **Inspection popup shows the most relevant fix** - This release
delivers fixes suggested by code inspections even faster. Now the
inspection popup not only describes the problem, but also shows you
the most relevant solution straight away. Press Alt+Shift+Enter if
the fix works for you, or use the Alt+Enter shortcut to pick another
option from the list.
* **New Class dialog gets a new look -** The New Class dialog has a
new look. What’s more, now it lets you preview the types of
classes you can create.
* **Windows User interface has a fresh classy appearance** - On
Windows 10, the IDE now has a new modern borderless look.
* **Project View now shows file size and modification time** - A new
option helps you keep an eye on what’s going on in your project
and shows the size and modification timestamps for all items in the
Project View tree. To enable the feature, select View | Appearance |
Descriptions in Tree Views.
* **Editor and debugger tabs get a unified look** - The design of the
editor and debugger tabs has changed to look the same in the Light
and Darcula themes. In the Light theme, aligned the tab’s height
with the height of the tool window header. Also removed the white
line under the tabs to minimize visual clutter.
* **Find Usages toolbar becomes more elegant** - Continuing the trend
of removing unpopular icons from toolbars and making them less
visually loaded, trimmed down the toolbar of the Find Usages tool
window. Some icons are now grouped and some are gone completely.
**Gradle**
* **Gradle features a new Dependencies diagram** - In this release,
it adds the long-awaited Gradle Dependencies diagram. Just click the
Show Dependencies icon on the Gradle tool window toolbar or press
Alt+Shift+Ctrl+U/Alt+Shift+Cmd+U. Select the nodes from this diagram
to look at their neighbours, and click the nodes to see how they are
connected to the root.
* **More coding assistance features added for build.gradle files -**
Starting with version 2019.2, you can edit build.gradle files more
easily. IntelliJ IDEA now supports the task declaration syntax and
various dependency notations, and offers code completion inside
dependency blocks and dependency configuration closures.
* **Gradle task output is improved -** The status tree and output
console of Gradle operations are now shown side by side to help you
monitor the sync/build process. This offers you more detailed and
familiar Gradle output information.
* **Working with Gradle settings gets easier** - Simplified the
Gradle settings dialog by deprecating several options. What’s
more, IntelliJ IDEA automatically configures the settings for you
when you open, import, or create Gradle projects.
**Maven**
* **Maven sync output is shown in the Build tool window** - IntelliJ
IDEA now reports the Maven import process in the Build tool window,
together with the Maven build output. This makes the progress and
error reporting more visible, simplifies navigation, and makes the
Gradle/Maven experience more consistent.
* **Maven dependency completion works out of the box** - Code
completion for dependencies in the pom.xml now works out of the box.
Previously, it only worked if you triggered the indexing of your
Maven repository.
**Version Control**
* **The native ignore file handling is now fully supported** - In
this release, it adds the native ignore file handling for Git. From
now on, the native ignore file handling is available for all
supported version control systems out of the box. You will no longer
need to manually add files to the .gitignore list in the settings.
Everything is much simpler now: add a file to the list of ignored
files from either the Project Tree or the Local Changes tab of the
VCS tool window. The .ignore plugin that used to offer Git ignore
and HG ignore support now only provides advanced functionality of
VCS ignores, as the main functionality is part of the platform.
* **Commit files from the Local Changes tab -** IntelliJ IDEA 2019.2
brings a big change for projects that use Git or Mercurial.
There’s no need to open a separate dialog to commit files; now you
can commit files from the Local Changes tab of the Version Control
tool window. There, you can review the modified files and make
changes if necessary because the commit dialog doesn’t block the
rest of the IDE.
* **Smart VCS integration reminds you to commit files** - IntelliJ
IDEA 2019.2 reminds you to modify the files you have usually
committed before together with the files you modified recently.
* **The IDE suggests adding files copied externally to VCS** -
IntelliJ IDEA prompts you to add any files copied into the project
from outside the IDE, or files created in the console or during code
execution to version control. You can also configure the IDE to add
such files automatically.
* **VCS Log tab allows you to select the information to show** - Now
you can choose which columns you want to see in the VCS Log tab.
Click the eye icon, select ‘Show Columns’, and then select the
columns you want to display: author, date, or commit hash.
* **Git Merge and Cherry-Pick can be aborted from the UI** - Now you
don’t need to switch to the terminal to abort Git Merge or Cherry-
Pick anymore. The Abort Merge/Abort Cherry-pick option shows up in
the Branches popup while the process is running.
* **Show History for a folder displays results on the Git Log tab** -
Track changes in your project with ease. Now, when you use the Git |
Show History action on the selected directory in the Project View,
the IDE displays the results in the Log tab filtered by the
respective path.
* **Update Info after Update Project action is shown as Log tab** -
Previously, when you used the Update Project and Pull actions, the
IDE would show a tree of updated files in the Update Info tab of the
Version Control tool window. In v2019.2, the Update Info is
displayed as a list of commits received during the update. The
Update Info tab now looks like the Log tab.
* **Comparing branches becomes more convenient** - The ‘Compare
with Current’ action in the Branches popup is divided into 2
separate actions: ‘Compare with Current’ and ‘Show Diff with
Working Tree’. The updated ‘Compare with Current’ action now
shows the difference in commits, while the new ‘Show Diff with
Working Tree’ action shows the file diff.
* **Diff now shows the method with modified code** - While in the
“Collapse Unchanged Fragments” mode, the Diff now shows the
method in which the current chunk of code is modified. It makes it
easier for you to not only see the change, but to understand the
context as well.
**Kotlin**
* The bundled Kotlin plugin in IntelliJ IDEA is now updated to
v1.3.41.
* **JPA for Kotlin gets more coding assistance features** - IntelliJ
IDEA 2019.2 comes with a wider range of JPA coding assistance
features for Kotlin. Now you can generate Kotlin entity classes on
selected tables with the Generate Kotlin Entities script. The script
is easily customizable; go to the Scripts Directory and experiment
with the script by modifying it to solve a specific task. What’s
more, the IDE can now navigate you to the corresponding column or
table with the ‘Go to Declaration’ action (Cmd+B/Ctrl+B).
* **‘Async stack trace’ shows the variable state at the last point
of suspension** - When you stop at a breakpoint inside a suspend
function or a lambda, ‘Async stack trace’ now shows you the
state of the variables at the last point of suspension. You can
browse the whole stack trace of suspend functions starting from the
last suspension point in the current coroutine and check the stored
values of the variables. This can help you understand how you got to
the current point of execution.
* **Interactive mode for scratch files shows changes on the fly** -
As you know, in Kotlin you can perform small experiments with your
codebase using scratch files. Now you can use the interactive mode
which shows you the results on the fly after a certain timeout,
without the need to explicitly rerun the script.
* **TODO list displays multiline comments for Kotlin** - How often do
you check the TODO list in your project? IntelliJ IDEA now correctly
highlights multiline TODO comments in Kotlin and displays them as a
list in the TODO tool window.
* **The IDE warns you on incorrect external annotations** - If you
use external nullability annotations for Java, the IDE can now warn
you about incorrect usages of annotated Java methods from Kotlin.
Note that this is purely IDE functionality; the corresponding code
is compiled without warnings by the Kotlin compiler, while the IDE
shows an additional warning.
**Groovy**
* Extended the Groovy 3.0 syntax and our support for nested code
blocks. Moreover, the IDE now makes the braces and arrows in a
closure expression bold by default so that you can easily understand
the structure of the code and distinguish code blocks from closures.
* You can also enjoy quick-fixes that add explicit types for all the
parameters in a method declaration for Groovy methods where the
types of the parameters aren’t explicitly defined.
**Scala**
* **New way to highlight type mismatches** - Instead of underlining
type mismatch errors with a red squiggle, which might span across
multiple lines, IntelliJ IDEA now shows a type ascription hint and
highlights the part that doesn’t match the expected type.
* **Type mismatch tooltips show diff** - Type mismatch tooltips are
now fine-grained, vertically-aligned, and offer pairwise comparison.
The algorithm takes syntactic sugar, subtyping, variance, and other
tricky stuff into account.
* **Type hints are interactive** - Type annotation hints now support
dynamic folding, tooltips, navigation, and brace matching. The type
hints are now shown only when truly needed.
* **Expressions are wrapped / unwrapped as you type** -
Previously, you had to use intentions to wrap (or unwrap)
expressions inside curly braces. Now IntelliJ IDEA can do that
automatically, as you type.
* **Redundant code is now unobtrusive** - IntelliJ IDEA has always
used grey to mark unused imports or unreachable code as
“redundant” (as defined by the color scheme). Some other
redundant code, however, was highlighted as “generic warning or
error”, which polluted code and concealed actual errors. Now it
uses grey to color all redundant code uniformly, so the highlighting
is less obtrusive.
* **Improved code completion -** You can now complete the whole case
clause (whereas before, it was only possible to complete patterns in
case clauses). Completion works not only for match statements, but
for higher-order functions as well.
* **Enhanced language injections** - Now you can inject languages
into multiline string literals with margins.
* **Build Server Protocol is fully supported** - IntelliJ IDEA now
supports the Build Server Protocol (BSP), which standardizes how
build tools (servers) and IDEs (clients) communicate with each
other. For a while, BSP support was an experimental feature, but now
it is a first-class citizen in the IDE.
**JavaScript & TypeScript**
* **New intention replaces an extra variable with another
destructuring** - With the new ‘Propagate to destructuring’
intention (Alt+Enter), you can replace an extra variable with
another destructuring whenever possible. To remove a destructuring
completely, use the intention action called ‘Replace destructuring
with property or index access’. The IDE now warns you if a boolean
expression in a condition has some unnecessary parts and suggests
simplifying it.
* **Rename refactoring for JavaScript is now enhanced** - When you
rename a symbol in a JavaScript or TypeScript file, the IDE now
groups together dynamic usages and, by default, excludes them from
the refactoring. This makes the refactoring more accurate and gives
you more control over what exactly should be renamed in the
Refactoring Preview tool window.
* **Improved support for Vue.js allows for better completion** -
Using Vuetify or BootstrapVue in your Vue.js application? IntelliJ
has adopted a new approach to working with these libraries in the
IDE. From now on, code completion for components and their props
from these and some other Vue component libraries is more precise.
* **Node.JS is now bundled with IntelliJ IDEA Ultimate** - The
Node.JS plugin now comes pre-installed with IntelliJ IDEA Ultimate.
**Database Tools**
* **Full-text Search offers comprehensive results** - Now you can
search for the data you need even if you don’t know its exact
location. Right-click the data source or a group of data sources
that you want to search through and select Full-text Search, or
press Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F. The results are filtered
to show you only those strings in which the data is found. If you
cannot locate the data because there are too many columns, use the
text search in the data editor (Ctrl/Cmd+F).
* **Filtering by data source available in search and navigation** -
Locating an object in the GoTo popup is not always easy, especially
when there are too many similar items. In IntelliJ IDEA 2019.2, you
can choose where to search: in a particular data source or in a
group of sources. The same works for Find In Path. This is
extremely useful if you are looking for source code inside of DDLs
of other objects.
**JVM Debugger**
* **Step Into action offers you a choice of methods to step into** -
When you’re doing ‘step into’ on a line with several methods
calls, you can choose the method, lambda, or method reference that
you want to step into.
**Shell Script**
* **IntelliJ IDEA introduces shell script support** - This release
offers rich editing support for shell scripts, including word and
path completion, Quick documentation, and even textual rename. You
can also create run configurations for executing shell scripts –
and that's only half the story. Integrated several external tools
into IntelliJ IDEA for even more advanced shell script support. From
now on, you can use Shellcheck to detect and fix errors in your
script, Shfmt to properly format your shell script, and Explainshell
to get a full description of the necessary command by pressing
Alt+Enter.
**HTTP Client**
* **HTTP client supports cURL requests -** Now you can paste a cURL
request string into the HTTP client and have the IDE automatically
convert it to a full request.
* **HTTP client keeps cookies** - Suppose you’ve made one request
to authenticate on the service, and in subsequent requests you would
like to call some endpoints that require additional permissions.
Previously, you would lose the cookies from the first response. But
not anymore: the IDE now keeps all the cookies for you and transfers
them in the next requests.
**Terminal**
* **The Terminal soft-wraps lines better -** Previously, the Terminal
could occasionally break links when wrapping lines, and some lines
were wrapped improperly. Now, when you run a command that outputs a
long line, the Terminal soft-wraps it gently, keeping all the links
in the working state. If you click a wrapped link, it is immediately
sent to your browser.
* **Exit codes for file merge from the command line -** IntelliJ IDEA
now returns proper exit codes when used as a command line tool for
merging files. Now you can use IntelliJ IDEA as a merge tool in any
custom workflow. Also support the --wait command line option for
editing files from the terminal in a blocking manner.
**Plugins**
* **Plugins page becomes more ergonomic -** The IDE now displays
plugin details on the Plugins page in the Settings/Preferences
dialog right away, so you don’t have to click each plugin one by
one. Got rid of the Updates tab, and the ‘Update’ button is
placed near the plugin name on the Installed tab. Added new options
under the gear icon, allowing you to disable or enable the
downloaded plugins all at once. Save yourself a bunch of clicks and
spend them on more important things.
**Kubernetes**
* **Kubernetes plugin gets Kustomize support** - The new version of
IntelliJ IDEA 2019.2 with the Kubernetes plugin provides editing
support for Kustomize with completion for keys and paths, as well as
many inspections for Kustomize resource files. The Rename
refactoring now works for renaming the files and directories of the
Kustomize resource files. You can jump from a path declared in the
Kustomize resource files to the associated packages or files in the
Project tool window, with the Ctrl+B/Cmd+B shortcut.
* **External resources can be added using URLs** - You can now load
a custom resource definition (CRD) specification from external
sources using URLs. To add the specifications, go to
Settings/Preferences | Languages & Frameworks | Kubernetes and add
URLs to the CRD specification. (Previously, it was possible to add
a CRD from local files.)
### Updates in 2019.1
#### Features
**Themes**
* **Themes customization** - IntelliJ IDEA 2019.1 comes with
official support for custom themes. Now you can create your own
theme with ease.
**Java**
* **Java 12 Switch Expressions (Preview) support** - IntelliJ IDEA
2019.1 comes with support for the Java 12 Preview feature - Switch
Expressions according to JEP 325.
* **Extract variable refactoring enhancements** - The “extract
variable” refactoring has been significantly improved and it now
preserves semantics even better than before. The IDE can extract a
variable even from the field initializer, and the extract variable
refactoring can convert a ternary to ‘if’ automatically when the
condition is important. The condition is considered as important if
it has a null check or the ‘instanceof’ check.
* **Precise warning highlighting in ternary expressions** - IntelliJ
IDEA 2019.1 ensures more precise warning highlighting for ternary
expressions. It will only highlight a condition in which a
nullability violation is detected (whereas previously it highlighted
the whole ternary expression, even when the nullability was only
violated in a single branch).
* **Improved analysis of mathematical operations** - The data flow
analysis can track the result of mathematical operations and uses
this information to warn you about conditions that are always
true or false.
* **Inference of constructor’s purity from sources** - IntelliJ
IDEA 2019.1 improves its support for the @Contract annotations. It
can now automatically infer the purity of constructors from sources.
* **Navigation from Java stack trace to the relevant position within a
line** - When you click on the Java stack trace, the IDE will try
to determine the exact location within the row to take the cursor
to. Previously it would only take you to the first column of the
corresponding row.
* **Duplicated switch branches detection** - The IDE can now
detect duplicated switch branches and provides a quick-fix to
merge such branches.
**Gradle**
* **Delegation of build and run actions to Gradle set per Gradle
project** - It’s now possible to delegate build and run actions
to Gradle for each project individually. Configure this option for
each Gradle project if your IntelliJ IDEA project consists of
several Gradle projects. You can even set different values for the
test runner and the application runner for the same project.
* **Proper selection of a Gradle test task to run from the editor** -
IntelliJ IDEA 2019.1 improves support for projects with the several
Gradle source sets where the test execution is delegated to Gradle.
Now the IDE correctly resolves which task should be executed when a
specific test has been run. For choices with multiple options, the
IDE provides a list of all the tasks that can be run for this
selected test.
* **HotSwap works when build actions are delegated to Gradle or
Maven** - Now, when you are debugging with the build actions
delegated to Gradle, the HotSwap is triggered, and building a
project reloads classes.
**Maven**
* **Maven build output reported to Build tool window** - For
convenience, all the Maven build output will now be shown in the
single place - the Build tool window. There is no need to check in
the Run or Messages windows anymore. You can also toggle the view
and present the build output as a log.
* **Improved Maven Diagrams -** Maven diagrams have been enhanced and
extended with new options. You can easily find the conflicts and
duplicated dependencies by using ‘Show Conflicts/Duplicates’. To
view all paths to the node, click ‘Show Paths: Root ->
Selection‘.
**Version Control**
* **Fixup and Squash actions were added to VCS log** - Invoke Fixup
and Squash actions from the context menu of the VCS Log tab, and
these actions will create commits with the correct fixup! and
squash! commit messages.
* **Ability to cherry-pick only some of the files right from the VCS
log** - With IntelliJ IDEA 2019.1 you can now cherry-pick select
files from the commit while you are in the VCS log. Simply invoke
the context menu and choose the “Apply Selected Changes” option.
* **Indication of incoming and outgoing commits** - There is now the
option to see the availability of incoming and outgoing commits for
the individual branches in the Branches popup. You need to switch on
the ‘Mark Branches that have incoming/outgoing commits in the
Branches popup’ option in the Preferences/Settings | Version
Control | Git.
* **Deleted shelved files can be restored -** You can now view all the
recently deleted files and restore any useful shelved files. Simply
use the new “Recently Deleted” node in the Shelf tab of the VCS
tool window.
* **New “Uncheck all” checkbox for partial Git commits** - To
make it more convenient, IntelliJ IDEA adds a new “Uncheck all”
checkbox to the Diff pane of the Commit Changes dialog, so now you
can easily uncheck all the code chunks in one go.
* **Mode to view author initials for VCS annotations** - You can now
view the initials of the author instead of their full name in the
VCS annotations. Right-click on the annotation tab and select View |
Names | Initials from the context menu.
**Diff**
* **Adding file content to the Blank Diff Window by drag-n-drop** -
It is possible now to copy & paste text to a Blank Diff window by
dragging a file to it.
* **Ability to switch sides of compared files in the diff viewer** -
You can now swap sides in the diff viewer when you open it with
Compare two files, Compare with clipboard, or Blank Diff. To toggle
which file is shown on the right and which on the left, simply
select Swap Sides.
* **Preview the difference by char unit** - Now you can view the
difference by char unit and not only by word unit, as it was
before in the diff viewer. Could be pretty useful if your source
code has any lines of characters from different alphabets, for
example, Japanese.
* **Recent Locations Popup** - Meet the brand new “Recent
Locations” navigation popup, which displays all the recently
visited and changed locations in the code. All the locations that
you’ve visited are chronologically ordered in this popup with the
latest location that was visited at the top, and the oldest visited
locations at the bottom. To call up the new “Recent Locations”
popup, press Cmd-Shift-E / Ctrl-Shift-E.
**JVM Debugger**
* **Support ‘synchronized’, ‘assert’ and ‘switch’ in the
debugger evaluator** - The debugger evaluator now supports
synchronized statements, assert expressions, and switch statements.
* **Step out of code block in JVM debugger** - It’s now possible to
Step Out of the current block while you are debugging the Java
project. This new action is available from the main menu | Run.
* **New “Run to mouse pointer” mouse gesture** - Now, if you
prefer to use the mouse in debug mode, you can hover over a line and
the IDE will highlight this line, if you then click on a line number
the IDE will perform the run to cursor action.
**Scala**
* **Highlighting of for-comprehensions** - IntelliJ IDEA 2019.1 comes
with enhanced for-comprehensions support including error
highlighting, implicit hints, and GoTo / Quick Definition / Quick
Documentation actions.
* **Find Usages for implicits -** Find Usages can now be invoked on
implicit definitions, apply / unapply methods, for-comprehension
methods, and Single Abstract Method (SAM) types.
* **Decompile to Java -** Now, even if the Scala .class files have no
sources, you can decompile them to Java.
* **Customizable Scalafmt version** - IntelliJ IDEA not only lets you
use a custom Scalafmt version, but the IDE can also now download the
required version for you.
* **Separate HOCON plugin** - Extracted the HOCON support into a
separate repository and plugin, which you can install and uninstall
on demand.
* **Error highlighting improvements -** This release significantly
improves the error highlighting in the number of areas including:
* Partial unification and type variable unification in general.
* Constructor highlighting, calls to private constructors.
* Better-monadic-for compiler plugin: `implicit0` feature.
* Kind-projector: value level polymorphic lambdas.
* Simulacrum: higher-arity type constructors.
**Groovy**
* **Support for Java-style Lambda syntax of Groovy 3.0** - IntelliJ
IDEA 2019.1 supports the experimental Groovy 3.0 feature - Java-
style Lambda syntax. The IDE provides editing support for it
including code completion, highlighting, and type inference. The
Groovy intentions and inspections will also work properly inside the
lambda body. Formatting is also available for Java-style lambdas and
you can debug Java-style lambdas too.
**Kotlin**
* The Kotlin plugin bundled with the IDE has been updated to v1.3.21
* **Live Template to generate ‘main’ without parameters** -
Starting with Kotlin 1.3, you can use the main function without
parameters. Accordingly, with this release of IntelliJ IDEA, you can
create the main method without parameters by using the ‘main’
live template.
* **String conversion improvements** - The ‘Convert concatenation
to template’ intention can now remove the unnecessary .toString()
calls on each parameter.
* **New intention for converting SAM as lambda to an anonymous
object** - If you need to convert a construct using lambdas with
SAM to an anonymous object, use this handy new intention action.
* **Intention action to improve coroutine code** - When you work with
coroutines, IntelliJ IDEA suggests adding an “Async” suffix to a
function returning ‘Deferred’.
**JavaScript & TypeScript**
* **New intentions for JavaScript destructuring** - IntelliJ IDEA
2019.1 comes with a set of new refactorings and intentions to help
you start using destructuring in your JavaScript or TypeScript code.
* **Intention to convert function with Promise to async/await -**
Change a function that returns a promise with .then() and .catch()
calls to an async function that uses the async/await syntax. To use
this quick-fix, press Alt-Enter on the name of the function and
select Convert to async function. This is available for TypeScript,
JavaScript, and Flow.
* **Updated documentation for CSS and HTML -** The quick documentation
for CSS properties and HTML tags and attribute (F1 / Ctrl-Q) now
shows a short description from MDN, including its compatibility with
the most popular browsers.
* **Improved JavaScript debugger console -** The interactive debugger
console in the JavaScript and Node.js debug tool windows now shows
objects using a tree view, and it supports styling of log messages
with CSS and grouping them using console.group() and
console.groupEnd(). Also, it allows you to filter out any type of
log messages.
**Docker**
* **Ability to debug inside Docker container -** Now you can attach
the debugger to a Java application running inside a Docker
container. The IDE now allows debugging inside containers that are
built from a Dockerfile or created using Docker compose (docker-
compose.yml).
**Kubernetes**
* **External resources support -** IntelliJ IDEA 2019.1 supports
external resources, which means you can now load a custom resource
definition specification from external sources. Currently, this is
only possible from local files. To add the specifications, go to
Preferences/Settings | Languages & Frameworks | Kubernetes and add
the path to the custom resource definition specification.
* **Chart rename refactoring in Helm resource files -** Now it’s
possible to use the Rename refactoring in the chart of the Helm
resource template files. Please note that you need to install the
Go template plugin to enable this support for Helm resource
template files.
**Editor**
* **Option to export your Code Style settings to JSON -** It’s
possible to now export all your code styles settings, even if
they match the default ones, to JSON from IntelliJ IDEA. Go to
Preferences/Settings | Editor | Code Style and select the
option ‘Export | IntelliJ IDEA code style JSON’ from the
drop-down menu.
* **Ability to enable soft-wraps depending on file type -** Soft-wraps
can be limited for specific file types by going to
Preferences/Settings | Editor | General and using the Soft-wrap
files field.
* **The Keymap Configuration Dialog for the Ctrl-Y keystroke on
Windows -** When you first use the Ctrl+Y keystroke on Windows, the
Keymap Configuration Dialog will be shown asking you to assign the
shortcut to either “Delete Line” or “Redo”.
* **Sublime Text keymap -** Go to Preferences /Settings | Keymap and
from the Keymap drop-down list, choose Sublime Text – that’s it!
Now you can use Sublime Text’s shortcuts in IntelliJ IDEA.
* **VS Code Keymap plugin -** You can now use the pre-configured VS
Code keymap, which is available as a separate plugin. Install
this plugin and select the VS Code keymap in Preferences
/Settings | Keymap.
* **Support for Java-style Lambda syntax of Groovy 3.0 -** IntelliJ
IDEA 2019.1 supports the experimental Groovy 3.0 feature – Java-
style Lambda syntax. The IDE provides editing support for it
including code completion, highlighting, and type inference. The
Groovy intentions and inspections will also work properly inside the
lambda body. Formatting is also available for Java-style lambdas and
you can debug Java-style lambdas too.
* **Spring Cloud Stream**
* **Spring Cloud Stream editing support -** IntelliJ IDEA now provides
rich editing support for Spring Cloud Stream projects such as syntax
highlighting, inspections, quick-fixes, and code completion
(including binder name completion for values and references in the
application.properties or application.yml files).
* **Navigation between bound Producers and Consumers -** You can now
navigate between the bound consuming and producing message handlers
using the gutter icon. Bear in mind that Consumers and Producers
should be bound in the application.properties or application.yml
files via the ‘spring.cloud.stream.bindings’ configuration key.
**Thymeleaf**
* **Improved Thymeleaf support -** Now you can navigate to template
fragments referenced in the ‘th: replace’ and ‘th: include’
attributes. Code completion and the Rename refactorings now also
work for these included and replaced fragments.
**Database Tools**
* Support for Greenplum, Vertica, and Apache Hive
* **IntelliJ IDEA supports these new databases:**
* Greenplum - an analytics database based on PostgreSQL.
* Vertica - column-oriented storage designed to handle large
volumes of data.
* Apache Hive - a data warehouse built on top of Apache Hadoop for
providing data query and analysis.
* **Improved connection dialog** - Refreshed the look of the
connection dialog and added several important settings. You can
now add an SQL query in the ‘startup script’ field, which
will be run each time you establish a connection. Also, you can
set a timeout after which the IDE will auto-disconnect, or set up
a time interval to run a query every N seconds to keep the
connection alive.
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 pkgsrc/devel/intellij-ue-bin/Makefile
cvs rdiff -u -r1.1 -r1.2 pkgsrc/devel/intellij-ue-bin/PLIST
cvs rdiff -u -r1.3 -r1.4 pkgsrc/devel/intellij-ue-bin/distinfo
cvs rdiff -u -r1.1 -r1.2 \
pkgsrc/devel/intellij-ue-bin/patches/patch-bin_idea.sh
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffs are larger than 1MB and have been omitted
Home |
Main Index |
Thread Index |
Old Index