Программирование в байт-коде Java
Я хочу написать короткую программу (возможно, Hello World) в байт-коде Java. Я просто хочу написать байт-код с помощью текстового редактора и запустить его. Как мне это сделать? Есть пример? Спасибо!
Ответы
Ответ 1
Вы можете попробовать 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
Скомпилируйте его, используя:
> java -jar jasmin.jar hello.j
И затем вы запускаете его как любой класс:
> java HelloWorld
Hello World.
Обновление
Я вижу, что в вашем вопросе упоминается "без использования Javac или Java". Не могли бы вы пояснить, как вы имели в виду это утверждение?
Ответ 2
Вы считали JBE (Java Bytecode Editor)?
Он основан на библиотеке инженерии байт-кода Apache (BCEL)
Ответ 3
Я создал новый ассемблер байт-кода Java, который обратно совместим с Jasmin, но также добавляет много новых функций и немного упрощает синтаксис.
Вот пример того, как вы можете написать программу 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
Я также написал учебник по сборке байт-кода. В настоящее время он охватывает только Hello, World, но я могу продолжить его, если есть интерес.
Ответ 4
Возможно, эта статья поможет вам начать работу: Основы байткода (немного старое, но вы получите идею).
Также будет полезен формат файла класса: D
Ответ 5
Байт-код записывается как фактические байты, которые обычно не редактируются обычным текстовым редактором.
Это означает, что вам понадобится то, что преобразует текстовое представление в двоичный. Разумным местом для начала было бы ассемблер вроде Jasmin.