Java面试30天计划Day01(JRE/JDK/JVM三者关系...)

简介: Java语言的特点?JVM与JRE和JDK三者之间何关系?字节码是什么?Java是编译型还是解释型语言?为什么说是半编译/编译与解释共存? Java和C++有什么不同?Oracle JDK 与 Open JDK相比有什么不同?

这是一个Java面试的集合文档,将会周期性的进行更新,您完全将其看成一个番剧,追番的感觉可能会让您更有学习的兴趣。

Java语言的特点?

    1. 面向对象(封装、继承、多态)
    2. 具有平台无关性(一次编写,到处运行)
    3. 可靠性和安全性
    4. 稳健性

    JVM与JRE和JDK三者之间何关系?

    JVM是Java可以跨平台运行的核心,JVM(Java Virtual Machine)即Java虚拟机,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现···,它直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作。

    image.gif编辑

    需要注意的是JVM并不是只有一种,前提条件是需要符合JVM规范

    JRE(Java Runtime Environment)是运行Java字节码(即 .class 的文件)的虚拟机,是Java的运行不可缺少的环境,它包含了JVM、核心类库、开发工具等,它只可以编译程序,不可以创建程序。

    JDK(Java Development Kit)即Java SDK,它是Java开发的工具包,包含了Java虚拟机(Java程序所运行的地方)和核心类库(已经写好的东西,直接拿来用)与开发工具(Javac、Java、jdb、jhat...)它是可以创建与编译程序的。

    三者的关系如图所示:

    image.gif编辑

    你可以这样理解(JDK包含JRE,JRE包含JVM

    字节码是什么?

    Java 字节码是 Java 程序编译的结果,是该程序的中间表示,与机器无关。即是Java可以理解的代码即是字节码(.class文件

    Java 字节码由 Java 虚拟机 (JVM) 处理,而不是处理器处理。JVM 的工作是对处理器进行必要的资源调用以运行字节码。

    Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行,由于被预处理过,所以比一般的解释代码要快,但是仍然会比系统直接执行的慢。

    image.gif编辑

    即:源码通过javac编译为字节码,通过编译器JVM解释为机器码执行。 所以,可以理解为是半编译型语言,这在下一个问题会问到。

    Java是编译型还是解释型语言?为什么说是半编译/编译与解释共存?

    首先我们需要知道什么是编译型,什么是解释型语言?

    编译型 如C、C++、Go、Rust,是将代码一次编译成为机器码执行,但因各平台的CPU指令集不同,因此需要编译出每种平台对应的机器码,执行速度快,但开发效率低
    解释型 如Python、Ruby、JavaScript,是由解释器直接加载源码直接运行,每次运行都要解释一次,执行速度慢,但开发效率高。

    可根据此图加深理解:

    image.gif编辑

    Java和C++有什么不同?

    首先我们需要知道它们的共同点:都是面向对象,且都支持封装、继承、多态

    不同点:

      1. C++兼容C,这也说明了C++不止支持面向对象还支持面向过程。而Java只支持面向对象。
      2. C++不支持自动垃圾回收需要手动回收,Java支持自动垃圾回收。
      3. C++支持多重继承,Java的类不支持多重继承,是单继承的,故只能通过实现多个接口来达到多重继承的目的。
      4. C++拥有C一样的指针,Java没有指针,可以将它的引用理解为安全指针。
      5. C++需要依赖特定的平台,Java则因为有虚拟机而不需要依赖,具有跨平台的特性。
      6. .......

      Oracle JDK 与 Open JDK相比有什么不同?

        1. Oracle JDK根据Oracle二进制代码许可协议获得许可,而OpenJDK具有GNU通用公共许可证(GNU GPL)版本2。
        2. OpenJDK 是一个参考模型且是完全开源的,Oracle JDK 是 OpenJDK 的一个实现,并不是完全开源的。
        3. Oracle JDK具有Flight Recorder功能,Open JDK具有Font Renderer功能。
        4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能。
        5. Oracle JDK版本将每三年发布一次,Oracle为其版本提供长期支持。而OpenJDK版本每三个月发布一次,且仅支持对发布的更改,直到下一个版本发布。故Oracle JDK比Open JDK更稳定。
        6. Oracle JDK具有良好的GC选项和更好的渲染器,而OpenJDK具有更少的GC选项,并且由于其包含自己的渲染器的分布,因此具有较慢的图形渲染器选项。


        如果您认真阅读至此,您现在已经掌握了Java的面试篇追番版Day01,且随着您认真练习使用次数的增加,您对Java的掌握我相信不止于此,如果您对此语言或其他有进阶的要求,请移步至我的博客进行其余的修炼计划。

        感谢您认真观看完毕此文章,如果此文章对您有帮助的话,还请您点赞收藏评论这真的对我有很大的帮助。

        相关文章
        |
        27天前
        |
        存储 安全 Java
        常见 JAVA 集合面试题整理 自用版持续更新
        这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
        84 3
        |
        27天前
        |
        存储 安全 Java
        2025 最新史上最全 Java 面试题独家整理带详细答案及解析
        本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
        187 48
        |
        24天前
        |
        缓存 NoSQL Java
        Java Redis 面试题集锦 常见高频面试题目及解析
        本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
        78 6
        |
        27天前
        |
        NoSQL Java 微服务
        2025 年最新 Java 面试从基础到微服务实战指南全解析
        《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
        91 9
        |
        25天前
        |
        存储 算法 Java
        JvM JDK JRE 三者区别与联系详解
        本文深入解析了Java编程中的三个核心概念:JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)。JVM是执行Java字节码的虚拟计算机,实现“一次编译,到处运行”;JDK包含JRE及开发工具,用于编写和调试Java程序;JRE负责运行已编译的Java程序。文章详细阐述了它们的功能、组成及应用场景,并通过实例说明其在实际开发中的作用,帮助开发者理解三者联系与区别,提升开发效率与问题解决能力。适合Java初学者及进阶开发者学习参考。
        181 3
        |
        27天前
        |
        存储 缓存 安全
        Java 集合篇面试题全面总结及答案解析
        本文总结了Java集合框架的核心概念、常见集合类的特性与应用场景,以及开发中可能遇到的问题与解决方案。内容涵盖集合框架的基础接口(如Collection、Set、List、Map)、泛型的优点、线程安全集合类(如ConcurrentHashMap、CopyOnWriteArrayList)、常见集合类的区别(如ArrayList与LinkedList、HashMap与HashTable)等。此外,还详细介绍了如何实现LRU缓存、FIFO队列、优先级队列及栈等数据结构,并提供了相关代码示例。通过本文,读者可以全面掌握Java集合相关的面试知识点及其实际应用技巧。
        50 1
        |
        29天前
        |
        算法 安全 Java
        2025 校招必看:Java 开发面试核心知识点深度解析及最新笔面试题汇总
        本文针对2025校招Java开发面试,系统梳理了Java基础、集合框架、多线程并发、JVM等核心知识点,并附带最新笔面试题。内容涵盖封装、继承、多态、异常处理、集合类使用、线程同步机制、JVM内存模型及垃圾回收算法等。同时深入探讨Spring、数据库(MySQL索引优化、Redis持久化)、分布式系统(CAP理论、分布式事务)等相关知识。通过理论结合实例解析,帮助考生全面掌握面试要点,提升实战能力,为成功拿下Offer奠定坚实基础。
        142 2
        |
        27天前
        |
        存储 缓存 安全
        Java 集合容器常见面试题及详细解析
        本文全面解析Java集合框架,涵盖基础概念、常见接口与类的特点及区别、底层数据结构、线程安全等内容。通过实例讲解List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)、Map(如HashMap、TreeMap)等核心组件,帮助读者深入理解集合容器的使用场景与性能优化。适合准备面试或提升开发技能的开发者阅读。
        33 0
        |
        存储 Java Windows
        Java21 JDK下载安装及Windows环境变量配置
        JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
        2252 2
        Java JDK的安装
        首先我们先去下载jdk。

        热门文章

        最新文章