Support for Java 12 Switch Expressions and so much more!

What’s new in IntelliJ IDEA 2019.1?

Eirini-Eleni Papadopoulou
IntelliJ IDEA
© Shutterstock / Krasimira Nevenova  

Time to welcome the general availability of IntelliJ IDEA 2019.1! This release brings the much-anticipated support for theme customization, as well as support for Java 12 Switch Expressions, debugging inside Docker containers and more!

It’s been less than a week ago since the release candidate for IntelliJ IDEA 2019.1 was announced and now the stable release is here!

IntelliJ IDEA 2019.1 brings a truly extensive list of new features of improvements.

Those of you who have been following our thread so far are already somewhat familiar with what this release brings. Regardless, let’s take a closer look at some of the most interesting highlights.

Before we go into the most technical details, it is worth noting that one of the changes brought by the new release is the much-anticipated support for theme customization.

So buckle up and get ready to be creative!

What’s new in IntelliJ IDEA 2019.1?


  • Java 12 Switch Expressions (Preview) support: The IDE can detect any ‘switch’ statements that can be replaced with an enhanced ‘switch’ statement or expression, and it will provide a quick-fix for the conversion. The IDE will also detect duplicate branches in ‘switch’ and offer a quick fix to merge them. This is all just the tip of the iceberg.
  • Extract variable refactoring enhancements: Significantly improved and it now preserves semantics even better than before.
  • Precise warning highlighting in ternary expressions: Only highlights a condition in which a nullability violation is detected (whereas previously it highlighted the whole ternary expression, even when the nullability was only violated in a single branch).
  • Improved analysis of mathematical operations: The data flow analysis can track the result of mathematical operations and uses this information to warn you about conditions that are always true or false.
  • Inference of constructor’s purity from sources: It can now automatically infer the purity of constructors from sources.
  • Navigation from Java stack trace to the relevant position within a line: When you click on the Java stack trace, the IDE will try to determine the exact location within the row to take the cursor to. Previously it would only take you to the first column of the corresponding row.
  • Duplicated switch branches detection: The IDE can now detect duplicated switch branches and provides a quick-fix to merge such branches.

SEEL ALSO: Modern development with JetBrains IDEs


  • Delegation of build and run actions to Gradle set per Gradle project
  • Proper selection of a Gradle test task to run from the editor
  • HotSwap works when build actions are delegated to Gradle or Maven


  • Maven build output reported to Build tool window
  • Improved Maven Diagrams


  • Ability to debug inside Docker container – Now you can attach the debugger to a Java application running inside a Docker container. The IDE now allows debugging inside containers that are built from a Dockerfile or created using Docker compose (docker-compose.yml).


  • External resources support: You can now load a custom resource definition specification from external sources. Currently, this is only possible from local files. To add the specifications, go to Preferences/Settings | Languages & Frameworks | Kubernetes and add the path to the custom resource definition specification.
  • Chart rename refactoring in Helm resource files: Now it’s possible to use the Rename refactoring in the chart of the Helm resource template files. Please note that you need to install the Go template plugin to enable this support for Helm resource template files.


  • The Kotlin plugin bundled with the IDE has been updated to v1.3.21
  • Live Template to generate ‘main’ without parameters
  • String conversion improvements
  • New intention for converting SAM as lambda to an anonymous object
  • Intention action to improve coroutine code

JavaScript & TypeScript

  • New intentions for JavaScript destructuring
  • Intention to convert function with Promise to async/await
  • Updated documentation for CSS and HTML
  • Improved JavaScript debugger console

Check out the official release notes to find out more about the extensive list of new features and improvements. 

Eirini-Eleni Papadopoulou
Eirini-Eleni Papadopoulou was the editor for Coming from an academic background in East Asian Studies, she decided that it was time to go back to her high-school hobby that was computer science and she dived into the development world. Other hobbies include esports and League of Legends, although she never managed to escape elo hell (yet), and she is a guest writer/analyst for competitive LoL at TGH.

Inline Feedbacks
View all comments