java之所以要做中间那层jvm的编译,是为了在不同平台上都能运行吗?

来源:2-7 计算机的层次与编程语言

非凡哥大战哥斯拉

2019-07-08

有点好奇,为什么java要这样设计

写回答

1回答

咚咚呛

2019-07-08

现在的程序员如果直接上手Java、C#、Python等等的语言可能不了解以前的程序员编程的艰辛。

从底层的汇编语言说起,可能现在的同学都比较少接触汇编语言了,大多数同学都不知道,汇编语言是分平台的,这意味着你在arm架构写的汇编语言,你在intel架构下,需要重写一次,没错是重写一次,把逻辑从头到尾重写一次,因此使用汇编语言编程的时代是非常痛苦的。

接着说一下C、C++,了解C、C++语言的同学都知道,在不同平台运行C、C++程序是需要重新编译的,这意味着你在Ubuntu编写的C、C++程序如果迁移到Centos平台,可能就需要重新编译才能运行,但重新编译已经比重写逻辑要简单许多了。虽然C、C++可以跨平台编译,但是对于操作系统的两大阵营,Linux和Windows,他们的C、C++程序也还是有些不一样的,包括许多的系统调用等等,因此在Windows开发Linux程序,往往也比较痛苦。

然后就是跨平台的语言了,有很多,Java、Python等等,这些都是跨平台的语言,一份代码,随处执行,无需重写、不用重新编译,非常顺畅,极大的提升了开发者的效率,因为在语言层和机器层,有一个虚拟机屏蔽了很多机器层面、操作系统层面的细节,使得语言使用者无需关注底层特性,专注逻辑代码。当然了,这就意味着有性能的提升,因此常说Java、Python语言性能不敌C、C++。

最后还想简单提到一下Go语言,Go语言对于编程领域的革新是来势汹汹的,因为Go的宣传有个非常棒的特性,媲美C、C++语言的性能,并且开发效率非常高,包括编写过程、部署过程等等,因此Go语言的发展也是非常值得期待的。

希望对你有所帮助。

6
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程