Программирование в байт-коде 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, но я могу продолжить его, если есть интерес.

Ответ 5

Байт-код записывается как фактические байты, которые обычно не редактируются обычным текстовым редактором.

Это означает, что вам понадобится то, что преобразует текстовое представление в двоичный. Разумным местом для начала было бы ассемблер вроде Jasmin.