0 Key Highlights
Full line code completion Ultimate
IntelliJ IDEA Ultimate 2024.1 is for Java full-line code completion. This functionality is powered by advanced deep learning models that are seamlessly integrated into the IDE. It can predict and suggest entire lines of code based on contextual analysis, helping to improve coding efficiency. These recommendations are driven by proprietary language models that are specially trained for different languages and frameworks and run entirely on the local device, helping to keep data secure and without the need to communicate with external servers. This feature is included in the IntelliJ IDEA Ultimate license subscription. Learn more in this blog post .
Support for Java 22 features
Provides support for the feature set in the March 2024 release of JDK 22, with support for the final iteration of overriding unnamed variables and patterns, the second preview of string templa
tes and implicitly declared classes, and instance main
methods. Also introduced super(...)
is support for the new statement in the previous preview state. Learn more in this blog post .
New Terminal Beta
A reworked Terminal with visual and feature enhancements to help simplify command line tasks. The update brings a new look to existing tools, with commands divided into different blocks, and an expanded feature set including silky-smooth navigation between blocks, command completion, easy access to command history, and more.
Learn more in this blog post .
Sticky lines in editor
Sticky lines have been introduced in the editor, designed to simplify working with large files and exploring new code bases. This feature pins key structural elements, such as the beginning of a class or method, to the top of the editor when scrolling. This will keep the scope in view and you can click on pinned lines to quickly browse the code.
1 User experience
1.1 IDE functionality available for Java during indexing
Basic IDE features like code highlighting and completion are now available for Java during project indexing, which should enhance your startup experience. Additionally, you can use Go to class and Go to symbol to browse the code while the project is still loading .
1.2 Updated New Project Wizard
To reduce your cognitive load when configuring a new project, we’ve fine-tuned the layout of the New Project wizard. The language list is now in the upper left corner, making the most popular options more visible.
1.3 Options for shrinking the entire IDE
You can now shrink the IDE to 90%, 80%, or 70%, giving you the flexibility to resize IDE elements.
2Java
2.1 Language injection in string templates
IntelliJ IDEA 2024.1 introduces the ability to inject language into string templates. You can use annotations, which automatically select the required language, or you can use the Inject language or reference intent action (⌥Enter) to manually select the language from a list. If you use the latter method, the IDE will suggest that you insert language annotations. After performing the injection, you can invoke the intent action list again and choose to open and edit the injected fragment in a standalone editor pane.
2.2 Improved logging workflow
Because logging is an important part of daily development. Easily navigate from log messages in the console to the code that generated them. Additionally, the IDE suggests adding loggers where needed and simplifies inserting logger statements even if the logger instance is out of scope.
Learn more in this blog post .
2.3 New checks and quick fixes
Implement new checks and quick fixes for Java to help you keep your code clean and error-free. For clarity, the IDE now detects bitwise operations that can be replaced with calls to Long.hashCode()
the or method. Double.hashCode()
Additionally, new quickfixes simplify switching between implicit and explicit class declarations based on the requirements of your codebase. Another new check recommends using existing static methods for matching code snippets, allowing code to be easily reused without introducing additional APIs. Additionally, the IDE can now detect and report inaccessible code that is never executed.
2.4 Enhanced user experience through multi-version JARs
IntelliJ IDEA 2024.1 provides an enhanced user experience through multi-version JAR libraries. When using classes with different versions, the Go to declaration feature now selects the correct version from the JAR based on the language level of the current module. Additionally, the Go to class feature provides additional information about the class version. When you use Step Into during debugging , the IDE takes you to the class that corresponds to the JDK version rather than the module language level.
2.5 Reworked Conflicts Detected dialog
The Conflicts Detected dialog has been redone to improve readability. The code in the dialog box now reflects the content in the editor, giving you a clearer understanding of conflicts, and the IDE automatically saves window resizes for future use. Additionally, we’ve updated the buttons and their behavior to simplify refactoring workflows, and dialog boxes are now fully keyboard-accessible, allowing you to interact seamlessly using shortcuts and arrow keys.
2.6 Rename (rename) refactoring embedding prompts
To make the renaming process easier and more intuitive, we’ve implemented a new embed hint that displays on changed code elements. To update all references in the repository to the new version, click this prompt and confirm the changes.
3 version control system
In-editor code review
IntelliJ IDEA 2024.1 introduces an enhanced code review experience for GitHub and GitLab users with the implementation of a new review mode. This feature is integrated with the editor to facilitate direct interaction between authors and reviewers. When checking a pull/merge request branch, review mode is automatically activated and a pink mark appears in the gutter area indicating that code changes are available for review. Clicking on these markers will bring up a popup showing the original code, so you can quickly identify which code has been changed. Staple area icons help you quickly start new discussions, as well as view and hide existing discussions. The icons also provide users with easy access to comments, making it easy to view, reply, and react to them. Learn more about this change in our blog post .
Show option to review branch changes in Log tab
IntelliJ IDEA 2024.1 simplifies code review workflows by providing a centralized view of branch-related changes. For GitHub, GitLab and Space, you can now view changes in specific branches in a separate Log tab in the Git tool window. To do this, click on the branch name in the Pull Requests tool window and select Show in Git Log from the menu .
Support for responding to code review comments
IntelliJ IDEA 2024.1 begins to support responding to review comments on GitHub pull requests and GitLab merge requests, with a set of emojis available.
Status of CI checks in Git tool window
We ‘ve introduced a new column in the Log tab of the Git tool window that allows you to easily review the results of GitHub commit checks performed by your CI system.
Create pull/merge request from push notification
After a change is successfully pushed to the version control system, the IDE will now publish a notification to remind you that the push was successful and recommend the action of creating a pull/merge request.
Visual indicator of pending GitHub updates
We introduced visual indicators to prompt pending updates in the code review workflow. When there are changes that require your attention, a dot appears on the tool window’s icon. Unviewed pull requests will also be marked with a dot, ensuring you don’t miss updates during the code review process.
Prevent large files from being submitted to the warehouse
To help you avoid version control rejections due to files that are too large, the IDE now includes pre-commit checks that prevent you from committing such files and notify you of the limit.
Allow unrelated histories merge option
A new Allow unrelated histories option has been added to the drop-down menu of the Merge into dialog box. When selected, this option allows merging two branches even if they have no common history.
Branch filter on the History tab in the Git tool window
In the Git tool window, the Show all branches button has been replaced with a branch filter that allows you to review changes made to files within a specified branch. We also reoriented the toolbar, placing it horizontally to improve usability.
Stash tab in the Commit tool window
For users who rely on hiding to store temporary uncommitted changes, we ‘ve introduced a dedicated tab in the Commit tool window for easy access . If you use both Stashes and Shelves, you can enable the combined Stashes and Shelves tab via the corresponding checkbox in Settings /Preferences | Version Control | Git.
Option to exclude folders and files from comparison
In the Difference Viewer, you can specify folders and files to ignore in the comparison, focusing only on meaningful changes. Right-click on the file or folder you don’t want to see in the comparison results and select Exclude from results from the context menu .
Improved search in Branches popup
In the Branches popup, you can filter search results by operations and repositories for faster and more precise navigation in your version control system.
The Git tab has been removed from the Search Everywhere dialog
After analyzing usage statistics, we removed the Git tab from the Search Everywhere dialog by default. If you want to bring it back, you can use Show Git tab in Search Everywhere in Settings/Preferences | Advanced Settings | Version Control . Git tab) checkbox.
4 Build tools
Improved opening speed for Maven projects
IntelliJ IDEA now pom.xml
builds project models by parsing files. This allows a valid project structure to be obtained in seconds and a complete project model with all dependencies to be built simultaneously in the background, allowing you to start working on your project without waiting for a full sync.
Support for Maven Shade plugin rename workflow
In the IntelliJ IDEA 2024.1 version, we have added the much-anticipated support for the Maven Shade plugin renaming feature. IntelliJ IDEA now recognizes rename workflows, providing accurate code highlighting and navigation when working with shaded JARs and their dependencies.
Access source files directly from the Quick Documentation popup
The Quick Documentation popup now provides an easy way to download source code. Now, when viewing the documentation for a library or dependency and need to access its source code, just press F1. The updated popup will provide a direct link you can use to download the required source files, simplifying workflow.
Maven repository in Maven tool window
The list of Maven repositories and their indexing status is now displayed in the Maven tool window instead of the previous location in Maven settings.
Gradle version support update
Starting with this release, IntelliJ IDEA no longer supports projects using Gradle versions earlier than 4.5, and the IDE will not perform Gradle synchronization on projects with unsupported Gradle versions.
5 Run/Debug
Inline breakpoints for multiple statements
IntelliJ IDEA 2024.1 provides a more convenient workflow for setting breakpoints on lines containing lambda functions or return statements. After you click the binding area to set a breakpoint, the IDE automatically displays inline markers where you can set additional breakpoints. Each breakpoint can be configured independently, unlocking advanced debugging capabilities.
PreviousNext
Folding library calls in the call stack
Library calls are now collapsed by default in the call stack in the Debug tool window, helping you stay focused when browsing your code. However, if you need to verify the sequence of library calls, you can expand the group and explore the frames accordingly. To display the list, use the Filter icon in the toolbar or call the context menu and disable the Hide Frames from Libraries option.
Conditional statement coverage
Version 2024.1 brings IntelliJ IDEA one step closer to achieving comprehensive test coverage. This update focuses on identifying which conditional statements in your code are not fully covered by your tests. IntelliJ IDEA now displays both which row has an uncovered condition and also specifies the uncovered condition branch or variable value. This feature is enabled by default and can be controlled in Settings/Preferences | Build , Execution, Deployment | Coverage.
Code coverage settings moved to main IDE settings
Code coverage settings have been moved from the Run Configuration popup to Settings/ Preferences | Build, Execution, Deployment | Coverage. With this change, you don’t have to update the configuration individually for each test run to select coverage runners or enable advanced features, such as tracking which tests cover specific lines of code.
PreviousNext
Simplified import of JaCoCo test coverage reports
It’s now easier to import, browse, and analyze code coverage data collected by JaCoCo runners in CI/CD pipelines. If reports are not displayed in the Coverage tool window, a direct link to import JaCoCo reports will now be displayed. We’ve also updated the window’s toolbar and added an import icon that allows you .exec
to retrieve JaCoCo reports as files.
6 Frameworks and Technologies
Improved Bean completion and autowiring Ultimate for Spring
IntelliJ IDEA Ultimate now provides autocompletion for all beans in the application context and autowires beans. If the bean autowires dependencies through the constructor, the related fields are also autowired through the constructor. Likewise, if a dependency is @RequiredArgsConstructor
injected via a field or Lombok’s annotation, the new bean is automatically wired via the field.
PreviousNext
Enhanced Spring Chart Ultimate
We’ve made Spring model diagrams more accessible. You can make the call using bean line tags or using intent operations (⌥⏎) on Spring classes. We’ve introduced new icons for Spring diagrams to enhance the visualization of Spring prototypes such as components, controllers, repositories, and configuration beans. Additionally, you can now easily toggle the visibility of beans in the library (hidden by default).
PreviousNext
HTTP client improvementsUltimate
The HTTP client in version 2024.1 provides more authentication options, including PKCE authorization codes and device grant flow. In addition to automatically handling code_challenge
the generation and delivery of token retrieval during PKCE requests code_verifier
, it supports additional parameters for token and authentication requests. The HTTP client is upgraded to Netty’s underlying network library to implement SSL, proxy and HTTP/2 support, helping to promote the implementation of HTTP/2. In addition, the toolbar of the HTTP client has been redone to be consistent with the style of the new UI, providing a more beautiful and coordinated appearance.
The Endpoints tab in Search EverywhereUltimate
We’ve enhanced the Search Everywhere dialog box by introducing the Endpoints tab that appears in items related to URL search results . Currently, the IDE automatically includes this tab when it detects the presence of Spring, Micronaut, Ktor, or Quarkus technologies in the project.
Code completion Ultimate for HTTP headers
HTTP headers can now be easily completed in all common scenarios, such as using Spring WebClient and REST Assured testing. A completion popup appears automatically when an expected value is encountered.
Optimized JSON schema processingUltimate
We’ve optimized the code behind JSON schema validation and completion. As a result, the IDE can now handle these tasks faster and consume less memory. In real-world files using Azure Pipelines, schema checks are now 10x faster.
PreviousNext
Quarkus UpdateUltimate
We’ve introduced a new settings editor for Quarkus run configurations. The Run/Debug Configuration dialog now provides an improved UI for Maven and Gradle projects, allowing users to easily access commonly used settings such as Run profile and Environment variables. You can easily access the Quarkus Dev UI through an icon added to the Run tool window toolbar.
PreviousNext
Support for OpenRewriteUltimate
IntelliJ IDEA Ultimate 2024.1 integrates OpenRewrite, which expands the IDE’s existing refactoring capabilities and gives you a toolkit for improving code quality, consistency, and maintainability. With OpenRewrite’s resources, you can modernize legacy code, optimize performance, and handle complex migration tasks, such as upgrading to a new Spring Boot version.
PreviousNext
WireMock server supports Ultimate
We implemented WireMock support via a plugin, which you can install from within the IDE or obtain from the JetBrains Marketplace . This integration includes schema completion for JSON configuration, the ability to generate WireMock stub files from the Endpoints tool window, and a built-in run configuration that allows you to launch the server directly from the editor. New functionality simplifies web UI and microservice development by letting you quickly create test data servers or stubs.
Enhanced Terraform support for Ultimate
IntelliJ IDEA Ultimate 2024.1 brings improved Terraform support to help simplify the process of creating, managing and scaling infrastructure. The IDE now terraform init
simplifies initialization by explicitly recommending running and provides expanded code completion for more than 3,900 third-party Terraform providers. In addition, the IDE introduces support for Terraform Template Language (tftpl), enabling dynamic templates that can be seamlessly integrated with your preferred programming language. You can find more details in our blog post .
7 Database Tools
Local filtering in data editorUltimate
This release introduces the long-awaited local filtering functionality in the data editor. Now you can quickly filter rows based on column values without sending a query to the database. This local approach only affects the current page, but if the scope needs to be expanded, the page can be resized or all data extracted. To disable all local filters, deselect the specified Enable Local Filter icon.
Conversation SimplificationUltimate
IntelliJ IDEA Ultimate 2024.1 simplifies query execution by eliminating the need for manual session selection. To attach a file, you simply select the data source, not the session. Additionally, launching a function no longer requires selecting a session, you can now choose to run the function directly from the console or a file. These changes are designed to minimize the tool’s learning curve, reduce unnecessary steps, and enhance overall usefulness.
Follow me and keep up with this series of columns, we will continue with the next one!
About the author: A technical expert from Modu, with first-line R&D experience in the back-end of many major manufacturers. He has many years of research and practical experience in distributed systems and big data systems. He has developed big data platforms and infrastructure from zero to one. Experience, rich practical experience in distributed storage, data platform architecture, data warehouse and other fields.
Top expert bloggers in major technical communities. He has rich experience in leading teams and has profound accumulation of business structure and solutions.
Responsible:
- Central/distribution reservation system performance optimization
- Event & coupon and other marketing center construction
- Architecture and development design of trading platform and data center
- Internet of Vehicles core platform-Internet of Things connection platform, big data platform architecture design and optimization
Currently, he focuses on reducing software complexity, designing and building high-availability systems.