June 3rd, 2024

Java on Visual Studio Code Update – May 2024

Nick Zhu
Senior Program Manager

Hi everyone, welcome to the May update for Visual Studio Code for Java! In this blog we are going to share an exciting new AI related feature for Java developers on Visual Studio Code. In addition, there will be several important Spring updates, so let’s get started.

Rewriting your Java code with Copilot-based suggestions

As our code undergoes updates and iterations, our business logic continues to grow in complexity. Meanwhile, Java versions are constantly evolving. Often, our older code can be replaced with newer, more efficient alternatives, not only improving their performance but also making the code more elegant, concise and secure. Previously, these tasks may have been done manually, but with the power of AI, many tasks can now be handled automatically.

With the release of various AI products at the Build conference 2024, we’re excited to announce an exciting update for Java developers on Visual Studio Code. In the Insider (Pre-release) version of our Extension Pack for Java, we’ve introduced a new feature: “Rewrite with new Java syntax” with Copilot! This feature integrates seamlessly with GitHub Copilot, so developers will need a GitHub Copilot license to access it.

Here’s how the feature works, on your Java class, a new CodeLens text will appear above the name of the class: “Rewrite with new Java syntax“. Once the user clicks on this, it will trigger an inspection on the current Java class. Once the inspection is complete, Visual Studio Code will show several improvement suggestions and point users to the location.

For each suggestion, additional CodeLens will appear and shows what the solution is (and what needs to be improved). The user can directly click on the CodeLens and this will bring up the GitHub Copilot inline chat dialog. The user can then see the code diff, and will be offered the choice of “Accept or “Discard”. If the user accepts the suggestion, then the workflow is over. Let’s see the first example where the for-loop can be refactored using IntStream.

For loop to instream

Let’s look at another example, where our feature suggests that a multiple if and else-if logic can be directly re-written as a switch expression. By clicking on the CodeLens text, the code can be directly re-written as the improved code.

Switch to if

Inspecting part of the class

Sometimes, we may not want inspect the whole class because the code is too complex. The feature above also supports inspecting the part of the code. We just need select the code we want to inspect, and then click on the lightbulb on the left, select “Rewrite with Java syntax”. Here’s an example:

Partial inspection

In this way, developers can inspect the code in a much more flexible way.

This feature aims to leverage AI to offer helpful suggestions and seamless refactoring for Java developers for their code. We hope this can greatly boost developer’s productivity. If you have any feedback about this feature, please open an issue on our GitHub repo!

To use this feature, developer needs to install both Insider (Pre-release) version Extension Pack for Java and GitHub Copilot extensions. (with a GitHub Copilot license).

Spring updates

JPQL syntax highlighting

The Spring Boot Tools extension now features syntax highlighting for JPQL query strings. The syntax highlighting works for @Query annotations inside of Java source files as well as for named query property files. This makes reading those query strings much easier. (screenshot JPQL query syntax highlighting)

JPQL Syntax highlighting

Add Starters directly from within `pom.xml` files

We added a clickable hint to pom.xml files of Spring Boot projects, directly  in their dependency section. This clickable hint directly invokes the support to add additional Spring Boot starter modules. This improves discoverability and usability of this feature and makes it super easy to find and use. (screenshot add pom starters)

Image thumbnail hint add starters

Dashboard shows active profiles

The Spring Boot Dashboard now shows the active profiles of a running Spring Boot application directly side by side with the port the app runs on. This is available in the pre-release version. (screenshot active profiles in dashboard)

Dashboard profiles

Automatically convert application properties to YAML and back

The Spring Boot tools now offer actions to automatically convert `application.properties` files to YAML format and the other way around. This makes the switch to your (newly) preferred format super easy. (screenshot property conversion

Convert properties

Performance and footprint improvements

The indexing infrastructure for Spring projects got improved. Previously, the mechanism was able to index about 6.5k Java source files inside of a single project before running out of memory. The latest versions can now index up to 60k Java source files instead within the same memory constraints. In addition to that the initial as well as ongoing performance of reconciling Java source files for Spring specific validations is now twice as fast as before.

Testing Coverage

In April, we released the Testing Coverage feature for our Test Runner extension in Stable version on Visual Studio Code. After release, we have received lots of positive feedback. However, we also received questions on how to use the feature. One popular question was around how coverage data can be reset for every execution.

By default, the extension will append the coverage data (we use jacoco as the coverage tool, and jacoco appends the coverage data by default)

If you want to reset the coverage data before every coverage execution, you can set the below setting:

"java.test.config": {
     "coverage": {
         "appendResult": false
     }
}

Install Extension Pack for Java

To use all features mentioned above, please download and install Extension Pack for Java on Visual Studio Code.

Extension pack for Java

If you are a Spring developer working on a Spring Boot application, you can also download the Spring Boot Extension Pack for specialized Spring experience.

Spring boot extension pack

Feedback and suggestions

As always, your feedback and suggestions are very important to us and will help shape our product in future. There are several ways to give us feedback

  • Leave your comment on this blog post
  • Open an issue on our GitHub Issues page
  • Send an email to: vscjfeedback@microsoft.com

Resources

Here is a list of links that are helpful to learn Java on Visual Studio Code.

 

 

Author

Nick Zhu
Senior Program Manager

Developer at heart

1 comment

Discussion is closed. Login to edit/delete existing comments.

  • Rahpoo 92

    Thanks for the informative post, Nick! The new 'Rewrite with new Java syntax' feature with Copilot sounds very promising. I'm particularly interested in how it can help refactor older code to use newer, more efficient Java constructs. The before-and-after examples you provided for the for-loop and if/else statement were really helpful for understanding how the feature works.

    I'm also glad to see the improvements for Spring developers. The syntax highlighting for JPQL queries will definitely make...

    Read more