初识JVM

251 阅读3分钟

1. 初识Java

Java 能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:

  1. 它摆脱了硬件平台的束缚,实现了 “一次编写、到处运行”。
  2. 它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题。
  3. 它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增加而获得更高的性能。
  4. 它有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能。
  5. 它与身俱来对分布式技术的支持就比较完善。

2. Java 技术发展的时间线

3. Java 技术体系所包含的内容

4. 了解 JVM 的必要性

一般情况下,仅需知道java核心类库,以及第三方类库里API的用法,便可以专注于实现具体业务,并且依赖Java虚拟机自动执行乃至优化应用程序。
如果把核心类库的API比作数学公式的话,那么Java虚拟机的知识就好比公式的推导过程。掌握数学公式固然可以应付考试,但是了解背后的推导过程更加有助于记忆和理解。并且,在遇到哪些没法套公式的情况下,我们也能知道如何解决。

5. 学习 JVM 的好处

  • JVM提供了近千个配置参数

    $ java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version | wc -l
    java version "10" 2018-03-20
    Java(TM) SE Runtime Environment 18.3 (build 10+46)
    Java HostSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
        812
    
  • 更好地规避JVM在使用中的Bug

  • JVM拥有最前沿、最成熟的垃圾回收算法实现,以及即时编译器实现。了解其背后决策,对其他代码托管技术也能触类旁通

  • 除Javaw外,Scala、Clojure、Groovy、以及时下热门的Kotlin,这些语言都可以运行在JVM上。

    Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
    Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。
    Scala 源代码被编译成 Java 字节码,所以它可以运行于 JVM 之上,并可以调用现有的 Java 类库。

    Clojure 是一种运行在 Java 平台上的 Lisp 方言。
    Lisp 是一种以表达性和功能强大著称的编程语言,但人们通常认为它不太适合应用于一般情况,而 Clojure 的出现彻底改变了这一现状。
    如今,在任何具备 Java 虚拟机的地方,您都可以利用 Lisp 的强大功能。

    Groovy 是一种基于 JVM(Java 虚拟机)的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。
    Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。
    由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。

    Kotlin 是一个用于现代多平台应用的静态编程语言 [1] ,由 JetBrains 开发。
    Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
    Kotlin 已正式成为 Android 官方支持开发语言。



参考来源:
极客时间《深入拆解Java虚拟机》
周志明 《深入理解Java虚拟机》