1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為您誤解了一些事情,所以讓我們先了解基礎(chǔ)知識(shí):
計(jì)算機(jī)程序只不過是一組由處理器讀取然后執(zhí)行的指令。一個(gè)接一個(gè)執(zhí)行的任務(wù)列表。
Java 使用稱為 Java 運(yùn)行時(shí)環(huán)境 (JRE) 的東西。JRE 有點(diǎn)(不完全是)虛擬處理器,它有自己的指令集,稱為 java 字節(jié)碼。這個(gè)“虛擬處理器”在您的操作系統(tǒng)內(nèi)部運(yùn)行。
Java 運(yùn)行時(shí)環(huán)境是用某種語言編寫的。Sun JRE 是用 C 語言編寫的。C 代碼又被編譯成您的真實(shí)處理器的機(jī)器代碼(您的處理器可以理解的代碼)。
Java被編譯成java字節(jié)碼。
所以回答你的問題:規(guī)范只不過是對(duì)java編程語言應(yīng)該如何表現(xiàn)以及它看起來像什么的描述?;旧鲜且粋€(gè)普通的文本文檔,你可以用類似 word 的東西來寫。
有了這個(gè)規(guī)范,程序員就可以構(gòu)建一個(gè)編譯器。編譯器是一個(gè)像這樣更改 java 代碼的程序:
for (int i = 2; i < 1000; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0)
continue outer;
}
System.out.println (i);
}
進(jìn)入看起來像這樣的字節(jié)碼
0: iconst_2
1: istore_1
2: iload_1
3: sipush 1000
6: if_icmpge 44
9: iconst_2
10: istore_2
11: iload_2
12: iload_1
13: if_icmpge 31
16: iload_1
17: iload_2
18: irem
19: ifne 25
22: goto 38
25: iinc 2, 1
28: goto 11
31: getstatic #84; // Field java/lang/System.out:Ljava/io/PrintStream;
34: iload_1
35: invokevirtual #85; // Method java/io/PrintStream.println:(I)V
38: iinc 1, 1
41: goto 2
44: return
執(zhí)行此操作的編譯器程序可以用任何語言編寫,但建議將其編寫為 C++ 等低級(jí)語言,以使編譯過程更快。
添加回答
舉報(bào)