本文首发于公众号:javaadu
Java有句非常有名的口号——“一次编写,到处运行”,依靠的就是JVM提供的平台独立性,本质上来讲,就是通过虚拟机技术,通过限制一些功能,达到屏蔽底层细节的目的。更具体得说,Java的平台独立性体现在两个方面:体系结构无关、可移植。
体系结构无关
JVM里设计了一套字节码指令系统,这套指令系统跟特定的体系结构没有关系。精心设计的字节码不仅可以在各个机器上运行,还可以迅速得翻译成本地机器的代码。解释字节码运行肯定比先编译后运行慢得多,因此虚拟机提供了即时编译子系统,用于将使用最频繁的字节码翻译成本地指令,这个策略十分有效。
可移植
- 与C和C++不同,Java规范中没有“依赖具体实现”的地方,基本数据类型的大小以及有关的算法都做了明确的定义。例如:在Java中int永远为32位整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。
- 作为系统组成部分的类库,定义了可移植的接口。例如:一个抽象的Window类给出了在UNIX、Windows和Mac OS环境不同的实现;文件路径分隔符——File.separator,针对不同的文件系统也有不同的实现。
本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。