Skip to content

rlegendi/JYzer

Repository files navigation

README

Hi all!

Preamble

First of all, please forgive me for my lame English, but I wasn't able to practice it for a while ...

Once upon a time a JVM specification has fallen into my hands in the summer, and I've read it. Yes, that's a little nerdish ;-) While I was reading I've realised that it's so easy to understand the structure of a classfile, and to write a disassembler is not as nearly impossible as I tought. Ahm, well, it needs a little geekness although...

So! I've started to write the code, and finished it in 3 weeks. Since then I'm debugging the code & writing the documentation (gee, that's a great work!).

At the moment the program has the version number of 0.18. A lot of features I would like to build in was put aside, because I've run out of time (hey! don't say anything, I've failed my most imortant math exam to make the program stable !!!).

The program can disassemble code generated by an 1.5 compiler, but be careful! Here's a little list about the new features and some notes:

  • varargs: They can be disassembled, but the source will show an array of objects. For instance a method having the signature "public void printf(Object... params)" will be displayed as "public void printf(Object[] params)".

  • enums: enums are also supported, although they are treated as a class.

  • generics & static import : Generics are implemented by type erasure - generic type information is present only at compile time, after which it is erased by the compiler. That's almost the same with the static import. These information are not recoverable!

I haven't implemented annotations yet. So be carefull with that too. The program can disassemble 1.4 bytecodes.

Classfile versions:

  • 45.3+ is java 1.1
  • 46.0 is java 1.2
  • 47.0 is java 1.3
  • 48.0 is java 1.4
  • 49.0 if java 1.5 (5.0)

I've tested the program over 80 classfiles, and it has given a merely perfect output.

You can always report any bug you find!

System requirements

You'll need a Java Runtime Environment (min. JRE 1.5) to run this program, you can find it on the following link:

http://java.sun.com/

The program is entirely written in Java, so you can use with it on GNU/Linux, Windows, Solaris, Sparc, etc. Simply click on the jar file to start it, or type in the following line into the command prompt:

java -jar JYzer.jar

How to compile

You need the ANT build tool available at the apache web site. http://jakarta.apache.org/ant.

Having installed ANT, type 'ant help' to display the available targets.

Last words

I have got some tips and really a lot of help from the following projects. Hopefully haven't miswritten anything ...

Last dwords

Yes. That was some kind of joke. BRUHAHAHAHHAAHAHAHAH!!! (Please forgive me, I'm beside my computer for more than 15 hours...)

Use linux. Use free softwares. Be happy and have a lot of children!

Ah yes, and one more thing. Thx for the following bands for giving some music in the background while I was coding:

  • Terrorgruppe (they are a very cool band - really deutschepunk!)
  • Anti-Flag
  • Hatóságilag Tilos (they are Hungarian guys - one of the best we have!)
  • Dead Kennedys (I don't know whether they know that 29A has used one of their song, "Holiday in Cambodia" I think in issue #8 ... Funny ;-) )
  • Sepultura (especially for that funny song with Luciano Pavarotti - I wasn't able to stop laughing when I first heard it :-)))))) )
  • Katéter Rap Yam (some of my friends; especially for singing about a pub where we used to drink :-) )

'bout me:

So, if you are intrested in more Java programs, take a look on my page. It is in Hungarian, but most of the comments in the codes are in English.

The other projects DO have sense ;-) At least hopefully ...

And have a nice day!!!

About

A Java bytecode verifier for Java 1.4. This was one of my mandatory exercises a long-long time ago at the university.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published