Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
"javap -v" - Verbose Mode
How to "javap" command use verbose mode to print additional information about the selected class.
✍: FYIcenter
You can use the "-v" or "-verbose" option of the "javap" command
to print additional information about the specified class bytecode.
1. Compile HelloWorldFrame.java used in the last tutorial into a bytecode file, HelloWorldFrame.class:
> javac HelloWorldFrame.java
2. Disassemble it using "javap" command with the "-v" option
> javap -v HelloWorldFrame.class
Classfile HelloWorldFrame.class
Last modified 2021; size 634 bytes
SHA-256 checksum 9d6d07fecb3045d8b27d071419e34d02532ea1e1db9f27707d9e7ab474ff45a4
Compiled from "HelloWorldFrame.java"
public class HelloWorldFrame extends javax.swing.JFrame
minor version: 0
major version: 59
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #10 // HelloWorldFrame
super_class: #2 // javax/swing/JFrame
interfaces: 0, fields: 1, methods: 2, attributes: 3
Constant pool:
#1 = Methodref #2.#3 // javax/swing/JFrame."<init>":()V
#2 = Class #4 // javax/swing/JFrame
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 javax/swing/JFrame
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = String #8 // Hello World!
#8 = Utf8 Hello World!
#9 = Fieldref #10.#11 // HelloWorldFrame.message:Ljava/lang/String;
#10 = Class #12 // HelloWorldFrame
#11 = NameAndType #13:#14 // message:Ljava/lang/String;
#12 = Utf8 HelloWorldFrame
#13 = Utf8 message
#14 = Utf8 Ljava/lang/String;
#15 = Class #16 // HelloWorldFrame$1
#16 = Utf8 HelloWorldFrame$1
#17 = Methodref #15.#18 // HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
#18 = NameAndType #5:#19 // "<init>":(LHelloWorldFrame;)V
#19 = Utf8 (LHelloWorldFrame;)V
#20 = Methodref #10.#21 // HelloWorldFrame.setContentPane:(Ljava/awt/Container;)V
#21 = NameAndType #22:#23 // setContentPane:(Ljava/awt/Container;)V
#22 = Utf8 setContentPane
#23 = Utf8 (Ljava/awt/Container;)V
#24 = Methodref #10.#25 // HelloWorldFrame.setSize:(II)V
#25 = NameAndType #26:#27 // setSize:(II)V
#26 = Utf8 setSize
#27 = Utf8 (II)V
#28 = Methodref #10.#3 // HelloWorldFrame."<init>":()V
#29 = Methodref #10.#30 // HelloWorldFrame.setVisible:(Z)V
#30 = NameAndType #31:#32 // setVisible:(Z)V
#31 = Utf8 setVisible
#32 = Utf8 (Z)V
#33 = Utf8 Code
#34 = Utf8 LineNumberTable
#35 = Utf8 main
#36 = Utf8 ([Ljava/lang/String;)V
#37 = Utf8 SourceFile
#38 = Utf8 HelloWorldFrame.java
#39 = Utf8 NestMembers
#40 = Utf8 InnerClasses
{
java.lang.String message;
descriptor: Ljava/lang/String;
flags: (0x0000)
public HelloWorldFrame();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method javax/swing/JFrame."<init>":()V
4: aload_0
5: ldc #7 // String Hello World!
7: putfield #9 // Field message:Ljava/lang/String;
10: aload_0
11: new #15 // class HelloWorldFrame$1
14: dup
15: aload_0
16: invokespecial #17 // Method HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
19: invokevirtual #20 // Method setContentPane:(Ljava/awt/Container;)V
22: aload_0
23: bipush 100
25: bipush 100
27: invokevirtual #24 // Method setSize:(II)V
30: return
LineNumberTable:
line 8: 0
line 6: 4
line 9: 10
line 15: 22
line 16: 30
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
0: new #10 // class HelloWorldFrame
3: dup
4: invokespecial #28 // Method "<init>":()V
7: astore_1
8: aload_1
9: iconst_1
10: invokevirtual #29 // Method setVisible:(Z)V
13: return
LineNumberTable:
line 18: 0
line 19: 8
line 20: 13
}
SourceFile: "HelloWorldFrame.java"
NestMembers:
HelloWorldFrame$1
InnerClasses:
#15; // class HelloWorldFrame$1
⇒ "javap -v" - Major Version Code
2021-09-09, ∼1590🔥, 0💬
Popular Posts:
JDK 11 jdk.crypto.ec.jmod is the JMOD file for JDK 11 Crypto EC module. JDK 11 Crypto EC module comp...
JLayer is a library that decodes/plays/converts MPEG 1/2/2.5 Layer 1/2/3 (i.e. MP3) in real time for...
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java"....
Xalan-Java, Version 2.7.1, is an XSLT processor for transforming XML documents into HTML, text, or o...
The JSR 105 XML Digital Signature 1.0.1 FCS implementation provides an API and implementation that a...