JDK,JRE和JVM的区别与联系有哪些?

概念

  • JDK(Java Development Kit)是一个完整的Java软件开发工具包,包括了

    • 运行时环境JRE
    • 编译器Javac
    • 调试工具Jconsole
    • 分析工具Jvisualbm
    • 文档生成工具JavaDoc等
  • JRE(Java Runtime Environment)是Java运行时环境,包括了

    • JVM
    • Java核心类库
  • JVM(Java virtual Machine)是指Java虚拟机,负责将字节码转换成特定机器代码,JVM包括了

    • 内存管理
    • 垃圾回收
    • 安全机制

区别与联系

  • JDK是开发工具包,用于Java程序开发;JRE是Java运行时环境,用于代码运行
  • JDK包含JRE,JDK和JRE均包含JVM

Java语言的平台无关性是如何实现的?

  1. Java程序都运行在JVM上,而JVM屏蔽了底层操作系统和硬件的差异
  2. 执行一个Java程序时,首先通过JavaC将程序编译成.class格式字节码文件,再交给JVM解释成特定平台的机器码
  3. Java规定了基本数据的取值范围和行为在各个平台保持一致

Java语言是编译型还是解释型语言?

  1. Java不能单纯的被分类成编译型或者解释型代码
  2. 通常认为Java是执行了编译和解释两个过程,是一种先编译后解释执行的语言
  3. Java还存储JIT即时编辑器,可将热点代码编译成为本地机器码
  4. JDK9开始提供了AOT编译器,可以将所有代码编译成为机器码