前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈对Java“Write once, run anywhere“的理解《轻松搞定大厂面试》

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

作者头像
谙忆
发布2021-10-26 11:19:36
5040
发布2021-10-26 11:19:36
举报

谈谈对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
06172720_lvDRPi
  1. .class就是可以到处运行的文件(通过JVM),然后.class文件会被JVM解释/编译成目标机器的代码(后端编译器进行编译/解释)

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

图片理解

07161733_ysSTM4
07161733_ysSTM4

扩展

运行于JVM上的其他语言

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

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

Java语法糖

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

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

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

下篇预告

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 简介
  • 理解
  • 图片理解
  • 扩展
    • 运行于JVM上的其他语言
      • Java语法糖
      • 下篇预告
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档