谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》

Posted 谙忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》相关的知识,希望对你有一定的参考价值。

谈谈对Java"Write once, run anywhere"的理解《每日一个Java知识点,轻松搞定大厂面试》

简介

相信很多Java初学者都听说过Java的"一次编写,到处运行"。

这句话描述的是Java语言跨平台的特性。

这个特性,也是最开始Java打开市场最关键的部分。及时经过了

理解

Java跨平台的特性与Java虚拟机(JVM)是紧密联系的,通过JVM,Java才可以在不同的系统环境中运行。

比如说在Windows、Linux等平台都有对应的JDK,开发者只需要安装好JDK,便可以运行Java语言。

其实Java语言本质上和其他的编程语言并没有非常大的区别,严格来说,Java语言跨平台,只是因为在不同的平台上,都有可以让Java运行起来的环境。所以就有了那句话"一次编写,到处运行"。

而JVM语言并不是跨平台的,在不同的平台上,都需要有对应的JVM环境,否则Java无法运行。Java语言哪有什么到处运行,只是有JVM在为Java负重前行。

跨平台的语言其实很多,只是Java算是其中比较成熟的一种,而且名气非常大。

“一次编写,到处运行”这种效果跟编译器有关。JVM相当于提供了一个Java程序运行的平台。

Java程序中一段代码的生命周期一般是这样的:

编码 → Javac 编译字节码 → JVM 编译机器码 → 运行 → 调试

在编译阶段,Java体现了跨平台的特点。

编译过程大体是这样的:

  1. Java源代码通过javac编译成.class字节码文件(前端编译器进行编译)

06172720_lvDRPi

  1. .class就是可以到处运行的文件(通过JVM),然后.class文件会被JVM解释/编译成目标机器的代码(后端编译器进行编译/解释)

“到处运行”的关键和前提就是JVM。在第二次编译中JVM才是关键。

图片理解

07161733_ysSTM4

扩展

运行于JVM上的其他语言

JVM字节码存在着一些规范,所以一些符合JVM字节码规范的文件都可以在JVM上运行的。

所以也给其他运行在JVM上的语言提供了一个平台(比如:Scala、Groovy、Kotlin…),可以扩展出一些Java没有实现的特性或者一些语法糖。

Java语法糖

语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,只是为了更方便程序员使用,提高开发效率。说白了,语法糖就是对现有语法的一个封装。

Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种:

  • 泛型与类型擦除
  • 自动装箱与拆箱,变长参数、条件编译
  • 增强for循环
  • 内部类与枚举类

下篇预告

这个问题,极有可能引出下一个问题。

Java是解释执行还是编译执行?下篇为大家讲解。

文章都看完了,点个赞支持一下呗。

欢迎在评论区大家讨论,补充与指点知识点。

以上是关于谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》的主要内容,如果未能解决你的问题,请参考以下文章

谈谈对Java平台的理解

谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》

谈谈 Java 对函数式编程的支持。

谈谈对java 多态的理解

谈谈对 java 中 synchronzied 的理解

任务01——谈谈对参与工作室的预期