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系统) |