JetBrains taps machine learning for full-line code completion
JetBrains has laid out a 2020 roadmap for IntelliJ IDEA and its IntelliJ-based IDEs. The promised new capabilities range from additional machine learning driven code completion to collaborative editing.
The company said the additional machine learning based code completion capabilities would make better use of the context for ranking completion suggestions and generate completion variants that go beyond a single identifier to provide full-line completion. Considered a major area of investment, full-line completion may take a while to appear in the product.
JetBrains already had been exploring the use of machine learning for code completion, and some results of that research have made their way into products. IntelliJ now uses machine learning to improve the ranking of completion variants, and language plug-ins tag each produced completion variant with different attributes. IntelliJ also uses machine learning to determine which attributes contribute to item ranking so the most-relevant items are at the top of the list.
In addition to machine learning based code completion, JetBrains cited a multitude of improvements to IntellIj for 2020, subject to change. These include:
- Collaborative editing support. Users would connect their IDEs to a primary system as “thin clients,” which would not require direct source code access. Each user would have their own state, with a set of open files, caret position, a completion variants list, and other capabilities.
- Expanded use of the IDE as a lightweight text editor. A dedicated mode for editing non-project files also is being developed.
- Two modes of integration with Git. Developers would be able to switch between a new UI that supports the staging area but not changelists, and the current UI based on changelists. Combining the two does not seem feasible.
- Easier onboarding and environment setup and configuration. The system would take care of installing Git, the Java Development Kit, and so forth.
- Deeper cloud integration.
- A redesigned project model to remove current limitations such as lack of support for arbitrary mixing of projects of different types. Benefits would include faster project opening and smoother synchronization with Maven and Gradle.
- Improved indexing performance as well as making indexing less-disruptive. Users also would be notified about indexing anomalies.
- A redesign of the read/write locks thread model to tackle the issue of UI freezes.
- More discoverable refactorings during autodetection. One example is adding the possibility to detect changes in the declaration of a method and adjust usage accordingly.
- Support for loading and unloading most plug-ins without a restart. The intent is to have an IDE that right-sizes itself for each project. Spring projects, for example, would only be loaded with plug-ins that use Spring.
- The addition of Code Vision capabilities for displaying rich contextual information in the code editor. This capability already has been featured in JetBrain’s Rider IDE for .NET.
- Localization of IntelliJ-based IDEs in Asian markets, with initial support for Chinese Simplified and support for Korean and Japanese to follow.