每天一道面试题:深入理解Java虚拟机系列

Posted YP校招

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一道面试题:深入理解Java虚拟机系列相关的知识,希望对你有一定的参考价值。

YP校招 YP校招小程序正式上线!曝匿名薪资,看校招行情,就上YP校招!

深入理解Java虚拟机系列(1)

概述

Java 能获得如此广泛的认可,除了因为它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:

它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;
它提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题;
它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增加而获得更高的性能;
它有一套完善的应用程序接口,还有无数的来自商业机构和开源社区的第三方类库来帮助实现各种各样的功能。

Java 所带来的这些好处让程序的开发效率得到了很大的提升。作为一名Java 程序员,在编写程序时除了尽情发挥 Java 的各种优势外,还应该去了解和思考一下 Java 技术体系中这些技术是如何实现的。认清这些技术的运作本质,是自己思考“程序这样写好不好”的基础和前提。

当我们在使用一门技术时,如果不再依赖书本和他人就能得到这个问题的答案,那才算升华到了“不惑”的境界。

Java 技术体系

站在 Java 平台的逻辑结构上来说,我们可以从下图来了解 JVM:

每天一道面试题:深入理解Java虚拟机系列(1)
Java 技术体系

以上是根据各个组成部分的功能来进行划分的,如果按照技术所服务的领域来划分,或者说按照Java技术关注的重点业务领域来划分,Java技术体系可以分为四个平台,分别为:

  • Java Card:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

  • Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对 Java API 有所精简,并加入了针对移动终端的支持,这个版本以前称为J2ME。

  • Java SE(Standard Edition):支持面向桌面级应用(如 Windows 下的应用程序)的 Java 平台,提供了完整的 Java 核心 API,这个版本以前称为 J2SE。

  • Java EE(Enterprise Edition):支持使用多层架构的企业应用(如 ERP、CRM 应用)的 Java 平台,除了提供 Java SE API 外,还对其做了大量的扩充并提供了相关的部署支持,这个版本以前称为 J2EE。

对于 JVM 自身的物理结构,我们可以从下图了解:

JVM 自身的物理结构

什么是 JVM

JVM 是 Java 的核心和基础,在 Java 编译器和 os 平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行 Java 的字节码程序。

Java 编译器只需面向 JVM,生成 JVM 能理解的代码或字节码文件。Java 源文件经编译器,编译成字节码程序,通过 JVM 将每一条指令翻译成不同平台机器码,通过特定平台运行。

简单的说,JVM 就相当于一台柴油机,它只能用 Java (柴油)运行,JVM 就是 Java 的虚拟机,有了 JVM 才能运行 Java 程序。

以上是关于每天一道面试题:深入理解Java虚拟机系列的主要内容,如果未能解决你的问题,请参考以下文章

面试题深入理解Java虚拟机

由一道面试题理解类加载机制

由一道面试题理解类加载机制

从一道面试题来认识java类加载时机与过程

从一道面试题来认识java类加载时机与过程

深入理解JVM虚拟机13:JVM面试题,看这篇就足够了(87题详解)