主讲人介绍

李榕

首席软件开发经理,微软亚太科技有限公司

所在的团队隶属于微软C+AI事业部,该团队服务于广大Java开发者,在Visual Studio Code中为他们提供轻量、快速的Java开发体验。

活动前言

活动名称

VS Code 中的 Java 语言实战

活动日程

为什么要用VS Code写Java?

如何安装

VS Code Java能做什么?

功能演示

应用场景展示

飞速代码导航

刷题

超强Spring Boot开发体验

远程开发

求助指南

为什么要用VS Code写Java?

首先VS Code很快:VS Code以文本编辑器的姿态出现,但能做到完美支持海量插件、理解代码、快速轻量化的启动、开发时无需频繁切换各类工具...这些优点让VS Code能在众多成熟的文本编辑器中脱颖而出,在几年的时间内就成长为一个主流开发软件。

此外,VS Code有独特的应用场景,将在后文详细描述:

飞速代码导航

刷题

超强Spring Boot开发体验

远程开发

与intellij idea相比,intellij的产品提供了极其全面的功能,但日常工作中可能只能使用到不到其20%的功能,而VS Code可以为使用者提供定制化功能,从而带来更轻量、更快速的体验。VS Code并非要取代intellij,但提供了不同的体验。

如何安装

打开VS Code

进入插件市场

搜索并安装:Java Extension Pack

在Java Extension Pack中,提供了基础java集成、基于机器学习的智能代码推荐等等功能。

VS Code Java能做什么?

代码导航与编辑

重构与排错

包/依赖管理

调试与测试

功能演示

代码导航与编辑

打开一个java项目,会自动运行java的Language Sever,如下图VS Code中的命令行显示类型。

在项目中,VS Code集成的java提供了方便的导航功能,如下。

除了查看函数定义与引用外,还提供了寻找父类等多种功能。

VS Code为不同场景下提供不同的代码只能建议,比如在if中,会提示的代码如下。这是通过机器学习得出的,在if中该对象最有可能引用什么方法/变量。

重构与排错

在项目中,VS Code为java提供了重构功能。

此外,也有Source Action如下。

在排错中,VS Code在调试台中进行报错,并提供一个“小灯泡”按钮给出改错建议。

包/依赖管理

在导航栏中,Java Dependencies提供了可视化的包管理模块。

在Outline中提供了.java文件结构的速览与导航。

调试与测试

在左侧的烧瓶按钮中,提供了对Test的调试功能。

应用场景展示

飞速代码导航

VS Code可以“轻量化”地打开一个开源java项目,不需要完全导入依赖环境,就可使用导航功能学习该项目的结构、函数间定义调用关系。

在settings.json中,可以修改开启项目的形式;调成LightWeight地模式可以轻量打开项目空间。但在该模式下,无法调试代码。

也可以在Settings搜索mode如下,选择自己所需的模式就可以。

刷题

无需建立一个完整的java项目,新建一个空项目,建立一个.java文件并在其中编写算法,就可以直接测试。结合LeetCode插件,可以很方便地利用java直接在VS Code刷LeetCode题目。

超强Spring Boot开发体验

微软C+AI事业部联合Spring Boot贡献者开发的java插件为Spring Boot提供了强大的支持。

快速类型导览:快速在Annotations,Beans,路由之间跳转;

运行时状态渲染:在代码中查看正在运行的程序里的路由以及Bean信息;

代码编辑助理:快速生成路由代码

完整的文档支持

快捷键Ctrl+T可以打开symbols过滤器,可以通过输入特定的过滤指令,如下图,是对该项目中所有Annotations的查找。

此外,还可以在运行时查看程序路由以及Bean信息。

在导航栏中使用Spring Dashboard运行程序,使用Ctrl+Shift+P或F1来输入命令manage live spring boot connections,可以激活相关功能。

远程开发

VS Code有灵活且强大的协议,分离了开发与运行的环境,且并不对开发者造成困扰。即不会受网速延迟的影响,调试感受接近本地调试体验。

利用“远程开发”迅速搭建多样化的开发环境

保持本机环境清洁如初

支持Docker、SSH、WSL

安装Remote Development插件

这是VS Code的“独特优势”,提供极其便捷、快速、清洁的远程开发、环境测试体验。

求助指南

提问、报bug:可以在github.com/Microsoft/vscode-java-pack/issues进行提问、报告bug,中文英文都可以;

圆度文档:各个插件repo里的readme等文件;

参与改进:可以阅读VS Code API官方文档。

此外,还可以加入“VS Code中文社区”,参与讨论。

文档

java常用插件如下。

问答

Q: 插件可以用在online吗?

A: 因为强大的协议,绝大部分的插件是支持的。如果遇到问题,欢迎到社区、repo中提问、报bug。

Q: 现在有些工程不是纯Java的,例如会和Scala、Kotlin这样一些基于JVM的语言混合使用,这种情况VSCode Java有考虑以后支持吗?

A: 短期内尚没有这个计划。

Q: 能否通过VSCode Java Extension开发AOSP framework代码,如何配置自定义JDK及boot jar?

A: 目前的精力集中在backend,尚未提供完整的安卓开发支持。

Q: 有类似于代码结构的展示吗?(比如说继承关系,私有之类的 )

A: 这是一个正在进行的重点工作,预计今年推出这个功能。

Q: 如何查找依赖包里的class文件呢?

A: 依赖的界面在Dependencies中直接打字,将鼠标移至显示的输入栏中,如下图;可以使用Ctrl + T进行检索。

Q: VS Code支持resin4.x吗?

A: 不支持。

Q: codespace吗?

A: VS Code 的online space,省去host服务器的管理,直接连接即可。

Q: 运行期间,可以拖拽断点调试吗?

A: 这与java本身的语言特性有关。支持一些退回调试。

Q: 基础代码怎么自动生成?

A: 可以通过java overview命令进行操作。

Q: 请问远程开发,编译时会使用哪台计算机?

A: 使用的远程服务器,远程开发相当于放了一个没有界面的VS Code在远程服务器上。

Q: 如何自动生成getter, setter?

A: 右键选择Source Actions,有getter、setter选项。

Q: 连接的时候会下一个 sever?

A: 会的。

Q: VS Code team如何看待高度雷同的IDE项目Eclipse Theia?

A: 开源社区这些都是被允许的,基于不同的idea,只要遵守法律与规则,最终受益的是整个开源社区。

Q: maven项目,maven坐标怎么向idea一样点击进去它的父pom?

A: 目前没有,欢迎到repo来提issue,描述诉求的使用场景。

Q: 请问轻量模式实际应用场景有哪些?

A: 比如快速的代码阅读。

Q: 问:有没有计划把一些常用的配置GUI化,比如常用的参数配置,remote debug,JDK切换,profile,maven setting这些,对于团队内部推广会有帮助?

A: 有这个计划,会增强上手体验。

Q: remote模式下,底层用的什么协议?安全性有保证么?

A: 取决于ssh的配置;安全性与个人配置有关。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐