大概来讲,JDK包含JRE包含JVM。
JDK(开发环境,有编译器和调试器):包括JRE(专用JRE),一些java工具(如javac,java,jdb等,在bin中)和java类库(如tools.jar和dt.jar,在lib中)。
JRE(运行环境,没有编译器和调试器):包含两个文件夹,bin和lib,bin里的就是JVM,lib里就是JVM工作所需要的类库和java程序所需要调用的基础类库(因为只要JRE就得能运行java文件),另外JRE还要有字节码校验器和类加载器。
JVM:所有java程序会被编译成.class的类文件(.class文件就是字节码,字节码是二进制,是JVM的指令),然后再虚拟机上运行,运行的时候需要JRE中的类库。
专用JRE和公共JRE
专用JRE:用来运行JDK中的java工具
公共JRE:为加载到计算机上的java程序提供运行环境。
为什么可以不安装公共JRE呢?
公共JRE是一个独立的JRE系统,会单独安装在系统的其他路径下。公用JRE会向IE浏览器和系统中注册java运行环境。通过这种方式,系统任何应用程序都可以使用公用JRE。由于现在在网页上执行APPLET的机会越来越少,而且完全可以选择使用JDK目录下的JRE来运行Java程序,因此没有太大必要安装公共JRE。
三个jar包的简介:
jdk\lib\dt.jar:主要是swing包,如果开发时没用到swing包,可以不把它加到classpath
jdk\lib\tools.jar:javac,java这些工具的实现所要用到的类库都在tools.jar中,而且这些工具可以自动调用它们
jdk\jre\lib\rt.jar:java基础类库,也就是import用的包
总结:A\bin中的文件运行用的是A\lib中的包