Programming in Java bytecode [closed]
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
开发者_开发知识库Improve this questionI'm looking to write a short program (maybe a Hello World) in Java bytecode. I just want to write the bytecode using my text editor and run it. How would I do this? Got an example? Thanks!
You could try Jasmin!
.class public HelloWorld
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 3
.limit locals 1
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Hello World."
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
return
.end method
You compile it using:
> java -jar jasmin.jar hello.j
And then you run it like any class:
> java HelloWorld Hello World.
Update
I see that your question mentions "without using Javac or Java". Could you clarify how you meant that statement?
I've created a new Java bytecode assembler that is backwards compatible with Jasmin but also adds lots of new features and simplifies the syntax slightly.
Here's an example of how you might write a Hello World program.
.class public hello
.super java/lang/Object
.method public static main : ([Ljava/lang/String;)V
.limit stack 10
.limit locals 10
getstatic java/lang/System out Ljava/io/PrintStream;
ldc "Hello World!"
invokevirtual java/io/PrintStream println (Ljava/lang/Object;)V
return
.end method
I've also written a tutorial on bytecode assembly. It currently only covers Hello, World, but I can continue it if there is interest.
Byte code is written as actual bytes, which are not normally easily editable by a normal text editor.
This means you will need something that converts a textual representation to binary. A reasonable place to start would be an assembler like Jasmin.
精彩评论