可以啊,問題是目前的反編譯都無法100%還原源碼,尤其是注釋,在編譯階段是被javac直接忽略掉的,可是一個復雜的系統離開注釋是很難通過閱讀源碼去理解的,反編譯幫助不大
B. java編譯器會將java源代碼轉換為位元組碼.對嗎
是的,先把java文件編譯成電腦能讀懂的class文件,然後電腦才能運行
C. Java里的位元組碼和源代碼分別啥意思,和起到什麼左右
/*java是一門高級編程語言,是用來寫程序代碼的。
用java寫的文本(字元串序列)就是源代碼。
計算機不能直接執行源代碼,必須用一個叫編譯器的程序(javac.exe)將源代碼
翻譯成位元組碼,然後讓一個叫解釋器的程序(java.exe)去執行位元組碼,即運行程序。
下面的就是一個小程序的源代碼,功能是輸出九九乘法表。
下圖中的Test.class就是這個源代碼文件翻譯後的由位元組碼組成的文件。
而最下面的那個黑框就是程序執行後的結果。
java Test就是在執行Test.class位元組碼文件,即運行這個程序。
*/
//這下面的就是源代碼
public class Test {
public static void main(String[] args) {
int i,j;
for(i=1;i<=9;i++) {
for(j=1;j<=i;j++)
System.out.printf("%dx%d=%-4d",j,i,j*i);
System.out.println();
}
}
}
D. Java源程序如何變成Java位元組碼
編譯器默認都會將java文件變成位元組碼讓電腦看的懂
手動的話就用cmd javac xxxx.java 編譯
E. java程序編譯後的位元組碼是怎麼轉換的
java編譯後的是位元組碼。 位元組碼,為java源代碼編譯完成後,由JVM轉換成的文件,可以在任何裝有JVM的系統上,轉化相應的機器語言。 機器碼:即機器語言,表示的就是運行位元組碼文件後的二進制序列。
F. 大理電腦培訓學校告訴你位元組碼指令的編譯與執行
java編程開發是目前市場上使用范圍非常廣泛的一種編程開發語言。今天我們就一起來了解一下,在java編程中關於位元組碼的一些指令的編譯與執行方法。
java文件編譯後的class文件,java跨平台的中間層,JVM通過對位元組碼的解釋執行(執行模式,還有JIT編譯執行,下面講解),屏蔽對操作系統的依賴。一個位元組(8位)可以儲存256中不同的指令,這樣的指令就是位元組碼,java所有指令有200個左右,這些指令組成了位元組碼文件(.class)。
一、位元組碼的主要指令:
.class文件裡面的十六進制文件,其中CAFEBABE是標志這個文件為java的編譯後的文件,00000034代表版本號,01670700一個位元組(8位)就是一個位元組指令,由於數值指令太難看懂,我們可以用javap將指令翻譯為助記指令。
1、載入或儲存指令
在棧幀中,通過指令操作數據在局部變數表與操作棧間傳遞。
ILOAD、ALOAD:將int、對象引用類型從局部變數表壓入操作棧頂;
ISTORE、ASTORE:將int、對象引用類型從操作棧頂儲存到局部變數表裡;
ICONST、BIPUSH、SIPUSH、LDC:將常亮載入到操作棧頂。
2、運算指令
對操作棧上的值進行運算,並把結果寫入操作棧頂,如IADD、IMUL。
3、類型轉換指令
I2L、D2F
4、對象創建與訪問指令
NEW
除了位元組碼指令外,大理電腦培訓http://www.kmbdqn.cn/認為還包括像LINENUMBER儲存位元組碼與源碼對應,方便調試定位;LOCALVARIABLE儲存當前方法使用到的局部表量表。
二、java源碼文件轉化為位元組碼(.class)文件的過程
JAVA源文件---------->詞法解析---------->語法解析---------->語義分析--------->生成位元組碼--------->位元組碼文件
詞法分析:根據空格分割出單詞、操作符等,形成token信息流;
語法分析:根據token流和java語法規范生成語法樹;
語義分析:檢查關鍵字、類型匹配是否正確;
G. 為什麼java要編譯成位元組碼解釋執行而不是直接解釋執行源碼
為了跨平台
編譯成的位元組流文件.class,與硬體和操作系統無關,這是跨平台基礎,然後具體執行,再用各自平台解釋器,解釋成本地機器碼
更多交流,進我空間
------------------------------------------
java是一種編譯+解釋的語言,編譯的結果本身保證了代碼安全和版權,如果全部解釋源代碼,象早期的ASP,那JAVA就不敢用於銀行、證劵等安全性較高的場合
H. 有什麼方法可以將.class位元組碼文件轉換成.java源文件
有很多反編譯軟體,jad 反編譯工具,小穎JAVA源代碼反編譯,djdeveloper等等,不過djdeveloper不時免費的,在網上搜索很多有破解辦的。
I. 如何把JAVA源代碼轉化為位元組碼
源代碼文件:.java
編譯後成為位元組碼文件:.class
.class文件可以通過jvm將位元組碼解釋成機器指令
J. java 位元組碼 機器碼 char
char即字元類型,表示的是基於ASCII碼的字元,
位元組碼,為java源代碼編譯完成後,由JVM轉換成的文件,可以在任何裝有JVM的系統上,轉化相應的機器語言
機器碼:即機器語言,表示的就是運行位元組碼文件後的二進制序列
位元組:即java中的byte類型,用於存放一個位元組