个人浅谈对JAVA平台的理解(转载)

/ 10评 / 0

medium_OcT_CRWu_dTE7xmZsGigaLW6-JUNKjG1GtHSu9zVWZk.png
最近有点向这方面发展的兴趣,所以记录一下,了解一下。

JAVA语言出现

一门语言或者是一项技术的出现都不会偶然的,其必然是为了解决某些问题而出现的。那么java的出现是为了解决什么问题呢?

个人认为其主要是为了解决开发效率和跨平台的问题。众所周知计算机的编程语言从最初的汇编语言到C语言,再到C++,然后才有JAVA的出现。汇编语言晦涩难懂,开发效率极其低下,然后到C/C++对人类相对友好的语法和开发效率的提升。但是C/C++的缺点是无法跨平台运行,准确来说并不是C/C++无法夸平台,而是因为不同的平台下面其底层的实现不同,如Linux,MacOS,Windows等三大主流的操作系统其内核和硬件等的底层实现不一样,那么C/C++编写的程序,就需要针对不同的平台代码实现。并且C/C++的开发效率相对还是低,掌握并且写出优秀的C/C++代码是相对困难的。那么这时候就需要一个能夸平台,并且容易掌握,开发效率高的高级语言。这个时候Java就出现了,它的口号是"Write once, Run anywhere"。那么它是如何做到跨平台的呢?答案就是JVM。在说jvm之前,先说java平台的一些基本概念。

JDK(Java Development Kit)

JDK就是JAVA开发的工具包。其包含以下内容。

JRE

JRE是Java Runtime Environment缩写,指Java运行环境,它包括Java虚拟机(jvm)、Java核心类库和支持文件。

JDK和JRE的关系

JDK是JRE的超集。JRE中包含的东西JDK中都有。它们之间的关系和包含的内容如下图:
琛苏设计

JAVA的运行

JVM运行的不是JAVA代码,而是运行JAVA文件被javac编译后生成的class文件,class文件中就是字节码,不是可以直接执行的机器码。而jvm就是通过加装class文件中的字节码,把字节码解释成机器码并且执行机器码的东西。所以java程序分为编译期(javac)和执行期(jvm)。而执行期就分为:==字节码加载,解释或者编译字节码,执行机器码。这也就是说java语言本身没有跨平台==。因此不管是任何语言,只要能编译成jvm能识别的字节码就可以在jvm中运行(如Kotlin,Groovy,Scale等)。

JVM(java virtual machine)

JAVA语言的跨平台能力不是其本身,而是JVM赋予其跨平台的能力。JVM是对操作系统的进一步抽象,封装不同操作系统的底层接口。因此只要在不同的操作系统中安装对应的JVM,那么java代码就能运行在不同的操作系统中,从而实现其口号"Write once, Run anywhere"。那么有关Java平台中最关键的不是java语言,甚至任何语言只要能编译成JVM识别的字节码都可以跨平台,只也是JVM最强大之处,也是java平台中最重要,最关键的技术。要掌握java,并且最大的使用好JAVA那么必须了解JVM的运行机制。如JVM是如何执行类加载的?JVM的内存模型?JVM的如何解释或者编译字节码?以及JVM的GC策略等等?

总结

JAVA是一门非常成功的语言,目前JAVA还是世界上使用最多的语言。虽然Java相比更现代的语言(如GO,Rust)显得势弱,但是其强大的语言生态以及第三方库,目前无人能撼动。其贡献的JVM生态,以及JVM的思想被各种借鉴。我可以毫不夸张的说:JAVA在整个互联网的发展史中无疑是最伟大的语言之一。

文章转载自知库吧

10条回应:“个人浅谈对JAVA平台的理解(转载)”

  1. 杰新博客说道:

    该学python、go了!

  2. 一去二三遥说道:

    Java 现在主流Web端,比较流行也是J2EE,把SSM那一套弄熟了,就能到找工作级别了

  3. 沉默是金说道:

    建议学习Python,Golang

  4. Dreamendy说道:

    秀啊兄弟,又来看一遍竟然把“最近有点向这方面发展的兴趣,所以记录一下,了解一下。”这句话加了删除线啊哈哈哈哈哈

  5. 吃馒头的猫说道:

    一起干了这杯咖啡

发表评论

电子邮件地址不会被公开。 必填项已用*标注