zoukankan      html  css  js  c++  java
  • Java源代码怎么生成机器码?

    1. 解释执行与编译执行的区别

      对于我们平时写的代码,计算机是没办法直接识别的,需要相应的编译器将其编译成机器代码(一些计算机可以直接识别的二进制代码),机器才能执行。

    编译执行:先编译再执行,这里需要有一个编译器,来将我们的代码全部编译成机器代码,然后进行执行。因为先整体进行编译,所以这里会生成编译后的机器代码。

    解释执行:需要一个解释器,它会将我们的代码一句句解释成机器代码来执行,可以认为是,解释一句,执行一句。在这个过程中,不会生成中间文件。

    2. 生成字节码文件

    通过如javac等(前端)编译器,由.java代码源文件生成.class字节码文件

    3. JIT 编译器:字节码到机器码

    把经常运行的代码作为"热点代码"编译成与本地平台相关的机器码。

    HotSpot虚拟机内置两种JIT编译模式:C1、C2。

    C1:client模式,适用于对启动速度敏感的应用,比如普通Java桌面应用

    C2:server模式,为长时间运行的服务端应用设计的

    C1的编译速度比C2快,C2会做一些激进的优化,编译耗时较长

    HotSpot虚拟机有三种运行模式:混合模式、解释模式、编译模式。

    4. AOT 编译器:源代码到机器码 

    直接将字节码编译成机器码

       Java作为跨平台的计算机语言,在跨平台时是有不同的虚拟机JVM对应不同的平台。首先我们编写*.java文件,然后生成*.javac文件,*.javac会转换成*.class文件,而只有class文件才是能被Java的虚拟机识别的,再通过Java虚拟机生成对应平台(平台常见有:Windows、Linux、Android等)所需要的机器码(例如二进制、汇编等语言)。

          Java文件编译后就会生成class文件。

     

  • 相关阅读:
    生成随机端口函数
    于获得MFC窗口其它类指针的方法
    VC6.0中使用ADO操作Access数据库 (转)
    【原创】C++利用IXMLDOM解析XML文件。
    转帖:用MFC对话框做无闪烁图片重绘一一 程序设计: icemen
    C代码优化方案(转)
    【转】C++ Socket UDP "Hello World!"
    线程中使用UpdateData出错解决方法(转)
    C语言调试打印log函数。
    Windows Sockets 网络编程(三) —— WINDOWS SOCKETS 1.1 程序设计(转)
  • 原文地址:https://www.cnblogs.com/yuanqiangfei/p/12257253.html
Copyright © 2011-2022 走看看