{"id":227791,"date":"2020-12-14T19:53:26","date_gmt":"2020-12-15T03:53:26","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/java\/?p=227791"},"modified":"2020-12-14T19:53:26","modified_gmt":"2020-12-15T03:53:26","slug":"java-on-visual-studio-code-update-november-2020","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/java\/java-on-visual-studio-code-update-november-2020\/","title":{"rendered":"Java on Visual Studio Code Update \u2013 November 2020"},"content":{"rendered":"<p>Welcome to the update of Java on Visual Studio Code for November. In this update, we are excited to announce a new wizard for Java runtime configuration. Back to September, we published a <a href=\"https:\/\/devblogs.microsoft.com\/java\/about-upgrading-to-java-11-for-vs-code-for-java\/\">blog<\/a> clarifying: 1) Java 11 as minimum version of JDK is only required for running VS Code for Java; 2) VS Code continuously supports projects with JDK version 1.5 or above. In that blog, we also shared how to configure JDKs for your project and for running VS Code for Java respectively, which requires you to manually configure two settings in \u2018settings.json\u2019 file. Although the manual approach works, we are aware that improvements in overall experience are still needed, which results in the implementation of Java Runtime Configuration Wizard.<\/p>\n<h3>Java Runtime Configuration Wizard<\/h3>\n<p>Java runtime configuration wizard is part of <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=vscjava.vscode-java-pack\">Java Extension Pack<\/a>. Make sure you have the extension pack installed. As a side note, we strongly recommend installing the extension pack or <a href=\"https:\/\/code.visualstudio.com\/docs\/java\/java-tutorial#_coding-pack-for-java\">Coding Pack for Java<\/a> for your Java development on VS Code. For details, please check <a href=\"https:\/\/code.visualstudio.com\/docs\/java\/java-tutorial#_setting-up-vs-code-for-java-development\">here<\/a>.<\/p>\n<h4>Load project into workspace<\/h4>\n<p>Click menu: <strong>Files<\/strong>-&gt;<strong>Open Folder\u2026<\/strong>\u00a0or <strong>Files<\/strong>-&gt;<strong>Open Workspace\u2026<\/strong> to load project into workspace. When you see a thumbs up icon <a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Thumbup2.png\"><img decoding=\"async\" class=\"alignnone wp-image-227813\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Thumbup2.png\" alt=\"Image Thumbup2\" width=\"29\" height=\"21\" \/><\/a> on status bar, your project is loaded.<\/p>\n<h4>Open the wizard<\/h4>\n<p><strong>Ctrl+Shift+P<\/strong> to launch command palette and then use command \u201c<strong>Java: Configure Java Runtime<\/strong>\u201d to launch the wizard.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227799\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview.png\" alt=\"Image JDK config wizard overview\" width=\"3000\" height=\"1920\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview.png 3000w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview-300x192.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview-1024x655.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview-768x492.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview-1536x983.png 1536w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/JDK-config-wizard-overview-2048x1311.png 2048w\" sizes=\"(max-width: 3000px) 100vw, 3000px\" \/><\/a><\/p>\n<h4>Configure project JDK<\/h4>\n<p><strong>Project JDKs<\/strong> tab on the wizard configures JDK for project. When your project uses Maven or Gradle, <strong>WorkSpace Overview<\/strong> lists the language version set by the build tool; <strong>Maven\/Gradle Projects<\/strong> lists all eligible JDKs installed in your environment per the language version and also allows you to specify a JDK for your project.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227793\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view.png\" alt=\"Image Project JDKs view\" width=\"1868\" height=\"538\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view.png 1868w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view-300x86.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view-1024x295.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view-768x221.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDKs-view-1536x442.png 1536w\" sizes=\"(max-width: 1868px) 100vw, 1868px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227792\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection.png\" alt=\"Image Project JDK selection\" width=\"1150\" height=\"567\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection.png 1150w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection-300x148.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection-1024x505.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Project-JDK-selection-768x379.png 768w\" sizes=\"(max-width: 1150px) 100vw, 1150px\" \/><\/a><\/p>\n<h4>Configure JDK for running VS Code for Java<\/h4>\n<p><strong>Java Tooling Runtime <\/strong>tab allows you to specify runtime to run VS Code\u2019s Java language tools, a.k.a. the Java Language Server. The tab only lists Java 11 or above JDKs installed in your environment, as required by the language server. Please, remember to reload VS Code to make change effective.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227802\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1.png\" alt=\"Image Java Tooling Runtime\" width=\"1867\" height=\"473\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1.png 1867w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1-300x76.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1-1024x259.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1-768x195.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Java-Tooling-Runtime-1-1536x389.png 1536w\" sizes=\"(max-width: 1867px) 100vw, 1867px\" \/><\/a><\/p>\n<h4>Install JDK<\/h4>\n<p><strong>Installed JDKs <\/strong>tab lists all JDKs in your environment found by the wizard.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227803\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs.png\" alt=\"Image Installed JDKs\" width=\"1869\" height=\"611\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs.png 1869w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs-300x98.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs-1024x335.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs-768x251.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Installed-JDKs-1536x502.png 1536w\" sizes=\"(max-width: 1869px) 100vw, 1869px\" \/><\/a><\/p>\n<p>To facilitate installing new JDK when needed, <strong>Install A JDK<\/strong> section offers multiple options.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227805\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK.png\" alt=\"Image Install A JDK\" width=\"1898\" height=\"842\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK.png 1898w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK-300x133.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK-1024x454.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK-768x341.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Install-A-JDK-1536x681.png 1536w\" sizes=\"(max-width: 1898px) 100vw, 1898px\" \/><\/a><\/p>\n<h3>Other Enhancements<\/h3>\n<h4>Automatically infer selection range from cursor position<\/h4>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=redhat.java\">Language Support for Java(TM) by Red Hat<\/a> is able to infer selection range from cursor position now. As a result, expressions can be extracted and proposed by VS Code automatically for refactoring.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Infer-selection.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227795\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Infer-selection.gif\" alt=\"Image Infer selection\" width=\"1024\" height=\"768\" \/><\/a><\/p>\n<h4>Support exporting JAR through custom task<\/h4>\n<p>Project manager for Java now supports exporting JAR through custom task, which allows you to have fine-grained control on how JAR can be exported for your project.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227794\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task.png\" alt=\"Image Exporting JAR using custom task\" width=\"1937\" height=\"1354\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task.png 1937w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task-300x210.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task-1024x716.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task-768x537.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2020\/12\/Exporting-JAR-using-custom-task-1536x1074.png 1536w\" sizes=\"(max-width: 1937px) 100vw, 1937px\" \/><\/a><\/p>\n<p>You can configure custom task by clicking menu: <strong>Terminal-&gt;Configure Tasks\u2026<\/strong> and then selecting the exporting JAR task for your project. You can run custom task by clicking menu: <strong>Terminal-&gt;Run Task\u2026<\/strong>, selecting <strong>Java,<\/strong> and then selecting the exporting JAR task.<\/p>\n<h3>Try it out<\/h3>\n<p>Please don\u2019t hesitate to give it a try! Your feedback and suggestions are very important to us and will help shape our product in future.<\/p>\n<ul>\n<li>Learn more about <a href=\"https:\/\/code.visualstudio.com\/docs\/languages\/java\" target=\"_blank\" rel=\"noopener noreferrer\">Java on Visual Studio Code<\/a>.<\/li>\n<li>Explore our step by step <a href=\"https:\/\/code.visualstudio.com\/docs\/java\/java-tutorial\" target=\"_blank\" rel=\"noopener noreferrer\">Java Tutorials on Visual Studio Code<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In this update, we are excited to announce a new wizard for Java runtime configuration. The wizard streamlines JDK configuration experience for your project. Please, try it and let us know how you like it. In addition, we share two enhancement features, 1) infer selection range from cursor position and 2) export JAR through custom task.<\/p>\n","protected":false},"author":26010,"featured_media":227822,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,8,15],"tags":[248,741,568,749,12],"class_list":["post-227791","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-open-source","category-vscode","tag-java","tag-java-11","tag-jdk","tag-project-management","tag-visual-studio-code"],"acf":[],"blog_post_summary":"<p>In this update, we are excited to announce a new wizard for Java runtime configuration. The wizard streamlines JDK configuration experience for your project. Please, try it and let us know how you like it. In addition, we share two enhancement features, 1) infer selection range from cursor position and 2) export JAR through custom task.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/227791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/users\/26010"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/comments?post=227791"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/227791\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media\/227822"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media?parent=227791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/categories?post=227791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/tags?post=227791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}