IntelliJ IDEA 2019.3: Better Performance and Quality

Please give a warm welcome to IntelliJ IDEA 2019.3 – this year’s third and final major release of our flagship IDE!

With this major version of IntelliJ IDEA, we’ve focused on the performance and overall quality of the IDE. We held a quality-marathon, during which the IntelliJ IDEA team rallied together with several other JetBrains developer teams, to work specifically on polishing the IDE and make performance improvements, UI responsiveness fixes, usability enhancements, improvements in the existing functionality, and more.

To better define our priorities for this release cycle, we’ve been relying on your feedback even more than ever. We would like to say a massive thank you to everyone who has shared suggestions for improvements and reported issues to our tracker. During this release cycle, our team has managed to fix more than 1600 issues that together received a total of more than 3900 votes in our issue tracker.

We also had some ongoing projects in the works, things like support for new Microservices frameworks, e.g. Micronaut, Quarkus, and Helidon, and the long-awaited support for MongoDB.

We hope that these efforts make developing with IntelliJ IDEA even more enjoyable!

blog@2x (3)

Read further for more details.

Better performance

We’ve been working hard to improve the performance of IntelliJ IDEA and have achieved the following results:

  • Faster IDE startup
  • Overall better UI responsiveness, less UI and editor freezes
  • Reduced memory consumption, specifically on Gradle projects import

One of our main priorities for this year was to boost the start-up time. To achieve this goal we introduced a number of significant changes in IntelliJ-platform, we parallelized some of the processes that used to run sequentially, we reorganized the classes in a way that makes the initial class loading faster, we optimized the font loading on macOS, and much more.

Improving the UI responsiveness is another important area we’ve given a lot of our attention to. We have worked hard to resolve the UI freezes that occurred in various parts of IntelliJ IDEA, as nobody likes it when the user interface does not respond. We’ve made reporting UI freezes easier, and during this release cycle, we’ve been busy resolving the reports we have received (Thank you!). We were able to resolve a number of issues that were causing UI freezes in over 1600 reports.

Furthermore, IntelliJ IDEA doesn’t freeze when a regular expression pattern matches very long strings in “Find in path” or when working with a large number of editor or debugger tabs. The IDE now also renders the project tree faster.

We’ve also fixed various other editor freezes by investing a lot of effort into optimizing Java type inference. And speaking of Java performance improvements, the Java type inference for long method call chains now also works much faster. We’ve sped up code highlighting in Java files, especially when it comes to methods with generic var-args (Arrays.asList, Map.ofEntries, etc.) into which dozens of arguments are passed. The performance of the Join Lines action, when it’s invoked for many lines at once, has also improved.

We’ve bundled Kotlin plugin v1.3.60 with IntelliJ IDEA, which brings faster editor highlighting in Kotlin files too.

Performance optimizations have been made in the Version Control subsystem: we’ve managed to optimize the processing of events and the handling of ignored files. There are fewer freezes and faster status updates in large projects.

In the Build subsystem, we have managed to reduce the peak memory consumption on importing large Gradle projects. As for Maven projects, we’ve eliminated freezes when editing a pom.xml file, so the IDE now displays completion suggestions without any delay.

We’re happy with the results that we’ve been able to achieve, but we are not done yet! We plan to continue working on this, so you can expect even faster startup and more optimizations to come in the next releases.

Better quality of the existing features

IntelliJ IDEA has a rich plugin ecosystem, you have access to lots of incredible plugins through our plugin repository. However, the downside used to be that the managing plugins was a bit of a hassle, as the loading and unloading of plugins required restarting the IDE each time. Well, IntelliJ IDEA 2019.3 has addressed this issue by implementing core underlying infrastructure – support for dynamic plugin installation. This basically means that the IDE can now load and unload plugins without restarting. It is currently enabled for the theme and keymap plugins. With our future release, however, we plan to extend this to most plugins. This is one of the first steps to making plugin management as easy as possible.

A bunch of usability improvements have been made in the Version Control subsystem. To ensure clarity, we’ve improved the Git checkout workflow by removing “Checkout as action” and introducing 2 new separate actions instead: ‘New Branch from Selected’ and ‘Checkout’. The new ‘New Branch from Selected’ action creates a new branch and doesn’t set tracking. The ‘Checkout’ action silently creates a new local branch, checks it out, and sets tracking of the selected remote branch if there is no local branch with the same name.

To unify the UI for getting projects from different VCS hosting services, we’ve reworked the Clone dialog. Now you can log in from this dialog, or if you’re already logged in, the IDE will instantly preview lists of all repositories grouped by accounts or organizations.

Also, there is no need to check a branch out to push it, as there is now a straightforward way: simply find the needed branch in the Branches popup and push it. We’ve also added a file names column to the file history for renamed or moved files. One more improvement that you may find useful is the ability to force add a file to Git (or Mercurial) even if it is on the .gitignore (or .hgignore) list.

We introduced basic support for Java 13 in IntelliJ IDEA 2019.2, and with this release, we’ve significantly improved the support for Java13 Text Blocks. We recently published a blog post about these changes with more details.

A new Field Call Hierarchy action has been added. Simply use Ctrl+Alt+H (Windows, macOS, Linux), and you can view the hierarchy of a selected field. This makes everything much more straightforward.

Now, if you have the ‘Show quick documentation on mouse move’ checkbox enabled, hovering the mouse pointer over a warning or an error shows you a unified tooltip which displays the description of the warning or error and code reference information.
Previously, in such cases, the IDE displayed only the inspections tooltip instead of the documentation or sometimes it even showed 2 popups at once.

The default behavior of the intention action dialog was updated so that the intention actions will not disappear from the list of suggestions if you choose an intention action and then cancel the dialog.

The Services tool window is now always displayed and can be configured right inside itself. In addition to this, you can hide particular run configurations from this tool window.

Among other useful improvements:

  • The mismatched type tooltip was reworked to improve its readability.
  • On opening a project, IntelliJ IDEA now displays the project name.
  • Now, you can inject more template languages, specifically: Pug (ex-Jade), Handlebars, EJS, and Slim.
  • Scrolling with the mouse wheel is now smoother.
  • The scrollbar can now be made more visible thanks to the “Use contrast scrollbars” checkbox at Preferences/Settings | Appearance & Behavior | Appearance.

Support for new frameworks and technologies

Even though this release is quality-targeted, some notable features that have been in the works for a while are ready to be introduced. Please note that all the cool new things that we’ll talk about below are only available in IntelliJ IDEA Ultimate.

There had been a lot of buzz around microservices long before we started preparing for this release cycle. At some point, we thought that we could make the development process more pleasant and add support for the frameworks and technologies that are commonly used for developing Java and Kotlin projects with microservice-based architecture. Somehow, the stars aligned nicely for microservices in this release and we started working on integration.

Firstly, we added rich coding assistance and navigation for the new generation of microservices frameworks, namely: Micronaut, Quarkus, and Helidon. We also thought of those who use reactive web services on top of Spring and added support for Spring Web Flux.

Usually, microservices communicate with each over HTTP/ WebSocket, so the next step for us was to add support for the common Java HTTP client APIs such as java.net.URI / URL, Retrofit v2, OkHttp v3, as well as client libraries of popular server-side frameworks: Spring Feign, MicroProfile REST Client, etc. The great thing about this newly added support is that the IDE can now provide URL completion and navigation for HTTP/WebSocket APIs.

For the next stage, we thought we could give you a nice layout of the endpoints in your project, so we added a brand new ‘Endpoints’ tool window. This window displays the aggregated view of both client and server APIs. Gradually, this will become a central place for all your APIs, not only HTTP but also messaging, gRPC, and GraphQL.

Finally, we have added extended support for API documentation specifications. In this release, it was Swagger v2 and OpenAPI Specification v3. We hope that anyone who uses the specification-first approach in their work will enjoy having the support of validation by schema, code completion, navigation, find usages, and the rename refactoring in YAML/JSON files containing API descriptions in their IDE.

Pretty cool, right? For now, only Java and Kotlin projects are supported, but we have much bigger plans for this, and with our future release we will extend the support to more languages and frameworks.

On top of that, IntelliJ IDEA 2019.3 introduces the highly-anticipated MongoDB support. For now, it’s only initial support, but we are planning to enhance it in the future. IntelliJ IDEA now provides you with the ability to view collections and fields in the database explorer, run queries, and review query results.

Notable bug-fixes


We’ve been able to fix lots of issues, and here is a list of the most notable ones:

  • IntelliJ IDEA can now locate the directory to which Gradle has been installed when it has been installed through Homebrew.
  • It’s now easier to manually set the Gradle home directory.
  • The IDE now supports password storing via KWallet on Linux.
  • When you are working with a JavaFX project, the IDE can display an FXML file with the embedded Scene Builder in the Scene Builder tab.
  • Keyboard navigation in Debug tool window now works.
  • It’s now possible to copy a selected text from the inspection popup with Ctrl+C.
  • The focus isn’t lost when switching between the IDE windows.
  • Fixes for the windows and popup positions.
  • Invoked macOS windows are opened in dark theme when the Darcula theme is chosen in the IDE.

We’ve also updated JetBrains Runtime 11 (JBR 11) to integrate lots of fixes.

  • Fixed font rendering on macOS Catalina.
  • Fixed the issue with project opening on macOS 10.15 Catalina.
  • Repaired the symbols in the Evaluate Expression dialog.
  • Keyboard layout conflicts with OS are currently detected..
  • The issue with fonts in the editor, which were always italic, was fixed.
  • Repaired the Welcome screen on Windows.
  • The IDE now warns about IDE keymap conflicts with native OS keymap.
  • Fixed the incorrect font (italic) in the editor.

Other changes

This release also includes all the changes from Android Studio 3.5.

We’ve also unbundled Vaadin and Java Applets support plugins. Those plugins will be available in our plugin repository and can be installed manually.

We tried a slightly different approach with this release, and we hope you like the results! If you would like to dive into the full list of addressed issues, here are the release notes.

Please let us know what you think! You can reach us on Twitter, Facebook, and by leaving a comment below.

Make sure to visit the What’s New page and watch an overview video.
Get IntelliJ IDEA 2019.3 and enjoy an even more stable version of your favorite Java IDE!

Happy Developing!

About Zlata Kalyuzhnaya

IntelliJ IDEA Marketing Manager at JetBrains. twitter: @ZlataKalyuzhnay ‏
This entry was posted in Releases and tagged , , . Bookmark the permalink.

87 Responses to IntelliJ IDEA 2019.3: Better Performance and Quality

  1. Josh says:

    Great! Thanks for taking a step back and actually polishing the existing product!

  2. Petteri Pasila says:

    “It’s now possible to copy е selected text”?

    • Nikita Skvortsov says:

      We are planning to include the fix in 2019.3.1
      Currently, a workaround is available using Maven Run configurations.

  3. ADEV says:

    I noticed the changes, and it is impressive, congratulation to the team, you did an amazing good job!

    I hope this trend of performance optimization continue in the future for new features you add

    • Zlata Kalyuzhnaya says:

      Thanks for the feedback and for appreciating our work!

      For sure, we plan to continue our work in this direction!

  4. Andrey says:

    Congratulations about release!
    Like VCS changes.

    Now let’s vote for annoying issue and make JetBrains look at it :)
    😉 https://youtrack.jetbrains.com/issue/IDEA-201369

    • Zlata Kalyuzhnaya says:

      Hey Andrey! Thanks for the feedback.
      We are investigating this issue. Hopefully, we’ll be able to share more information soon. Please follow IDEA-201369 for the updates.

  5. Yosef says:

    Congratulations about release too!

    please look at one of the most voted defect
    https://youtrack.jetbrains.com/issue/IDEA-63391

    this is one of the most important issue for users that need to work with git in the way git is working…

    • Dmitry Jemerov says:

      The issue you’ve linked to is a feature request, not a defect. We’re currently starting work on a new mode of Git integration which will support staging instead of changelists. If all goes well, it will be released some time next year.

      • Yosef says:

        By defect I mean a misbehavior for those who use to work with git standard working flow.
        The fact that you are integrating this to your IDEs is a great news for all git users (now I think they are the majority :-) )
        Waiting for this to be delivered impatiently.

        BTW if the dev started, maybe the responsible developer should change the status to IN DEVELOPMENT…

        Thanks

  6. Yosef says:

    Thanks
    if you can enable the In-editor diff (not in pop-up window) as you did in
    https://blog.jetbrains.com/dotnet/2019/11/18/new-way-commit-introducing-commit-repository-tool-windows-rider-2019-3-eap/
    this would be great!

    • Dmitry Jemerov says:

      As of right now, the new version control integration UI released in Rider is not mature enough to be integrated into all other products. We plan to stabilize it and make it the default in 2020.1.

  7. James Lorenzen says:

    So I’m currently on 2019.2.3. Why doesn’t Idea automatically offer to update to 2019.3 when I have it check for updates? It offers to upgrade to 2019.2.4.

    • The IDE doesn’t know whether you a ready to experiment with a brand new major release and suggests a safer minor update first. In the future, we’re going to show all available updates in the dialog.

  8. Rui J says:

    How to bypass the SSL validation when I connect the mongodb replica? Usually there is an option say “Allow Invalid Certificate”, but I couldn’t find this option here.

  9. Artyom Popov says:

    “We’ve sped up code highlighting”

  10. André van der Heijden says:

    Thanks for the update and making the performance better!

    However, and this is pretty annoying, the getting focus back to editor does no longer work properly. After I open for example the git toolwindow (I bound this to ALT-G), when closing it, the cursor/focus does not return to the code. The same goes for all other windows. On top of this, when pressing ESC the focus does NOT return to the window. I have to actually click with the mouse in the editor, to regain the focus there.

    Could you please fix this?

    Thanks a lot.

  11. Martin says:

    Ctrl+click on module in Maven pom.xml does not work anymore (“Cannot find declaration to go to”). Anyone else has this problem?

    • Martin says:

      Actually nothing about Maven integration works as is should. Not even navigation to parent, etc. Regret I’ve uninstalled 2019.2

      • Artem Sarkisov says:

        Could you please check if this issue looks similar https://youtrack.jetbrains.com/issue/IDEA-227914? If so, could you please attach your idea.log (“Help | Show Log in…”) to the ticket and provide any additional information you see fit? We will investigate this further.

      • Janni says:

        I and my team are also having issues with Maven builds in the new 2019.3 release. We cannot build our project because the maven build endlessly builds out multi module maven project and you cannot stop the build process, you have to kill IntelliJ for that! Very annoying, this is on three machines. I will issue a bug now.

      • Larry G. says:

        The new import doesn’t handle multiple projects in the same directory like the old, more manual import did. Nor is there a way to override the automatic import with a manual one.

  12. Nevel says:

    Is Quakus an alias for Quarkus? :)

  13. Bulut C. says:

    There are indeed many great QoL improvements in this update, so congratulations to the team!

    Unfortunately there seems to be some stability issues, especially with Gradle projects/imports.
    It was quite intrusive in my case, so had to revert back to 2.4 and the issues went away.

    Nevertheless, I’m sure the team will correspond to those problems as soon as possible, so will be looking forward for newer updates!

    Cheers!

  14. Szymon says:

    Is it possible to change appearance of the title bar, as it was in 2019.2? I can’t find the option in the registry and borderless apps are really annoying for me.

  15. Paul Taylor says:

    I’ve just got the update to 2019.3 (Linux) and it is really really unstable. I continually locks up with one of the CPU cores at 100% when I’m editing files. Never had this before from any previous version on this machine (Manjaro Linux). I’ve tried rebooting but I need to kill the process after only a few minutes using it.

  16. Dennis Flottmann says:

    What would be great as a feature would be an option on the update notification window to notify for update again, when all plugins installed are compatible with the new release.
    Still all in all a great update. Thank you.

  17. bo.han says:

    When I use SVN to manage projects and restore an editable file, the changelist in version control will not immediately change the color ID, which I think is a very influential experience.

    When I started the web project with Tomcat debug, the original debug project was moved to command + 8 and Command + 5 could not be used. I think this is also a modification affecting the use experience.

    For the above two changes, I don’t know how to change to the original state, thank you!

  18. Vj says:

    Can we use client certificates with intellij http client now ?

  19. Marius says:

    Regarding “Plugin incompatible with the new build: Vue.js”.

    At the moment there is a warning on the “IDE and plugin updates” window stating: “Plugin incompatible with the new build: Vue,js”

    As I am currently using it mainly for Vue development I am curious whether there will soon be an update making it compatible with the Vue.js plugin?

    Best regards,

  20. yong il park says:

    I open intellij and my project.
    intellij start loading my source but not finish
    and display just loading…

    [[ after update 2019.2 -> 2019.3 ]]

    and 7 hour is spent for loadding but not finishing

    and I retry many time re open but not work…….

    so sad…..

  21. Peter says:

    I’d love to see a blog entry about how you identified and fixed the performance issues; what tools you used, how you idendified them, best practices, etc. I think many developers need to know this. That would be great!

  22. Leo Lozes says:

    Anyone noticing this (cosmetic) issue? https://youtrack.jetbrains.com/issue/IDEA-227237

    I’m wondering if it’s OS based, or even something like GPU related.

  23. Calin says:

    Plugins incompatible with the new build found:
    EJS
    Dart
    Vue.js
    Ideolog
    Kotlin
    Scala

    Then that’s a no from me, dawg.

    I understand the Kotlin plugin is now bundled (maybe that should be mentioned so Kotlin users don’t think they can’t upgrade), but how can a major release just break plugins for Dart, Vue.js and Scala ? Those are used by a non insignificant number of developers.

    Even if most Dart is for mobile and is done in Android Studio, that still leaves Vue.js and Scala as major programming languages/frameworks whose users can’t upgrade.

  24. Amy says:

    Upgrading to 2019.3 results in my entire project being broken (using Spring Boot), I’m working in Kotlin and its giving classpath errors about unresolved Java types. https://prnt.sc/q548v6

  25. Daniel Lima de Oliveira says:

    The new scrolling is AMAZING!!! Great job guys!!

  26. ThatOtherUser says:

    Anyone else having an issue getting instances to close if you have multiple instances open at once? The project closes, but the window stays open. (PopOs 19.10)

  27. Vladimir Novoseltsev says:

    Update Running Application (Ctrl+F10) shortcut have been reassigned elsewhere and is no longer working in GNOME keymap.

    • Zlata Kalyuzhnaya says:

      This is a known issue. We plan to fix it with one of the upcoming bug-fix updates for IJ 2019.3. Please follow this ticket for the update: IDEA-227897

    • Michal says:

      I have the same problem. Also changes made in Menus and Toolbars disapear when Intellij is restarted.

  28. Martin Teran says:

    How do you stop the filename from showing above the navigation bar in full screen? It’s super redundant with the navigation bar and editor tabs already there.

    • Arseniy Nisnevich says:

      > above the navigation bar in full screen

      Could you explain in more details what place do you mean? What OS do you use?

  29. ux says:

    Why there is no “Use dark windown headers” or “Use light window headers” option?

    • Arseniy Nisnevich says:

      Hello. This option was removed, and now the header color inherits from selected Look and Feel.

      • tubliPoiss says:

        really sad this option was removed. Currently looking at my grey osx bar, then black intellij, and then darcula, it looks so unusual and the black bar is very disturbing. I’m regretting that i immediately upgraded and have postponed updating on my other laptop.

        Wonder how long it’ll take to get used to this or if the option comes back :/

      • ux says:

        really sad this option was removed…

  30. Marc says:

    Where is the Debug window gone?

    The “Services” window is actually un-usable!!

    * everything needed is moved out of the screen (Debug Stepper, Exception Breakpoints, etc.)
    * it is totally unclear if my Tomcat server is running in debug or run mode with this new view
    * the deployment status of the Tomcat WebApps is hard to figure out

    Additionally I am compiling continuosly with Ctrl+F9 and still get continuous “The bytecode is out of sync with the source”, which I did not have with 2019.2.

    So I am currently by 90% blocked from working from this IntelliJ desaster.

    For me 2019.3 is a complete desaster. I am going to switch back to Eclipse now until you get a working version out.

    How can I revert to 2019.2? This was working fine…

    I am actually totally angry about this update.

    • Marc says:

      About Performance:

      The “Run/Debug Configurations” view/window is as horrible slow as before in 2019.2. In my environment it takes very long (30 seconds or so) to reach the tab “Tomcat/Server->Startup/connection->Debug – set Debug port or edit startup script etc.

      No change since 2019.2 – and my colleagues have this, too.

    • Konstantin Aleev says:

      Hello, Marc

      I apologize for any inconvenience these issues may have caused you.

      At first, if you find services tree occupying too much space, you can hide the tree by switching off ‘Show Service Tree’ option (Ctrl+Shift+T, or Cmd+Shift+T on Mac). You can find the option by clicking the gear button (Show Options Menu) at the top right corner of the tool window.

      Application servers are shown in Services tool window by default. If you still find it inconvenient, you can return your server to Run/Debug tool windows by invoking ‘Delete’ on corresponding server type node in the Services tree. It impacts only current project.
      You can also setup types available in Services by default for all new projects:
      – close the project, Welcome screen will appear
      – click on Configure and select ‘Run Configuration Templates for New Projects’ in the drop down
      – in the opened dialog select ‘Templates’ node
      – add/remove types from the ‘Configurations available in Services’ list in the right part

      • Evgeny says:

        And I should also add to your advice:

        8: Services -> Right click on a service that you want to reappear in normal Debug view instead of Services -> Delete…

        Then my Tomcat appeared in Debug again.

        • Jason says:

          I tried this, but when I delete my tomcat server from the services list, it deletes my Debug Configuration. So, I re-created it, and it just runs in the Services tool again, not in the Debug tool.

      • Marc says:

        Thanks a lot – I appreciate to have the Debug dialog back by deleting it from the Services dialog. This works fine :)

  31. Valery Tamashevich says:

    Struggling to find “Update Resources on Frame Deactivation” button in the new Services window. Any help will be greatly appreciated.

  32. Alexandre Verri says:

    There are great improvements, but unfortunately this beta version is so unstable that it’s impossible to use it.

  33. Chantry says:

    Micronaut support is a huge +1.

    Does this mean IntelliJ will be tackling the lack of Kapt support? Right now, you have to delegate to maven or gradle to build a Kotlin Micronaut project.

    • Dmitry Jemerov says:

      No, the IntelliJ team has no plans to work on Kapt support. Delegating to Gradle is the default option for new Gradle projects in IntelliJ IDEA.

  34. Claudio Sassa says:

    Hi guys, pretty cool stuffs, I’m newbie working in Intellij, but I have to say…is the most valuable IDE I have had opportunity to work.

  35. Carlos Olivera says:

    Hi, I’ve encountered some problems using 2019.3 when it comes to Fonts. First, it didn’t load the defaults fonts I was using in my previous version 2019.2.4. That wasn’t that problematic though, I just adjusted the fonts to match the ones of my previous configuration and that was it. The major problem was the general font (Appearance). If I change the font size (the font was correctly loaded from 2019.2.4, Cantarell) it works, but whenever I restart the IDE, the font goes automatically to 10.

    I wanted to know if it is an already reported bug. If it’s just me, do you have any pointers or ideas about this error and what can I do to fix it?

    Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *