每个人都注定要经历生活的美好以及不可避免的黑暗:幻灭、衰老、疾病、孤独、失落、无意义、痛苦的选择和死亡 。
基本概念我们可以通过javac命令将Java程序的源代码编译成Java字节码,也就是我们常说的类文件,一般理解为编译 。
然而,字节码不是机器语言 。为了使机器能够执行,有必要将字节码翻译成机器指令 。这个过程由解释器实现,称为解释执行 。
注意:不要把编译和解释执行混为一谈,后面说的后端编译过程是JVM为了提高效率而做的优化 。
在不同的虚拟机实现中,执行字节码时,执行引擎通常有两种选择:解释执行(由解释器执行)和编译执行(由即时编译器生成的本地代码执行),或者两者都有 。
所以你可以考虑一下Java是编译语言还是解释语言 。
java为什么不直接编译成可执行文件?
实现跨平台 。
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这个网站的主要优点是有许多反编译程序可供选择 。
离线反编译工具
JD-GUI
GitHub:https://github.com/java-decompiler/jd-gui官方网站:http://java-decompiler.github.io/
下载后 , 将类文件或jar包直接拖到界面上 。
卢伊滕
下载地址:https://github.com/deathmarine/Luyten/releases
阿尔萨斯
http://cj.9446.cn/wp-content/wp-uploads/2022/11/0229error.html class="syl-line-pure-english">javap
javap是jdk自带的工具 , 可以反编译代码或者查看Java编译器生成的字节码,通过javap -help直接查看其使用情况 。
用法: javap
推荐阅读
- 君子一诺下一句是什么 君子一诺下一句是啥
- 玛雅人是怎么消失的
- 户口本职业更改
- 强人皮鞋质量怎么样
- 适合女生去的培训机构 如何培训班
- 万国觉醒t4和t5的差距 万国觉醒t4和t5的差距介绍
- 如何制作漂亮的公众号文章 如何写公众号
- 泸沽湖晚上可以进去吗
- 春节送礼习俗与禁忌 春节送礼习俗与禁忌有哪些