程序编译运行的基本流程,编译好的程序怎么运行

聚客2022-05-31  33

java如何编译(java程序运行步骤)

每个人都注定要经历生活的美好以及它不可避免的黑暗:幻灭、衰老、疾病、孤独、失落、无意义、痛苦的选择和死亡。

基本概念

我们可以通过javac命令将Java程序的源代码编译成Java字节码,也就是我们常说的类文件,一般理解为编译。

然而,字节码不是机器语言。为了使机器能够执行,有必要将字节码翻译成机器指令。这个过程由解释器实现,称为解释执行。

注意:不要把编译和解释执行混为一谈,后面说的后端编译过程是JVM为了提高效率而做的优化。

在不同的虚拟机实现中,执行字节码时,执行引擎通常有两种选择:解释执行(由解释器执行)和编译执行(由即时编译器生成的本地代码执行),或者两者都有。

所以你可以考虑一下Java是编译语言还是解释语言。

那为什么java不直接编译成可执行文件

实现跨平台。

Java源代码编译成字节码,再由不同平台的虚拟机解释执行,达到一次编译,到处运行的跨平台效果。

编译原理

Java的编译期分为两个阶段:前端编译后端编译

前端编译

前端编译是指转换*的过程。java文件转换成*。类文件。

包括词法分析、语法分析、语义分析和中间代码生成。

主要有以下步骤:

后端编译

在一些商业虚拟机中,Java程序最初由解释器解释和执行。当虚拟机发现某个方法或代码块运行非常频繁时,它会将这些代码识别为热代码

为了提高热点代码的执行效率,虚拟机会在运行时将这些代码编译成与本地平台相关的机器码。

完成这项任务的后端编译器称为JIT编译器。

反编译

什么是反编译

因为Java编译指的是将Java源代码编译成Java字节码的过程

那么Java反编译简单来说就是指根据Java字节码翻译成源代码的过程。

为什么应该有反编译

首先这个源代码是字符编码,字节码是二进制字节流,源代码是给人看的,字节码是给虚拟机看的。

所以,要想展示给人看,就需要把字节码转换成源代码。如果你想为虚拟机执行它,你需要把源代码编译成字节码。当我们有一个类文件,想看源代码的时候,可以通过反编译来实现。

举个例子,如果你想知道一个Java语法编译后反编译是什么感觉;别人给你发一个jar包,你需要看看其中一个类是怎么写的。在这种情况下,可以考虑用Java反编译。

反编译工具

在线反编译工具

1.http://www.decompiler.com/

2.http://www.javadecompilers.com/,the这个网站的主要优点是有许多反编译程序可供选择。

离线反编译工具

反编译工具

GitHub:https://github.com/java-decompiler/jd-gui官方网站:http://java-decompiler.github.io/

下载后直接把类文件或者jar包拖到界面上。

卢伊滕

下载地址:https://github.com/deathmarine/Luyten/releases

阿尔萨斯

Https://arthas.aliyun.com/doc/,官方网站

可以使用jad命令将JVM中运行的类的字节码反编译成java代码。这个工具非常好用,强烈推荐。

其他工具

javap

javap是jdk自带的工具,可以反编译代码或者查看Java编译器生成的字节码,通过javap -help直接查看其使用情况。

用法: javap
转载请注明原文地址:https://juke.outofmemory.cn/read/217501.html

最新回复(0)