什麼是位元組碼

位元組碼是 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 - 檢索類的靜態欄位的值。在這種情況下, PrintStreamOut of System

ldc - 將常量推入堆疊。在這種情況下,字串 Hello World

invokevirtual - 在堆疊上的已載入引用上呼叫方法,並將結果放在堆疊上。該方法的引數也取自堆疊。

那麼,還有更多的權利嗎?

有 255 個操作碼,但並非所有操作碼都已實現。可以在此處找到包含所有當前操作碼的表: Java 位元組碼指令列表

如何編寫/編輯位元組碼?

有多種方法可以編寫和編輯位元組碼。你可以使用編譯器,使用庫或使用程式。

寫作:

用於編輯:

我想了解更多有關位元組碼的資訊!

可能有一個專門針對位元組碼的特定文件頁面。本頁重點介紹使用不同庫和工具修改位元組碼。