IntelliJ IDEA 2020.2 EAP2 Is Here with Advanced Exception Stack Trace Analysis, Emoji Support on Linux, and More
As usual, the EAP builds for IntelliJ IDEA Ultimate are free to use, but they expire within 30 days of the build date.
Analyzing the exception stack trace with dataflow analysis
To make it easier for you to investigate why a Java program is failing, we’ve supplemented exception stack trace analysis with dataflow analysis. The IDE will help you find out exactly what happened to cause the variable to have an unexpected value.
When you click on the stack trace, the IDE may navigate you to the relevant place where the exception happened (and not simply to the beginning of the line). Now, we’ve improved this feature to support more exception types, notably ClassCastException and NullPointerException (JEP-358). Also, in some cases, the IDE may suggest you start a ‘Dataflow to here’ analysis when navigating from the stack trace.
You can now filter “Dataflow to here” by target value. For example, you can specify that the target value is null, true or false, enum constant, string constant, or integer constant. In this case, the analysis will not display the paths where a given value cannot appear.
One more improvement in this area is better NPE analysis, which is made possible thanks to the implemented support of the Helpful NullPointerExceptions feature (JEP 358) introduced in Java 14. To take advantage of it, simply run your program with the XX:+ShowCodeDetailsInExceptionMessages option.
The IDE now parses new NPE messages to the exact NPE cause when possible and to move the caret to the relevant position when navigating from the stack trace to the code.
IntelliJ IDEA’s NotNull instrumentation for parameters is also supported, so even if there are several @NotNull parameters, you’re navigated to the appropriate one.
Emoji Support on Linux
The upcoming IntelliJ IDEA 2020.2 will correctly handle Unicode emoji characters on Linux😀💗💪.
Starting with v2020.2, we’ve decided to deprecate support for the JavaFX runtime in IntelliJ Platform plugins. This is because using JavaFX (via JFXPanel) for implementing UIs in Swing applications has some known limitations that have been causing performance and rendering issues.
As an alternative to JavaFX APIs, we are providing new integration with JCEF. JCEF is a Java port of the CEF framework for embedding Chromium-based browsers in applications using Swing.
We believe that JCEF is a great alternative to JavaFX, as it will provide better stability and performance. It will also make it easier to implement new features that show web content in the IDE.
Check out the release notes for the other closed tickets in this EAP build.