• 字节码与类的加载篇


    1 字节码文件的跨平台性

    1.1 Class文件结构

    image
    image

    1.2 Java语言:跨平台的语言

    • 当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译
    • 这个优势不再那么吸引人了。Python、PHP、Per1、Ruby、Lisp等有强大的解释器。
    • 跨平台似乎已经快成为一门语言必选的特性。

    1.3 Java虚拟机:跨语言的平台

    Java虚拟机不和包括Java 在内的任何语言绑定,它只与“Class 文件”这种特定的二进制文件格式所关联。无论使用何种语言进行软件开发,只要能将源文件编译为正确的Class文件,那么这种语言就可以在Java虚拟机上执行。可以说,统一而强大的
    Class文件结构,就是]ava虚拟机的基石、桥梁。
    image

    1.4 学习参照oracle官方的规范

    image
    ps://docs.oracle.com/javase/specs/index.html

    • 所有的JVWN全部遵守Java虚拟机规范,也就是说所有的JVN环境都是一样的,这样一来字节码文件可以在各种JVN上运行。

    1.5 想要让一个Java程序正确地运行在JVM中,Java源码就必须要被编译为符合JVM规范的字节码。

    • 前端编译器的主要任务就是负责将符合Java语法规范的Java代码转换为符合JVM规范的字节码文件。
    • javac是一种能够将Java源码编译为字节码的前端编译器。
    • Javac编译器在将Java源码编译为一个有效的字节码文件过程中经历了4个步骤,分别是词法解析、语法解析、语义解析以及生成字节码。
      image
      Oracle的JDK软件包括两部分内容:
    • 一部分是将Java源代码编译成Java虚拟机的指令集的编译器
    • 另一部分是用于实现Java虚拟机的运行时环境。

    2 了解Java的前端编译器

    image

    2.1 Java是半解释型半编译型的语言

    前端编译器:将.java文件编译成字节码文件
    后盾编译器:
    解释器:Java早期只有解释器,逐行执行字节码,执行性能差,给人感觉效率差。
    JIT:将热点代码也就是反复执行的代码缓存起来,执行效率明显提升。

    2.2 前端编译器vs后端编译器

    Java源代码的编译结果是字节码,那么肯定需要有一种编译器能够将Java源码编译为字节码,承担这个重要责任的就是配置在path环境变量中的javac编译器。javac是一种能够将Java源码编译为字节码的前端编译器。
    HotSpot VW并没有强制要求前端编译器只能使用javac来编译字节码,其实只要编译结果符合JVW规范都可以被JVW所识别即可。
    在Java的前端编译器领域,除了javac之外,还有一种被大家经常用到的前端编译器,那就是内置在Eclipse中的ECJ(EclipseCompiler for Java)编译器。和Javac的全量式编译不同,EC是一种增量式编译器。

    • 在Eclipse中,当开发人员编写完代码后,使用“Ctr1+S”快捷键时,ECJ编译器所采取的编译方案是把未编译部分的源码逐行进行编译,而非每次都全量编译。因此ECJ的编译效率会比javac更加迅速和高效,当然编译质量和javac相比大致还是一样的。
    • ECJ不仅是Eclipse的默认内置前端编译器,在Tomcat中同样也是使用ECJ编译器来编译jsp文件。由于ECJ编译器是采用
    • 默认情况下,Intelli] IDEA使用javac编译器。(还可以自己设置为AspectJ编译器ajc)

    前端编译器并不会直接涉及编译优化等方面的技术,而是将这些具体优化细节移交给HotSpot的JIT编译器负责。

  • 相关阅读:
    论文写作参考文献格式规范
    中国人正在上的四个大当,你上了没?
    Visual Basic.NET中访问数据的方法
    [转]怎样写好论文一个大学教授、审稿专家的写作经验
    在simulink环境下实现实时仿真
    用matlab做经典功率谱估计
    显示不了隐藏文件的解决办法
    改proe里面背景颜色
    推荐一款免费电脑打电话软件,只要注册一次就可以获得8分钟免费通话时间
    最小二乘法曲线拟合
  • 原文地址:https://www.cnblogs.com/liuzhengkun/p/15967100.html
Copyright © 2020-2023  润新知