Java面试题

JDK和JRE有什么区别?

        JDK  (Java Development Kit)—— Java 开发工具包

        用途:JDK是用于Java应用程序的工具包,包含了编写、编译、调试、和运行Java程序所需要的所有工具。

        包含内容:        

  • JRE: JDK包含了一个完整的JRE,用于运行Java程序。
  • 开发工具:JDK提供了编译器(javac)、调试工具、文档生成器(javadoc)、打包工具(jar)等开发工具、这些工具用于将Java代码编译成字节码(.class文件),并进行调试、打包等操作。
  • 标准库:JDK提供了丰富的Java类库,支持开发各种类型的Java应用程序。

        JRE (Java Runtime Environment)—— Java 运行时环境

        用途:JRE是用于运行Java应用程序的环境。它提供了Java程序所需要的核心库和JVM(Java VIrtual Machine)。

        包含内容:

  •  JVM: JRE,用于将编译后的字节码(.class文件)解释生成机器代码,并在不同的操作系统上执行。
  • 核心类库:JRE提供了Java应用程序运行所需的核心库类,例如java.lang、java.util等。
  • 其他库:包含图形用户界面库(AWT和Swing)、I/O库等,支持不同类型的Java应用程序的运行。

工作流程

  • JDK:开发者使用JDK编写Java源代码(.java文件),然后通过JDK提供的编译器将源代码编译成字节码(.class文件)。编译后的字节码可以使用JDK或JRE来运行。
  • JRE:JRE负责加载.class文件,将字节码通过JVM解释执行或者JIT(Just-in-time)编译成机器代码,从而在操作系统上运行。   

即时编译(Just-In-Time Compilation,JIT)是一种将程序在运行时动态地编译成机器代码的编译技术。相对于传统的静态编译,即时编译将编译过程延迟到程序执行的时候进行,而不是在程序执行之前。这种方法允许编译器根据程序运行时的上下文信息来进行优化,从而提高程序的性能。

文件结构

  • JDK:        
    • bin.: 包含了编译(javac)、解释器、调试器(jdb)等开发工具的可执行文件。
    •   lib/:包含了开发时需要的库文件和工具的类库。
    • include/:包含了使用JNI(Java Native Interface)的头文件,方便C/C++代码进行交互。
    • jre/:JDK内部的JRE文件夹,包含了JRE所需要的所有内容,如JVM和核心类库。
  • JRE:
    • bin/:包含了运行Java应用程序的可执行文件,如java。
    • lib/:包含了Java应用程序运行时所需的类库和资源文件。
    • ext/:扩展库文件夹,允许开发者或应用程序添加额外的库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值