java是編譯
它既不屬於傳統的編譯型語言也不屬於解釋型語言。它是先編譯成.CLASS位元組碼文件,然後再利用虛擬機解釋執行的.可以說先編譯後解釋吧。
㈡ Java程序可以編譯成可執行程序,直接運行。這句話是否是對的
錯的,java文件只能編譯成位元組碼文件,無法直接運行,除非打包成一個桌面的應用或者網頁才可以直接打開。
㈢ Java是解釋型還是編譯型
有人說Java是編譯型的。因為所有的Java代碼都是要編譯的,.java不經過編譯就無法執行。
也有人說Java是解釋型的。因為java代碼編譯後不能直接運行,它是解釋運行在JVM上的,所以它是解釋型的。對於C和C++,它們經過一次編譯之後,可以由操作系統直接執行,所以它們是編譯型語言。而Java不一樣,它首先由編譯器編譯成.class(位元組碼)文件,然後在通過JVM從.class文件中讀一行解釋執行一行,所以它是解釋型的語言。也正是由於java對於多種不同的操作系統有不同的JVM,所以實現了真正意義上的跨平台。(1)Java語言的編譯-->解釋-->運行過程
(2)JVM到這里,大家應該也都明白了。最後給出編譯型語言和解釋型語言的定義。
定義:編譯型語言:把做好的源程序全部編譯成二進制代碼的可運行程序。然後,可直接運行這個程序。
解釋型語言:把做好的源程序翻譯一句,然後執行一句,直至結束!特點:編譯型語言,執行速度快、效率高;依靠編譯器、跨平台性差。
解釋型語言,執行速度慢、效率低;依靠解釋器、跨平台性好。
㈣ Java在dos環境怎樣編譯程序
在 Windows/DOS 環境下編譯 Java 程序,可以按照以下步驟操作:
首先確保歷燃清已經安裝了 JDK。可以在命令行中輸入 java -version 檢查是否已經安裝了 JDK,並查看 JDK 的版本信肢前息。
編寫 Java 程序並保存為 .java 文件。
打開命令行窗口(如 cmd),使用 cd 命令切換到 Java 程序所在的目錄。
使用 javac 命令編譯 Java 程序,例如:
javac HelloWorld.java如果編譯成功,將會生成一個名為 HelloWorld.class 的文件。
使用 java 命令運行 Java 程序,例如:
java HelloWorld運行結果將會在命令行窗口中顯示出來。
需要注意的是,Java 程序中使用的路徑分隔符應該是 /,而不是 Windows 下的 。例如,如果要引用當段簡前目錄下的 myfile.txt 文件,應該使用 ./myfile.txt,而不是 .myfile.txt。
㈤ 什麼是Java代碼的編譯與反編譯
Java代碼的編譯與反編譯
2017-02-21Hollis數盟
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(Reverseengineering)也稱為侍梁計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、Java類的編譯與反編譯
我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。
2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。
五、反編譯工具
1、javap
2、Jad:官網(牆裂推薦)
客戶端:
可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。
因為我使用的是linux操作系統,所以我下載的是Linux版本的工具,這個工具下載好之後會有一個執行文件,敗吵只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼
Eclipse插件:
下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下『在打開Eclipse,Eclipse->Window->Preferences->Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置察談侍即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼
㈥ c#和Java哪個是是編譯型語言哪個是解釋型語言
C#是一種編譯型語言。編譯型語言在運行前會將源代碼轉換為機器碼或位元組碼,這樣在運行時可以直接執行,無需解釋過程,運行效率較高。
Java則是一種解釋型語言。Java源代碼首先被編譯為位元組碼,運行時由Java虛擬機(JVM)解釋執行位元組碼,這種方式使得Java程序具有跨平台性,可以在任何安裝了JVM的平台上運行。
編譯型語言如C#的優點在於執行效率高,啟動速度較快,因為它們在運行前就已經將代碼編譯為機器碼或位元組碼。而Java作為一種解釋型語言,雖然啟動速度可能會稍慢一些,但由於其跨平台性和動態特性,使其在開發過程中具有更高的靈活性和便捷性。
此外,C#和Java在語法和編程範式上也有一些差異。C#支持面向對象、泛型、委託、lambda表達式等特性,而Java主要強調面向對象編程,同時提供了介面、泛型等特性。這些差異使得開發者在選擇編程語言時需要根據具體需求和項目特點來決定。
總的來說,C#和Java各有優勢,C#在游戲開發、桌面應用等方面表現優異,而Java則在企業級應用、Web開發等領域有著廣泛的應用。開發者可以根據項目需求和個人偏好選擇合適的編程語言。