java 特性:

1.跨平台:主要是指字节码文件可以在任何具有 Java 虚拟机的计算机或者电子设备上运行,Java 虚拟机中的 Java 解释器负责将字节码文件解释成为特定的机器码进行运行。

2.简单:相比与 C、C++不再有 #include 和 #define 等预处理功能、不再有指针、不再有多重继承、不再有手动内存管理。。。

3.安全:Java 取消了强大但又危险的指针、

Java 提供了自动内存管理机制,由垃圾回收器在后台自动回收、

Java 在字节码的传输过程中使用了公开密钥加密机制(PKC),而在运行环境提供了四级安全性保障机制:

字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

字节码验证器(Byte Code Verifier)

JVM 通过字节代码验证程序放置代码,该代码验证程序检查格式并检查非法代码。例如,非法代码是违反对象访问权限或违反指针实现的代码。字节代码验证程序可确保代码符合 JVM 规范,并且不会违反系统完整性。

类加载器(Class Loader)

类加载器加载执行程序所需的所有必要类。它通过将本地文件系统的名称空间与通过网络导入的名称空间分开来提供安全性。这些文件可以从硬盘,网络或其他来源加载。

4.面向对象

5.健壮:Java 的强制类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。

6.可移植

7.多线程

8.高性能

9.分布性

Java 是一门编译性语言:

这里一张图展示编译型语言解释型语言区别:

java 字节码对象反射 java字节码的特点_后端

了解字节码文件(bytecode)

• .class 文件、二进制文件

• 格式中立、平台无关的二进制文件 采用结构中立的中间文件格式

• 是编译的产物,是解释的原料。

java 字节码对象反射 java字节码的特点_java 字节码对象反射_02

JDK、JRE、JVM 的区别联系:

• JDK:

• Java DevelopmentKit

• 针对 Java 开发员的产品( Java 应用和 applets 的软件开发环境)包含 jre,一些工具(javac,java,javadoc( 文档生成器)等),java 基础类库

• JRE:

• Java RuntimeEnvironment

• 是运行 Java 程序所必须的环境集合;包括 JVM,Java 核心类库,java 命令和其他的一些基础构件(支持文件)。但是,它不能用于创建新程序。

• JVM

• Java VirtualMachine:java 虚拟机

• 解释运行 Java 字节码文件,跨平台的核心。JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

• JVM 就是一个虚拟的用于执行 bytecodes 字节码的计算机

• Java 虚拟机是 Java 最核心技术,也是跨平台的基础。

• Java 语言使用 Java 虚拟机屏蔽了与具体平台相关的信息,使得 Java 语言编译程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

• Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是 Java 的能够“一次编译,到处运行”的原因。

联系:JDK 包含 JRE,JRE 包含 JVM。

java 字节码对象反射 java字节码的特点_java_03