其实就是javaSE必须要掌握的知识点,见目录
一、环境篇
1. JDK和JRE
三个概念:
JDK: java development kit(java开发工具)
JRE: java runtime environment(java运行时环境)
JVM: java Virtual Machine(java虚拟机)
a. JDK:
JDK就是我们开发人员使用的开发工具,它里面包含了JRE、JVM和基础类库。所以编程的话只需要安装JDK,配置环境变量,path路径就可以了。
b. JRE:
JRE是运行环境,如果说我们写完的java程序需要部署到客户的服务器上运行,当然客户是不需要开发的,那我们仅安装JRE就可以,当然JRE里包含JVM,运行环境嘛,肯定要运行到JVM虚拟机上。JRE的lib目录中放了一些java类库的class文件。
c. JVM:
JVM:java虚拟机,JVM上会运行java编译的class文件,当然它在运行解释class时会调用类库还完成运行,也是因为JVM,我们的java才能完美的跨平台,因为它让java程序只需要在JVM上运行而不是操作系统平台本身。
2. 为什么要配置PATH环境变量
答:为了在命令行窗口下编译和运行Java程序!
为什么说在命令行窗口下呢,因为比如近几年喜欢用的IDEA,我们可以不配置环境变量,仅仅在IDEA的settings里面配置好jdk的安装目录,就可以运行使用了。但是如果不配置环境变量,我们在命令行窗口下是无法编译运行我们写好的java源文件(不在编译程序的文件夹下),为什么呢?
开发人员编写的java文件是无法被计算机识别的,需要JDK中的编译程序javac.exe来进行编译,那么除非我们将我们的源码放到编译程序所在目录下,否则不配置环境变量的情况下,系统根本无法找到我们的源码位置,所以编译程序也就无法完成编译。javac是不是很熟悉,开始学java的时候,老师教我们的判断环境变量部署是否成功,就可以输入javac,如果配置错误,会出现以下:
这个就是经典的jdk安装成功但路径配置错误。
经过以上解释,我们配置环境变量的原因就是能够让我们在任何文件夹下都能用执行java命令,包括编译程序以及其他可执行文件。
3. classpath环境变量是什么,为什么已经不需要配置了
以前配置变量时,一个要配置PATH变量(指定java位置),另一个要配置classpath环境变量。那么这个变量又是来做什么的呢?跟PATH变量有何区别?
在PATH变量配置时,曾说过我们编写完源码,java要将它们编译成class文件,再之后就要执行程序了。也就是说需要把class文件读到JVM中,并转换为计算机能识别的语言来执行。而classpath变量,看名字也知道,是class文件的路径变量,我们需要指定一个路径,告诉JVM去这个路径下找class文件执行,如下图:
变量值前面的 “.” 就是告诉虚拟机要在当前路径下搜索,那通常也会把JDKbin文件下的dt.jar和tools.jar也放到classpath里面。dt.jar是环境运行的类库,tools.jar是工具类库,这两个类库支撑大部分java程序的运行。
但是很多人会发现,我们现在一般不会去配置classpath这个变量,这是因为JDK1.5版本之后,JRE可以自动检索当前文件夹下的class文件,并且自动加载上述两个工具类库,因此我们再也不需要配置classpath变量了。
4. %JAVA_HOME%是什么,必须设置吗?
在配置变量前,我们都会设置**%JAVA_HOME%变量**,设置值如下:
说白了它就是引用jdk的地址,可以把它想象一个变量名,变量值是JDK的安装路径。当然,在path里直接写到bin文件下也是可以的,但是我们推荐使用%JAVA_HOME%的原因,其一是jdk版本迭代是,只需要修改%JAVA_HOME%值即可,当然这只是很小的原因,毕竟也不会经常迭代,重要的是像一些插件或者服务器或者IDEA,都会通过这个变量名去找JDK的安装路径,为了减少不必要的麻烦,还是动动小手指添加一个%JAVA_HOME%吧。