谈谈对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体现了跨平台的特点。
编译过程大体是这样的:
- Java源代码通过javac编译成.class字节码文件(前端编译器进行编译)
- .class就是可以到处运行的文件(通过JVM),然后.class文件会被JVM解释/编译成目标机器的代码(后端编译器进行编译/解释)
“到处运行”的关键和前提就是JVM。在第二次编译中JVM才是关键。
图片理解
扩展
运行于JVM上的其他语言
JVM字节码存在着一些规范,所以一些符合JVM字节码规范的文件都可以在JVM上运行的。
所以也给其他运行在JVM上的语言提供了一个平台(比如:Scala、Groovy、Kotlin…),可以扩展出一些Java没有实现的特性或者一些语法糖。
Java语法糖
语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,只是为了更方便程序员使用,提高开发效率。说白了,语法糖就是对现有语法的一个封装。
Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种:
- 泛型与类型擦除
- 自动装箱与拆箱,变长参数、条件编译
- 增强for循环
- 内部类与枚举类
下篇预告
这个问题,极有可能引出下一个问题。
Java是解释执行还是编译执行?下篇为大家讲解。
文章都看完了,点个赞支持一下呗。
欢迎在评论区大家讨论,补充与指点知识点。
以上是关于谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》的主要内容,如果未能解决你的问题,请参考以下文章