Today we are happy to open the Early Access Program for the next major release of IntelliJ IDEA – v2020.1. We are kicking off the new decade with a host of new improvements, check out all the details in this post!
As always, you can download the new EAP from our website, get it from our free Toolbox App, or update using snaps if you’re an Ubuntu user.

Let’s get right to the point! Here’s what’s new in the IntelliJ IDEA 2020.1 EAP:
JDK
Download JDK from the IDE
Imagine you are starting a new preconfigured project (Spring/Maven/Gradle, etc.) or a plain, simple Java project and you need to add a new JDK. With IntelliJ IDEA 2020.1 this will no longer be such a chore, as you can now download, extract, and set up a JDK right from the New Project wizard:

Once you have configured and created an application, the IDE will automatically download and set up the chosen Java version, allowing you to jump straight into coding without having to switch contexts.
Similarly, when you open an existing project, IntelliJ IDEA automatically checks whether there is already a suitable JDK available on your machine. If not, the IDE will suggest downloading one:

Note that you can now also download and configure Java when you’re setting up a Project Structure (File | Project Structure) in an existing project, and you can configure the Gradle JDK (Preferences / Settings | Build, Execution, Deployment | Build Tools | Gradle).
Support for Java 14
The IntelliJ IDEA 2020.1 EAP adds support for Java 14, which is also still in its Early Access stages and is planned for public release in March 2020.
This first EAP build allows you to play around with some of the new Java features, such as Records and Pattern Matching.
Records
With this first EAP, you can create Java Records right from the New Java Class popup (Cmd+N/Ctrl+N from the Project tool window) just like you would for usual classes and interfaces:

In addition to the code insight features, such as code autocompletion and navigation, the IDE allows you to quickly generate a canonical or custom constructor and it will notify you about any existing errors:

Note that support for Records is still a work in progress, and some of the features, such as the code formatter, refactorings, and quick documentation will be added later in future EAP builds.
Pattern Matching
IntelliJ IDEA now also supports pattern matching of instanceof that will be included in Java 14. In this first EAP build, the IDE already provides full code insight support including inline renaming (Refactor | Rename or Shift+F6) of pattern variables. There’s also a new inspection and a quick-fix that enables you to quickly simplify the verbose instanceof-and-cast idioms with the new and concise pattern variables:

Editor
Quick Type Definition
With v2020.1, not only can you quickly view the definition of a variable, field, method, or any other symbol (View | Quick Definition), but you can also quickly view its type definition. To do so, put the caret on the desired symbol, then go to View | Quick Type Definition:

The IDE doesn’t have a default keyboard shortcut for this action yet, but you can manually set one up in the Preferences / Settings | Keymap.
Improved Navigation Bar
The Navigation Bar (View | Appearance | Navigation Bar) now displays methods in Java classes and interfaces, making it much easier to navigate between them:

And as a minor improvement, Quick Documentation now appears on mouseover by default. You can disable this option in Preferences / Settings | Editor | General.
UI improvements
JetBrains Mono font by default
IntelliJ IDEA and other IntelliJ-based IDEs are now using the brand new JetBrains Mono font (Preferences / Settings | Editor | Font) as their default. Learn all the details about this new beautiful typeface from the dedicated resource on our website.
Unified IntelliJ Light theme
The default light theme is now unified across all the different operating systems and is called “IntelliJ Light”. If the new theme doesn’t take your fancy, you can quickly roll back to the older default one for your OS: go to View | Quick Switch Scheme | Theme, and choose the OS_NAME Light theme (e.g. macOS Light for Mac).
Git
Branches popup
- The Branches popup now features an explicit search field that enables you to look for existing remote and local branches. Previously, you could find specific branches just by starting to type, but the absence of the explicit search field made this option unclear and rarely used.
- 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:

New “Interactively Rebase from Here” dialog
We have given Interactively Rebase from Here a substantial rework. This is a dialog that allows you to edit, combine, and remove your previous commits in order to make your commit history more linear and comprehensible.
To invoke this dialog, go to the Log tab of the Git tool window, select the oldest commit in the series of commits you want to edit, right-click it, and choose Interactively Rebase from Here:

And here’s what now opens in v2020.1:

Unlike the previous dialog, which was basically a list of available actions for the chosen commits, the new dialog is truly interactive. It features a nice graph that shows the actions you applied to each commit, it shows the commit details, and it allows you to see the diff and quickly reset the applied changes. Try it out and let us know what you think!
Other improvements for Git:
- The Version Control tool window is now called the Git tool window, or Subversion/Mercurial/Perforce if you are using any of these instead of Git.
- When you check out a new project from Version Control, the IDE will assist you with downloading and setting Git up if you don’t already have it on your machine.
Build tools
Maven and Gradle importing updates
v2020.1 makes the importing of Maven and Gradle changes less obtrusive. First of all, we’ve removed the annoying auto-import that used to always trigger, as well as the balloon that used to constantly show up and suggest importing updates before you’d finished updating the script. Instead, there’s now a floating notification in the upper-right part of the editor that will prompt you to load the changes:

You can now also use the shortcuts Ctrl+Shift+O for Windows and Linux /Shift+Cmd+I for Mac to load the changes.
If there are any external changes to the build scripts, such as VCS updates or edits made outside of the IDE, IntelliJ IDEA will reload the related projects automatically.
We’ve also removed the option to enable/disable auto-import from the settings, as the improvements mentioned above have made it redundant.
JetBrains Runtime
JBR8 End of Support
With v2020.1 EAP we are fully moving to JetBrains Runtime 11 (JBR11), and will no longer distribute builds with JetBrains Runtime 8 (JBR8). Please note that all the IntelliJ IDEA 2020.1 updates both in the IDE and the Toolbox App are coming with JBR11.
Please note that there’s a known issue with patch-updating JDK11 builds on 32-bit Windows and Linux machines, which should be fixed in one of the upcoming EAP builds: IDEA-229379.
Ultimate
Code insight for R2DBC, reactive SQL clients for Micronaut and Quarkus, and other 3rd-party libraries
IntelliJ IDEA has been long providing language injection for editing SQL strings used with the standard JPA and JDBC queries, but it used to treat 3rd-party SQL libraries as usual strings. Starting with v2020.1 the IDE automatically injects SQL fragments for popular 3rd-party libraries, such as R2DBC, providing code autocompletion and navigation for SQL statements and fields:

Similarly, we added full code insight support for reactive SQL clients (Vert.x SQL Clients) in Micronaut and Quarkus:

The list of supported libraries includes Apache DbUtils, Apache Spark SQL, R2DBC, Vert.x SQL Clients, Fluent JDBC, JDBI, Sql2o, Jodd DbQuery, jasync-sql, and jOOQ.
URL code completion for Android Volley
IntelliJ IDEA now supports the Android Volley library, and provides code autocompletion for URL path references, as well as code navigation to the related resources. For instance, if you are using Spring Boot as a backend for your Android app, the IDE will suggest existing URL paths in the autocompletion list (Ctrl+Space), and will enable you to navigate to the related controller or endpoint:

Check out the full release notes for the exact list of closed tickets.
Give this first EAP build a thorough try, and please share your feedback with us here in the comments, in our issue tracker, or on Twitter.
That is it for today. We’ll keep publishing the EAP builds for v2020.1 with more fixes and improvements each week. Stay tuned!
Happy Developing!
Could you please add some CDN support for jetbrains maven repository in China, because the jdk, jbr and jetbrains SDK download speed is really terrible!
Could you specify how you download all the artefacts? JB’s resources are already distributed via CDN.
One thing you neglected to mention is that if you’re using an in-house wrapper for SQL queries, it’s easy to have IntelliJ recognize that as well.
I’m really looking forward to the JRE/JDK 11 as the default environment for IDEA! I’d like to start developing plugins targeting release 11 too. Anyway, I think 2020 will be a positive year! Congrats.
Are we able to disable “Load changes” button and rather leave it to be automatically done when there are some new changes?
No, IntelliJ IDEA will no longer load manual changes automatically to avoid importing build scripts in inconsistent state (e.g., not all dependencies are added etc.).
But it will load automatically changes coming from VCS updates, branch switches and in other situations, when build scripts (pom.xml’s) are expected to be correct
Lowercase ‘u’ and ‘v’ in new font are indistinguishable making whole font unusable.
Something must not be right on your end, because they are very distinguishable on my end. u is curved and v comes to a very crisp point.
@Maccimo – you may want to check your setup, because those two letters are clearly distinguishable even at type sizes much smaller than would typically be used.
Awesome updates as usual.. Also, what happened to the dark toolbar on mac? It seems I can’t enable it back.
Yes, that option was removed, but feel free to vote for https://youtrack.jetbrains.com/issue/IDEA-227986
Thanks!
@PaulH
Problems visible even on screenshots in this article.
Letter ‘u’ in new branded font has no vertical line at the right bottom and this fact make it harder to distinguish from ‘v’. Uppercase letters is big enough to have no such problem.
The ‘u’ shape was the first issue I reported when I started using the new font. However, after a few days, I get used to it, and now I like it. I’m using JB Mono for several months already and I don’t remember I ever mixed ‘u’ and ‘v’
Love it!
Hi,
unfortunately, 2020.1 EAP 1 (re-)introduced the errors using play!framework (v1.x) that were present in all 2019.3 EAP builds [1]. This got fixed in the final 2019.3 though.
It looks like it’s the same problem:
Reference element is not the same element for which references were queried
java.lang.RuntimeException: Element: com.intellij.psi.impl.source.PsiPlainTextFileImpl; reference: com.intellij.play.references.PlayControllerActionPsiReferenceProvider$ControllerPsiReference; reference element: com.intellij.psi.impl.source.tree.PsiPlainTextImpl
at com.intellij.psi.PsiReferenceServiceImpl.assertReferencesHaveSameElement(PsiReferenceServiceImpl.java:47)
at com.intellij.psi.PsiReferenceServiceImpl.getReferences(PsiReferenceServiceImpl.java:23)
at com.intellij.psi.search.SingleTargetRequestResultProcessor.processTextOccurrence(SingleTargetRequestResultProcessor.java:32)
[…]
I reported it here: [2].
Refs:
[1]: https://blog.jetbrains.com/idea/2019/10/whats-new-in-intellij-idea-2019-3-eap8/#comment-505465
[2]: https://ea.jetbrains.com/browser/ea_reports/5380442
Thank you for the report! The issue was found and fixed, and will be available in one of the upcoming v20201. EAP builds!
Great, thank you!
I just upgraded to EAP version. It gets stuck on splash screen after starting it on my Windows 10 machine. On Linux I got at least the EAP Licence agreement popup and after approving it the progress bar appeared on the splash screen. After that IntelliJ IDEA started OK. Any idea why can’t I run it on Windows? Any logs that I can look at?
Sadly I can’t start IntelliJ IDEA after upgrading to this EAP. It gets stuck on the splash screen on my Windows box. On linux it asks for EAP licence agreement (not sure why again?) and after clicking the popup out it starts up. Any idea why? Any logs that I can look at?
Hi! I filed a new issue to investigate your problem: https://youtrack.jetbrains.com/issue/IDEA-231502
Please, attach logs folder from IDE config path: ~system drive~\Users\~user name~\.IntelliJIdea2020.1\system\log
You can restrict visibility of attachment or comment: see
Providing sensitive datasection under https://intellij-support.jetbrains.com/hc/en-us/articles/207241135-How-to-follow-YouTrack-issues-and-receive-notificationsHm, I can start it up properly now. I downgraded to 2019.3.2 in the meantime. And after upgrading again I can start it properly. Not sure if it was fixed in the meantime or my PC fixed somehow 😀 Anyway, thanks for the support.
These updates are brilliant! Thanks a million. One minor thing – there used to be a preference to set the cursor blink rate and setting it to 0 meant that the cursor didn’t blink anymore. I can’t seem to find this preference in 2020.1.
Thanks.
I see polishing in many locations; it looks like this could be a great release! I’m also loving the new Git interactive rebase dialog, but it seems to be missing the squash option. Also, as already mentioned somewhere, selecting multiple commits and choosing fixup doesn’t seem to honor all of them. Keep up the good work!
Thanks for the kind words!
> it seems to be missing the squash option
Squash and Fixup are similar actions, the difference is in commit-message. So we wanted to make a combined action that will squash/fixup depending on the user choice but it has not been implemented yet. So the option to squash will be back in future updates
> Selecting multiple commits and choosing fixup doesn’t seem to honor all of them
Known issue – https://youtrack.jetbrains.com/issue/IDEA-231025
I’m very confused about the new Interactivly Rebase dialog.
normally we squash all our commits before we merge a feature branch.
but with the new dialog i don’t know how to squash all my commits into one :-/
Squash and Fixup are similar actions, the difference is in commit-message. So we wanted to make a combined action that will squash/fixup depending on the user choice but it has not been implemented yet. So the option to squash will be back in future updates
Previously, the _Local Changes_ were displayed in a separate tab on the _Version Control_ tool (now _Git_).
Now, they seem to be shown in a dedicated _Commit tool_, which is confusting me.
Any way this could be changed?