idea与eclipse,到底哪个更适合新手使用呢

在近期公司实行的正版化政策下,我原本使用的JetBrains教育版IDE因商业开发限制而无法继续使用,这迫使我踏上了寻找替代IDE的探索之旅。经过一番比较,最终我决定采用轻量级的Visual Studio Code(以下简称VS Code)作为新的开发工具。

关于各种IDE的对比分析,这里不再详细展开,包括Eclipse、NetBeans、Spring Tools Suite等,每个选择都有其独特的优势,适合不同的开发需求。

众所周知,VS Code是一款轻量级的通用编辑器,其功能主要依赖于丰富的插件扩展。然而,网络上大多数关于VS Code插件的推荐文章都是针对前端开发人员的,这对于其他类型的开发者来说并不完全适用。

面对这一挑战,我不得不逐一尝试各种插件,经历了一轮又一轮的筛选过程,最终成功筛选出几十款适合我的插件。

虽然筛选出了所需的插件,但手动安装几十个插件显然既繁琐又不便于维护。

幸运的是,VS Code提供了一个名为Extension Pack的插件功能,专门用于将多个插件集合在一起。安装一个Extension Pack即可自动安装包内的所有插件,大大简化了安装过程。

VS Code提供了一套基于nodejs的工具,用于辅助开发者创建扩展。官方文档中提供了详尽且易于理解的说明以及丰富的samples,包括Command、Color Theme、Tree View等,本文将以此为基础,展示如何创建一个Extension Pack。

在开始之前,确保已经安装了nodejs和Git。以MacOS为例,可以通过Homebrew安装nodejs:

然后,通过npm安装Yeoman和VS Code Extension Generator:

使用Yeoman生成一个新的Extension Pack

在生成过程中,系统会询问是否要将当前已安装的扩展安装到新的Extension Pack中。如果选择Yes,可能会遇到错误提示。

这是因为我的VS Code并不是通过命令行安装的,如果需要使用code命令,就需要通过命令行安装VS Code,然后重新执行yo code命令。

在MacOS上,可以通过Homebrew安装VS Code:

brew cask install visual-studio-code

当然,也可以选择不自动安装已有扩展,同样可以顺利进行后续的配置。

通过Yeoman工具,我们配置了nameidentifierdescription等基本信息,并且工具自动生成了一个本地git仓库。工程目录结构如下:

  • CHANGELOG.md:用于发布变更记录,在Visual Studio Code Marketplace的详情页中有该文件的链接。
  • README.md:在Visual Studio Code Marketplace的扩展详情页中,作用类似于GitHub Page。
  • package.json:扩展的manifest文件,定义了扩展的相关属性。
  • vsc-extension-quickstart.md:针对生成的工程中文件的简易说明文档。

作为Extension Pack类型的VS Code扩展,只需要维护package.json文件即可。该文件中的各项字段可以参考VS Code的官方文档Extension Manifest。

微软关于插件打包发布的详细说明可以参考文档Publishing Extensions。

微软提供了vsce这款命令行工具,方便开发者进行打包和发布:

安装完成后,cd到工程目录下,进行打包生成.vsix文件

注意版本号,应根据package.json文件中的version字段来设置,version必须是major.minor.stage的格式。

package成功后,需要去VS Code创建一个publisher。推荐通过浏览器访问management page创建,这样更加直观。

也可以通过vsce命令行创建,具体操作详见Create a publisher。

有了publisher后,就可以进行publish操作了。同样,在management page页面,通过上传.vsix文件的方式即可。当VS Code校验通过后,扩展就会发布到Visual Studio Code Marketplace。

publish操作同样可以通过vsce命令行进行,具体操作详见Log in to a publisher。

插件安装完成后,还是需要逐一去配置调试的,这个无法自动化,毕竟各人的喜好不同。不过,大多数插件都是开箱即用的。

作为开源的轻量级通用编辑器,VS Code的Java开发体验确实不如JetBrains,但和Eclipse一样,胜在开源免费,所以还是可以满足基本需求的。