IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
IntelliJ IDEA EAP 6: Automatic Migration From Java EE to Jakarta EE, Shared Indexes for Spring Boot Projects, and More
IntelliJ IDEA 2021.2 EAP 6 is now available! You can get the new build from our website, through the free Toolbox App, or as a snap (for Ubuntu).
In this final EAP before Beta, we have focused on some framework-specific updates. These include a new refactoring to simplify and speed up the migration of Java EE usages to Jakarta EE, automatic download of shared indexes for new Spring Boot projects, microservices diagrams, and more. This build also conveniently groups on-save actions in one place and offers a reworked structure view for diagrams.
Let’s learn more about the new features.
Frameworks and technologies
Automatic download of shared indexes for new Spring Boot projects
Shared indexes help to reduce the indexing time and how long it takes to open a project. Starting from this EAP, IntelliJ IDEA will automatically download the shared indexes of your JDK and Maven libraries when creating a new Spring Initializr project. The checkbox controlling this behavior is located on the second screen of the new project wizard.
This option is unavailable if you have disabled Shared Indexes in Settings/Preferences | Shared Indexes.
Automatic migration from Java EE to Jakarta EE
If you want to migrate a project or module from Java EE to Jakarta EE, you can do so quickly and painlessly with the new Migrate refactoring. To initiate migration, go to Refactor | Migrate …, indicate whether you want to migrate the whole project or a particular module, and click Run. The Refactoring Preview will then appear, showing all the found usages of Java EE imports. When you have checked through and are ready to finalize the process, click Do Refactor.
Support for JPA Entity Graph
With JPA 2.1, you can define an Entity Graph with the @NamedEntityGraph annotation, which allows you to specify a unique name and the attributes (@NamedAttributeNode) that will be included upon loading the entity. When working with the attributes in the editor, you can use code completion, detect and fix errors, and quickly navigate 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. You can use @Cacheable, @CachePut,and @CacheInvalidate in Micronaut. The value of each annotation refers to a particular cache. It is possible to navigate between cache name usages via the gutter icons. When you need to find cache usages, you can use Find usages. The Rename refactoring also works for cache identifiers.
Better microservice navigation support in JavaScript and TypeScript
We’ve significantly improved navigation for URLs in JavaScript and TypeScript, both on the client-side and server-side.
For client-side code, the following improvements are available:
- If you work with Angular or AngularJS, you can use completion for the endpoint URLs detected in the project in HttpClient and $http methods.
- For Axios, completion works for the endpoint URLs in the methods of a new Axios instance.
For server-side, Express users can enjoy these updates:
- Route handlers are shown in the Endpoints tool window
- It is possible to search for Express route declarations via Navigate| URL Mapping….
Microservices diagram
You can now display interactions between microservices in a diagram. You can invoke this diagram by clicking the Services diagram icon in the top-right corner of the Endpoints tool window.
If you click on an arrow that connects the blocks in the diagram, IntelliJ IDEA will open the Find tool window, where you’ll be able to track which client calls a particular service. It is also possible to navigate to this call in your code.
The diagram is available in Java and Kotlin projects if you use Spring, Micronaut, Quarkus, or Helidon frameworks.
The Microservices diagram is our initial attempt to present how microservices are connected. We’d appreciate your feedback!
Protocol Buffers plugin maintained by JetBrains
Protocol Buffers is Google’s cross-platform library for serializing structured data. The dedicated Protocol Buffers plugin now comes out of the box with IntelliJ IDEA Ultimate, and the JetBrains team will fully maintain it. We want to thank the previous maintainer – Jeremy Volkman – for working on this plugin.
If you are using IntelliJ IDEA Community Edition, you can still download and install Protocol Buffers via Preferences/Settings | Plugins | Marketplace.
gRPC endpoints displayed in the Endpoints tool window
IntelliJ IDEA Ultimate now supports the gRPC framework. In this EAP, we introduced the first feature for working with it – the gRPC endpoints display in the Endpoints tool window. Stay tuned as more features are coming in future versions.
User Experience
Diagrams structure view
Diagrams in IntelliJ IDEA have become easier to use! The Structure view now shows a map of your diagram with a small preview of the selected block and its neighbors. It’s really helpful when you’re working with huge diagrams that contain dozens of elements. The new Structure view supports scaling, canvas moving, magnifier mode, layout change, and exporting into an image.
Actions on save
Did you know that you can customize how IntelliJ IDEA behaves when saving a project? Some of these on-save actions were already available via the ⌘S / Ctrl+S shortcut.
In this EAP, we’ve gathered all possible on-save actions together in Preferences / Settings | Tools | Actions on Save. You can easily configure all of them there – just tick the checkbox next to the necessary action, and IntelliJ IDEA will trigger it on any save, including autosave and explicit save actions.
You can also adjust the settings for any action more precisely. To do so, hover over it, click the configuration link, and fine-tune this action on the related settings page that appears.
These were the crucial changes introduced during our final EAP week. All the other updates included in EAP 6 can be found in the release notes. You can test our new features and share your thoughts in the comments below. If you have any problems, please report them to our issue tracker.
Happy developing!