IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
What’s New in IntelliJ IDEA Ultimate 2024.1
IntelliJ IDEA Ultimate offers an extensive set of features that go beyond the basics, providing access to AI-powered coding efficiency boosters, seamless integration with numerous frameworks and technologies, powerful database tools, and more.
Download IntelliJ IDEA Ultimate 2024.1
In our latest release, version 2024.1, we’ve introduced a range of enhancements to elevate your coding experience. Highlights include full line code completion, extended support for dev containers, improved integration with popular frameworks, streamlined database interactions, and an array of other advanced features that are outlined in this blog post.
Full line code completion
IntelliJ IDEA Ultimate 2024.1 comes with a new type of code completion. This new feature enhances coding efficiency by predicting and suggesting entire lines of code based on the context of the current file. These gray-toned in-line suggestions are powered by advanced deep learning models that are trained for different languages and frameworks and are seamlessly integrated into the IDE. What’s more, the associated LLMs run locally without sending any code over the internet. Learn more about full line code completion in this dedicated blog post.
AI Assistant updates
In the latest update, AI Assistant has received several significant improvements, including enhanced test generation and cloud-based code completion, custom prompts for commit messages, the ability to create files from code snippets, and updated in-editor code generation. Explore these enhancements further in our dedicated blog post.
In addition, we’ve enhanced code highlighting for Java and Kotlin within AI Assistant’s responses. This improvement makes it easier to comprehend and validate suggestions in the AI chat, as code is highlighted just like it is in the editor, resulting in a more intuitive experience.
Please note that in version 2024.1, AI Assistant has been unbundled and is now delivered as a separate plugin. This change is designed to provide greater flexibility regarding the use of AI-powered technologies, giving you more control over your preferences and requirements in your working environments. AI Assistant still requires an active JetBrains AI subscription.
HTTP Client
We’ve introduced several enhancements to the HTTP Client.
It now provides expanded authentication options, including the PKCE Authorization Code and Device Authorization Grant flows, along with extra parameters for token and authentication requests.
The HTTP Client now automatically manages code_challenge
generation and the passing of code_verifier
for token retrieval during PKCE requests.
We’ve also upgraded the HTTP Client to use Netty as its underlying networking library, enabling support for SSL, proxies, and HTTP/2.
Additionally, we’ve refreshed the appearance of the HTTP Client’s toolbar so it matches the new UI style, resulting in a more refined and cohesive look and feel.
Spring Framework
Improved bean completion and autowiring
IntelliJ IDEA Ultimate 2024.1 provides autocompletion for all beans from the application context, automatically wiring them as needed. When a bean autowires dependencies via the constructor, the associated field is also automatically wired through the constructor. Similarly, when dependencies are injected via fields or through Lombok’s @RequiredArgsConstructor
annotation, the new bean is automatically wired through the field as well.
Enhanced Spring diagrams
Accessing Spring model diagrams is now more convenient. You can now call them using bean in-line markers or by invoking the intention action on Spring classes via the shortcuts Alt+Enter (Windows/Linux) or ⌥⏎ (masOS).
Additionally, we’ve introduced new icons for Spring diagrams, enriching the visualization of Spring stereotypes such as components, controllers, repositories, and configuration beans. Furthermore, you can easily toggle the visibility of beans from libraries, which are initially hidden.
Dev сontainers
Development containers can be filled with fully functional development environments. They can be used to encapsulate running applications, IDEs and tooling, appropriate versions of libraries and dependencies, and required runtimes for specific projects and CI/CD tests. This makes dev containers perfect for onboarding new people to your project and for providing a fully functional, reproducible development environment that can be used within your IDE.
In this release, we’ve significantly expanded the IDE’s features for working with development containers.
Streamlined dev container setup
Getting started with dev containers is now more straightforward, thanks to a convenient wizard that allows you to create development containers even for projects that initially lack support for them.
If you create a dev container through the Welcome screen and no devcontainer.json configuration file exists in the repository, the IDE provides a convenient Dev Container Template wizard that makes setting up your dev container quick and easy.
This new wizard is also available when you add a new devcontainer.json
file to the project from the Project tool window.
Code completion and documentation
In v2024.1, we’ve implemented code completion for devcontainer.json
files. Additionally, we’ve introduced support for displaying documentation, allowing you to describe dev containers without having to leave the IDE.
Dev containers for complex projects and monorepos
IntelliJ IDEA now recognizes when a devcontainer.json file is in one of the default folders and automatically prompts you to create a dev container. On top of that, starting from this release, devcontainer.json files can be placed in any folder within your project. This flexibility is particularly beneficial when multiple developers and DevOps specialists are working within the same repository on different microservices or subsystems, each requiring unique configurations with various dependencies and supported programming languages, or even different IDEs.
Previously, .devcontainer.json configuration files were limited to three specific locations:
/.devcontainer.json
/.devcontainer/devcontainer.json
/.devcontainer/<folder>/devcontainer.json
Now, when you place a devcontainer.json
file in one of these locations, the IDE automatically detects it and suggests creating a dev container. If a repository contains multiple devcontainer.json
files in these standard locations, the IDE prompts you to select which one to use to launch the workspace.
However, in large projects, it’s still necessary to duplicate the project structure in the .devcontainer
folder to associate each container with a specific microservice or subsystem. Additionally, the default location of the devcontainer.json
configuration files has always been at the root of the project.
In IntelliJ IDEA Ultimate 2024.1, you can place a devcontainer.json file in any folder, such as:
/service1/devcontainer.json
/service2/devcontainer.json
/infra/devcontainer.json
Even if a workspaceFolder
is not explicitly defined, the file will be placed by default in the folder containing the service, though this behavior can be overridden through the workspaceFolder
option.
This update makes dev containers much easier to use for large and complex projects.
Note that when creating a dev container from a cloned repository, it’s important to specify the path to the devcontainer.json
file explicitly.
Other improvements
We’ve made substantial progress on support for the devcontainer.json
specification and are actively developing IDE customization features, which are already available for you to try out through the Dev Container Template wizard.
Furthermore, we’re continuing to enhance the functionality for using dev containers to do remote development, extending its compatibility to a broader range of minimalistic Linux distributions. We have curated an ever-evolving repository with examples. If you encounter difficulties launching a dev container without an existing example in this repository, please contact us.
Quarkus updates
We’ve implemented a new settings editor for Quarkus run configurations, enhancing the user interface in the Run/Debug Configuration dialog for both Maven and Gradle projects. This update provides easier access to popular settings such as Run profile and Environment variables.
Additionally, the Quarkus Dev UI can now be accessed conveniently via a new icon added to the Run tool window’s toolbar.
Support for OpenRewrite
OpenRewrite has been integrated into IntelliJ IDEA Ultimate 2024.1, enhancing the IDE’s refactoring capabilities and offering a toolkit to enhance code quality, consistency, and maintainability. With OpenRewrite’s recipes, you can modernize legacy code, optimize performance, and tackle complex migration tasks like upgrading to a new Spring Boot version.
WireMock server support
WireMock support has been implemented through a plugin, which you can install directly within the IDE or from JetBrains Marketplace. This integration offers schema completion for JSON configurations, enables the generation of WireMock stub files from the Endpoints tool window, and includes a built-in run configuration for quickly launching servers directly from the editor. This enhancement streamlines the creation of test data servers and stubs, making web UI and microservice development more straightforward.
Enhanced Terraform support
The 2024.1 release features significant enhancements to support infrastructure-as-code development with Terraform, catering to developers, site reliability engineers (SREs), and DevOps professionals. This update introduces a range of improvements aimed at simplifying the process of creating, managing, and scaling infrastructure.
Suggestion to run terraform init
To ensure a smooth workflow, the IDE now explicitly suggests running terraform init
to initialize working directories that contain Terraform code files. This update helps prevent error messages from Terraform and also ensures that code completion is comprehensive and that the displayed documentation is exhaustive.
Support for third-party providers from the Terraform Registry
IntelliJ IDEA now offers expanded code completion capabilities for over 3,900 third-party Terraform providers. In conjunction with access to the latest documentation for each provider and their specific versions directly within the IDE, this makes it easier for you to write code efficiently.
Terraform template language support
Version 2024.1 introduces support for Terraform’s template language (tftpl), streamlining your workflow for configuration files, scripts, and program code, such as web server, network, or service configurations. You can now dynamically fill in values within your templates at runtime, simplifying the process of rendering templates for specific uses.
By default, files with the *.tftpl extension are treated as plain text with templating capabilities. However, for more specific needs, we’ve introduced the option to use your preferred programming language. To do so, simply right-click on the file, select Change plain text template to data language, and choose the language that corresponds to your .tftpl
files.
Support for Move Statement
The Move Statement feature is now available for Terraform, providing seamless code reorganization. Simply identify and highlight the desired line or block and then press Ctrl+Shift+Up (Windows/Linux) or ⌘⇧↑ (macOS) to move it upwards or Ctrl+Shift+Down (Windows/Linux) or⌘⇧↓ (macOS) to move it downwards.
Database tools
Local filtering in the data editor
This release introduces the long-awaited local filtering feature in the data editor. You can now swiftly filter rows by column values without sending queries to the database. This local approach only impacts the current page, though you can adjust the page size or fetch all the data if you need to extend the scope. To disable all local filters, deselect the designated Enable Local Filter icon.
Simplification of sessions
IntelliJ IDEA Ultimate 2024.1 streamlines query execution by eliminating the need to manually select sessions. Instead, to attach a file, you simply need to choose the data source, rather than the session. Additionally, launching functions no longer requires selecting a session; you can now opt to run functions directly from the console or file. These changes are designed to minimize the learning curve with database tools, reducing unnecessary steps and enhancing overall usability.
Single record view
You can now focus on a single record in the data editor. To open a record view, use the shortcuts Ctrl+Shift+Enter (Windows/Linux) or ⌘⇧↩ (macOS) or the Show Record View button on the toolbar. The record view will open in the side panel, where the value editor and aggregate view are located. The cells in a record view will be editable if they are editable in the main grid.
Ability to move columns in CSV files
Starting from version 2024.1, you can rearrange columns in the data editor for a CSV file and these changes will be applied to the file itself.
Updates for universally unique identifiers (UUIDs)
For this release, we’ve implemented several enhancements aimed at simplifying UUID management. As part of these efforts, we’ve introduced a new Generate UUID action. Additionally, you now can edit columns containing UUIDs, including those represented by binary(16)
, blob(16)
, and similar types. For PostgreSQL users, values within UUID columns can now be validated during editing.
Aligned code style for multi-row INSERT
statements
You can now format multi-row INSERT
statements so their values are aligned. The formatter will analyze the width of the values in each column and apply the most suitable widths. You can also fine-tune the formatter to detect values that are much longer than others and make exceptions for them, moving the remaining fields to the next row. To tailor these functionalities for your needs, use the checkboxes in the Queries tab under Settings/Preferences | Editor | Code Style | SQL | General.
Column completion for GROUP BY
clauses
The IDE now analyzes the aggregates used in SELECT
clauses and includes the appropriate column list in the GROUP BY
clause suggestions.
Warning for WHERE TRUE
clauses
We’ve expanded our Unsafe query warning. It now alerts you if you run a query with the WHERE TRUE
condition or one of its variations. This can be a lifesaver if you’re someone who likes having this clause for debugging purposes but occasionally forgets to change it.
Custom symbols to accept suggestions
It’s now possible to specify which symbols you will use to accept code completion suggestions, allowing you to write SQL even faster. To use this feature, first enable the setting to insert suggestions when a context-dependent key is typed, and then specify the characters that will cause the code to be added. This feature can be especially useful when using operators.
Support for external databases shared via data catalog in Amazon Redshift
External databases shared via data catalog are now supported. Their content is now introspected and completion is available for them.
Support for Redis Stack module commands
IntelliJ IDEA Ultimate 2024.1 now supports commands from the four main Redis Stack modules: RedisJSON, RediSearch, RedisBloom and RedisTimeSeries. This support includes the ability to send commands from these modules and see their results, as well as proper highlighting for commands from these modules. Additionally, keys of types provided by these modules are displayed in the database explorer.
Separate folder for JSON documents
JSON documents are displayed in a dedicated folder. You can view their values in the data viewer, and you can specify their JSON paths. Keys of types provided by other modules, such as RedisTimeSeries and RedisBloom, are displayed under the data structures folder.
Web development
Quick documentation improvements
The quick documentation popup has been upgraded to support syntax highlighting for code blocks. In TypeScript, it now provides additional information, such as interface members, enum constants, and type alias bodies. By clicking Show more, you can expand the full list of type members and navigate to referenced types. You can also easily navigate between multiple declarations of interfaces, type aliases, enums, functions, and other entities using the paging control at the top of the dialog.
Quick-fixes for React props and state creation
IntelliJ IDEA Ultimate 2024.1 introduces several new quick-fixes for React that let you create props and states seamlessly. You can apply these quick-fixes using the shortcuts Alt+Enter (Windows/Linux) or ⌥↩ (macOS).
Language Services widget
There’s a new Language Services widget available on the status bar. It provides insights into the active language services for the current file and project, and it also offers an easy way to restart services or navigate to their settings.
User experience
Endpoints tab in Search Everywhere
We’ve enhanced the Search Everywhere dialog by introducing an Endpoints tab that appears in projects where URL search results are relevant. This tab is automatically included when the IDE detects Spring, Micronaut, Ktor, or Quarkus technologies in your project.
Code completion for HTTP headers
The IDE now provides code completion for HTTP headers in all common scenarios, such as with Spring WebClient and REST Assured tests. When an expected value is encountered, a completion popup appears automatically.
Optimized JSON schema processing
We’ve optimized JSON schema validation and completion, resulting in faster performance and reduced memory consumption. In real-life files with Azure Pipelines, schema inspections are now 1,000% faster.
We value your feedback on the latest IDE enhancements. If you’re keen to influence the future of IntelliJ IDEA, we encourage you to participate in the Early Access Program for version 2024.2, set to kick off shortly. Don’t miss your chance to explore upcoming features and help define the next major release – subscribe to our blog to stay up to date with all the latest IntelliJ IDEA news.
Happy developing!