为什么Java平台独立语言?

已发表: 2021-02-08

目录

介绍

Java 自诞生以来就在所有其他编程语言中广受欢迎。 如此巨大反应的原因是提供独特功能的能力。 Java 语法与 c++ 几乎相似,但提供的功能远远超过 c++。

面向对象编程 (OOP) 的可用性使 java 在当时所有其他语言中脱颖而出。 Java 的开发以 OOP 为核心,这也是成为最常用语言的原因之一。 这个概念增加了可重用性,无缝执行。 这时,我们的脑海中可能会出现一个问题“我们为什么要使用一个对象?”。

Java 中的对象类似于 c 语言中的结构,我们将相似的方法和变量绑定在一起。 除此之外,Java 还提供抽象、封装、继承和多态性,鼓励用户实现对象。

Java 在应用程序开发、Web 开发、构建软件工具等许多领域都发挥着主导作用。 它还具有丰富的库,使事情变得更容易。 此外,IDE 的可用性在吸引开发人员的注意力方面起着至关重要的作用。 许多开发人员经常使用 Eclipse、IntelliJ、NetBeans 等 IDE。

好的,现在让我们进入我们的讨论。

但首先,平台独立性是什么意思? 为了得到这个问题的答案,我们需要知道编译代码时会发生什么。

编译代码

每当我们编写代码时,我们都遵循编程语言的语法,这将具有相当多的可读性。 它包含很少的单词、短语、变量名、方法名等。所有这些都被认为是人类可读和人类可以理解的文本。

因此机器使用编译器将源代码转换为机器可读的代码,也称为机器级语言。 编译器在特定表示中构建机器级代码,以便 CPU 可以轻松理解并无缝执行它。

这种机器级语言的构建因每种编程语言和每种操作系统而异。 例如,如果两台机器运行在不同的操作系统上,c/c++ 会生成一个不同的 .exe 文件。

这里出现了问题!

当每个操作系统的机器级语言不同时,我们就不能在新机器上运行在不同机器上编译的代码,除非两个系统都在同一个操作系统上运行。 对于许多程序员和开发人员来说,这感觉像是废话。

但是 Java 使事情变得更容易,而 Java 对此有一个解决方案。 让我们开始吧。

Java 独立于平台

那么当我们在java中编译代码时会发生什么呢?

每当我们输入“javac filename.java”语句或在java中编译代码时,javac都会编译代码。 它创建了一个称为字节码的中间代码。

这就是java在所有不同编程语言之间产生差异的地方。 它创建一个 .class 文件,该文件被视为字节码。 而像 c/c++ 这样的语言在编译时会创建一个本机可执行代码,从而使它们依赖于平台。

等等,现在庆祝还为时过早。 该字节码不可执行。 我们需要一个翻译器来执行这个字节码。 JVM 完成了这项工作。 通常,JVM 驻留在我们计算机的主内存中。 Java 虚拟机充当解释器,然后执行 javac 生成的字节码。

现在我们完成了,我们的代码成功执行。

那么java将如何单独管理它呢?

答案是,这是因为 JVM。 源代码编译生成的字节码可以在任何操作系统中运行,但是机器中存在的 JVM 对于每个操作系统都不同。 这就是 java 被认为是一种独立于平台的编程语言的原因。

为了正确理解它,让我们了解一下 JVM 的架构和工作原理。

JVM架构

JVM 是 java 运行时环境的一部分,负责将 .java 文件转换为 .class 文件。 当我们编译 java 代码时,JVM 会调用源代码中的 main 方法。

JVM架构

类加载器

它是java虚拟机中的一个子系统。 它加载 .class 文件,检查是否有任何异常,这是运行时异常很少的原因。 在检查它为变量和存在的方法分配内存后,为变量和数组分配默认值。 它还执行代码中存在的静态方法或变量。

JVMm中内置了3个类加载器,引导类加载器,扩展类加载器,应用类加载器。

JVM 中的内存区域

方法/类区

它存储类名、方法名、变量等信息。 它是一个类中所有方法和变量的共享资源。

它存储了堆区域中存储的所有数据的信息。

JVM 语言栈

它将信息存储在也称为堆栈帧/帧的块中,当有函数调用时存储当前信息,存储局部变量,它还在线程管理中起主导作用。

电脑寄存器

它存储当前正在执行的指令的地址。 它在多线程执行情况下很有用。

本机方法堆栈

它存储使用的本机方法的所有信息。

执行引擎

执行引擎将执行字节码,并将分配的内存删除给无法访问或未引用的对象。 执行引擎中的解释器将通过在流中读取字节码并逐行解释来执行字节码。

它还有一个令人兴奋的部分,称为 JIT 编译器(Just In Time Compiler),它为方法创建一个本机可执行代码,因此如果有多个函数调用,那么 JVM 不需要再次解释它,而是直接使用本机可执行代码。 因此,它提高了执行性能。

本机方法接口

这个接口被 java 用于与用不同语言(如 C/C++)实现的应用程序交互。 交互是双向的,JVM 可以调用这些应用程序,也可以由这些应用程序调用。

本机方法库

它跟踪可能由执行引擎使用的本地语言库。

现在我们已经了解了 JVM 的架构,让我们回到我们的讨论。 所以这个 JVM 对于不同的操作系统是不同的,但是这些 JVM 生成的输出对于提供的相同字节码是相同的。

另请阅读: Java 项目理念和主题

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

我们已经了解了 java 的一些独特功能,了解了当我们用 C/C++ 等语言编译代码时会发生什么,了解本机可执行代码和字节码之间的区别。 我们已经解释了为什么 java 被认为是一种平台独立的语言,明白 JVM 是 java 平台独立背后的原因。 为了更好地理解,我们查看了 JVM 架构。

既然您已经了解了 java 独立于平台的原因,那么探索 java 的其他独特功能并开始使用它们吧!

如果您有兴趣了解有关 Java 全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训,9+项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

Java相对于其他语言的优势是什么?

与其他语言相比,Java 有许多优点。 让我们从最大的优势开始,Java 是独立于平台的。 Java 代码可以在任何硬件平台、操作系统和浏览器上运行。 它可以在任何设备上运行。 这意味着一旦您用 Java 编写了应用程序,您就可以在任何设备上运行它。 就这么简单! 此外,一旦您编写了代码,就很容易调试和修复错误。 最后,Java 是面向对象的。 这意味着您需要使用更小的程序和代码。 这将使您的代码更易于使用。 如果需要进行任何修改,代码就不容易出错。 它具有多线程、内存管理、平台无关、安全、虚拟机(即字节码)、收集框架、垃圾收集器、分层架构等功能。

为什么Java平台独立?

Java 是独立于平台的,因为它使用虚拟机。 Java 编程语言和所有 API 都被编译成字节码。 字节码实际上是独立于平台的。 虚拟机负责处理不同平台的字节码之间的差异。 因此,Java 的运行时要求非常小。 Java 虚拟机负责所有与硬件相关的问题,因此无需为不同的硬件编译代码。

什么是 Java 中的自动垃圾回收?

自动垃圾收集是一种垃圾收集技术,其中垃圾收集器自动运行,无需程序员为其编写代码。 在 Java 中,垃圾收集是通过将 Java 虚拟机置于特殊模式来完成的。 垃圾收集器会在它看到机会时运行。 一些垃圾收集器使用 stop-the-world 方法,Java 虚拟机必须停止执行程序才能进行垃圾收集。 垃圾收集不是一个简单的概念,但一旦你得到它,就没有回头路了。 而 Java 的垃圾收集是最容易理解的一种。