zhouzhaoxin
zhouzhaoxin 主攻python,喜欢读书,喜欢摄影,芒格的忠实追随者。关注各个领域发展,取长补短,擅长结合多学科技术解决问题

Java虚拟机

Java虚拟机

跨平台的含义

Java的跨平台是“一次编译,到处运行”。Java在编译的时候没有编译成指定CPU类型的汇编代码,也没有和具体操作系统的系统调用相关联,所以编译出来的结果是和CPU,操作系统都不相关的。Java编译出来的是一种字节码,这种字节码必须在Java的虚拟机上才能运行,Java虚拟机会屏蔽不同操作系统,CPU之间的差异。

C编译出来后,就是指定CPU类型的汇编代码,编译过程中肯定也要和具体操作系统的系统库相关连,所以做不到Java那种跨平台。但是,如果写的C代码,没有直接调用任何系统调用,这个代码在不同的平台下都能编译,也能运行。和Java的区别是,C要在不同平台上分别编译。

有些语言如JavaScript,Python等,他们是解释执行的,不存在编译过程,所以也能跨平台,前提是必须要有一个对应的解释器,PHP好像也是解释性的。

了解虚拟机

当用户量达到一定数量的时候,程序就很有可能出现各种问题(缓慢,死锁等)一般情况下,企业都会通过提升硬件配置的方法尝试解决问题,但对于运行在JVM 上的 java来说,如果不了解JVM的运行原理,单纯的提升硬件配置很有可能对问题的解决改善很小,甚至没有改善

Java技术体系

由SUN公司官方定义:

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机
  • Class文件
  • Java API类库
  • 来自商业机构或开源社区的Java类库