Looking for java Keywords? Try Ask4Keywords

Java Language Что такое Bytecode?


пример

Bytecode - это набор инструкций, используемых JVM. Чтобы проиллюстрировать это, возьмем эту программу Hello World.

public static void main(String[] args){
    System.out.println("Hello World");
}

Это то, чем он превращается в компиляцию в байт-код.

public static main([Ljava/lang/String; args)V    
    getstatic java/lang/System out Ljava/io/PrintStream;
    ldc "Hello World"
    invokevirtual java/io/PrintStream print(Ljava/lang/String;)V

Какова логика этого?

getstatic - возвращает значение статического поля класса. В этом случае PrintStream «Out» of System .

ldc - Вставьте константу в стек. В этом случае строка «Hello World»

invokevirtual - вызывает метод на загруженной ссылке в стеке и помещает результат в стек. Параметры метода также берутся из стека.

Ну, должно быть, правильнее?

Есть 255 опкодов, но не все они реализованы. Таблицу со всеми текущими кодами операций можно найти здесь: списки инструкций для байт-кода Java .

Как я могу писать / редактировать байт-код?

Существует несколько способов записи и редактирования байт-кода. Вы можете использовать компилятор, использовать библиотеку или использовать программу.

Для записи:

Для редактирования:

Я хотел бы узнать больше о байтекоде!

Вероятно, определенная страница документации специально для байт-кода. Эта страница посвящена модификации байт-кода с использованием разных библиотек и инструментов.