用Java字节码编程

我想用Java字节码编写一个简短的程序(也许是一个Hello World)。 我只想用我的文本编辑器编写字节码并运行它。 我将如何做到这一点? 有个例子吗? 谢谢!

你可以试试茉莉 !

 .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 

你使用下面的代码编译

 > java -jar jasmin.jar hello.j

然后你像任何一个class级一样运行它:

 > java HelloWorld
你好,世界。

更新

我看到你的问题提到“不使用Javac或Java”。 你能否澄清你的意思?

我创build了一个新的Java字节码汇编程序 ,它与Jasmin向后兼容,但也增加了许多新function,并略微简化了语法。

下面是一个如何编写Hello World程序的例子。

 .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 

我也写了一个关于字节码组装的教程 。 它目前只涵盖你好,世界,但如果有兴趣,我可以继续。

你有没有考虑JBE (Java字节码编辑器)?
它基于Apache的字节码工程库( BCEL )

也许这篇文章可以让你开始: 字节码基础 ( 有点旧 ,但你会明白)。

类文件格式也会派上用场:D

字节代码被写为实际的字节,这通常不易被普通的文本编辑器编辑。

这意味着您将需要将文本表示转换为二进制文件的内容。 一个合理的起点将是一个像Jasmin这样的汇编程序员 。