JVM 对于每位 Java 语言编程者来说无疑是“重中之重”,尽管我们每天都在与它打交道,却很少来审视它、了解它,慢慢地,它成为了我们“熟悉的陌生人”

因此,我计划写一个「从 1 开始学 JVM 系列」 ,主要面向有一定 Java 基础的同学。同时,梳理总结一下自己过去积累的 JVM 体系知识和技能。

从 JVM 基础知识聊起

常见的编程语言是如何分类的?

众多周知,Java 是一门面向对象的编程语言。

对于编程语言,使用不同的标准有不同的分类,我们不妨一起来看看常见的分类。

第一种常见的分类为面向过程、面向对象、面向函数的编程语言。

  • 面向过程,如 C
  • 面向对象,如 Java、C++
  • 面向函数,如 Scala

第二种可以将编程语言分为静态类型、动态类型

  • 静态类型,如 Java
  • 动态类型,如 python、javascript

第三种可以将编程语言分为有虚拟机、无虚拟机

  • 有虚拟机,如 Java
  • 无虚拟机,如 C、C++

第四种可以将编程语言分为有 GC、无 GC

  • 有 GC,如 Java、Go

  • 无 GC,如 C、C++

通过对前面分类的小结,我们知道,Java 是一种面向对象、静态类型、有虚拟机、有 GC 的高级语言。

此外,Java 同时支持编译执行和解释执行、有运行时、能够跨平台(Write once, run anywhere,即“一次编写,到处执行”)。

你的 JVM 基础“大厦”稳健吗?-LMLPHP

编程语言如何跨平台?

一般而言,有两种跨平台的方式。

第一种方式是「源代码跨平台」

这种方式通过在不同的平台上(例如分别在 Linux、Window)编译源码,生成不同的二进制文件,从而获得跨平台运行的能力。

但缺点也很明显,特定平台上编译出来的二进制无法跨平台运行

你的 JVM 基础“大厦”稳健吗?-LMLPHP

源代码跨平台
09-09 04:36