深入理解Java虚拟机(一)--- Java 与 JVM


Java 特性

1.结构严谨,面向对象编程语言

2.跨平台性

3.较安全的内存管理和访问机制(避免了绝大部分内存泄漏和指针越界的问题)

4.实现热点代码检测和运行时编译优化

5.拥有一套完整的API接口

6.拥有丰富的第三方库



JVM 特性

  • 基于栈的虚拟机(Stack-based virtual machine): 大多数流行的计算机架构如 Intel x86 架构和 ARM 架构都是基于寄存器运行的。但是,JVM 是基于栈运行的
  • 标识符引用(Symbolic reference): 所有类型(类和接口)除了基本类型(又称原始类型)都是通过标识符引用的,而不是通过显式的基于内存地址的引用。
  • 垃圾收集(Garbage collection): 一个类实例是由用户代码显式创建的并通过垃圾收集自动销毁。
  • **明确定义基本数据类型(primitive data type):**JVM 清楚地定义了原始数据类型以维持兼容性和保证跨平台的能力(形如Linux C)。
  • 网络字节顺序(Network byte order): Java 类文件使用网络字节顺序(大端序)。要在 Intel x86 架构采用的 little endian 与 RISC 系列架构采用的 大端序 之间维持平台独立,就必须保证固定的字节序。因此,JVM 使用网络字节序,它是一种网络传输的顺序。网络字节序是 大端序 的。



Java语言与JVM的关系

众所周知,高级程序语言分为解释性语言与编译性语言。

  • 编译性语言:需要将源码编译成机器语言(机器可读的二进制文件),运行时不需要进行翻译,但是再另一台机器运行时,需要重新编译。

  • 解释性语言:解释性语言的程序不要编译,但执行时需要解释器进行翻译。

但是Java语言是特殊的,既不是编译性语言,也不是解释性语言。因为它需要先通过JAVAC命令编译成JAVA字节码,这种字节码是机器无法直接读的二进制文件,需要JVM充当解释器来进行翻译。所以。JAVA程序是运行在JVM上的,具有跨平台性



Java技术体系

JDK(程序开发工具包) : Java程序设计语言 java 虚拟机 java API 类库

JRE (程序运行环境) : java 虚拟机 Java SE API

在这里插入图片描述

四种体系平台

平台 适用对象
Java Card 小内存设备 (eg:智能卡)
Java ME 移动终端设备(eg:Android APP)
Java SE 桌面级应用(eg:Windows应用)
Java EE 多层架构的企业应用(eg:ERP系统)

猜你喜欢

转载自blog.csdn.net/u011291916/article/details/83216017