一.配置JDK环境变量
1、打开我的电脑--属性--高级--环境变量
2、新建环境变量JAVA_HOME和classpath
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.7.0
变量名:classpath
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3、选择环境变量中名为path的环境变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
JAVA_HOME变量含义:指jdk安装目录,比如设置path变量的时候是“;%JAVA_HOME%\bin”,来代替“C:\Program Files\Java\jdk1.7.0\bin”。“%JAVA_HOME%”就是使用了JAVA_HOME环境变量。
path变量含义:让系统在任何路径下都可以识别java、javac、javap等命令,因为该变量的bin目录下存放了各种包装好的工具。
classpath变量含义:该变量是用来告诉Java解释器(即java命令)在哪些目录下可找到所需要执行的class文件(即javac编译生成的字节码文件)。ClassPath指定的是java加载类的路径。只有类在ClassPath中,java命令才能找到它,并解释它。通俗的说它的作用与import、package关键字有关,我们写的java源码中,当然会包含别人提供的工具类,比如当你写下improt java.util.*时,编译器面对import关键字时,就需要知道你要引入java.util这个package中的类到底在哪里。
二.JDK中 rt.jar、dt.jar 、tools,jar的作用
rt.jar位于{JAVA_HOME}/jre/lib下,而dt.jar和tools.jar位于{JAVA_HOME}/lib下。其中:
1、tools.jar:工具类库,它跟我们程序中用到的基础类库没有关系。我们注意到在Path中变量值bin目录下的各个exe工具的大 小都很小,一般都在27KB左右,这是因为它们实际上仅仅相当于是一层代码的包装,这些工具的实现所要用到的类库都在tools.jar中,用压缩软件打开tools.jar,你会发现有很多文件是和bin目录下的exe工具相对性的。当然,如果tools.jar的功能只有这些的话,那么我们根本不用把它加入到CLASSPATH变量中,因为bin目录下的工具自己可以完成对这些类库的调用,因此tools.jar应该还有其他的功能。如编译、运行、调试时使用。
2、dt.jar:运行环境类库,主要是Swing包,这一点通过用压缩软件打开dt.jar也可以看到。如果在开发时候没有用到Swing包,那么可以不用将dt.jar添加到CLASSPATH变量中。
3、rt.jar:包含所有核心Java运行环境的已编译class文件,也就是java doc里面看到的类。
三.rt.jar包中的java、javax、sun、org包有什么区别?
Java、Javax、sun、org都是jdk提供的类包,且都在rt.jar里,rt.jar是Java基础类库,Java核心框架中很重要的包。他们之间的区别如下:
java.*:Java SE 的标准库,是Java标准的一部分,是对外承诺的Java开发接口,通常要保持向后兼容,一般不会轻易修改;
javax.*:也是Java标准的一部分,但是没有包含在标准库中,属于标准库的扩展;
com.sun.*:是sun的hotspot虚拟机中java和javax的实现类,但不是sun对外公开承诺的接口,这些类可能不会向后兼容,所以不推荐使用;
org.omg.*:是由企业或者组织提供的Java类库,不具备向后兼容性,会根据需要随时增减。其中比较常用的是w3c提供的对XML、网页、服务器的类和接口。
四.jdk基础类库都有什么?
以后填坑。
五.jdk基础扩展类库都有什么?
以后填坑。
六.jdk、jre、jvm?
我们知道,我们所说的java包含jdk、jre、jvm等(jdk包含jre,jre包含jvm)
1.JDK主要包含Java Language 语言(语法)、Tools(编译器、调试器等)、jre等,具体如下:
(1)Java Language语言:是一种通用的、可并发的、强类型的、基于类的、面向对象的语言。Java语言通常是将代码编译成字节码指令集和JAVA虚拟机规定中定义的二进制格式。
(2)Tools:JDK工具集非常重要,包含了编译器、调试器、内存监控、堆栈监控、堆分析、进程线程工具等工具。
(3)jre:是运行Java程序所需环境的集合,包含JVM标准实现,Java核心类库。
2.JRE包含了若干组件,可以分为几大类,Base Libraries、Other Base Libraries、Integration Libraries、User Interface Libraries、Deployment、Java Virtual Machines、具体如下:
(1)Base Libraries:基础类库,提供了Java平台最基本特性和功能的类和接口;包括Lang包、Util包、Math包、Reflection包
、Collections包等。
(2)Other Base Libraries:基础类库的补充;包括I/O包、Serialization包、Security包、JNI等。
(3)Integration Libraries:服务集成类库,每一个组件都可以提供独立、完整的服务,内部逻辑内聚而复杂。包括JDBC、
RMI、JNDI、IDL等。
(4)User Interface Libraries:用户界面类库,提供了UI、图像、声音、交互等服务,目前来说使用场景并不广泛。包括
AWT、Swing、Image I/O等。
(5)Deployment:java部署,包括jdk的安装、设置、更新、重新分配等。
(6)Java Virtual Machines:看下一节。
3.JVM:Java Virtual Machines,是一个抽象的计算机指令集,同时操纵运行时的内存。它可以移植到不同的平台,具有硬件和操作系统的独立性。Java SE提供了两种实现的JVM:
(1)Java HotSpot Client VM:客户端虚拟机是通常用于客户端应用程序。一般通过调优以减少启动时间和内存占用。 使用-client启动应用程序。
(2)Java HotSpot Server VM:服务器虚拟机以程序执行速度、启动时间和内存占用等指标来设计的,相比客户端虚拟机在性能方面有很大提升。使用-server启动应用程序。
参考:
JDK环境变量中dt.jar、tools.jar,rt.jar,source.jar等变量值的作用:https://blog.youkuaiyun.com/shangruo/article/details/52383389?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase
java、javax、sun、org包有什么区别:https://blog.youkuaiyun.com/ooppookid/article/details/51704792
java核心框架是什么样的:https://blog.youkuaiyun.com/ooppookid/article/details/51589070