Bytecode ansehen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

wie kann ich mir nochmal den Bytecode ansehen, ich muss ja da irgendwie die *.class- Datei sichtbar machen,
geht das irgendwie mit der IDE NetBeans?

lg
 

Marco13

Top Contributor
Ich nehme an, du meinst
javap -c NameDerClassDateiAberOhneDateiendung

Das sind aber die Mnemonics. Der eigentliche Bytecode ist eine Folge von Zahlen. (Schreibe gerade ein Programm, dass das Zeuch liest, deswegen bin ich da vielleicht ein bißchen spitzfindeig :wink: )
 

Verjigorm

Top Contributor
mal ne blöde Frage:

was macht man mit den "Mnemonics"?
Habs mir grad mal angeschaut... lässt sich damit irgenwas interessantes anstellen?
 

MQue

Top Contributor
Kann man das mit der IDE NetBeans auch ansehen (die Mnemonics) und wie schaut das genau aus, was stellen die Mnemonics, Ich kenn das nur von Assembler, da ist ja auch

Add
Mov
usw.

die Mnemonics, also es müssen im Bytecode auch irgendwwelche Abkürzungen sein, aber für was oder liege ich da ganz falsch?
 
M

maki

Gast
Das Gegenstück zu Mnenomic Code ist sog. Opcode, zumindest in Assembler.
Bei sind gleichwertig, nur eine andere Darstellung.

Mnemonics dienen dem Programmierer, da sie einfacher zu merken sind als Opcodes, denn letztere bestehen nur aus nur Hex Zahlen, ersteres sind Kürzel.
 

MQue

Top Contributor
Und was kann ich jetzt mit dem machen bzw. was kann ich aus dem herauslesen:

Code:
javap -c NewJFrame
Compiled from "NewJFrame.java"
public class javaapplication99.NewJFrame extends javax.swing.JFrame{
public javaapplication99.NewJFrame();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method javax/swing/JFrame."<init>":()V
   4:   aload_0
   5:   invokespecial   #2; //Method initComponents:()V
   8:   return

public static void main(java.lang.String[]);
  Code:
   0:   new     #28; //class javaapplication99/NewJFrame$1
   3:   dup
   4:   invokespecial   #29; //Method javaapplication99/NewJFrame$1."<init>":()V

   7:   invokestatic    #30; //Method java/awt/EventQueue.invokeLater:(Ljava/lan
g/Runnable;)V
   10:  return

}
 
M

maki

Gast
Und was kann ich jetzt mit dem machen bzw. was kann ich aus dem herauslesen:
Den Bytecode den der Compiler aus deinem Quelltext erzeugt hat.

Keine Angst, dass sind die Profis die damit etwas anfangen können.
Mir sagt das auch nix :D
 

The_S

Top Contributor
Michael1234 hat gesagt.:
Und was kann ich jetzt mit dem machen bzw. was kann ich aus dem herauslesen:

Du kannst herauslesen was der Compiler mit deinem Code gemacht hat. Z. B. siehst du so was der Compiler alles optimiert hat.

Wenn du nicht weißt, was du damit anfangen sollst, warum willst du ihn dir dann überhaut ansehen ???:L
 

MQue

Top Contributor
:shock: damit ich vielleicht in Zukunft besseren Code schreiben kann (so nach dem Umkehr- Prinzip)
und weils mich interessiert, mal hinter die Kulissen zu schauen
 

quippy

Bekanntes Mitglied
Oder suchst Du vielleicht "jad", ein Java Decompiler? Leider wird da wohl nicht dran weitergearbeitet - ich denke, java5 und größer kann der nicht immer korrekt darstellen...

Da gibt es übrigens für Eclipse ein Plugin für "jadclipse"
 

Marco13

Top Contributor
Ein Umkehrung (d.h. die Zuordnung der echten bytes zu den entsprechenden Mnemonics) gibt's hier
http://java.sun.com/docs/books/jvms/second_edition/html/Mnemonics.doc.html

Und was die einzelnen Befehle machen, steht hier
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions.doc.html
bzw. alles in einer PDF-Datei
http://java.sun.com/docs/books/jvms/second_edition/Java5-Instructions2.pdf

Ob das dazu beiträgt, besseren code zu schreiben, ist aber fraglich - da sollte man sich keine Seiten über den Bytecode durchlesen (der ja eh noch vom Hotspot-Compiler verändert und optimiert wird), sondern eher über OOP...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben