谈谈你对Java平台的理解

 个人小站

《极客时间》:谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?

Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的”书写一次,到处运行“(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾回收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收内存,大部分情况下,程序员不需要自己操心内存的分配和回收。

我们日常会接触到 JRE(Java Runtime Environment)或者 JDK(Java Development Kit)。JRE,也就是 Java 运行环境,包含了 JVM 和 Java 类库,以及一些模块等。而 JDK 可以看作是 JRE 的一个超集,提供了更多工具,比如编译器、各种诊断工具等。

对于”Java 是解释执行“这句话,这个说法不太准确。我们开发的 Java 的源代码,首先通过 javac 编译成字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码。但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分执行代码就属于编译执行,而不是解释执行了。

以下为个人模拟面试时的回答,谨供参考。

这里说的是 Java 平台,而不是 Java。

个人理解 Java 平台应该包含三个部分:

  1. Java 语言

  2. Java 虚拟机

  3. Java 生态

首先说 Java 语言

  1. 它是一门面向对象的高级语言

  2. 跨平台:一次编译,到处运行

  3. 提供了丰富的基础类库,包括集合、IO、网络、并发等

  4. Java 语言本身不进行垃圾回收

  5. JDK 提供很多工具,可以进行诊断、监控等

Java 虚拟机

  1. JVM 是 Java 语言的运行环境,在不同操作系统安装不同的虚拟机,提供 Java 语言跨平台的能力

  2. JVM 运行的是 .class 文件,只要其要求的文件,都可以被执行,并不关心文件来源,如 Groovy、Scala、JRuby、Kotlin 等

  3. JVM 的运行时数据区:程序计数器、栈、堆、本地方法栈、方法区、运行时常量池、直接内存

  4. JVM 的垃圾回收

    1. 判断对象是否死亡的算法,如引用计数算法、可达性分析算法等

    2. 垃圾收集算法,如分代收集、标记复制、标记整理等

    3. 垃圾收集器,如 CMS、G1 等

  5. JVM 的执行引擎

    1. 解析执行

    2. 编译执行

最后是 Java 生态

  1. 各种丰富的第三方框架,提供了各种各样的功能

  2. 活跃的社区和论坛,可以找到各种问题的解决方案

  3. 业界非常多的系统都基于 Java 编写

总结:Java 入门简单,精通难

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值