Java JVM存在的原因

Java JVM存在的原因,java,jvm,Java,Jvm,我在学习编程语言理论,我想知道,为什么我们需要Java虚拟机或任何虚拟机呢?根本原因是什么 它仅仅是为了实现多平台吗?如果是这样的话,为什么我们不能拥有一种独立于平台的语言和针对不同平台的不同编译器呢 Java虚拟机(JVM)是运行字节码的平台或沙箱。字节码具有特殊的指令集和操作,只能由JVM识别 对于任何需要特定操作集的虚拟机,情况也是如此。为什么我们不能为不同的平台使用一种独立于平台的语言和不同的编译器 嗯。如果我在16位机器上写一个线性搜索程序(用任何语言),用16位编译器编译它,然后在3

我在学习编程语言理论,我想知道,为什么我们需要Java虚拟机或任何虚拟机呢?根本原因是什么

它仅仅是为了实现多平台吗?如果是这样的话,为什么我们不能拥有一种独立于平台的语言和针对不同平台的不同编译器呢

Java虚拟机(JVM)是运行字节码的平台或沙箱。字节码具有特殊的指令集和操作,只能由JVM识别


对于任何需要特定操作集的虚拟机,情况也是如此。

为什么我们不能为不同的平台使用一种独立于平台的语言和不同的编译器

嗯。如果我在16位机器上写一个线性搜索程序(用任何语言),用16位编译器编译它,然后在32位机器上运行它会怎么样。它会以同样的方式表现吗

想象一下拥有数百万行代码的产品。你认为百万行代码中没有任何东西会因为机器架构的改变而中断吗

现在,

虚拟机:这些基本上是用来将指令转换为“机器理解/OS理解语言”的软件。它们位于您的操作系统之上,并对其进行调用,即让操作系统了解您的应用程序需要什么

JVM:是一种用于Java的虚拟机。当您编写和编译java程序时,它将处于“几乎与机器无关”的状态。这称为字节码。您可以将它带到另一台机器上运行/解释它。

在1996年的白皮书中,Sun的Java团队为Java语言陈述了以下内容:

Java TM编程语言的设计要求是由必须部署软件的计算环境的性质决定的

互联网和万维网的大规模发展,使我们以一种全新的方式看待软件的开发和发行。为了生活在电子商务和分销的世界中,Java技术必须能够在异构分布式网络中的多个平台上开发安全、高性能和高度健壮的应用程序

在异构网络中的多平台上运行使传统的二进制分发、发布、升级、修补等方案失效。为了在这个丛林中生存,Java编程语言必须是体系结构中立的、可移植的和动态可适应的

为满足这些需求而出现的系统非常简单,因此大多数开发人员都可以轻松地对其进行编程;熟悉,使目前的开发人员可以轻松地学习Java编程语言;面向对象,利用现代软件开发方法,适合分布式客户机-服务器应用程序;多线程,用于需要执行多个并发活动(如多媒体)的应用程序中的高性能;并进行解释,以实现最大的可移植性和动态功能

再往下一点,他们更详细地阐述了使用解释器的原因:

Java解释器可以在解释器和运行时系统移植到的任何机器上直接执行Java字节码。在解释平台(如基于Java技术的系统)中,程序的链接阶段是简单、增量和轻量级的。您可以从更快的开发周期中获益——与传统的重量级编译、链接和测试周期相比,原型设计、实验和快速开发是正常情况

虽然Java编译器在编译时静态检查方面非常严格,但语言和运行时系统在链接阶段是动态的。类仅在需要时链接。新的代码模块可以根据需要从各种源链接进来,甚至可以从网络上的源链接进来。对于HotJava浏览器和类似的应用程序,可以从任何地方加载交互式可执行代码,从而实现应用程序的透明更新。其结果是在线服务不断发展;它们可以保持创新和新鲜,吸引更多的客户,并刺激互联网上电子商务的增长


是为了平台的可移植性吗?对您已经知道JVM的大多数明显特性及其优势,其他人已经给出了极好的响应

在这里,我将添加虚拟机所提供优势的人性化方面。它主要用于易于开发达到

以C为例,它是一种独立于平台的语言,具有针对特定操作系统的特定编译器。人们可以在Linux和Windows上用C编写代码。但是,要在Windows系统上运行相同的程序,您需要额外的库头文件conio.h

现在,如果需要在每个系统(具有不同的硬件和软件)上重新编译大量的百万行源代码程序和应用程序套件,那么它们将需要在每个编译器上反复重新编译相同的代码。如果开发人员没有为某个系统编译,这可能会遗漏一些系统作为可能的目标

这种情况实际上发生在游戏行业中,某些游戏只是没有为某些系统编译和构建(就像大多数高端游戏不是为Linux制作的)。游戏工作室被迫为他们想要的每一台目标机器进行编译,比如Wii、PS3、PS4、PC、XBOX等等

这浪费了时间、精力、资源和理智(特别是在处理超大规模的异构文件类型和源代码时,它们需要花费大量的编译时间)

简言之;这是为了减少每个系统对相同源代码的重复编译,这样我们程序员就可以专注于值得花时间的事情。[或者我们只是懒惰;)]

<