谈谈你对 Java 平台的理解|学习笔记

最近朋友圈及公众号被极客时间中的一个课程《Java核心技术36讲》广告刷屏了,加上最近想夯实一下 Java 基础,所以购买了该课程。为了不浪费我的大洋,并提高学习效果,准备写系列文章,记录学习笔记,希望可以坚持下去。

第一讲|谈谈你对 Java 平台的理解?

问题:
谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话对么?

好,这是两个问题,我们把它拆解开,分开学习。

  • 谈谈你对 Java 平台的理解?
    先放一张 Java 技术体系图
    根据作者提供的思维导图,重新绘制了一下
    看了这张大图,好吧,我继续努力。

  • Java 是解释执行?
    首先,我们来学习一下解释执行与编译执行。
    解释执行与编译执行,是计算机编程语言的两种执行方式。

  • 编译执行
    编译器将高级语言(如 C)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。
    虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。

  • 解释执行
    解释器将源语言(如 BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。
    解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。

我们开发的 Java 的源代码,首先通过 Javac 编译(这里说的编译和 C/C++ 是有着不同意义的,Javac 的编译生成的不是可以直接执行的机器码)成为字节码。然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器解释执行。但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK 提供的 Hospot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

举例:
JDK 8 实际是解释和编译混合的一种模式,即所谓的混合模式(-Xmixed)。
Java 虚拟机启动时,可以指定不同的参数对运行模式进行选择。 比如,指定“-Xint”,就是告诉 JVM 只进行解释执行。指定“-Xcomp”,就是告诉 JVM 只进行编译执行。
除了我们日常最常见的 Java 编译模式,其实还有一种新的编译方式,即所谓的 AOT(Ahead-of-Time Compilation),直接将字节码编译成机器代码,这样就避免了 JIT 预热等各方面的开销,比如 Oracle JDK 9 就引入了实验性的 AOT 特性。

更多文章欢迎关注公众号 ETLshow,信息爆炸,我们来筛!
公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值