JDK、JRE、JVM详解

JDK

JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。

JDK包含的基本组件包括:

-javac -编译器,将源代码转化成字节码
-jar -打包工具,将类相关的类打包成一个文件
-javadoc-文档生成器,从源码注释中提取文档
-jdb-debugger,查错工具

工具库七种主要的程序

  • Javac:Java编译器,将Java源代码转换成字节码。
  • Java:Java解释器,直接从类文件执行Java应用程序字节代码。
  • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
  • Javadoc:根据Java源码及说明语句生成HTML文档。
  • Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
  • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
  • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

JDK中常用的包

(1)java,javax和org
java.*:java SE标准库,是java标准的一部分,不会轻易修改,要保证兼容性
javax.非一般的api,但是没有包含在标准库中,一般属于标准库的扩展。通常属于某个特定的领域,不是一般的api。所以拓展的方式提供api,以避免jdk的标准库过大。当然某些早期的javax,后来被并入标准库中。
org.
:是由企业或者组织提供的java类库,大部分不是sun公司提供的
(2)java包

  • java.lang:包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
  • java.awt:包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
  • java.applet:包含applet运行所需的一些类。
  • java.net:包含执行与网络相关的操作的类。
  • java.io:包含能提供多种输入/输出功能的类,通过数据流、序列化和文件系统提供系统输入和输出
  • java.util:包含一些实用工具类,包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
  • java.math:一些数学及科学计算相关的包,提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
    **- java.rmi:**Java远程方法调用,即Java RMI(Java Remote Method Invocation)是java编程语言里,一种用于实现远程过程调用的应用程序编程接口。
  • java.security:为安全框架提供类和接口。
  • java.sql:提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。

JRE

Java Runtime Environment(JRE),Java运行环境,简单的理解就是Java程序运行所需要的必要环境。JRE主要包括三部分:Java虚拟机(JVM)、核心类库以及其他一些必要的工具。JDK是JRE的超集,运行Java程序要需要安装JRE即可。

JRE的基本类库

JRE 自带的基础类库主要在 JRE\lib\rt.jar 文件中,该文件包括了 Java 2 平台标准版的所有类库,与JRE的版本是一致的。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,ClassLoader 会自动到 rt.jar 中加载,操作系统通过PATH 环境变量来查找 JRE 并确定基础类库文件 rt.jar 的位置;其他的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库优先被搜到,因此建议在Java程序启动之前先把PATH和CLASSPATH环境变量设置好

jVM

JVM是JAVA虚拟机,他的作用是将字节码解释为各个操作系统平台能够执行的指令,并且执行。它好比一台独立的机器。
JRE JVM虚拟机在解释执行字节码的时候需要调用类库,JVM虚拟机和其执行字节码所需调用的类库合起来称为 JRE.

JDK,JRE,JVM关系图

JDK、JRE、JVM详解_第1张图片

JDK,JRE,JVM相关的面试题

Java中的类加载有几种类型

三种,分别是:Bootstrap,extendsion,application

类加载器是如何工作的

类加载器扫描它们预定义的jar文件和类的位置。它们扫描路径中的所有类文件并寻找所需的类。如果发现类则加载,链接并初始化类文件。

JRE和JVM的不同

JVM是运行时环境的规范,它执行Java应用程序。Hotspot JVM就是这种规范的一种实现。它加载类文件,使用interpreter和JIT Compiler将字节码转换成机器码并执行它。

interpreter和JIT compiler的不同

interpreter逐行解释字节码并按顺序执行。这会导致性能低下。JIT compiler通过在块中分析代码并在这个过程添加优化,然后准备(编译)为更优化的机器码

你可能感兴趣的:(Java自学)