概述
jdk提供了反编译工具javap。使用反编译工具,可将字节码文件反编译为源码、有字节码命令的文件等。对于有class文件查看源码,分析Java程序性能提供了基础支持。以下粗略演示下工具使用,大致说下相关内容,更详细更具体的只是请找相关知识书籍、资料学习。
准备工作及步骤
第一步,安装了jdk,且配置好了环境变量。
第二步,准备一个简单的Java文件并编译好。
第三步,使用javap进行反编译。
详细说明
第一步,已准备,不打算啰嗦,略过
第二步,准备的简单Java程序如
package com.dzswj.znfortest;
public class Test {
private String str;
}
编译后的class文件为
第三步,反编译class
进入该class文件目录,打开cmd。如果不熟悉javap使用方法可javap或者javap -help可输出使用帮助信息。如
>javap
用法: javap <options> <classes>
其中, 可能的选项包括:
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath <path> 指定查找用户类文件的位置
-cp <path> 指定查找用户类文件的位置
反编译,输出如
如果想要输出私有成员,需使用javap -p Test.class
如果想要反汇编
如果想要更详细的反汇编信息,则使用javap -v -p Test.class
反汇编为 字节码命令有助于分析Java程序性能,至于如何分析,涉及的内容太多,本人也是略知皮毛,如果想深入学习,可以从《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》学习。