java 可以跨平台的原因是什么?
Posted: 2023-03-21T14:35:23+00:00
这是一个常见的误区:java并不是跨平台的,它需要为windows安装windows的运行环境(和编译环境)安装程序,为linux安装linux的运行环境(和编译环境)安装程序,BSD也需在对应的安装程序。它们并不是通用的。
常被大家认为跨平台的实质上是java编译出来的“运行代码”而并不是java。
java编译出来的程序跨平台的原因正是这一套机制,它并没有把代码编译是硬件的指令集层面,而是编译到了它的运行环境层面,这与asp、php这类的脚本语言是一样的,但是asp、php却并不需要编译(这里说的是编译这个人工步骤,当然脚本语言是需要编译的,被称为运行时编译),对一般开发者而言写完就能用,但是java是需要有单独一个编译步骤的,换句话说,它虽然只是编译到运行环境层面,但是它并没有运行时编译器,所以需要手动操作。正是由于这个“中间层”的隔离就让java的代码貌似是跨平台的了,这就像php一样。但是java的小心机也正是在于这个手动“编译”的动作,让人感觉好像它作了什么不一样的工作,与其说这是一项计算机语言的成就,不如说这是一项心理学的成就~~
常被大家认为跨平台的实质上是java编译出来的“运行代码”而并不是java。
java编译出来的程序跨平台的原因正是这一套机制,它并没有把代码编译是硬件的指令集层面,而是编译到了它的运行环境层面,这与asp、php这类的脚本语言是一样的,但是asp、php却并不需要编译(这里说的是编译这个人工步骤,当然脚本语言是需要编译的,被称为运行时编译),对一般开发者而言写完就能用,但是java是需要有单独一个编译步骤的,换句话说,它虽然只是编译到运行环境层面,但是它并没有运行时编译器,所以需要手动操作。正是由于这个“中间层”的隔离就让java的代码貌似是跨平台的了,这就像php一样。但是java的小心机也正是在于这个手动“编译”的动作,让人感觉好像它作了什么不一样的工作,与其说这是一项计算机语言的成就,不如说这是一项心理学的成就~~