1 vs code
也是刚刚接触 vs code,但是一见钟情。
最近在试着使用 nim language,推荐用 vs code,就试用了一下,然后一发不可收拾。于是有了一个大胆的想法,干脆全部转到 vs code 上来吧,现在的情况是什么呢?前段用 webstorm/sublime,java 用 idea,python 用 pycharm, ruby 用 rubymine, c# 用 vs express,多麻烦啊。
vs code 其实就是的编辑器,是个马甲,但是各种语言都可以实现对应的插件,包装成一个 ide,这很好,很先进!最最最关键的是,开源,免费!
1.1 什么是 ide
集成开发环境(ide,integrated development environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
如微软的visual studio系列,作为 c++/c# ide;
java 的 ide 如 eclipse 和 intellij idea。
1.2 vs code 是个编辑器
vs code 并不是一个 ide,它是个编辑器,是个有理想的编辑器,可以通过相应语言的插件,将其包装成一个 ide。
vi 也是一个编辑器,很多程序员就是使用 vi 来做开发,构建用独立的工具,比如 make,ant,maven,gradle 等等。ctags 用来对源代码中的符号建索引。。。。
那么对于程序员来说,怎样的编辑器来算是好用的呢?
- 打开文件,方便快捷,语法高亮,美观!
- 编辑:增删改查,丰富快捷
- 符号:符号定义查询、跳转,符号引用….
- 依赖管理:自动导入依赖包
- 分析:类结构,继承关系…….
- 自动提示 …..
- 其他高级特性。。。
上述特性里面,有些是 vs code 可以做的,有些是必须由插件来完成的。比如符号和依赖管理等跟语言特征相关的,那就必须由相应语言的插件来完成,你不能在使用 vs code 时,因为代码无法跳转到definition,就骂 vs code 不智能。
2 java
尽管 idea 体验也很不错,但有时还是感觉太臃肿了,不够流畅。
当然,必须承认 vs code 肯定无法匹敌 idea 所提供的完整特性,对于初学者来说,idea/eclipse 绝对是必经之路。然而,作为程序员,我们也必须清楚,设计是一种取舍,idea 提供的无微不至的保姆一般的图形界面,终将会显得友好但啰嗦,会有那么一天,你成熟了,长大了,就嫌她啰里啰嗦了。
2.1 java support extensions
https://code.visualstudio.com/docs/languages/java
按照官方文档,老老实实的安装好 java 相关的 extensions。
简单来说:
vs code java ide =
1
2
3
|
编辑器:vs code 构建工具: maven/gradle 语言支持:eclipse ™ jdt language server |
2.2 language support for java(tm) by red hat
有些功能如:
- 代码补全: code completion
- 自动导入: organize imports
- 代码跳转: code navigation
等等!很显然,vs code 不会提供这些语言级别的特性,这也是为什么 jetbrains 有那么多产品的原因:
intellij idea - 一套智慧型的java整合开发工具,特别专注与强调程序师的开发撰写效率提升
- phpstorm 7.0 发布,php 集成开发工具
- pycharm 3发布,智能python集成开发工具
- rubymine -rubymine 是一个为ruby 和rails开发者准备的ide,其带有所有开发者必须的功能,并将之紧密集成于便捷的开发环境中。
- webstorm8.0 发布,智能html/css/js开发工具
vs code 通过 extension 来提供相应的 ide 特性,对于 java 来说,language support for java(tm) by red hat 这个 extension 就是干这个事情的。
provides java ™ language support via eclipse ™ jdt language server, which utilizes eclipse ™ jdt, m2eclipse and buildship.
2.3 什么是 jdt
jdt 叫做 eclipse java development tools
the jdt project provides the tool plug-ins that implement a java ide supporting the development of any java application,
再看看 jdt core 都提供了哪些 vs code 需要扩展的功能:
- a java model that provides api for navigating the java element tree. the java element tree defines a java centric view of a project. it surfaces elements like package fragments, compilation units, binary classes, types, methods, fields.
- a java document model providing api for manipulating a structured java source document.
- code assist and code select support.
- an indexed based search infrastructure that is used for searching, code assist, type hierarchy computation, and refactoring. the java search engine can accurately find precise matches either in sources or binaries.
- evaluation support either in a scrapbook page or a debugger context.
- source code formatter
需要注意的是,该 extension 使用了 eclipse ide 相关的实现。当生成一个新的 java 项目时,比如通过 mvn 来 generate 一个helloworld 项目:
mvn archetype:generate -darchetypegroupid=org.apache.maven.archetypes -darchetypeartifactid=maven-archetype-quickstart -darchetypeversion=1.3
然后用 vs code 打开项目目录,会看到项目目录中会随之生成几个文件和目录:
1 .settings
1.1 org.eclipse.jdt.core.prefs
1
2
3
4
5
|
eclipse.preferences.version= 1 org.eclipse.jdt.core.compiler.codegen.targetplatform= 1.6 org.eclipse.jdt.core.compiler.compliance= 1.6 org.eclipse.jdt.core.compiler.problem.forbiddenreference=warning org.eclipse.jdt.core.compiler.source= 1.6 |
1.2 org.eclipse.m2e.core.prefs
1
2
3
4
|
activeprofiles= eclipse.preferences.version= 1 resolveworkspaceprojects= true version= 1 |
2 .project
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?xml version= "1.0" encoding= "utf-8" ?> <projectdescription> <name>spring-ldap-user-admin-sample</name> <comment></comment> <projects> </projects> <buildspec> <buildcommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildcommand> <buildcommand> <name>org.eclipse.m2e.core.maven2builder</name> <arguments> </arguments> </buildcommand> </buildspec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2nature</nature> </natures> </projectdescription> |
3 .classpath
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<?xml version= "1.0" encoding= "utf-8" ?> <classpath> <classpathentry kind= "src" output= "target/classes" path= "src/main/java" > <attributes> <attribute name= "optional" value= "true" /> <attribute name= "maven.pomderived" value= "true" /> </attributes> </classpathentry> <classpathentry excluding= "**" kind= "src" output= "target/classes" path= "src/main/resources" > <attributes> <attribute name= "maven.pomderived" value= "true" /> </attributes> </classpathentry> <classpathentry kind= "src" output= "target/test-classes" path= "src/test/java" > <attributes> <attribute name= "optional" value= "true" /> <attribute name= "maven.pomderived" value= "true" /> <attribute name= "test" value= "true" /> </attributes> </classpathentry> <classpathentry kind= "con" path= "org.eclipse.jdt.launching.jre_container/org.eclipse.jdt.internal.debug.ui.launcher.standardvmtype/javase-1.6" > <attributes> <attribute name= "maven.pomderived" value= "true" /> </attributes> </classpathentry> <classpathentry kind= "con" path= "org.eclipse.m2e.maven2_classpath_container" > <attributes> <attribute name= "maven.pomderived" value= "true" /> </attributes> </classpathentry> <classpathentry kind= "output" path= "target/classes" /> </classpath> |
要注意: 这些文件都是 extension 自动生成的,如果目录下没有生成相应的文件,那么就会出现各种问题,jdt 相关的很多功能无法正常使用,比如符号跳转,自动导入等。
如果用 idea 打开 java 项目,同样会创建类似的文件,只不过结构和名称不一样而已。
2.4 java classpath is incomplete. only syntax errors will be reported
如果碰到该警告信息,说明 java 项目在打开过程中出问题了,缺少 .classpath .project 文件。有可能是以下原因,比如:
- jdt 相关的 extentsions 没有安装
- java 环境没有按官方说明配置
- extension 配置不完整
这种情况下,符号跳转,自动补全,导入等等功能,肯定无法正常使用。
但是使用 mvn 进行构建是没有问题的,一定要清楚,mvn 是构建工具,只要源码完整正确,有 pom.xml 文件,那么 maven 就能正常工作。
另外,发现当项目同时支持 maven 和 gradle 时,vs code 创建项目会失败,导致 classpath 相关文件无法产生。这个时候将 build.gradle 删掉,只留下 pom.xml 文件,再次打开项目文件夹,就可以了。
2.5 项目结构
如上图,正常启动的java项目,需要包含
- java projects
- maven projects
- java dependencies
其中 java projects 中包含 .classpath, .project, .settings
总结
总之,用 vs code 来作为 java ide 完全没有问题,使用过程中难免会碰到些问题,多查阅,多思考,应该能解决。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/antony1776/article/details/80298326