zoukankan      html  css  js  c++  java
  • Java核心-01 谈谈你对Java平台的理解

    今天我要问你的问题是,谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?

    典型回答

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

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

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

    首先javac编译器将源代码编译成字节码。
    然后jvm类加载器加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度相对
    会比较慢。有些方法和代码块是高频率调用的,也就是所谓的热点代码,所以引进jit技术,
    提前将这类字节码直接编译成本地机器码。这样类似于缓存技术,运行时再遇到这类代码直
    接可以执行,而不是先解释后执行。




    ----

    回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,
    包括泛型、Lambda 等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全等基础类
    库。对于我们日常工作应用较多的类库,面试前可以系统化总结一下,有助于临场发挥

    或者谈谈 JVM 的一些基础概念和机制,比如 Java 的类加载机制,常用版本 JDK(如 JDK 8)
    内嵌的 Class-Loader,例如 Bootstrap、 Application 和 Extension Class-loader;类加载大
    致过程:加载、验证、链接、初始化(这里参考了周志明的《深入理解 Java 虚拟机》,非常棒
    的 JVM 上手书籍);自定义 Class-Loader 等。还有垃圾收集的基本原理,最常见的垃圾收集
    器,如 SerialGC、Parallel GC、 CMS、 G1 等,对于适用于什么样的工作负载最好也心里有
    数。这些都是可以扩展开的领域,我会在后面的专栏对此进行更系统的介绍

    当然还有 JDK 包含哪些工具或者 Java 领域内其他工具等,如编译器、运行时环境、安全工具、
    诊断和监控工具等。这些基本工具是日常工作效率的保证,对于我们工作在其他语言平台上,同
    样有所帮助,很多都是触类旁通的。

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10805740.html
Copyright © 2011-2022 走看看