越来越多的程序语言选择了与操作系统和机器指令集无关的,平台的格式作为程序编译后的存储格式。
无关性的基石
“与平台无关”实现在操作系统的应用层上:Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”。
各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石。虚拟机的另一种中立特性——语言无关性正越来越被开发者所重视。
实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不合包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其它辅助信息。基于安全考虑,Java虚拟机规范要求在Class文件中使用许多强制性的语法和结构化约束,但任一门功能性语言都可以表示为一个能被Java虚拟机接收的有效的Class文件。
Java语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定比Java语言本身更强大。因此,一些Java语言本身无法有效支持的语言特性,字节码可以有效支持,这也为其他语言实现一些有别于Java的语言特性提供了基础。
网友评论