IntelliJ IDEA 2019.1 is released! Theme Customization, Java 12 Switch Expressions, Debug inside Docker containers, and more
We are excited to announce the first major update of this year – IntelliJ IDEA 2019.1 is released! This massive update comes with an impressive list of new features and improvements, make sure to check them out on the What’s new page that we’ve prepared for you!
This blogpost should give you a broad overview of the main new features that this update has to offer.
- Brand new themes and official support for themes customization!
For more details, see the Themes section of the What’s new page.
- IntelliJ IDEA comes with support for the Java 12 Preview feature – Switch Expressions JEP 325. Learn more.
- Extract variable refactoring has been improved, and now it preserves semantics even better than before.
- In the ternary expressions, the IDE now precisely highlights only the condition in which a nullability violation is detected.
- We have significantly improved the analysis of mathematical operations and now the IDE can track the value of remainder, multiplication and right shift operation.
- The IDE can now automatically infer the purity of constructors from sources.
- There is the ability to configure variable names for auto-generated try/catch blocks.
- Navigation from a Java stack trace to the relevant position within a line.
- The IDE can now detect duplicated switch branches and provides a quick-fix to merge such branches.
- You can now move switch statements and catch blocks up or down using “Move Statement Up/Down”.
- It is now possible to import and export Structural Search patterns to and from the clipboard.
To learn more, visit the Java section of the What’s new page.
- The build and run actions are delegated to Gradle by default for new projects.
- The delegation of build and run actions to Gradle can be set for each Gradle project individually.
- HotSwap works when build actions are delegated to Gradle.
- The built-in version of Gradle has been upgraded to v4.10.3.
- There is a the ability to run JUnit parameterized tests using the Gradle test runner.
- Proper selection of a Gradle test task to run from the editor.
- The Gradle Tool Window can display the structure of a multi-module project, the same way as it would if you were to run the ‘gradle projects’ command.
For more details, see the Gradle section of the What’s new page.
- HotSwap works when build actions are delegated to Maven.
- The only bundled Maven version is now v3.3.9, we do not bundle Maven 2 with IntelliJ IDEA anymore.
- Now there is the Build Tool window that lets you view all the Maven output related to the build in one place.
- With improved Maven diagrams, you can now view conflicting dependencies or duplicate dependencies, see neighbors of the selected nodes only or the paths to the selected nodes, and preview the diagram without a border.
For more details, see the Maven section of the What’s new page.
Version Control Systems
- Fixup and Squash actions are now available from the context menu of the VCS Log tab providing you with the ability to quickly create commits with the fixup! and squash! commit messages.
- It is now possible to cherry-pick the files right from the VCS log using the context menu.
- You can now see the availability of incoming and outgoing commits for the individual branches in the Branches popup, if the ‘Mark Branches that have incoming/outgoing commits in the Branches popup’ option is enabled.
- New “Recently Deleted” node in the Shelf tab displays all the recently deleted files and provides you with the option to restore any recently deleted shelved files.
- There is now a mode to view author initials for VCS annotations.
- New “Uncheck all” checkbox in the Diff pane of the Commit Changes dialog for Git Partial commits to select and unselect all the code chunks at once.
- In the Project view, the IDE now marks the files and folders ignored via Git ignore with an olive color.
To learn more, visit the Version Control section of the What’s new page.
- You can now copy-paste text to a Blank Diff window with a drag-n-drop of the file.
- It is now possible to view the difference by char unit in the Diff Viewer.
- The Diff Viewer now allows you to select via the Swap Sides option which file will be displayed on the left and which will be on the right.
For more details, see the Diff Viewer section of the What’s new page.
Recent Locations Popup
- It is possible to view all the recently visited or changed code locations using the brand new “Recent Locations” navigation popup (Cmd-Shift-E / Ctrl-Shift-E). Learn more
- The debugger evaluator now supports synchronized statements, assert expressions, and switch statements.
- It is now possible to step out of the current block while you are debugging a Java project using the new action “Step Out of the block”.
- You can now invoke the run to cursor action with a mouse, simply click on the line number you need while you are in the debug mode.
Find more details in the JVM Debugger section of the What’s new page.
- Error highlighting, implicit hints, and GoTo / Quick Definition / Quick Documentation actions are now supported for ‘For-comprehensions’.
- Find Usages can now be invoked on implicit definitions, apply / unapply methods, for-comprehension methods, and Single Abstract Method (SAM) types.
- It’s now possible to decompile compiled Scala files to Java.
- You can now use a custom version of the Scalafmt formatter.
- HOCON format support is now provided by a dedicated plugin.
- Error highlighting has been substantially improved: partial unification, constructor highlighting, better-monadic-for compiler plugin (implicit0 feature), kind-projector (value level polymorphic lambdas), simulacrum (higher-arity type constructors) and more.
- Support for Java-style Lambda syntax of Groovy 3.0
- Groovy intentions and inspections work properly inside the lambda body.
- Ability to debug Java-style lambdas.
For more details, see the Groovy section of the What’s new page.
The bundled Kotlin plugin has been updated to v1.3.21
- You can create the main method without parameters by using the ‘main’ live template.
- A new intention action that suggests adding an “Async” suffix to a function returning ‘Deferred’.
- A new intention for converting SAM as lambda to an anonymous object
- String conversion improvements.
For more details, see the Kotlin section of the What’s new page.
- The intention to convert function with Promise to async/await.
- Updated documentation for CSS and HTML.
For more details, visit the WebStorm What’s new page.
- It’s now possible to debug a Java application running inside a Docker container. Learn more.
- The ability to load a custom resource specification from external sources.
- Chart rename refactoring can be done in Helm resource files.
Find more details in the Kubernetes section of the What’s new page.
- There is a new option to export all your code style settings to JSON. You can use all exported code style settings further for custom integrations with external tools.
- The ability to enable soft-wraps depending on file type is possible.
- The option to assign the Ctrl+Y shortcut to the “Delete Line” or the “Redo” action through the Keymap Configuration Dialog on the first usage, on Windows.
- A pre-configured Sublime Text keymap is now available in the IDE.
- You can use the VSCode keymap in IntelliJ IDEA by installing the brand new VSCode Text keymap plugin.
Find more details in the Editor section of the What’s new page.
Spring Cloud Stream
- The IDE now provides it’s well-known editing support for Spring Cloud Stream: syntax highlighting, code completion, inspections, and quick-fixes.
- The binder name completion is now available for values and references in the application.properties or application.yml files.
- Navigation between the bound consuming and producing message handlers is now available through the icon in the gutter.
See more details in the Spring Cloud Stream section of the What’s new page.
- Navigation to template fragments referenced in the ‘th: replace’ and ‘th: include’ attributes.
- Rename refactorings for the included and replaced fragments.
- Code completion now works for the included and replaced fragments.
For more details, jump over to the Thymeleaf section of the What’s new page.
- IntelliJ IDEA 2019.1 includes all changes from Android Studio 3.3. Learn more.
- With IntelliJ IDEA 2019.1, you have early access to IntelliJ IDEA with the new JetBrains Runtime 11. We will keep publishing IntelliJ IDEA with both JetBrains Runtime 8 and JetBrains Runtime 11.
- Support for new databases: Greenplum, Vertica, and Apache Hive.
- The connection dialog has a new look.
- The ability to specify an SQL query which will be run each time you establish a connection.
- New keep-alive and auto-disconnect options.
For more details, visit the Database Tools section of the What’s new page.
- The global menu support on Linux is no longer an experimental feature; it’s now fully supported in IntelliJ IDEA.
- The IDE now supports Eclipse Concierge OSGi framework.
- The plugin settings are now searchable in IntelliJ IDEA, even if a plugin is not bundled with the IDE and just installed manually, the settings will still appear in the search results.
This is quite a long list of the highlights, but while we were busy adding all these new shiny features, we haven’t forgotten about quality and stability, we continue to fix various bugs, performance issues, and make usability improvements. Overall this new major update fixes more than 1700 issues! You can find the full list of all the addressed issues in the release notes. We want to heartily thank all of you who have voted for issues, submitted features requests, and shared your thoughts and suggestions on Twitter and here in the comments! We always appreciate your feedback and please keep it coming!
Now it’s time – download IntelliJ IDEA 2019.1!